From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 656B44AEDB for ; Thu, 23 May 2024 08:41:56 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B38EF68D3C6; Thu, 23 May 2024 11:41:53 +0300 (EEST) Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02olkn2098.outbound.protection.outlook.com [40.92.48.98]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4E61968CEB8 for ; Thu, 23 May 2024 11:41:47 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cRgCwsZlJK/mfX+iD12lKhN29Xik4QIbCWKETcLvZtynP/euP+GSxNp6zBWwLnDg3xzJNU4zKE1hlovzULXenT6bjCs2mr/s9SZFAbPrfwZPLS5r45LhZkJR5+F5OsNQAsViTEb9GEAKcVC1NgYpNpksouMaEmcVQIl3P6pC3o/Nj6Lb6QlsIy/BuWlnB/deGvpISbKSvPZE0RG89EGZvTJ3Mk4PLseAK3t7zSzbLo7VNUe0c+UBX6v4ibuO4oDuVuVvOzIIQ9+YAG1Zf9NYKUoxfV5hUrOrTLYPyHfL5m9MRphuUgJermc8E/SB5HbgrN9PQCWAg/d8AYoA4jhlRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+vhGPAUoNRjTFqQYrrtWRFI1dtmXXoByRHeGUa+ougY=; b=EtymRvqvatGjeehuUAvrhKM+2KRRba04sRhBp4KUHjBEmD6nLJRiigEz8X4cFhuGvNrdm2gLQEN/9R4Cy6jOeKNYgRCjzKO0IsgFaP9EOMDbchlCFnXJjgfkdmmGg2bXgNWUslKELQ4G9sV5+vHKT5XoTqAhaAbpc7dvrzyZ9/4b/waYP/2b0yboTm+PaR08ZDOmUHww+y42Bgi/1mA/1eTgBQqde6YZVin4R47q79bbeT1lQvu0R9z9ayyCxo5b/RfIoAJVmiiqD4mooZHuYzyEdnMXcaZLAGCQvXIqBESTiICiWqCy9p2u1b5JtMbqvYXApxG0vQ3AbXV/es9aNw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+vhGPAUoNRjTFqQYrrtWRFI1dtmXXoByRHeGUa+ougY=; b=Nw7SlnJJ8J/fZO5XmGwcoKQYlQ65LoQNXwz0bckJBItJHAEksn6cNaSrZa0CSQO3jh04FkClO8XUhXF8Wm3j6OeSP1uQlKiSXuR4fyyqcUErP4FoXYpCQl0aiREcJGfsDN1GS3tf+JxXcslUxfV0YZLVg6IITcV1G1Jt+muoYOma2x5jeuvSbdnk6MiC2fUHzmEkydNUQD+9aXtlGXMAkJYQncZXFWp8IUHDSC5sFYqY5RjK28avKjK8XaCfkukrjA3gFaAW5y4GyFsqlfzb5HBSY9iTXjRxb0oZCCTI44AC7y2k5F+DUKFKEIVxdsylopEu8BLx8IblnXgk6ViRhg== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0014.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:2b7::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.36; Thu, 23 May 2024 08:41:45 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614%3]) with mapi id 15.20.7587.030; Thu, 23 May 2024 08:41:45 +0000 Message-ID: Date: Thu, 23 May 2024 10:41:42 +0200 User-Agent: Mozilla Thunderbird To: ffmpeg-devel@ffmpeg.org References: Content-Language: en-US From: Andreas Rheinhardt In-Reply-To: X-TMN: [1SA8mPtrESyFs1WLLZ5BQcOfWKnBnEuEdwY9YrLNcNU=] X-ClientProxiedBy: ZR0P278CA0092.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:23::7) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU2P250MB0014:EE_ X-MS-Office365-Filtering-Correlation-Id: fb70c647-6f7d-407e-f5fc-08dc7b042d55 X-Microsoft-Antispam: BCL:0;ARA:14566002|461199019|440099019|3412199016; X-Microsoft-Antispam-Message-Info: D1Ps3qtj2dRw0N6TzjzHm5VZajpT54uyOWbFu7qBd0jTK0yA1tjJUDnHJIl4nUB3NVOZ+JZBzozQKjb+o0ZoX8vSR5lawcim9a7V5ekO1qM/z91MNegTFQvejXwRmUwXPoiDGwQj7wSyZjF5MW7Ad6WR1l8ijDDwrby4PI/wJ4HsF7uLGXSkrfiQqNcakXFC8t7sa7rM4beZppbwoJS3nakXvUCwIAq0XBJEA4Hhxs+j/1VUYn/z2w7F+i5xrYuB9jcJwIKzDFUxsjoqcC2oBUVGhSJpplx4nw6Ky7XMg0z0MbV71D9JT/lGE7G7uKHMnGoZTWM0jzCjDzWfmVbDwofjp7lFitYpEzeDDtF3tN8cdD5S/wtYbqUavFu1I8hHpfJMQ1zGj6RuxC4YtG/Uy74kyj5D6tvsCz1KEGCYxy/yaBWJ1/dU688GpQZ/Ex36RSxQg5JsgMC3zV+Hix0qCrLZ6gpeJdJXNehJCoS9cx5rUii3QwMild6P0f23eq4tEfAxD6GO7U2wDLRjneFfS0+mzhxDqCwQI0l7eZWnWyjOBjAJVdgmJ1aOpkGg1d2e X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MFNEQ08yblNIbmhmdkhXUmQwUXVYb1k5dzV4U1lMOWh4dWNoT0VBWmorT2Zw?= =?utf-8?B?bWl6djBrOGl4VzNzaTk1QWpUclFhaVlhYk0zOXhGbVRIMHlFVDc2UmpBMU5w?= =?utf-8?B?YXNCUTNhQWJhNUczMXhzOWt2c0dHek16Qlp4MXp5NW1WR3lTbXZDSm9oeU1s?= =?utf-8?B?THpuTXVQcittZ2tvNFhpOE1qbGpkYXFvQTFCREZJTFVoRFBXNkpVb0VlTzZX?= =?utf-8?B?QVo2d2RiT2FvYWttUEhqUDArVjNWQVZ0ZWNxN0lVZEdNVXJOQTgyM3pGZmx0?= =?utf-8?B?U0gxd2FxUzBualRrTm5NVk4wSmZmSUxwRHFOMnM2Nktzb1dVOWFQdHhpWFV5?= =?utf-8?B?UHpRbkxkZHpncEtTOCtFbXNZUFU0TEdMWDRQdnQrc0dnNkxEN0duUndyM204?= =?utf-8?B?akV1a3o0Z0w5RStXZUFzVEdvUjgrekxjNlluL20wSzB6VmVxZ2pUNXBFOUpy?= =?utf-8?B?OG5FYUZ3L2YxcUVGWFFucGZrTFdFY2EvSU55R1ozazNNRDhsdGVhSHhFeFFI?= =?utf-8?B?a1dhR01qcTNuYjk2RDFTalJTU1phS0VaaG8vSHNUZlNzVFY5S255azdEZjFn?= =?utf-8?B?NTAwUzhMUVlMNzlKNms1R1hZWFNyYXlEZTU3WFlvcDRLK3hKcFhSYmxoUXQ3?= =?utf-8?B?VlZ3eWNYNUd4eldvTU9oQUNERHhLK1B0M254WFd6dU90bStSV09nVjg5aDhS?= =?utf-8?B?WUk2c1cwSXBtNVhjeEQ2L3NPd3ZacVc2YTFWcFNSajUzNUNKdjFOS3g0NWJM?= =?utf-8?B?VVBjRkYyYWtDNmxxdCszS2ZOOWMyN3JCMnFmdFY3YUtYUHhER2tGSmIrVVdk?= =?utf-8?B?Sm1JVmc5LytxUkEyc3FJNEI3NzdwS0hvYklVMDJjOXZEcWtDQ1VJVlljaWtH?= =?utf-8?B?RWJBM3MveGNtbkdDalhTdUU4ckt4VEJpL0VRVFJvUmkzQnNjdU82YUQ0eHAw?= =?utf-8?B?RTUvQVdmc3Y2MTJMMGtOYktzSUFkT0RwWXNrUTRyYWJmWTcyb0lEKzBSYllD?= =?utf-8?B?RUt4aEZzSVRiUHhnWGNoUEp6ZEJHTDBIN28rcmlpUTkrbVhrdXBQVjRMYmQy?= =?utf-8?B?amJXWVN4NGZhdFhBQjBlWkV4aDNKWDk1U2JXNGl0K1VMNVZDME4raE9DNStJ?= =?utf-8?B?Ung4eVJWcDFRdTlxeFlHeHNta0JnTGNlVDlsbnZJcDg5emtkNDh4MzExcHM4?= =?utf-8?B?OVB4T3laMzNpS3dTVjJNc0ZpSEhnRjJ1RGhYQ3BMcG5NSkp2ZCt4aWZzbzFV?= =?utf-8?B?Tms2eUFVSFd4dWx4dDBvbGhyWWdKTmh5Yjdvd1h5YVZOa05PVGthT0NiN09h?= =?utf-8?B?ZG9yb1RXSzJmMEhyTFg0R0hOQnEvdU1Mb0h4emZzM05xU1B5ajJBTCtjc1pZ?= =?utf-8?B?OWlLbHBmK0o4MXI0dWZ4VE9HZmRLeFFUZHVYaEpCRkQrR0NxZElWeitBeU5B?= =?utf-8?B?U0VRNTh2ZXBOSlB2MnlxZVMvL0htWlowNk9JeVJZSTFUMDA0eFN2Q1RXUVU5?= =?utf-8?B?SmNkVTNBOFpvbGJCYVBqaU9nRCswSUljODd1RzY1VWVsNG9pdE5zZHhXcVF3?= =?utf-8?B?MzNqNyt3V0E1cU55WEJ5MS9UVWdaRStSVDFrTXFFcTVOdDdPdERlQ0U5R256?= =?utf-8?B?V210cjAyNTF4a2lZb1lQZTBwbzVWTm16cGZFSkZ5K2pRUHdzNlBsYnN3ZnFz?= =?utf-8?B?a2tDYnN4VEhiaDdaajIzR3QydkxkaW9SM21YNHcvZFVHMnJ6ZVlpV21nPT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fb70c647-6f7d-407e-f5fc-08dc7b042d55 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 May 2024 08:41:45.2150 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2P250MB0014 Subject: Re: [FFmpeg-devel] [PATCH 2/5] avfilter/af_atempo: Simplify resetting X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Pavel Koshevoy: > On Wed, May 22, 2024, 02:59 Andreas Rheinhardt < > andreas.rheinhardt@outlook.com> wrote: > >> The earlier code distinguished between a partial reset >> (yae_clear()) and a complete reset (yae_release_buffers() >> which also releases the buffers); this separation existed >> to avoid allocations, as buffers were reallocated on reconfigs. >> >> Yet it is pointless since a5704659e3e41b7698812b89f67d9a7467a74d20, >> so simply use yae_release_buffers() everywhere. >> >> Signed-off-by: Andreas Rheinhardt >> --- >> libavfilter/af_atempo.c | 69 +++++++++++++++++++++-------------------- >> 1 file changed, 35 insertions(+), 34 deletions(-) >> >> diff --git a/libavfilter/af_atempo.c b/libavfilter/af_atempo.c >> index 1aedb82060..110f792eec 100644 >> --- a/libavfilter/af_atempo.c >> +++ b/libavfilter/af_atempo.c >> @@ -244,18 +244,6 @@ static void yae_release_buffers(ATempoContext *atempo) >> av_tx_uninit(&atempo->complex_to_real); >> } >> >> -/* av_realloc is not aligned enough; fortunately, the data does not need >> to >> - * be preserved */ >> -#define RE_MALLOC_OR_FAIL(field, field_size, element_size) \ >> - do { \ >> - av_freep(&field); \ >> - field = av_calloc(field_size, element_size); \ >> - if (!field) { \ >> - yae_release_buffers(atempo); \ >> - return AVERROR(ENOMEM); \ >> - } \ >> - } while (0) >> - >> /** >> * Prepare filter for processing audio data of given format, >> * sample rate and number of channels. >> @@ -289,40 +277,51 @@ static int yae_reset(ATempoContext *atempo, >> nlevels++; >> } >> >> + /* av_realloc is not aligned enough, so simply discard all the old >> buffers >> + * (fortunately, their data does not need to be preserved) */ >> + yae_release_buffers(atempo); >> + >> // initialize audio fragment buffers: >> - RE_MALLOC_OR_FAIL(atempo->frag[0].data, atempo->window, >> atempo->stride); >> - RE_MALLOC_OR_FAIL(atempo->frag[1].data, atempo->window, >> atempo->stride); >> - RE_MALLOC_OR_FAIL(atempo->frag[0].xdat_in, (atempo->window + 1), >> sizeof(AVComplexFloat)); >> - RE_MALLOC_OR_FAIL(atempo->frag[1].xdat_in, (atempo->window + 1), >> sizeof(AVComplexFloat)); >> - RE_MALLOC_OR_FAIL(atempo->frag[0].xdat, (atempo->window + 1), >> sizeof(AVComplexFloat)); >> - RE_MALLOC_OR_FAIL(atempo->frag[1].xdat, (atempo->window + 1), >> sizeof(AVComplexFloat)); >> + if (!(atempo->frag[0].data = av_calloc(atempo->window, >> atempo->stride)) || >> + !(atempo->frag[1].data = av_calloc(atempo->window, >> atempo->stride)) || >> + !(atempo->frag[0].xdat_in = av_calloc(atempo->window + 1, >> sizeof(AVComplexFloat))) || >> + !(atempo->frag[1].xdat_in = av_calloc(atempo->window + 1, >> sizeof(AVComplexFloat))) || >> + !(atempo->frag[0].xdat = av_calloc(atempo->window + 1, >> sizeof(AVComplexFloat))) || >> + !(atempo->frag[1].xdat = av_calloc(atempo->window + 1, >> sizeof(AVComplexFloat)))) { >> + ret = AVERROR(ENOMEM); >> + goto fail; >> + } >> >> // initialize rDFT contexts: >> - av_tx_uninit(&atempo->real_to_complex); >> - av_tx_uninit(&atempo->complex_to_real); >> - >> ret = av_tx_init(&atempo->real_to_complex, &atempo->r2c_fn, >> AV_TX_FLOAT_RDFT, 0, 1 << (nlevels + 1), &scale, 0); >> - if (ret < 0) { >> - yae_release_buffers(atempo); >> - return ret; >> - } >> + if (ret < 0) >> + goto fail; >> >> ret = av_tx_init(&atempo->complex_to_real, &atempo->c2r_fn, >> AV_TX_FLOAT_RDFT, 1, 1 << (nlevels + 1), &iscale, 0); >> - if (ret < 0) { >> - yae_release_buffers(atempo); >> - return ret; >> - } >> + if (ret < 0) >> + goto fail; >> >> - RE_MALLOC_OR_FAIL(atempo->correlation_in, (atempo->window + 1), >> sizeof(AVComplexFloat)); >> - RE_MALLOC_OR_FAIL(atempo->correlation, atempo->window, >> sizeof(AVComplexFloat)); >> + if (!(atempo->correlation_in = av_calloc(atempo->window + 1, >> sizeof(AVComplexFloat))) || >> + !(atempo->correlation = av_calloc(atempo->window, >> sizeof(AVComplexFloat)))) { >> + ret = AVERROR(ENOMEM); >> + goto fail; >> + } >> >> atempo->ring = atempo->window * 3; >> - RE_MALLOC_OR_FAIL(atempo->buffer, atempo->ring, atempo->stride); >> + atempo->buffer = av_calloc(atempo->ring, atempo->stride); >> + if (!atempo->buffer) { >> + ret = AVERROR(ENOMEM); >> + goto fail; >> + } >> >> // initialize the Hann window function: >> - RE_MALLOC_OR_FAIL(atempo->hann, atempo->window, sizeof(float)); >> + atempo->hann = av_malloc_array(atempo->window, sizeof(float)); >> + if (!atempo->hann) { >> + ret = AVERROR(ENOMEM); >> + goto fail; >> + } >> >> for (i = 0; i < atempo->window; i++) { >> double t = (double)i / (double)(atempo->window - 1); >> @@ -330,8 +329,10 @@ static int yae_reset(ATempoContext *atempo, >> atempo->hann[i] = (float)h; >> } >> >> - yae_clear(atempo); >> return 0; >> +fail: >> + yae_release_buffers(atempo); >> + return ret; >> } >> >> static int yae_update(AVFilterContext *ctx) >> -- >> 2.40.1 >> > > > This doesn't feel like a necessary change (how frequently is the affected > code actually traversed, realistically?)... but since you've already spent > the effort to make this change I have no objection. 1. Looking at ff_filter_config_links(), it seems like the answer is at most once; yet IIRC it is intended for filtergraph reconfigurations to become a thing one day and given that the old code already supported it, I kept supporting it. 2. I disagree with your point that code that is executed only infrequently need not be optimized. Optimizations are good if they enhance clarity or reduce codesize; IMO this patch does both. - Andreas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".