From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <ffmpeg-devel-bounces@ffmpeg.org> Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id B0FAC4CFBA for <ffmpegdev@gitmailbox.com>; Tue, 15 Apr 2025 19:59:14 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 679F2687D43; Tue, 15 Apr 2025 22:59:11 +0300 (EEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10olkn2063.outbound.protection.outlook.com [40.92.41.63]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D1B97687A4B for <ffmpeg-devel@ffmpeg.org>; Tue, 15 Apr 2025 22:59:03 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IjFXjq7lsdXFfDbR6UfxzZHFC2JN80r4dWxN2Z+MVfPwYCgGtbuCu6DE2KvBRAes8IpuYX706ud90a6fNrOs5nyFmJhS5nRSGXIk3I/O/TCrhCbKuy8kysvm32gadPlLoppJvqwgMf3lPZ11Bg3GOWPLbzXL9u4w0vMjMUGfy9J9thSUTYjpoNU+XyrMSh0IozWwJHOoYZCXoCqahFKr6SMtq5LC4jBV8lE+dDMmrAJsjDn5d0lmzSara9MdVzLglPWyrpu/feNe9HVX+4l6sn7blME9Cio08iNHLE74jIKZp9gLYmsWUteXB3SU//W8ggFD4ki/SPLcmwJDKjoxPw== 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=/Qa0nJi5OAFxcotJK3Bk6UbhOBWNDPLSK3CPkyGZPHQ=; b=FmyTH6EM8bXe2AH4K3AOhmwbyNnM7C1zI5dtNCHvzYdHqlosrTcKwFBU2rAjcBnSrhzSr1a5P+Tyrp98lKb5ohzdtCNnlgt+W8rBZHc8N9zloJXuWMLue5w43jD749HwpuzwmKxBSDwsEURfBf06ssPiuE371Y7+7lGiKSRfU6TWzV4npGqFZOCCgEupUmKVojoH+KAUnzf/JITvX9xnh0JTzb1a0h/RVftqXJ38UJljqdnbnHq04Nsr/642yzAVb57u/rleFC90oIkzf//lBSyTzvxuiG8N8zTWHgpOQgzCBPdcZFxFmdNYLGb8vWgJQTkDpE4DR9x+8mRW9e6q9w== 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=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/Qa0nJi5OAFxcotJK3Bk6UbhOBWNDPLSK3CPkyGZPHQ=; b=fmXZ1PJsdZsF9hQL6Tdt004atOUufveIMwje8hzbdeil6WsAIegYfAqSybkZ/1EyGi33AnGRyolmxDaMynpOOULQMIuwpyhGeXE5v1jl/lC1WtEbdL6tW5waf1MtFn2tMYIwAExnZzAdKNhLfbFqlXWct15dskJCM6BSCCM8rRyEwSrZ9mcDK06YEig26KkmLHMM9DAdGf0oxBMEoXDnYrgGRr2yWkGOndDXarg3QmBkxRTAgZvfQuul8aEEEBLZtjfZTRFjghDH2dP2RITQkwMcyOnDNG1pVVtrqa7UqTpHmrU8+Pha/9LE5zLSRSwkNasVw8+wWQvCFTu0YuN4DQ== Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM (2603:10b6:8:b::20) by BL3P223MB0036.NAMP223.PROD.OUTLOOK.COM (2603:10b6:208:34e::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.36; Tue, 15 Apr 2025 19:59:00 +0000 Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM ([fe80::bf09:8e9:b07f:98a7]) by DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM ([fe80::bf09:8e9:b07f:98a7%4]) with mapi id 15.20.8632.030; Tue, 15 Apr 2025 19:59:00 +0000 From: "softworkz ." <softworkz-at-hotmail.com@ffmpeg.org> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Thread-Topic: [FFmpeg-devel] [PATCH 2/2] avformat/id3v2: Check that decode_str() did advance Thread-Index: AQHbqzD6b8QhS9IB3U2xSLilkCUpvrOfQsxwgASOQgCAAAZwAIABQhQAgAAFo+A= Date: Tue, 15 Apr 2025 19:59:00 +0000 Message-ID: <DM8P223MB0365E10D38EF9174A32557DFBAB22@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM> References: <20250411222719.2779176-1-michael@niedermayer.cc> <20250411222719.2779176-2-michael@niedermayer.cc> <DM8P223MB0365A90C10FBC9EF6512F9E1BAB12@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM> <20250414231950.GN4991@pb2> <DM8P223MB0365928500AB53069869DC99BAB32@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM> <20250415185538.GR4991@pb2> In-Reply-To: <20250415185538.GR4991@pb2> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM8P223MB0365:EE_|BL3P223MB0036:EE_ x-ms-office365-filtering-correlation-id: dfb22a0a-e4f9-48fc-d1de-08dd7c57f71b x-microsoft-antispam: BCL:0; ARA:14566002|8062599003|12121999004|19110799003|8060799006|461199028|15080799006|7092599003|10035399004|3412199025|4302099013|440099028|41001999003|102099032|1602099012; x-microsoft-antispam-message-info: =?us-ascii?Q?6aI6ZMtrO8KfoYLw2IMCZQadeEWL5gVudZteCnC7u2orbAm8oqQkzaORYe56?= =?us-ascii?Q?Gnoe8VxuVidubGf0gko+WLkngSJbtR6l6bQMIdsAF7QHtS+g5SPjIGQS4FiT?= =?us-ascii?Q?w2Vk7jtDRLuXyAS+slugNvR0k40dzeUXMZ0qbUsg1f+2TbdeBfxvtMNqSeLE?= =?us-ascii?Q?b2ohGNymlxMmmvZ01heAm8vFODIMgRZ8OD2LawHXGJ00mFpMiprXjV0Oyhuq?= =?us-ascii?Q?xQL52hhH7OiMLgQH95XtD0Tfz0ySsTwWmfxAFbnuGxANoWVqAtdrjfoVogNN?= =?us-ascii?Q?chY9IEMezb4CH/Yah00yJzR/iSMupcXmRKVD1yCfVrMJpEqtls5OFtIoRfkh?= =?us-ascii?Q?rrHgnTRmBnbnSyBcji8P2WHigu2A11yBjGDoNmXl26OYQ5YBDGV2lQt2rgOe?= =?us-ascii?Q?oZIQvIkVCysOfiyhw09evDAKbMe8bFjlqhbxWurZxWg/LaIkoKqoA02CyXZC?= =?us-ascii?Q?//xsM6fOvFxdXDtTRzguzDUmZMAHzr1MCc0QnczKUNb10mQANx6ISNxd1JFX?= =?us-ascii?Q?TD0lGU35gA675lI1DD/fX8c2Nrv1+hsRGj1qTePpNDZ2M8oJwA7/9+dwdGwn?= =?us-ascii?Q?ey/TGyS6TKSgWvE/l0XB1aTMLSkYgyDuPTEnySHfWyqTJeN/oqUOTNx5sc+Z?= =?us-ascii?Q?TIqz68sLk6EDl+KyTcnho8SAlZHyBSfAV+/RnQ132uhXA0neCTMYEpn7JZZJ?= =?us-ascii?Q?riooT5jGGOd3axhTd24QD9DhMYlDvQjCcbhUqHLtto8vAvAnXow18XpCMAi6?= =?us-ascii?Q?ItAkQPt/EyZ0AlCXDqkLwq+ggoyWo04ky+oR+gPBs0pWytaUK00rpmcM1dAa?= =?us-ascii?Q?oqFTYVZfvkk5craRkW2fUZKiH7kM8F+kX01eqpMIINxNa34quddoOdZxQqTH?= =?us-ascii?Q?gTL6vJl+k7vOb/rPtaj019GBcdUV7IKHC3NsLOPg+KBPDEgXLX8Ly7ze2I+t?= =?us-ascii?Q?XyFTRKLN26ero1nqfd5vgzWKuEUoYD0HRY8rJLOcE+fOmPPC32pHsjsvAs9P?= =?us-ascii?Q?i+Px12ShMg6rZu1KyjfboQPeLIz09lps93Q46mUvl99/AE84LCnTXDbNiLX/?= =?us-ascii?Q?idxEo77XaOxyw9XHtbuDZpmfFqUEAXtbyrY6wVHmNB9XaWiJO5cIl85lbmdh?= =?us-ascii?Q?yvyGxGezrNhJ2Oz6qJWvryFAKyTpJnxK87rgeK2nfG5XYnolbzumiK7+WXqv?= =?us-ascii?Q?LuZ/MzzTQCaaHJeynTOVvLqvXKZNjrKjVSdj5qAMdCwV170bqPrGZgkOVNvq?= =?us-ascii?Q?LaiW++B76pT+hzodnyTLxDCAz+L8jJNol4L4rz2ZldYV0kkIzrDrNvgsqLaE?= =?us-ascii?Q?o1Y=3D?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?67E0WvZnRBgD2Mq5VbXo4vaHnydhBEDfzp3rIrurhZOcuXpje7ht+IP5XJZP?= =?us-ascii?Q?8oK5i1owmieBR9gsGIcU38UP4w1IjHMgffLQWpdcDpl2qSnKw1EveUdOieYR?= =?us-ascii?Q?Y9jrl0IWuY3eHaJnDX2qwGhQecQECxzae+qhe71MpnWTyk22hTHafrPTemAg?= =?us-ascii?Q?wFb3ZP3W4Cuk6ylyRZqszhu15Keo/ynx7rEs8tVXnadEUvID9KeWrGV3OCkE?= =?us-ascii?Q?yLBb7bqHbGhZ30xOTNinLZ3j6P0St5pi808QAsYMHWxZ2LqIkkEX9nI9U3+o?= =?us-ascii?Q?0Mw3yqQO8U4FjkyiAkMxyzwaKM9K1kkD2Re9jpZlzMHe8i3bI9Zo4y4HBHFU?= =?us-ascii?Q?eAszrrEqrPgtBF3iO5ykn69nOmeMXlNeG6xevHcZhYZe91uV49662z3FC2Ki?= =?us-ascii?Q?xbE1nVekaH4Kag5Z6stlYoaCl/Yi9hvD7MUOUesmiUFGGlLBbEp6mGu9tZ3O?= =?us-ascii?Q?9VUXjSdhog7K6PgF/0R346eICn2+sYb1EYSnQZuNsQg7sqpzZ6Rkp5Y7vlBM?= =?us-ascii?Q?fgeHSFWtxpRdemErUiF+ACa9C4j9op6BEaNSfLlcMGtED/6YGWPJYB+KCl/Q?= =?us-ascii?Q?8rdhYkNGATZtxICf/7tYUfjM+NCsODyqT5QbE1QoIrui1w+XplxN0Jfj8DBy?= =?us-ascii?Q?HO1ZAAAF4eMzrQj2u2bxrtpsrza/Uu4CmpDt1FfefDX2XkyvvMXWiZDi0+bD?= =?us-ascii?Q?fpouCXo6EAm80wgaujgCuPh8QvBrjH2H1OIf98OxHvXv3+YkIckYLlr1bLm6?= =?us-ascii?Q?MpOkFGjC/dnKguJwZW9cRfp4yPxXmTFM+BzXe9uHPpaYONn7DhvUSYdkaRg9?= =?us-ascii?Q?WLmG/7BPk8XElms6R7elyEJaYQYdOqeuokD0ocOgECHy+dttMywYFCmNLJyK?= =?us-ascii?Q?Hl6T8q/50x+P6vjYVrKE6qtD07+3R89CZXpq7AhQCQVbnxhr0oniV1SImTaq?= =?us-ascii?Q?YLUdfJ15/BOF71JLFPYM5cuQHmLnBxGwESGmVqF4C1Fn4m8dUQaFVDE+pd3K?= =?us-ascii?Q?pTQmdVGxWRRatvfjphu9Ze9safNGk8eL7oTanar6yiHDKEPdhSwb6+wycj4M?= =?us-ascii?Q?ldL01az+TCCHwJKmGmRXBAneqTa8IiFUIyr46ZWOv8OpT/Ei3A+Ro9pubI+Z?= =?us-ascii?Q?dg4iObijkGSSXaLu6ayauaROEhQ1baLJvQWgnXxTJ8bnQU0kcVe7jA6+Fs95?= =?us-ascii?Q?U4YM9xVSn2uL9vsdPpDUjsFca+7HTQmiccTdHoYA+nJQErSMKWKdBItNFAo?= =?us-ascii?Q?=3D?= MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-7719-20-msonline-outlook-92255.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: dfb22a0a-e4f9-48fc-d1de-08dd7c57f71b X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Apr 2025 19:59:00.6190 (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: BL3P223MB0036 Subject: Re: [FFmpeg-devel] [PATCH 2/2] avformat/id3v2: Check that decode_str() did advance X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org> List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe> List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel> List-Post: <mailto:ffmpeg-devel@ffmpeg.org> List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help> List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe> Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org> Archived-At: <https://master.gitmailbox.com/ffmpegdev/DM8P223MB0365E10D38EF9174A32557DFBAB22@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM/> List-Archive: <https://master.gitmailbox.com/ffmpegdev/> List-Post: <mailto:ffmpegdev@gitmailbox.com> > -----Original Message----- > From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of > Michael Niedermayer > Sent: Dienstag, 15. April 2025 20:56 > To: FFmpeg development discussions and patches <ffmpeg- > devel@ffmpeg.org> > Subject: Re: [FFmpeg-devel] [PATCH 2/2] avformat/id3v2: Check that > decode_str() did advance > > On Mon, Apr 14, 2025 at 11:59:02PM +0000, softworkz . wrote: > > > > > > > -----Original Message----- > > > From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of > > > Michael Niedermayer > > > Sent: Dienstag, 15. April 2025 01:20 > > > To: FFmpeg development discussions and patches <ffmpeg- > > > devel@ffmpeg.org> > > > Subject: Re: [FFmpeg-devel] [PATCH 2/2] avformat/id3v2: Check that > > > decode_str() did advance > > > > > > On Sat, Apr 12, 2025 at 01:49:53AM +0000, softworkz . wrote: > > > > > > > > > > > > > -----Original Message----- > > > > > From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf > Of > > > > > Michael Niedermayer > > > > > Sent: Samstag, 12. April 2025 00:27 > > > > > To: FFmpeg development discussions and patches <ffmpeg- > > > devel@ffmpeg.org> > > > > > Subject: [FFmpeg-devel] [PATCH 2/2] avformat/id3v2: Check that > > > > > decode_str() did advance > > > > > > > > > > Fixes infinite loop with unknown encodings > > > > > > > > > > We could alternatively error out from decode_str() or consume > all > > > of > > > > > taglen > > > > > this would affect other callers though. > > > > > > > > > > Fixes: 409819224/clusterfuzz-testcase-minimized- > > > ffmpeg_dem_H261_fuzzer- > > > > > 6003527535362048 > > > > > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> > > > > > --- > > > > > libavformat/id3v2.c | 3 +++ > > > > > 1 file changed, 3 insertions(+) > > > > > > > > > > diff --git a/libavformat/id3v2.c b/libavformat/id3v2.c > > > > > index 90314583a74..e3f7f9e2a90 100644 > > > > > --- a/libavformat/id3v2.c > > > > > +++ b/libavformat/id3v2.c > > > > > @@ -341,10 +341,13 @@ static void read_ttag(AVFormatContext > *s, > > > > > AVIOContext *pb, int taglen, > > > > > taglen--; /* account for encoding type byte */ > > > > > > > > > > while (taglen > 1) { > > > > > + int current_taglen = taglen; > > > > > if (decode_str(s, pb, encoding, &dst, &taglen) < 0) { > > > > > av_log(s, AV_LOG_ERROR, "Error reading frame %s, > > > > > skipped\n", key); > > > > > return; > > > > > } > > > > > + if (current_taglen == taglen) > > > > > + return; > > > > > > > > > > count++; > > > > > > > > > > -- > > > > > 2.49.0 > > > > > > > > > > _______________________________________________ > > > > > > > > Hi Michael, > > > > > > > > this kind of conflicts with this patch that I had submitted > > > recently: > > > > > > > > > > > > https://patchwork.ffmpeg.org/project/ffmpeg/patch/pull.54.ffstaging.FF > > > mpeg.1740873449247.ffmpegagent@gmail.com/ > > > > > > > > > > > > I wonder whether my patch would still be prone to the issue your > > > patch is addressing - > > > > > > This already conflicts with rcombs patch in git master, i think > > > Applying: Fixes Trac ticket https://trac.ffmpeg.org/ticket/6949 > > > Using index info to reconstruct a base tree... > > > M libavformat/id3v2.c > > > Falling back to patching base and 3-way merge... > > > Auto-merging libavformat/id3v2.c > > > CONFLICT (content): Merge conflict in libavformat/id3v2.c > > > error: Failed to merge in the changes. > > > Patch failed at 0001 Fixes Trac ticket > > > https://trac.ffmpeg.org/ticket/6949 > > > > > > > > > > do you have a test file perhaps? > > > > > > Will email you one, but the loop with a function that doesnt > advance > > > is an issue even if the specific file doesnt trigger it in a > different > > > implementation > > > > > > also probaly a good idea if you contact rcombs as you seemed to > work > > > on > > > the same code > > > > > > I was looking at teh ticket and saw a link to rcombs patch, looked > at > > > the patch and applied it. I did not realize there where 2 patches > > > > > > Hi Michael, > > > > I know the rcombs patch, but it has a - let's say - different > behavior. > > Let's look at an example where artist and genre have multiple > values: > > > > > > This was ffmpeg output unpatched: > > > > Metadata: > > title : Infinite (Original Mix) > > artist : B-Front > > track : 1 > > album : Infinite > > date : 2017 > > genre : Hardstyle > > TBPM : 150 > > compilation : 0 > > album_artist : B-Front > > publisher : Roughstate > > > > > > This is what the rcombs patch does: > > > > Metadata: > > title : Infinite (Original Mix) > > artist : B-Front > > artist : Second Artist Example > > track : 1 > > album : Infinite > > date : 2017 > > genre : Hardstyle > > genre : Test > > genre : Example > > genre : Hard Dance > > TBPM : 150 > > compilation : 0 > > album_artist : B-Front > > publisher : Roughstate > > > > > > > > My path does that: > > > > Metadata: > > title : Infinite (Original Mix) > > artist : B-Front;Second Artist Example > > track : 1 > > album : Infinite > > date : 2017 > > genre : Hardstyle;Test;Example;Hard Dance > > TBPM : 150 > > compilation : 0 > > album_artist : B-Front > > publisher : Roughstate > > Iam perfectly fine with either way > but i have to point out that the 2nd method has some problems too > > for example checking if foo is an author becomes more difficult > theres also a question about scalability if there are many entries > > And what exactly do you do if an Artist or Title itself contains a ; I think we need to take a look at the context and real-world use of music tagging via ID3 tags by various applications. The representation of multi-values via null-separated strings is something that has been added only to the 2.4 version of ID3 spec. It does not exist in version 2.3 and earlier. So, what did all the tools and players do before to handle multi-valued metadata? Two common practices exist: 1. Slash Separation genre : Hardstyle / Test / Example / Hard Dance 2. Semicolon Separation genre : Hardstyle; Test; Example; Hard Dance When we look at one of the most popular music tagging applications (MusicBrainz Picard), then we see the following behaviors: - When opening a file with v2.4 multivalue tags the application UI shows them like: Hardstyle; Test; Example; Hard Dance - When saving with v2.3 tags (and semicolon separation configured) it saves them as single string: Hardstyle; Test; Example; Hard Dance When we run FFprobe (without any patches!) on that v2.3 file, we see: Metadata: title : Infinite (Original Mix) artist : B-Front; Second Artist Example track : 1 album : Infinite date : 2017 genre : Hardstyle; Test; Example; Hard Dance That means in turn: - Semicolon-separated multi-values is not my personal "invention" - This is a long-existing established standard for representation of multi-values metadata entries - Semicolon separation allows a version-independent round-tripping of multi-valued (music) metadata inside FFmpeg A further improvement would be on the side of ID3 tag writing, to convert semicolon separation to null-separation. But even without that, it is the best possible way for us to go, because: - It will retrieve and show all values, no longer just the first - Additional values don't get lost when transcoding (as with the rcombs patch) - The representation of multi-values - both, internally and when outputting as probe data - is a de-facto standard - FFprobe output remains valid Best regards sw _______________________________________________ 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".