From patchwork Wed Sep 15 17:10:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 30258 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp474504iov; Wed, 15 Sep 2021 10:11:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxrT8S11SkD/cQPHfanGT3L86QSrt+TUlQaP5Pgbv0GVgSSBINuhFrLGOht5I3Bi4ZtKENg X-Received: by 2002:a17:906:1299:: with SMTP id k25mr1070446ejb.139.1631725878319; Wed, 15 Sep 2021 10:11:18 -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 h15si583601ejj.98.2021.09.15.10.11.17; Wed, 15 Sep 2021 10:11:18 -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="bp/US4Dg"; 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 EC8A168AF99; Wed, 15 Sep 2021 20:11:12 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-oln040092075107.outbound.protection.outlook.com [40.92.75.107]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2DAD068AD2A for ; Wed, 15 Sep 2021 20:11:06 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GFSxPikKfPDlDSOV7D0mZLLlXaKr1IR7eRtrxJLkCedsXYrgvhTrJ4PX4Xi1tdTD6zgBZUOQo4M4oQua2CduWc/rCi+qm+Qz3x5QxQqUR+hv2g7fU1z3uyz5m3sCFnm7aFmC0+/4Cj5PxjDzPyde2a6I+omScqObf4lDEUl+JNa1YlL8FarBA4pvLihlGjvI3bO0pznhPFqFTdybWlhueFp/LeT3Qx+WN201DTTCveqqkCoKoCv7xkj9+5WBhtGvrqQ8AySJ2nT1L3SU/fHRia34Vj4gr0oKGb4gT765hBJyMwuNRQ/SRNBsdx2aP9rJS6ybq7Smjji3/VNEkUWP1Q== 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; bh=ISmMGz3xbq9CMPeR8cF4LlfobmmfuxbJj9/AUAk6je8=; b=WjA8rtTtVdTnSy2cPqq9XCd7K2bAevJApgTD47CE81+Oee6wQBZC+N+wyO5BkiFoyxPuMGh8IazbOxlHOBYow6w1rmhPnhpLRTz4MJ9QfN/Rjmx6Yv+zs2TvNKPn8kJRLKM+hkEZGb64bFkapH0g4IAbp83nRUBCxhp4wTg1XR1ZSvQ92CzMfsi+6MmoPqW5no/F8aApIMP1BhXECYDVXDf3S1caA5v7u/37/M2d5SMtn4O1WtLZsggBcFM+TtX6n+ua9xojUfw+XRXFmXZtNhiyKIYdx1mJK+WN4iafd8KHbb2zwT96YwMQ8wgkbKe+41RkWWBrA+I4ClRNf1ezxg== 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=ISmMGz3xbq9CMPeR8cF4LlfobmmfuxbJj9/AUAk6je8=; b=bp/US4DgPwWzRVzJP2dKwZaAroKX5iRPa1vvo4m6FYGz1FSWwILTkugCthRCduqg5xpT82eLc5Op9/ccaWCwieNHLUg2/5/+NyYVhKsFd9LdfCpO0N6tpCzNZ6RJuXJLsNZSXOkot5IxIFV3GEAHvtf+eR0J+AgzZHsmdsB6VOVePFlLTuPr4w/mtl6aVAfXb8x2KZ5eADCaRvJ3m9b8FtRmWpITn1lQf5nJuemO915Wsg5ZdHVyidl8v6kf9S0hpKoo58QV4lSUYqqQTnkx9kaDBktYJTAL7pJU9SMu/+rZXuoDTgVGEvgVwmtccA5aTTYy7DcDTgWXEOqbmFPN1w== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB5251.eurprd03.prod.outlook.com (2603:10a6:20b:c1::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.17; Wed, 15 Sep 2021 17:11:03 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00%4]) with mapi id 15.20.4500.019; Wed, 15 Sep 2021 17:11:03 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 15 Sep 2021 19:10:51 +0200 Message-ID: X-Mailer: git-send-email 2.30.2 X-TMN: [kDApn0PuORvQrboJUl43H5om7iwsqWyW] X-ClientProxiedBy: AM0PR10CA0061.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:208:15::14) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20210915171055.4090552-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.142.38) by AM0PR10CA0061.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:208:15::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14 via Frontend Transport; Wed, 15 Sep 2021 17:11:02 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0ebc1bb5-c765-4123-b0ef-08d9786bcc1d X-MS-Exchange-SLBlob-MailProps: EpEO96k6WokGvwIxdby95+//ygP2I9bmKJAaGeegW3e3gDRA65Pue0CG2nzljWDQKP+z47e4ncpXJDxUhwx53SadzbYcAXAWZybHQbG07UlXI29WAz+mu9PAVMC8iOiIkW4UEQrIvRTCQ8K65UU0/bDOElq64bORcgK4JIxVDn42SwMEtr0gNyJudx/gIDP7CiMvN4rPwamdoY8Pl35f3kIqtMZnfkVCeafTWBYeuNnLbP40fBMNcEvxG667wLxL9riEgmbIHZZUI16AeGX4NJi/vZtagBd5YS1KuoSa+dqu2Nn77YXjmBNwdMY9CSC3J4XR35tatfvJP3mshkEJ4StdBoSnLnPxq4YThjh6gYLiM7Dz9cCTPFwtw6RR0enSTocn9k8YyzQFr4WXkKS+v13gW1Qrtz/cGw7YLlAXwHyWTn2UL4ASykDIi8FSnFzgeKNi7XNoYJhaexePmXLQ6vkxZ5zCQTesKLU9dThQCcS+l0BAm50kUfYRlWlv5j8ZziPzZ/gyvs8rBKmODkdXAf+J6PBkSv53Ygaqd//F++Q6+lm1n9lN/ZCQ7GxB7NbsaGvqotcku5pFHRQWMYpsl9nWeTdUN9BzyD9W8uVHK3JNFyLHNTuwpgxICRep8QRp1zBC6YBO9KS9uwEw5RRhEAFfEqv4kylC35srijUWpOLfMtNSi1WoybSKFwws7XIVl0il8Ph3rjeUIG28tLsVwZvpmI8+mzjSSNDmnD3FVqNfkK0RTcy0hDe1UIOGLyGS8NETTrx6h/U= X-MS-TrafficTypeDiagnostic: AM6PR03MB5251: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mLBCKGIXw35Uv5paZxoNxMVgPI8qYDGXV/qmD5B1k6QwczKBjlR8bqiWKh165QsbzJCDLxHhhSUZdZ8l/M52JiM8VrO78rm6Q+Va1WUiQxRmj8MDHe2TKIGp4Y6CsEvhZSBBDXoPS6TPysL/GsnXir1cvCLZ/m+rYYIc2kwci3b2tgVJZ6V8K4heVEQFbQbo8cUZxiFa8pNhSASiD6jOIhfnqgFq9lOQCl1EmVz6mX3qTRHcdW5LXbTnleQqmkL3BE2guolEn9Wk4iWNVYH5QpecIrkzrPmyyDzDrNZqH2/rlHwhsWrQGZ24EQSkpeIHdcW37bPWWstge7WWsxoUeBICCL2HFZ1SRXAvyfwhYvJW4i3YFitr5MjPBWacWBpwO7Edf6F5/8D8vYnaZO6aNTX/poPH5qBvMo/9jAm8j7uVyW9m0YwqVsAYyhfXIuBL X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: MNsIZWmDHpofO4nbOGLbX8o9qDS06n/6cBX7/p1eQyUN90ONdo6wo6H2SUCLbw+FHvcRx95EgMDdyD62ZHWXxo6MQeICE2UgBpTOfjgjb3HH3QZJsGNuYz6Kg5V9h7+bOhAUoXeRWSWotf5Hp2P4Jw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0ebc1bb5-c765-4123-b0ef-08d9786bcc1d X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Sep 2021 17:11:03.6762 (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: AM6PR03MB5251 Subject: [FFmpeg-devel] [PATCH 1/5] avcodec/avcodec: Set options only once via AV_OPT_SEARCH_CHILDREN 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: sBd46vYFdWtp For codecs with a private class the options are currently first applied to the private context after which the remaining options are applied to the AVCodecContext. This can be done in one step with av_opt_set_dict2() and the AV_OPT_SEARCH_CHILDREN flag. Doing so preserves the current order of applying options (namely children, i.e. private contexts, first), which is important for those decoders that have a "lowres" option of their own (distinct from the generic option). Doing this also avoids (re)allocations: Up until now, for a codec with private class, generic options are not found in the first av_opt_set_dict() call and are therefore put into a new AVDictionary. Signed-off-by: Andreas Rheinhardt --- libavcodec/avcodec.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c index 2dd7dd84e0..d806fab393 100644 --- a/libavcodec/avcodec.c +++ b/libavcodec/avcodec.c @@ -205,12 +205,10 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code av_opt_set_defaults(avctx->priv_data); } } - if (codec->priv_class && (ret = av_opt_set_dict(avctx->priv_data, options)) < 0) - goto free_and_end; } else { avctx->priv_data = NULL; } - if ((ret = av_opt_set_dict(avctx, options)) < 0) + if ((ret = av_opt_set_dict2(avctx, options, AV_OPT_SEARCH_CHILDREN)) < 0) goto free_and_end; if (avctx->codec_whitelist && av_match_list(codec->name, avctx->codec_whitelist, ',') <= 0) {