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 0D2124D24A for <ffmpegdev@gitmailbox.com>; Wed, 16 Apr 2025 10:57:41 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2BB39687DEF; Wed, 16 Apr 2025 13:57:37 +0300 (EEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2032.outbound.protection.outlook.com [40.92.91.32]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9F918687A8D for <ffmpeg-devel@ffmpeg.org>; Wed, 16 Apr 2025 13:57:30 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rbh2yDWkpptMkjQhhiF5MqACw9SamUknBieeCWz7VMxVioMIVq9MtxTLlGia+4lBA9gwivRkDx+H9dOeCDb/J69TN4HvGibODLnDQlt8aQrvsr5mGIStSyBbhkL3nhc9gNNQ3dsYrrrqrXSOBf+7OTIC7MGpd9Dyx0hQwADsOUQ4uoolxHLqt9yJrec/uDhkkaNElOs+CJ8qg30eDijLO59jDdx0ZcI3x/ZV1hFjhJOLttTOaixqxRRjJj4bvsDzguM6dieJm5/hE3E8A11ufHeGRYHdQMLjTuz538pQyrQ6zGLUUYGnd2GqT682rKiL+hWQ7NoamKs3dBNoIvmgCw== 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=0yku7Y/Ak6bYdqa4iMntpHNUfenhsC/D/wo26vo2Msw=; b=j8TKi4iDvbiFYowkVNN4s+vgio05Y4iauZSWv8MX4OMBOfgeGq/pku4Z3auou4mh39j4oj1x6+xS+IdcczMo7mrttGaydAWo7Fh4vDMg05s2CMOF7z2Kq7DLla3O2I6/GIFQzKzGFBG7VU+VMAAtDkvjWwO1jaFwQtp/EjlxCELujlYNMZfnqQIeiH0XNqjc4H7IcwMHpQaDuq5WqKJXCLe8OTV1kgDJF9HtNA8340nrgw2RR3rYLNaEqA6A0K+zJNkrT06M74cGc2FXvsUQ7idZCCX30s4qGidarNMZ/oxuoLvpPzTV0L0f8Fr/qamhGgHpItbTq3KDqlB7sZaIrg== 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=0yku7Y/Ak6bYdqa4iMntpHNUfenhsC/D/wo26vo2Msw=; b=Eboia7fNDOKetw/yFdwe+3yAHMffyDmAEJWbJ4uimvSBUmkkQSkOpXRV9IArBLGOvG/7Ym7cYEqd2+q2Nmnb3BZP9exiSTOhKMcBllEiiyaz5tfDx/MaExwZr10+Q43TX54+4dcUFCiCAE0sv6CZuZg20BSrWQXlu0bBo4qLB+ESGEGrOFVKGOrH/z4grPdtFgPhOek9EAB7RDCr2MndqriwYsaBGo+E/WKN8aqdjyXGB9TDibxj0nFjebW6szshC2HGWs3iv+Yf7fCDnoyesVGGcH2b1+/d39Bs05DrBVwx/5ThUJKD/5Lgg8eKzE9nhozhr17/j0tC0onjcDXG7w== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0352.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:27d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8655.18; Wed, 16 Apr 2025 10:57:29 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614%5]) with mapi id 15.20.8655.012; Wed, 16 Apr 2025 10:57:29 +0000 Message-ID: <GV1P250MB0737D12B75A98BEAC01DE9328FBD2@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM> Date: Wed, 16 Apr 2025 12:57:27 +0200 User-Agent: Mozilla Thunderbird To: ffmpeg-devel@ffmpeg.org References: <20250414231950.GN4991@pb2> <DM8P223MB0365928500AB53069869DC99BAB32@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM> <20250415185538.GR4991@pb2> <DM8P223MB0365E10D38EF9174A32557DFBAB22@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM> <20250415225001.GW4991@pb2> <DM8P223MB0365EFE83DE448577271D852BAB22@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM> <20250416012145.GE4991@pb2> <DM8P223MB0365836071D915E428907879BABD2@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM> <20250416013339.GF4991@pb2> <DM8P223MB03658C2F1D76A2E9901E6F77BABD2@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM> <20250416105325.GH4991@pb2> Content-Language: en-US From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> In-Reply-To: <20250416105325.GH4991@pb2> X-ClientProxiedBy: FR4P281CA0379.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:f7::11) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <71b2b22e-96e0-4778-9266-ad1bae2b8e98@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU2P250MB0352:EE_ X-MS-Office365-Filtering-Correlation-Id: dcd145d5-62ba-4193-e4e6-08dd7cd57ac5 X-MS-Exchange-SLBlob-MailProps: EgT5Wr3QDKyfA/kqhNtxhLoDzMvzACCoEEIcSSaUF7EMz+r3pwiBFqUFd0DeKJ09RprPWOHA/QjyTuJnJTMTh2bAFbO5EYpUMu0gWECM+KyVCbTmcyR3iaeE+6UzApowPKBW51ovlhkApQ0obeTt8G9dS/SyQs+Oet30JeC/OYuue42SfAOU80cZf2fNNWdtV4mCYEcEOJXJwoQYQN9COzLN/LEOFPjRi0gyxKRUEVYKazb+g6rZjeZTIFSkYqHEnbbvDsee6El/rxjw21OFYA93pnxazCQM0qTF7uUAswHiFIGchMUvru3esyGBDRdMkmUydFyzHkTfnXT2qh3yCsLc7lySBXdjhY4EjPOSYCcsO/iiA6nZmEiUzbbhU7R0oBqoEQIxd3veGiS8zsm6ZIuZ3m4qjA9xQQz3ISQWvNnP7txdLS+fxovW3xnWzpTC9Omt98tO45H53aFFbhto4ktdUU4gnRfoV6iT0beX5oxUCI+9UkxtgX91HKBZbnwWNPCzs68ZtxW3brxVEIzkhuQRrNbz6toN5Txo3VP2zpANr8PmMRn1U0fYgsftp9gN4/DG2isXx5u7skOh7k2pJUjlm5TxPgO1gY7El6KcK0WaKKIitIeVIDmg0Gf4lXXO8+rv0GzTpsnuvV1oDi6E4mcoCgGnZ6VIn8iWC4/phmFy87RkHcRx9ag1g3caodO1g5JXXfjFdMWCwT1SDLs1xVtslsQcbteMA9aG9oTfFno= X-Microsoft-Antispam: BCL:0; ARA:14566002|6090799003|461199028|19110799003|15080799006|5072599009|8060799006|7092599003|440099028|3412199025|41001999003; X-Microsoft-Antispam-Message-Info: =?utf-8?B?b05jMEdVSDB3bDBTYzdZaXlzWmU4RkV2amFxTXF3OVVPNEovNE9FazNvU3E5?= =?utf-8?B?d0xsbWJZRyt6VXphaVlXeUNwbFpXSEc1bUNDUjR0S0I2UDlrSlQzNGsxcmJC?= =?utf-8?B?NHNjUWl2ZG1kQk5adGlwM0Q5ejVwblI0TERHZ2hIbmpzOTVqb1JkTXhBREFi?= =?utf-8?B?NjdqQ0FraUdqYTRnWnBtYnBJUllJSnYvMFhJSVVGV0M1U3ZGWG4zOE5nM0tW?= =?utf-8?B?dXFNaytKYXhPS3pWTThoZTJQY0hHZFJWUndLUTYvSm80NlAxZTZiQytwWnVF?= =?utf-8?B?aFUvcWNZSjRuN2F2YnZDVlJqQkEwNFRPdm5jZXJ5NlI5MnlaMGZkUXZ4YkJY?= =?utf-8?B?bTNnY0YrZWpMRWR0QjVxb2trNnhyYXcvSTlvc2EvdlN1WTFLMzB1ZUlyem5B?= =?utf-8?B?c09FZjY2bGlUdlRJYkVUNmMyNHJ5N3kzeWtMV0gxcWlpOEdwSmNwVXR0dVhM?= =?utf-8?B?MUVhSlJKM0R6YitpQnFsejlMcXRqNDFzRWppWG9CUXZIM3ZVOEFndlBxS0hJ?= =?utf-8?B?QkJJUFpadVNRL2NvdUlzUTJvamQxZDQzdVBHbUdQRW0xOWswcFJ6aVlwN0dI?= =?utf-8?B?dUh3WXZzRy9NYXZxbithWjF6ZkFQV29YR0toSjZodndjL0t3aUhrVHkyWFhu?= =?utf-8?B?dUhLY2Ztb2RJUFhoOXZpZHk3ZHUzRTdvNlJBRllXVjZKanRHYWhSdkNlbitW?= =?utf-8?B?dG1DbFlwMGtnVWJ2RG05V1lEYjdXblIzbFV6OUxpckhYdzRURXBISWhkejEw?= =?utf-8?B?T2txMks5S2ErLzB1M1FsanVnYWY4TDZsdWFIdVFrWGhjMUtvS1ZUbHBoNDJ1?= =?utf-8?B?ZFFkQ1lCVTYvY0FWV05xNU54dlFvNk9TRFhxeHZhcTZPeW9NWmtwa1ZKV0p3?= =?utf-8?B?MTM5dWlXbVNTTThETHFTR0NaYkR0V3Vnakx5OFYyQjh5ckZUd3FuTXpJNi9S?= =?utf-8?B?cHVvVmhySnhwdHBwWnlOdUI2YzJ0VXA5R2tQNExMWFBETk1vcnlOall0Q1pO?= =?utf-8?B?REQzYlcyc1FVN0M5YWU5dnloUFBYZ1Z2Mnh5aVZWcjFuWHord205WnVpcE90?= =?utf-8?B?S2xvaEU1SHRNeUdQZ1czWGVxSFVrYUR3NHJUN2hDcC9LSDJUUVczU1UwN3Fh?= =?utf-8?B?VFNLb2pEMzVuUUgvdmhQMWx1VVF6c2xpVndMZmY1K0dNUkdZcjRVRWVjVXBW?= =?utf-8?B?QmVJaENoV2JYakVtSTRLQ0IrQ1E3elk4a1pFK081dmo5SVFnMmpRQ2gxSEt1?= =?utf-8?B?Ry9mTGJVbGl1SW56dm43TDlUME1BbWkreWFJWXViRkdqbXdja1BZWkJXaHJY?= =?utf-8?B?YXRBSXZSaG8zdnB2aWpYRzFtQ0xiakN6ZCtoeHMyL2dla1F1eklKVDVIQ2w1?= =?utf-8?B?K1Y4K0xrSyttejRTd2o0TjcveGlYZVYxaUxLZUJRd00wT0V6cU5zMGVCWUdF?= =?utf-8?B?NDdKU0tqK3dwanJYZUk2akk5ZEVoK3ZtMmpHZmZBVSs1Q2JDNTc0QlI3cFhy?= =?utf-8?B?eUxES2g2NDlkTks3SUI1bCtpT1I4a0RMZW4vSnNrSVNZeTZXeDJiUlRac3h4?= =?utf-8?Q?gV0IoXgba4daCPcNX3SFSW98w=3D?= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Wnd2MmxqWWNjNktHbktueFhrTkhqRi81UVU2ZDFmaE53bTNmREZtR2xPUFBX?= =?utf-8?B?djdrVUwvMWs2dnl2ZFYzVFBsSk5tNkY4LzlwZzBWN0hGdUxJRy84bDUwVGZU?= =?utf-8?B?WS9oeGJidHVoN3VhcFNyK004clNZQXlVZ2p5Sk5JTGtwd0huNk4zSjE3WEQr?= =?utf-8?B?SWQrZmloRnVJeFdtekNkR3VVeEpvZy9kN3ByWGROVlNMQnJjMW1CSHFRUVZV?= =?utf-8?B?NnJRWXExRDVHdG9SZmIwVTZyNWhyWks2WUJKL0ZZeTNtVWxHMHNselBpbG1W?= =?utf-8?B?a0ZhdTdjU0luOWV3ZDNYZ1dnM2J0Qk9wa0p1cmpqQzdCMzA5N2ttL3dvRU5N?= =?utf-8?B?ZkttQllUSW1pTzVOWlJEZFNnR0JOZ3k4V2hKWS9NM1FNMFhXS0owb0YxTFQ0?= =?utf-8?B?RXpnVWtVcXlkODEvMFZHbHc4cWZEYVBpWWRIT0ZrcFcrSEVpd2xvNkxiaTJq?= =?utf-8?B?dDJFWE4wK2hSYng3QmhZNG1vZW9rdkZCaEtrRGFUdVZ3WGErdU8xMFNqVFhN?= =?utf-8?B?cHNtRTM2RjVscTZENVdMVVkwMEx5TkIzRU1UUzFwK1dTeDB6UUpiclozaFNE?= =?utf-8?B?OVpDOGt3ZzgvOFBvYWdwSDByb0paWlh4Y2RUZ3RVeHFBemgrM0JxcDltdmFF?= =?utf-8?B?NExpbU1BcnRDUG5wT1BaLyt1WjJKNGVxMTZNR09WRnFpOExUZ0tMRDRTV0hB?= =?utf-8?B?SStwVHFlZndmTjJyTjRiN3hJUzVYWkJ3MzhMSXRLaDVFZk0vNzZCd3FYclkv?= =?utf-8?B?d0pLSVgybjFoeXBuaitiUTJNVXdZN2RVaDhWZm1nclhEeTVpc3NZeEtYdUMx?= =?utf-8?B?SStkdDBtTnY2OUozbHVlRTN1S0V5c3VEbU1vTUduWXRMK0h6VS92QUdZaE16?= =?utf-8?B?THgvTlg1UXVYVlhROERmeU5sTWRMMjNqOEl0aVJwWTJhWnprMUV5VHhWRTEz?= =?utf-8?B?Q2poZTlJQTI4NVlMZlVTRHFTaWtwSXVpdEFrSEtHNzBGSUFrazRXcVV1VnFi?= =?utf-8?B?TEFwTGdkZGpyQmN4ZVNkSWg2UmFPVzlYT1NHZFV3NHppUWk4T21IQ1hUNG9E?= =?utf-8?B?SHUrS3kwQ3dXbTFDOVBob0dwZzJ1dUk4WTdxOFB2UmJSSytHWkZvT210c0pK?= =?utf-8?B?aE5oSk5QSDVDUXB0OGgxUzNmTkVyakdoaUJ2QU9qYTFUd1BwU0tUNlV4UE4v?= =?utf-8?B?NVUzeVczbHZjcTdzbEliMFFUTExWQmdNOHlsZTZYNG5iQVRmZVdMd25Pa2FU?= =?utf-8?B?TWFWRFd1YlBETUZmUk5WMmNvNFhZbWNWQk9aMitEc0s1bi92UDZmclo1VTJy?= =?utf-8?B?SXNnTld4UlUzaW5ua2lrRnhLbVd4bXdXQUNkdE02enBBbkRTOFExeGJvcmZk?= =?utf-8?B?YzIwc0NPMmkyWXJUVThxaEhraU8rRWNOdnlvaDZ5Unk0K2ErZHZxdmpQeE1C?= =?utf-8?B?ZWlISndtTmw2bzQ1VGVDVUZJZER2QlUvdFBkRjZkMVltbU13Y3htem9XVGJ3?= =?utf-8?B?VkdKODBuV2xIeHJ3dVN2TVRPRnNPN3FHOHZGOXVWUHhMaDVkVFRnNkdOQno1?= =?utf-8?B?d1BEbGFXeFRpUzZQbVhYaExpSkx1Tmd1eDFUR1h3TVJHdlRiNU01VmtzM1hF?= =?utf-8?B?WncrN1pBQlJiK0pWZk1JWEJieTdCTWNRejVRckRPckptWGdncmdFVkxlVHNT?= =?utf-8?B?Uy9rSDJmNnBBYnJHZEpIWmNWUmVOczk1a3FTcXpSVmc2Zmd1djRnd1Q5QzNU?= =?utf-8?Q?84t3dOUJxpoIfBKfuIdZGvQnC0/rRksKdR7CRDD?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dcd145d5-62ba-4193-e4e6-08dd7cd57ac5 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2025 10:57:28.9684 (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: DU2P250MB0352 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/GV1P250MB0737D12B75A98BEAC01DE9328FBD2@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM/> List-Archive: <https://master.gitmailbox.com/ffmpegdev/> List-Post: <mailto:ffmpegdev@gitmailbox.com> Michael Niedermayer: > Hi softworkz > > On Wed, Apr 16, 2025 at 02:52:21AM +0000, softworkz . wrote: >> >> >>> -----Original Message----- >>> From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of >>> Michael Niedermayer >>> Sent: Mittwoch, 16. April 2025 03:34 >>> 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 Wed, Apr 16, 2025 at 01:29:02AM +0000, softworkz . wrote: >>> [...] >>>>>> This will cause deserialization errors for many people in the >>> world >>>>>> who are processing FFprobe data. >>>>> >>>>> As said, ffprobe should not produce troublesome output >> >> First of all, any patch MUST NOT introduce behavior that goes >> against our own specifications. >> >> From avformat.h: >> >> /** >> * @defgroup metadata_api Public Metadata API >> * @{ >> * @ingroup libavf >> * The metadata API allows libavformat to export metadata tags to a client >> * application when demuxing. Conversely it allows a client application to >> * set metadata when muxing. >> * >> * Metadata is exported or set as pairs of key/value strings in the 'metadata' >> * fields of the AVFormatContext, AVStream, AVChapter and AVProgram structs >> * using the @ref lavu_dict "AVDictionary" API. Like all strings in FFmpeg, >> * metadata is assumed to be UTF-8 encoded Unicode. Note that metadata >> * exported by demuxers isn't checked to be valid UTF-8 in most cases. >> * >> * Important concepts to keep in mind: >> * - Keys are unique; there can never be 2 tags with the same key. This is >> * also meant semantically, i.e., a demuxer should not knowingly produce >> * several keys that are literally different but semantically identical. >> * E.g., key=Author5, key=Author6. In this example, all authors must be >> * placed in the same tag. >> * - Metadata is flat, not hierarchical; there are no subtags. If you >> * want to store, e.g., the email address of the child of producer Alice >> * and actor Bob, that could have key=alice_and_bobs_childs_email_address. >> * - Several modifiers can be applied to the tag name. This is done by >> * appending a dash character ('-') and the modifier name in the order >> * they appear in the list below -- e.g. foo-eng-sort, not foo-sort-eng. >> * - language -- a tag whose value is localized for a particular language >> * is appended with the ISO 639-2/B 3-letter language code. >> * For example: Author-ger=Michael, Author-eng=Mike >> * The original/default language is in the unqualified "Author" tag. >> * A demuxer should set a default if it sets any translated tag. >> * - sorting -- a modified version of a tag that should be used for >> * sorting will have '-sort' appended. E.g. artist="The Beatles", >> * artist-sort="Beatles, The". >> >> >> Especially: >> >> * E.g., key=Author5, key=Author6. In this example, all authors must be >> * placed in the same tag. >> >> I think, this tells very clearly how it's gotta be and how not. > > This is written by me 16 years ago > and it made sense at the time. Our APIs did not support multiple values per > key. > The API supports multiple values per key since 9 years. Using said API is > more convenient than having to parse and escape ";" around. > Thats for our code, its simpler for a muxer to iterate over a AVDictionary key > than parse a ";" seperated string (with undefined escaping rules). > and easier to build a ";" string from a multi-value AVDictionary than to assume > the internal ";" escaping rules (whatever they would be) match the target format. This is all true, but it does not change that we are bound by our API guarantees. > > commit 47146dfbf6bca94dd0706b4313cc5e26edaf18d4 > Author: Michael Niedermayer <michaelni@gmx.at> > Date: Sun Jan 4 18:48:37 2009 +0000 > > Generic metadata API. > avi is updated as example. > No version bump, the API still might change slightly ... > No update to ffmpeg.c as requested by aurel. > > Originally committed as revision 16424 to svn://svn.ffmpeg.org/ffmpeg/trunk > > diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h > index e45f7d6dfb3..7038d2d2c41 100644 > --- a/libavcodec/avcodec.h > +++ b/libavcodec/avcodec.h > @@ -400,6 +400,51 @@ enum SampleFormat { > */ > #define FF_MIN_BUFFER_SIZE 16384 > > + > +/* > + * public Metadata API. > + * Important concepts, to keep in mind > + * 1. keys are unique, there are never 2 tags with equal keys, this is also > + * meant semantically that is a demuxer should not knowingly produce > + * several keys that are litterally different but semantically identical, > + * like key=Author5, key=Author6. > + * All authors have to be placed in the same tag for the case of Authors. > + * 2. Metadata is flat, there are no subtags, if you for whatever obscene > + * reason want to store the email address of the child of producer alice > + * and actor bob, that could have key=alice_and_bobs_childs_email_address. > + * 3. A tag whichs value is translated has the ISO 639 3-letter language code > + * with a '-' between appended. So for example Author-ger=Michael, Author-eng=Mike > + * the original/default language is in the unqualified "Author" > + * A demuxer should set a default if it sets any translated tag. > + */ > _______________________________________________ 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".