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 ESMTPS id B0EC9468A5 for ; Mon, 27 Jan 2025 13:26:59 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A4E0C68BC54; Mon, 27 Jan 2025 15:26:55 +0200 (EET) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2098.outbound.protection.outlook.com [40.92.91.98]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2E77768B522 for ; Mon, 27 Jan 2025 15:26:49 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=OWTG6QrY6kR+StUTA4TQasHYhFxuuj7krM/fiq7gNAtkVSWXG3miXsKFyl5g0vsaThCfaoc0DP9h/u98ECyWMLfx8ADq7LpzvURv/rhcK/H5MAYz563F2Stmka+TW51DP5ShVgHQ/eJa7FvVPTW+qVN4Eaa0HC4nXN5go8pS47c51jMrDQ+gYRW2l2CLiEvbDbs1cu9/9qsCL4JVFSxqMSBKQwTR54EykzpDy2PqU3aMBHz8BGUru4WRGkYENaEjls9akO+jFXV4lPyLaVPsqQcyZKoQGDzPC4LvMbvKk6mD6EhBeqQZYBkOT3Cas1YjthCOBOVC9GVQdlIHBXZ7gg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=QG1is4VMeDqAMmAMHDM+ZefQ//vLYrqiKfs5cdgF8no=; b=Rz1iYaev41kNNN7BpvwWwaWVhXa2TJ/Pr6z2v55JqtFAgTo9vGuD7aUQWp02OLc1npeuRBh+1YdFe4ZH0fhSt8OYhCFX5Hb75hxElEox+b0YcmTCmUhSprxlklNQt04H7p6XCnI95XXw+WaSLcij8pARY4Pk4gq/pdU9lkqYqaNuMCz9Hz8Bgpg30Ahp25S+uf325m/xxqHm7zjjkr6oLmjkpsNREy7vPPcQ1pqCAH5mJxjC2RK1Cirhd/YjJHepJj5L7d8xSEXj0+iGtkclaWpZ7US+gScYOISgorZs099WxQSXD2u+/0xkr5EkdtaRN7bxSPaLyQ2blp+kdGqOrw== 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=QG1is4VMeDqAMmAMHDM+ZefQ//vLYrqiKfs5cdgF8no=; b=K9YDgC+X3q9MIxnMUdCY2qeUZE+3pcvzZHngIi4gThhQgugO+mJ518P69ySZmsAKWmLHQgWzeEevTryCwX9kq/DRvQAxcPUc93oKfhAoMiZDi/lolNmL8Ra1W+KJhZIgrL0dTF6vQWQuz4kttyUhLFdnv1SZMPdRP/enJgPuv4MmtwB5EYtBB7jWxhjTC0T6Ib0j/+6gm4OPSHuhex3ndzxfmVikpjTO41NNWlTV7ti6x46XB9xYgpZGE3V1rO0u8T6e8Uw681gkMBToU9FEn2/mi0LvEMbaDITeMlxPGZ3gIclvHglMgHU7hY8iJnO3mMAwKWFu20pLqPGwhffJcg== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PR3P250MB0036.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:14f::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8377.22; Mon, 27 Jan 2025 13:26:41 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::384d:40d4:ecb7:1c9]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::384d:40d4:ecb7:1c9%4]) with mapi id 15.20.8377.021; Mon, 27 Jan 2025 13:26:41 +0000 Message-ID: Date: Mon, 27 Jan 2025 14:26:40 +0100 User-Agent: Mozilla Thunderbird To: ffmpeg-devel@ffmpeg.org References: <20250122025403.14457-1-jamrial@gmail.com> <20250122025403.14457-5-jamrial@gmail.com> Content-Language: en-US From: Andreas Rheinhardt In-Reply-To: <20250122025403.14457-5-jamrial@gmail.com> X-ClientProxiedBy: ZR2P278CA0048.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:53::13) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PR3P250MB0036:EE_ X-MS-Office365-Filtering-Correlation-Id: 1b9a9aec-6e02-458e-3220-08dd3ed63c74 X-Microsoft-Antispam: BCL:0; ARA:14566002|7092599003|15080799006|8060799006|5072599009|6090799003|19110799003|461199028|3412199025|440099028|12091999003; X-Microsoft-Antispam-Message-Info: =?utf-8?B?cUpuOU8xU0J4dmJOb1o2TjF6M2ZaVG9ob2xhQlBZaEVCeTdJbEJkS3VxUmkw?= =?utf-8?B?eGE1bGpRdEZBTVBoQzQ2UFdzN1lySWZtejhWQ2dMZm03Q3ZpVFlKeTgvWXFP?= =?utf-8?B?eHJPUzd3Z1J4OWtXOW5FbnBuYjJ0MDhqSmltM2ZreU9kR0gwbzNmSHVUb2Nl?= =?utf-8?B?bDBYUkNFVjhPWXBGSW05SnYrbzhwYXMxcHpteVc5d1l1UkFuWlBTd1lDWjJW?= =?utf-8?B?bDJvMDhxRTFUdm4zNjZKUC8zbElaSEZzK0EyVkJ2VHVTUHg2NjVTS0hZdFEw?= =?utf-8?B?L3Z3dzJIY01URWFuYXVJckkvcmcyT2NGcWh5TzY5S3NvV3VWT0dBektkL0s1?= =?utf-8?B?bWRJU0Jka2V3ZUNiZ3VRcmhscDJCZGRlYnJOVERSbDFVRWYrK3NaNlRoT2x6?= =?utf-8?B?UktWVVQvWCtNUGpPYmEvUTlEOVFZNVpLcTVaT3F6U0VsQ2pmckFYQmR4Vld6?= =?utf-8?B?L2djNzg4UXhWYzFFbFFQby9Fc29tbVF1dWw1YWFyUjBHRDNMNlNnR3VrMk1F?= =?utf-8?B?M1Flc2lrZHo3Ym5zczNxNTZ0VFBqZC95dHdkOGpvZXE3SzUremhyWnA4V29R?= =?utf-8?B?QUJZR1luRVpHZExSaHdwNTlrSHpONTZIRCtBUW51THVlQi9kTHAwVmRxQk43?= =?utf-8?B?OVhKMzc0YVNNTmhLWUwxNTYwVEU3Q0tuK3h3VHdQQnU2b0t4TFZVOTQ1Q1Qx?= =?utf-8?B?aitTcUpFZENud1B5UWhmZVdlZHY1YnlSa1JpTWNBcXpRWmNSQTNpdXE2TmNQ?= =?utf-8?B?NzRTdUlPd0Nhd2J3QmNHSUFHaUxTSUphbVRHNXhhUXh4Y3A5emxIQzR5a2VP?= =?utf-8?B?bDlaQnNCWEtvcU5qQ3ltemZ2Z1BKVEVSeS80Ui8vK2o5RStQc1FUdVhNcTh5?= =?utf-8?B?R0pmR0o3Wm9yUEpDSVY1aVUvZzg0enlSUmt5ODZpNEs5d3AxQXJwcDEzdVpK?= =?utf-8?B?ejR4TTVWdTR1RytlWjF3amdMaHZhYzlmRGVQOFN0V2szSEc2L2xMYXFnSVNx?= =?utf-8?B?d25CVWM4UVpXbnExSEdTejNvZGFKY0hSem5YT1M1YmN6OWJsM2creEtlMGgv?= =?utf-8?B?YXJmOVAvWGREeC85bkwvazBydFdYTFNKSXlITmF3aUJFV3FPQnpFV2FsL3Q0?= =?utf-8?B?a1ZIVTNVamNtaUhQRkh3VXpEMUpvdTdkMktZYm5BUktValpjQlBsajkzeWF0?= =?utf-8?B?aVI1Tlo4cFVNdUNEYnlkS1ZDRVBIOURGbGdVU2cwdFBxQ09VSWdWSk5EMm0y?= =?utf-8?B?a0pjZDJncmRvUWV3dTBjVUxxU1FWa2JEQXJMamZIQVdSN1NxN1JtUnUwbXdT?= =?utf-8?B?YWNkREZ6cmVwdU9aVERQcWJSWTkrVkhXUTg3ckhsTlZaSVd6c3c4cDB3dUJp?= =?utf-8?B?czhwT1NpU1pTNEtQOGNyL2UyT0FVOTZxTzNsR1hlQmNBbEczaExtSzdwaFZy?= =?utf-8?B?L1gwMThuaHZkRHZzQW5RbVdpWUFSejNYTWxOSVo2L2RkcnFCbnpVaGZmd3Zq?= =?utf-8?B?SWNaYUNpKzFBOXdtK1pCOGFFSEszUTFoM3JEVnB1YkE3MlB2RzJidkJXelJM?= =?utf-8?B?WGY1UT09?= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OVJUTlFVSjRhWms5cGFFRHp0MXZkaDNXaG5zZ0hlOWpLc1FmcEE1VnFUclJF?= =?utf-8?B?YlBUUDZadXlxY21WUmhxUzB2ZnMwM2h1NUpRbC9WY3JUSHdOTVBCaStpWDdV?= =?utf-8?B?bkRpVkwzVjU3SG54ZWxtOUpZL1lESVRveGNlZ3NUOVVsQ3JGWVhpb2EwaHV3?= =?utf-8?B?N3BIbk54djlrZitpaFlNNXlJNmFhdVB1KzRJTXpYWXpuRDRJUkxvdGpYeGJj?= =?utf-8?B?SGVBeEtMWW5BVlF3ZVkxN3FUSnR3bG5GdzBZYzU5dVFyeU5mbU9TSk1lYUJh?= =?utf-8?B?QXY5N05Bc0JRRHAvOThueldJZGk2R1NDWlFqMnVXR2FseXFueXZGcW1oMndD?= =?utf-8?B?Sjl5WWNKSjZ4NkVYMk9sUkFwTTM5Nko5Z2RLVmhhMzNuK1dOc2krUDhHUE4y?= =?utf-8?B?TjRjeFRpdzJuZFVjNFM0VG1BZzc4Ty9mUkgvTWpjQWdHcXlpV3JKNTl5T2NN?= =?utf-8?B?RktWTkJ6VjJiaExvOXdkU2FlWFpNaUVXdDBXT0trczgvZFVmNGF0dU9KTldE?= =?utf-8?B?aU5FQWVDUTNhQjNNT1pGWDFsZ09CRjF3dmhKamIxOUJWNzVkWFh6MEVhSkFT?= =?utf-8?B?S0RGaVZNRnVMemtXREpRblI5VCtqZ2ZjcUFwOFBPeG5nUVVBR2ZtV0VBVU02?= =?utf-8?B?YytMaDdoSmFNaWQ1WUtVdHd5U3p0Tk82eXhETHdjeStGaE45ZmFvVWtnTitX?= =?utf-8?B?WUdMY2drRXF4WmNINXl1YU1XRFRwSVlpbkNUOVVhUUFhYmMrZXorOHU0Nys2?= =?utf-8?B?MERiVE5ocmhsUHVic3JoVFMwVEJTNWFaTnczZlFuZkV0dFBndUp4NTY2Z016?= =?utf-8?B?NVZBWDB1Z0I4NDFyd0RCVkVSZU9ORmo1K0dPemc0dklCL0pBUDBBMUUwYkRO?= =?utf-8?B?d3N0NEw2RmhKU0dJOVRlREpqV1ExaW1hNUxZNGlyL3h1VXlvbXpNUExOK3Bq?= =?utf-8?B?VHhLcFlmYVplamVyalBDUnpROHBYays0ditrVFp6VlR3aG10UXdUbWNXYlVB?= =?utf-8?B?cS9ITDc4aVRlQ0dDRHhWaWFrSXBWZnN2Q3dkN28rWlMwTVZma2VuQXFkME5z?= =?utf-8?B?dnVVUXZkTUFZOHkveVN5V0pSWUp5d2x5NDFFVnJZMnFSaXhtQ1FYOHcyam9F?= =?utf-8?B?cVFxemhMV0x5b0NsdjQrV0U1VkNjdFpuNUxldVNxKzBTVndOdXZEbytQTlhZ?= =?utf-8?B?Tjc1Y0U0dUl2cUthdnh5cXU1Zzh2ODl2VG54OTduSnp5ZkRVTjRuMVNvaXM3?= =?utf-8?B?V3M2Tk13U25kWE5ndmZMOUxvbkNRUVhuVmJlQlJYdTlicGpJTjJmOXdvWlpY?= =?utf-8?B?bUdXK09ucW5adHJvV21XN2d4dmlsSDJKMnhQN3I1L21veUg4Q2pWRDVJRnFr?= =?utf-8?B?Sno1Ui94bXhEWVpwZEdpWTNBbFZUanlMR0M2c1NDbnROSE5kU3o0YTVMcW10?= =?utf-8?B?L3g3djhSNXhtalZ2RnlxSnZiRWtaOVc2UlB2TUJrWG1DbTAyeE52a2k5VWlr?= =?utf-8?B?eTM5bVRrWkJlU2hka2UyUmlCYXhYejhDaWQveldjQTR4c0d3WmJOaDV4eWxM?= =?utf-8?B?Zzk1Vm8xK3QvYjlVaTdpanhGS0JSQ21DSjdPVmUwRncvcnl0L21FREhtVVNH?= =?utf-8?B?RkhjODNkZFZDb3dpN3g3YmFxYWpCR1pXUU1oNkNvZ3ZVaTlERjNlSXdZeFEx?= =?utf-8?B?V21NOVczL0phZ05adjBaUW02VnZlNUJwbGRxaEUwU04yVHdtbW04MTZRPT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1b9a9aec-6e02-458e-3220-08dd3ed63c74 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2025 13:26:41.7368 (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: PR3P250MB0036 Subject: Re: [FFmpeg-devel] [PATCH 5/7] avcodec/encode: add a new param change side data value that takes a dictionary 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: James Almer: > Allow the caller to pass a dictionary with key/value pairs to set encoder > private options for reinitialization. > AVCodecContext global options are not affected. For that, specific > AVSideDataParamChangeFlags should be used, as is currently the case for > dimensions and sample rate. > > Signed-off-by: James Almer > --- > libavcodec/encode.c | 21 +++++++++++++++++++++ > libavutil/defs.h | 1 + > 2 files changed, 22 insertions(+) > > diff --git a/libavcodec/encode.c b/libavcodec/encode.c > index 187b4015f1..c14ab65509 100644 > --- a/libavcodec/encode.c > +++ b/libavcodec/encode.c > @@ -20,12 +20,14 @@ > > #include "libavutil/attributes.h" > #include "libavutil/avassert.h" > +#include "libavutil/avstring.h" > #include "libavutil/channel_layout.h" > #include "libavutil/emms.h" > #include "libavutil/frame.h" > #include "libavutil/imgutils.h" > #include "libavutil/internal.h" > #include "libavutil/mem.h" > +#include "libavutil/opt.h" > #include "libavutil/pixdesc.h" > #include "libavutil/samplefmt.h" > > @@ -101,6 +103,25 @@ static int apply_param_change(AVCodecContext *avctx, const AVFrame *frame) > avctx->width = frame->width; > avctx->height = frame->height; > } > + if (flags & AV_SIDE_DATA_PARAM_CHANGE_DICT) { > + AVDictionary *dict = NULL; > + int left = av_strnlen(gbc.buffer, bytestream2_get_bytes_left(&gbc)); > + if (!left)> + goto fail; > + ret = av_dict_parse_string(&dict, gbc.buffer, "=", ":", 0); > + if (ret < 0) { > + av_log(avctx, AV_LOG_ERROR, "Invalid string"); > + goto fail2; Potential leak of dict here and below. > + } > + bytestream2_skip(&gbc, left + 1); > + > + if (avctx->codec->priv_class) { > + ret = av_opt_set_dict(avctx->priv_data, &dict); > + if (ret < 0) > + goto fail2; 1. You are simply setting the options directly, without letting the codec know what the changed options are. This might make implementing this easy for the users you add in this patchset, but this may come back to bite us in the future. 2. What happens in case of error? The encoder state may be inconsistent. Is the user allowed to send more frames or is the user just supposed to free this AVCodecContext? > + } > + av_dict_free(&dict); > + } > > if (flags) { > ret = 0; > diff --git a/libavutil/defs.h b/libavutil/defs.h > index f09fb5efd2..e1de680f2f 100644 > --- a/libavutil/defs.h > +++ b/libavutil/defs.h > @@ -125,6 +125,7 @@ enum AVMediaType { > enum AVSideDataParamChangeFlags { > AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE = 0x0004, > AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS = 0x0008, > + AV_SIDE_DATA_PARAM_CHANGE_DICT = 0x0016, This does not explain the layout of this side data. > }; > > /** _______________________________________________ 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".