From patchwork Tue Sep 19 19:56:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43818 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a886:b0:149:dfde:5c0a with SMTP id ca6csp185638pzb; Tue, 19 Sep 2023 12:57:42 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEMHROdls2YGNe2EpLlYEP9iKY/tOzon/7rHXMFeZKv+W4N8DwcspsWbjaTPriKbeS1F3WK X-Received: by 2002:a17:907:763a:b0:9a9:ee3e:e6b6 with SMTP id jy26-20020a170907763a00b009a9ee3ee6b6mr328488ejc.3.1695153462133; Tue, 19 Sep 2023 12:57:42 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id d22-20020a170906345600b00992ee06bddbsi10456065ejb.176.2023.09.19.12.57.41; Tue, 19 Sep 2023 12:57:42 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b="HOAWx/oa"; arc=fail (body hash mismatch); spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5570C68C951; Tue, 19 Sep 2023 22:57:00 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2100.outbound.protection.outlook.com [40.92.89.100]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6DE4568C872 for ; Tue, 19 Sep 2023 22:56:59 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hEdfElYnI9iKYFWdZQqtSStnewVj0OQlNStNmOkdMsidlYn9AxK6eNSdEBm2H9Fw6cNElQjnLMDh+9n/UEk5dTQSw0LsEpd0ZLvnLrJwghb0J7F0YRpbSiXI+TORz9B+OOy31b9xn6AJVaFCG6vO6yUiRYmoj4zA+Ivm63KNzs+76iaSSILZlLcan06o9vRp3VrjX8wdUJf8SQ8KEkaIij6xrE0iJo4Nz6/GW1Spq7tsBvmBGRbclXMsP//abYlpV+ueWps95qEWLkpr1roPR4c5gHnshG5qUbgx8fzo61JmJ5WpES84s+7HuOkSzAgiLyT2x6msVbO/Q0FOxM47GQ== 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=OPN0x/VVQoMmRfNM3/b+Xoe28kYsYQBW7LQktr2jTLw=; b=YURdBPYMw8mRG2zKY4fuPhQkCiJfIfC/nuZUGu9Px58XdtOs6c/STuk7SVHJR0XFN2qE9095PnHWYyMnPkLpp81rkxdXlC67dS1MkFnwhGvWxdBZp+oVbDjv+OAz6P0IQ9lL1MbdGi1Fi4BYuM00gxppzvhmXn+WAGY3qklNCFO8x0ihZvrFY/WUK+SR12MOVevh0/iinQ8fM3HiUlUaNwkmlt0GIJb5j9CmWLRYibz4xdBSGqR7G8GWXDHqkcvL9tKtv0aB9sCvtmyj8YegVk+PXyM7AdT3+ivZN2wAgtRohaTCgmy/oPm9GBB2oKv/E92RhpGGCpiea6BRRfA1Jg== 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=OPN0x/VVQoMmRfNM3/b+Xoe28kYsYQBW7LQktr2jTLw=; b=HOAWx/oaJQEmsWq0gQrWLPjydtGvyneiI3ZFO0ciMjuUrTaH3Jbm6l4/MI4XjOm11m2DMkD0dN6MVHL8Z/F2R3r9jEOwiqyRw0RoQabAph1zW/+mr5xcOIy8SxmbhWLq3jPu12dMv6sIu08QGL8NhM0rtj9PGgW0NYL7Ht9hMGypYTHY5QXQVlFsmcL0crdqBJoQwkwwd5NkOvGsRMZP2H1KYfChTgYWmK2CY7bsmT726tQuohvONZKnxcRXctl/+mpsS38J1p7yN4hHcg1TOAx8syRJr4PEEkaOtnV6A6MrMtqABLucrn2UOMOZRw5isYNyyoTRttRPZDaMJFdwkw== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AM8P250MB0215.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:326::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.26; Tue, 19 Sep 2023 19:56:57 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::5e01:aea5:d3a8:cafa]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::5e01:aea5:d3a8:cafa%3]) with mapi id 15.20.6792.026; Tue, 19 Sep 2023 19:56:57 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 19 Sep 2023 21:56:59 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [ULwRsIoC5Tbpt7RPmz1poKIrEC5yOOw3] X-ClientProxiedBy: ZR0P278CA0086.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:22::19) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20230919195734.1005750-7-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|AM8P250MB0215:EE_ X-MS-Office365-Filtering-Correlation-Id: 3de4a902-6c43-4856-80e8-08dbb94a94c0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: He5sMbYcYYAj2UJSeoAJBMR9ELsWMfvub2kc8kaaaOrwjdVokMDfXKac54NIwWf3C0icf0PeUWFHcwbvL4fstux82IG9WxXfgIR60kQwahOWfpUPGYMcMEkeV70UfxOjQHd66CXFdei20bltvghWAKdjr69eJ6wy13Eg9JAi/SYYWcMdXnG4zEIU6fsdCpFEbaw/3svrhqKUIysEobMeZamCOqwVtR9wEsB8tToGe/NQo54WH6g903xC20bRiPRfCGAqHi8MnCIqVQdPZBi8ck3X/H8LAKFY3VpdMnHOwvlw4zH4NGTxAG0Rl7hPOtzsosuJNuB/4QbmcY6gk0VVyZiMKVXNcfKDwTNIxHCjvhYNf/b6HQbMpy0EKxm/+tzvLepMqJZyBJvuyoffYHeR04Oj+QjUVaTK5sLUn25aPfLNcE/aiWIJHEwrlsDvajRaQI1PYvWuspCTGz6P5DXUO88/gg6NAIelitcVqTDWflGZdnMsBzanAuD7R4CJlPoJ08GBAQ+FyUyCFKD46BPdkDkE7Qx0SIpuH2BgOCfE8iUAHpPgYutaNvpeKcosRErAN5TqfAvtlNIZNmxe1Hk0eh+8ay4Vb02kaCdM3FdchJlcmbcozOZJN+bBWT4wYOCa X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: aF4tpQlIykwiC8LcFd8+jMIY0QrrX0qXVQntYEAZvVcuyRFWrkzEDfew8c3o0RRy7XqD3OdNoLmpNJuTOfBlQH5xMTCCRYALT2U/9RHceASTSFYdGv1IVB3aWElmpHO575DRAXTvvthPywEn6dGPpfFNRAJO78bNxbanxOm8IGRjR0lnc8E9lSVJhvlBmAk0Lte/xd8UvLof25K6NRU71bh6GsbZ88eKMVZFLy6azvXyVRTkZR2KDA0INxEIyrRXxEMGMRVlVp/a14QSAWvyQ8JNzVUvXinN1mSDBB7f1dcLRFCAPPRWBhTQ+yI8rKObB+bnsAsZp9LvVvkTDqmlKxAb1a4cDiC1GUOAGjclY5UgcZhU0GK+5T0e/aF1RY/qyjkWgwLlJMjBGgHzk5vBOanC/leHFL7qXpwb9IYdVAbvMT7kYkcmKebcnFSzq5SbUjULDCnxWD00Yo2nAWjkWxY29T6m1i1jkAyW1toAH+Bnd7DIH/7LNw58gSy3ZHKw3dNCWnQhgkmV5etlaCpoWXfcom8uU1xcCifCMvRNaNPaTLe3zlimYPxs+V4MnDnk4m4ThGsSvJrjL8TVVs4mzTSK4SmlXe1sXteBeftRVDNkX4aOhTsKq7kWTZFfZ6Rlz13GwhUmOKnLuhntuCn8nzcqSCM06q+c+9ve2Kfo+ffPQJh1M10uWgC0EtneZZnvmRgoFCp65JIw+UaTTalQ3D/TfoZOwBtrL9ypgraamCsOt6Q0vKpEUDSs8LJMHgH3UVYF+lYe2mh+K7LAXDdPMZ5AiuD0I0Y6Oj5SUTTjmjhG7ogoqsS91NHb8EBsYDrUbQgA2qh4ggTgHVOL4d+Hxat6iX1DrviNKLYKpU9TLoagEXg7tW0RnNq/2Hmq/mgyqegzWWNoU7GLMegJZCEmkUF6GQRgY/46Rc7rHjbi8hfiWz2z8V+NVVkxtzYDWARhji4xHIbr/Cu7gRoTyGk841o3h1Y+wQHiFlegjgkJMiP6Eav4qUOwck/p3+efzfalco0WosOeewk4BOssoQwB5ccNV+/J5igmjP+lEf06kMHYcpp/riv/Q705aW/ead6OpA3S+I508l4mip4qO4rGH51xkhgLV55MrpTYspdO7cwSYtuycmgqLBcNzl3W2y9sClWGxjm1GH/IXdAgWePD3aoUeTMGhW2BxRdPIMFUebRq4zCQyRAoS0sA3KXkY6/4dXLlph9NIOVFZmO2Siry6eowujnpEFhP1tKryA61HXpo6QTeLFYvmCRYh8DTIIqA X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3de4a902-6c43-4856-80e8-08dbb94a94c0 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Sep 2023 19:56:57.9551 (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: AM8P250MB0215 Subject: [FFmpeg-devel] [PATCH 07/42] avcodec/wavpack: Use RefStruct API for DSD context 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: AttS6zFIf8l0 It avoids allocations and the corresponding error checks. It also avoids indirections and casts. Signed-off-by: Andreas Rheinhardt --- libavcodec/wavpack.c | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/libavcodec/wavpack.c b/libavcodec/wavpack.c index 966f4b83db..97705c8854 100644 --- a/libavcodec/wavpack.c +++ b/libavcodec/wavpack.c @@ -28,6 +28,7 @@ #include "bytestream.h" #include "codec_internal.h" #include "get_bits.h" +#include "refstruct.h" #include "thread.h" #include "threadframe.h" #include "unary.h" @@ -110,8 +111,7 @@ typedef struct WavpackContext { ThreadFrame curr_frame, prev_frame; Modulation modulation; - AVBufferRef *dsd_ref; - DSDContext *dsdctx; + DSDContext *dsdctx; ///< RefStruct reference int dsd_channels; } WavpackContext; @@ -990,9 +990,8 @@ static int wv_dsd_reset(WavpackContext *s, int channels) { int i; - s->dsdctx = NULL; s->dsd_channels = 0; - av_buffer_unref(&s->dsd_ref); + ff_refstruct_unref(&s->dsdctx); if (!channels) return 0; @@ -1000,10 +999,9 @@ static int wv_dsd_reset(WavpackContext *s, int channels) if (channels > INT_MAX / sizeof(*s->dsdctx)) return AVERROR(EINVAL); - s->dsd_ref = av_buffer_allocz(channels * sizeof(*s->dsdctx)); - if (!s->dsd_ref) + s->dsdctx = ff_refstruct_allocz(channels * sizeof(*s->dsdctx)); + if (!s->dsdctx) return AVERROR(ENOMEM); - s->dsdctx = (DSDContext*)s->dsd_ref->data; s->dsd_channels = channels; for (i = 0; i < channels; i++) @@ -1028,15 +1026,8 @@ static int update_thread_context(AVCodecContext *dst, const AVCodecContext *src) return ret; } - fdst->dsdctx = NULL; - fdst->dsd_channels = 0; - ret = av_buffer_replace(&fdst->dsd_ref, fsrc->dsd_ref); - if (ret < 0) - return ret; - if (fsrc->dsd_ref) { - fdst->dsdctx = (DSDContext*)fdst->dsd_ref->data; - fdst->dsd_channels = fsrc->dsd_channels; - } + ff_refstruct_replace(&fdst->dsdctx, fsrc->dsdctx); + fdst->dsd_channels = fsrc->dsd_channels; return 0; } @@ -1076,7 +1067,7 @@ static av_cold int wavpack_decode_end(AVCodecContext *avctx) ff_thread_release_ext_buffer(avctx, &s->prev_frame); av_frame_free(&s->prev_frame.f); - av_buffer_unref(&s->dsd_ref); + ff_refstruct_unref(&s->dsdctx); return 0; }