From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 79D204C622 for ; Tue, 21 Oct 2025 17:45:48 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'+ldoWd9fAXZ4qs57OIkMWGvkoUZBmvgnHyxKaXDzNCU=', expected b'95OUt5strimxpEUYCfVOqNJ2AVmkSbupiF/AbNlKS5k=')) header.d=gatech.edu header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1761068735; h=to : date : message-id : content-type : content-id : mime-version : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-transfer-encoding : from; bh=IP/304x6I/SbVE/Wk6PA8bCkBHMg57x+sgisHHcsebw=; b=C0OC8I07eFYxVWqBnJAo7fmZn305QmhYbrjeNCTedvY6gXQmpSfcjLr4RKzQRaFj/OL3h K4l/pxggf12NACmFNY4SeNMnKNCM/pIZloACKg2OnxtwN5QGjiFErVCh0rNv8Sqpqc/ACHD PTKp+Mf4CZxiz8RzpN0BYqUTpa68zUO2X+xSPLNcz6JEB3jg7aZ/4m/oPXoFwqaNGnieE2r +Rkcj9WTJbCwsXdPFBs5dLK04Ns8bvGrg18ZgcKOA1DOfgesCU03+lJtILTGwiAGF0N+5rg r3gRC6T1woVa+fK9DHwntTsbXEuqgRLHivk9/81d124odc2dwvB/ZiZoP7bw== Received: from [172.19.0.2] (unknown [172.19.0.2]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 1B6E768F57C; Tue, 21 Oct 2025 20:45:35 +0300 (EEST) ARC-Seal: i=2; cv=pass; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1761068732; b=Xx7GC9hb35nXxf982Tb21gzs8RaJjwc1m71uAU8KcmgokZjZgvvr7Bh89UpsfCFcajGHy bApl4MPl9OpQRmR6HyqfM/cyIz+uC2BNdLud4CAa8cIL4930AfBLsio5LgfljNjHye+ASip qG7IUQVDnSJkKpkbtVIhgId9FHxAEWtwa5A2oxEbn3AOqrw1eKKGrf3y2Iepld0w6fSpXVO c7BRKeKlqaNGahsuB/Bm34qmxbQyWEGjScmX6C7RSbQAdE0z7OE/r868LgBgikrr69L2wEp BqqJLz26grZjIafajTwxSi6QgwjAFbc82HgFDgs6SHiJgTlEL15s5JlsIEyA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1761068732; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=+ldoWd9fAXZ4qs57OIkMWGvkoUZBmvgnHyxKaXDzNCU=; b=TnrfJbNLHN6WzYSx0xZFBZRrIWWmknlgHwCJu8Q8LFGOuev0LK1j1JyjnMJaRpbPYlyn+ eISPD4e0396skgPwe82UzWUz7dl3UZNhxGey08PUKlZBWfiKmL3DkLtKvzD7rgKBAwKbPaQ raOkYZAVacMiir1a4vnKNf66T7qZfodyk3DlR2Lwlrfxg6qc4lKjsQicPzvYCr70fUhIFfZ pfYlydIHJvXXcER8j7YdBmxOC1B1ais5BupC8EjuBJ8qjBiYEO5HQZTT/dXCvR28yiz+SWM 1F01B0Gutyku+5rbTxICcYucgEjwltGNVZ35oLohs+2656I93UMsGmnnthLA== ARC-Authentication-Results: i=2; ffmpeg.org; dkim=pass header.d=gatech.edu; arc=pass; dmarc=pass header.from=gatech.edu policy.dmarc=none Authentication-Results: ffmpeg.org; dkim=pass header.d=gatech.edu; arc=pass; dmarc=pass (Used From Domain Record) header.from=gatech.edu policy.dmarc=none Received: from BL2PR02CU003.outbound.protection.outlook.com (mail-eastusazon11021112.outbound.protection.outlook.com [52.101.52.112]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id ED62D68F4DF for ; Tue, 21 Oct 2025 20:45:17 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YoEMSvHpza8Ywymoet7D37HwdAoxwZC0MeIvBqI+lh2beGt569qo181IhcrcgNvQwWWFdrnq7Xt2toHpTffN+6vdNJXtuDaMkpHMS0OqAtn5bcmIqS7MtMsHFChXFOA3/pvnB6CBPneQYXCbUrMGh+hALcOODGphI3HV5q91XDKMZ+ffOXzU1vcsLn8szQ1W7yPB8LE3ZHu6/+DGa7sQF9PEFu9kJIZbcCHFbyU6mfhxFpp5GZ41AirfI6jcMrHRaof83HjWNAbcNckuyVRjdRrpO5rpFIZ1jlZWMGxo+fJ/dLXzHG8Y3F2aRJgcUxKspUofYxhoCMhRJvhMmkYhLw== 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=95OUt5strimxpEUYCfVOqNJ2AVmkSbupiF/AbNlKS5k=; b=VjgbZNIdT9/9zr3UEITwCmV6v+vK7/04vep2W2p74qNTP1xac/9p6XFPct1pySvDJB8RDBhWSa817tSGC1EyLuOXWcGxCi9gQC0Swk/nx+HoNjJTmXJpCpKneaABkXVICr0HP4R3rlt4xS+KqpETKYyVhF9SgtjjDD1y9Su7BkDj1NfSD0o9CsZld/SVJ0s84Z1WL5AfTd+PMlqL6kYKPnv+HR699nDniiuwCkgD8gR4UEW7C8Bfbs8k6PF40YL9avGUUBQxWEpwZcaNMmNdLqyqTkKewQLnxAfl5thbOzP6rhxMKyhQoUVJyINoMckYPdYUTmefYX5qSoVOJllw+Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=gatech.edu; dmarc=pass action=none header.from=gatech.edu; dkim=pass header.d=gatech.edu; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gatech.edu; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=95OUt5strimxpEUYCfVOqNJ2AVmkSbupiF/AbNlKS5k=; b=ug1aKK7TELwpgYElCYXi9soJ52XtMER51rDXOPd8vYFpBEdXv5Nkfk8bP1s3XI7DdddO7jONzOwHQEA336Ft6QsRIQ3DYqukslLL5oMVPaEhpAiqBrlLW7V0vP5naUWWosKhPRS6B3LK5pu670ceK5P1VdM9Z00V65kuFaGUBWnQMkb+6jhE0jKUlWDS6K7Le6c0Tx8NzJ4nlWbRVkjaduRlql3ghczlQXJ8EgbiXuOTi+6e1U03BpS6onWx4vevnUslIcSFPXERTlGmNjduxahJ9l888G4Q/ufteL3apGMgz0VFqxWz96NHHXH8QZUWxtHEz5g4UBpIDV6s4Wm3kA== Received: from BN0PR07MB8831.namprd07.prod.outlook.com (2603:10b6:408:166::15) by MN2PR07MB7229.namprd07.prod.outlook.com (2603:10b6:208:1d1::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.12; Tue, 21 Oct 2025 17:45:15 +0000 Received: from BN0PR07MB8831.namprd07.prod.outlook.com ([fe80::a608:1c17:6c08:15fd]) by BN0PR07MB8831.namprd07.prod.outlook.com ([fe80::a608:1c17:6c08:15fd%4]) with mapi id 15.20.9253.011; Tue, 21 Oct 2025 17:45:15 +0000 To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [PATCH] Add support for copying metadata boxed/mebx defined in ISO 14496-12 Thread-Index: AQHcQrJ1LO9VwKnvYkSJkOX+9OX8aQ== Date: Tue, 21 Oct 2025 17:45:15 +0000 Message-ID: <059337B5-943F-4CE5-9EA0-E7228EB812FB@gatech.edu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BN0PR07MB8831:EE_|MN2PR07MB7229:EE_ x-ms-office365-filtering-correlation-id: 88793878-53a0-470b-85f3-08de10c997b5 x-gt-tenant: 042d12d7-75fe-4547-b5b6-0573f80f829d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|366016|376014|38070700021; x-microsoft-antispam-message-info: =?us-ascii?Q?6PHMLnISWM6RnD1nqmbX1YKj+khUumKUS9nGC+J7JleGLXS9091prGbYwHsw?= =?us-ascii?Q?3YjcT739QZtwehZd/JtaXqgujZJK6DuG8Qnf2ZhrBPSLVHoqAZupuan8oZyO?= =?us-ascii?Q?toaCQSkeTBWFBccd2IC3Y6rDT/692AWJhL9KuUAsIozXgm6WN4vjMU7KBOld?= =?us-ascii?Q?AkASOF4vSNEZlNrWWG29Vq5+swJgh83eMQLgQ58PM0ZUAzCpemGcAZeMwxxs?= =?us-ascii?Q?i5Lxav2UzPv/6fpOHY8MoPQ/+O4Mj3M5pFpFWqKKtu9XBUSgh2s/FEcTwZWS?= =?us-ascii?Q?rtMpm2QsmZLQDS8ZLDAywqqKqTDLADtMReCS5JK3Tc7B9h45n1rgi1iKMFHk?= =?us-ascii?Q?P/7t8aD+2FQvIG88bAw5/nTPyHcsTDs2u4VDkA6BsXQTvuXZBLB6Xi01whEM?= =?us-ascii?Q?wfb/3HODkzlCxAFC2R2UvlKxMAMMr1E81WaqDs2igFLAIlyBevHA+m5dvi/p?= =?us-ascii?Q?GEdUXHs2jTnn29rWM1WYzZCp9JCjOBumdGzItljkGhTKMPXizFZk8f+1nE48?= =?us-ascii?Q?WBsIMzktNsFi3d3qnmoZf9lHcOo+1MLY5oebm45kNLL65iRf7F96G1n+PVQE?= =?us-ascii?Q?uvGH6C2/KfkvvEmybaQI69+YYTkXbmp6ZAuftQEjvdAfmS5XoDXZXrOmZOGm?= =?us-ascii?Q?U5eETMo8qjCPhWqXFWxRkVeo256nLB91hVtb1VSJ4Buhxl9NjF+zIqG/yqpy?= =?us-ascii?Q?8lA7EXAdUMfGAoto3K6gEfe4zS3dEOqKD5lZPQ+4t13OWVGyhf6K/OOJ5i7Z?= =?us-ascii?Q?Hkdw5d86qsbYQbH0HSuNJX2fyJ6e4FZ2WHGGUzS/s5CQsDifxZ8+LfayXjQy?= =?us-ascii?Q?z2iQRHnojTyTEuEeaC3VGkXneEHWLe6x3Xizo+3KNQOubiC/Z32BQuoXBrDb?= =?us-ascii?Q?jV2Zk01DpOTkTwrBWxQoKgdZbEr8c5T4gkXxRaWH8aIknk0xNzjy9z5pPwXQ?= =?us-ascii?Q?g06zE+q6t2hpuy6nXk/y93Fx9lV6rxLX7XQK5D8h9evYiNDbWQLjOaKX3snI?= =?us-ascii?Q?7kZssfwT+5aIRgXeCt35zU7mN9ULMhNEgGxuhCdgKOtadCOkPxSruuwGEDPw?= =?us-ascii?Q?mylbgKb0rt4fUAz74yxlpBuEkgw1voORz6AIR7qpvhLNwaU9pfjOZft7Zhc/?= =?us-ascii?Q?1xTFOe0N/Wen55QANlsYRJ5sBKSrOOSMmhOGZtm0s0P/MozRGgLgSovVYsOR?= =?us-ascii?Q?u0TlKJBj31h/BLb7swr5JQXJMPdRAIcBStijFQfr/z4PN9dh+lPQJFWtY6Pl?= =?us-ascii?Q?DeDXHC1SMVVD9KSnoJv4z7ua8bBwcU5QIPgrcvB6GZ2F9sgvsJfHTzLjhsSQ?= =?us-ascii?Q?yZ8gTONBhRDgz0Op1qwHC5wDWvLmMUfKJyH3FD76jXU49m1eHNbsXVGy/DoX?= =?us-ascii?Q?ghuNVQ27+akmGbpTvIwyVmstTyVh4l2LLoSuqmDz1WGGkz2CTv4Itf4h1uVZ?= =?us-ascii?Q?ipfxNwKU+9fx8YP6P8Su5fB8Vt+LtcjT/w7jm+TRD/4GUHig8+FKI+ahvoZx?= =?us-ascii?Q?a17jUbwSjhtMF3FzurnVpswDXuO0PzmAGwSv?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN0PR07MB8831.namprd07.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700021);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?S4c30plYdJMYQAxWbIuwXPBe/AhtNuIhtofZ3hyBQpw1B03Qiib5h+Z6DgQB?= =?us-ascii?Q?zoKTFWgCkbCLqggMJ0Nl7hwk4Po/r5SqBG8aUUzgNTRWfFpBlzPbOmgk8FcY?= =?us-ascii?Q?MvM+IN2Do1Re6ZXomayyqUxi3u2D+EV4BEyZVn6wcaRI74oI/iqSg57OLhw5?= =?us-ascii?Q?t/rSeLOf5jfI1I23+dEwMk3csVjxgGh7xdY5RvRIdTGQFdxwdRPos+mr1ORB?= =?us-ascii?Q?LD0KAXhWL9D10jRpxxAGu2dI1kAbf2h2OA/LgKUrONaV39nDdbTPBK2Ll+I2?= =?us-ascii?Q?G+3a+4oqUUeCTTYR3pNSxB8+7GQixlkDRmyh84a+soZ2PA9xb3pv79dA7S6Y?= =?us-ascii?Q?ZYiPXSNbvCw0uZZzj89gWd7TH4pvEey6U5GtPUCDRgh9j2uBdY8SC7YuFbkj?= =?us-ascii?Q?LQASUbAuRZY8Ed5yOacax/TNBA8NThm/GH60m9R1WTfBdPtbITDzjDey0agt?= =?us-ascii?Q?qEwPOonf7xq+nDevcYw/9NEAeGJJJJ5DRJTbLJrSTZtfi415mFIyR+mf7Tx/?= =?us-ascii?Q?i445sEbFDUP2Fs9Zdnd7SPLF0oTf0ooqrFdRq1xf3/jRLUOdgB8+a+BgTKw6?= =?us-ascii?Q?NT2KjVP3BlDE9huLTKhO6d5j4INzRe24mpzimjN5xjMby71zVXloqfCjCm6+?= =?us-ascii?Q?vQUM9SOMPvbBnek/fwOElmde6pmkokZx8C4RjyANKPHIoHLDhU43PkbfvduG?= =?us-ascii?Q?1xIF7K91pa8ZziAosMMP2zrPiJHHuCfxC6nvpvbQdcSQLZC/GXvUfTWtoDJP?= =?us-ascii?Q?BlB9665hLiflaDO4YKfKIiJwJ6o8UOal7UNKugsIHDqicmzgRXgeY3vOs4Rf?= =?us-ascii?Q?xUb/jKWY9ouBD8+ZO9d26WJRGBlbH2gD+ECNMrqrDLs2KjKAKNRlSELsGUsG?= =?us-ascii?Q?diA7OOXvXUrLQ681Ii2UzkUMDyUiYxY2fTdPErOrit5fhWlJQv0qrZt91zhs?= =?us-ascii?Q?/MjuRndX7wNG2OjfqXHXD3m93JmUZCqxLUhv/OyB3XRdzKJx5BcE3M312we4?= =?us-ascii?Q?IpqF2C9UEna66rSQ7lFncrzTgVlnXVHYhGnwyy1/XVQkuUpvvPIGaqDUNCKU?= =?us-ascii?Q?Xv98qxMUcwRqgnYP90eNhAH41+lHGJeA0LQrhsjmxBclVM9QdBW9iiNnbdhW?= =?us-ascii?Q?GIRPlzyXhD+xZe43b+2PHqzya9Jxx+tFKPQDCb6vB8facBlPio029UC9PqYh?= =?us-ascii?Q?v5G03vUu5zv85i55fP3qLy+o1gzVQRoThMl1ZCsglU5CcCFdTl1DRdL4k353?= =?us-ascii?Q?lMAR0OXym34G7o4B13xCf4ToJ69S8Az/TPwNqhIr2vfPld1T8xEvILYzdMHK?= =?us-ascii?Q?Rr4eSGqzt3FMYRiWOBqlsaCKF960qoHyDkTKM/iQiIHRbtb8x1mKVPF5z7Uq?= =?us-ascii?Q?2ukpc4YCenotv1tnRX1zFVHDOzZP4BOcF8qOJmRqOnowKU8SOvmnb0FZbjSA?= =?us-ascii?Q?Q9MqmR9Ef7iqrk/T5Ms218tGcf/pgQY/wuh1MVd3+yq6WV7MTDM6F+CAaDlp?= =?us-ascii?Q?DgZvUxh0VPh2eOVdejFn3PE7H11xvc1bUJdRAUB2ntQpuJF7C5nA/NU7jO4V?= =?us-ascii?Q?aV//tFt7aL8uY6+t/Ty4u8kajnPiR2pDfbK/zAcbB6p7fcrIfPZ00VophHJx?= =?us-ascii?Q?sA=3D=3D?= Content-Type: text/plain; charset="us-ascii" Content-ID: <1B9549C262CBD64580FC98D2A9532DE8@namprd07.prod.outlook.com> MIME-Version: 1.0 X-OriginatorOrg: gatech.edu X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN0PR07MB8831.namprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 88793878-53a0-470b-85f3-08de10c997b5 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Oct 2025 17:45:15.2670 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 482198bb-ae7b-4b25-8b7a-6d7f32faa083 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: IfGjBcPVLEPhbqL/bkuTGura07BJ3OoEu5PRtnDTz1+2Sn+RmJeqyN4f5AAX5zAseKmOSzHCqGIlFYNd9w/4FQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR07MB7229 Message-ID-Hash: J3UQCQEVW4LJWGN3GK2VFPOXR3TOCK22 X-Message-ID-Hash: J3UQCQEVW4LJWGN3GK2VFPOXR3TOCK22 X-MailFrom: SRS0=yWpI=46=gatech.edu=lholliger3@ffmpeg.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH] Add support for copying metadata boxed/mebx defined in ISO 14496-12 List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: "Holliger, Lukas J via ffmpeg-devel" Cc: "Holliger, Lukas J" Content-Transfer-Encoding: 7bit Archived-At: List-Archive: List-Post: Currently there is no support to copy these MEBX tracks, so they are dropped. These tracks often appear on iPhones, especially when shooting cinematic mode, so allowing this to pass through makes it easier to transparently work with these files. Signed-off-by: Lukas Holliger --- libavcodec/codec_desc.c | 6 ++++++ libavcodec/codec_id.h | 1 + libavformat/isom.c | 1 + libavformat/mov.c | 7 +++++++ libavformat/movenc.c | 39 ++++++++++++++++++++++++++++++++++++++- 5 files changed, 53 insertions(+), 1 deletion(-) diff --git a/libavcodec/codec_desc.c b/libavcodec/codec_desc.c index c72271bfad..40c8235f60 100644 --- a/libavcodec/codec_desc.c +++ b/libavcodec/codec_desc.c @@ -3839,6 +3839,12 @@ static const AVCodecDescriptor codec_descriptors[] = { .name = "smpte_436m_anc", .long_name = NULL_IF_CONFIG_SMALL("MXF SMPTE-436M ANC"), }, + { + .id = AV_CODEC_ID_MEBX, + .type = AVMEDIA_TYPE_DATA, + .name = "mebx", + .long_name = NULL_IF_CONFIG_SMALL("Metadata Boxed"), + }, { .id = AV_CODEC_ID_MPEG2TS, .type = AVMEDIA_TYPE_DATA, diff --git a/libavcodec/codec_id.h b/libavcodec/codec_id.h index 8c98ac6335..c623efa0c3 100644 --- a/libavcodec/codec_id.h +++ b/libavcodec/codec_id.h @@ -613,6 +613,7 @@ enum AVCodecID { AV_CODEC_ID_SMPTE_2038, AV_CODEC_ID_LCEVC, AV_CODEC_ID_SMPTE_436M_ANC, + AV_CODEC_ID_MEBX, AV_CODEC_ID_PROBE = 0x19000, ///< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it diff --git a/libavformat/isom.c b/libavformat/isom.c index 29171fea40..7dbc934330 100644 --- a/libavformat/isom.c +++ b/libavformat/isom.c @@ -81,6 +81,7 @@ const AVCodecTag ff_codec_movsubtitle_tags[] = { const AVCodecTag ff_codec_movdata_tags[] = { { AV_CODEC_ID_BIN_DATA, MKTAG('g', 'p', 'm', 'd') }, + { AV_CODEC_ID_MEBX, MKTAG('m', 'e', 'b', 'x') }, { AV_CODEC_ID_NONE, 0 }, }; diff --git a/libavformat/mov.c b/libavformat/mov.c index 7fe4678234..35db690709 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -2895,6 +2895,13 @@ static int mov_parse_stsd_data(MOVContext *c, AVIOContext *pb, } } } + } else if (st->codecpar->codec_tag == MKTAG('m','e','b','x')) { + if ((int)size != size) + return AVERROR(ENOMEM); + + ret = ff_get_extradata(c->fc, st->codecpar, pb, size); + if (ret < 0) + return ret; } else { /* other codec type, just skip (rtp, mp4s ...) */ avio_skip(pb, size); diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 067d38b14b..6519225935 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -3052,6 +3052,36 @@ static int mov_write_gpmd_tag(AVIOContext *pb, const MOVTrack *track) return update_size(pb, pos); } +static int mov_write_mebx_keys_tag(AVIOContext *pb, const MOVTrack *track) +{ + int64_t pos = avio_tell(pb); + avio_wb32(pb, 0); /* size */ + ffio_wfourcc(pb, "keys"); + avio_wb32(pb, 0); /* version and flags */ + + return update_size(pb, pos); +} + +static int mov_write_mebx_tag(AVIOContext *pb, const MOVTrack *track) +{ + int64_t pos = avio_tell(pb); + avio_wb32(pb, 0); /* size */ + ffio_wfourcc(pb, "mebx"); + avio_wb32(pb, 0); /* Reserved */ + avio_wb16(pb, 0); /* Reserved */ + avio_wb16(pb, 1); /* Data-reference index */ + + // Write the keys box (and any other boxes) from extradata + if (track->par->extradata_size > 0) { + avio_write(pb, track->par->extradata, track->par->extradata_size); + } else { + // No extradata, write minimal empty keys box + mov_write_mebx_keys_tag(pb, track); + } + + return update_size(pb, pos); +} + static int mov_write_stsd_tag(AVFormatContext *s, AVIOContext *pb, MOVMuxContext *mov, MOVTrack *track) { int64_t pos = avio_tell(pb); @@ -3077,7 +3107,8 @@ static int mov_write_stsd_tag(AVFormatContext *s, AVIOContext *pb, MOVMuxContext ret = mov_write_tmcd_tag(pb, track); else if (track->par->codec_tag == MKTAG('g','p','m','d')) ret = mov_write_gpmd_tag(pb, track); - + else if (track->par->codec_tag == MKTAG('m','e','b','x')) + ret = mov_write_mebx_tag(pb, track); if (ret < 0) return ret; } @@ -3499,6 +3530,9 @@ static int mov_write_hdlr_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *tra } else if (track->par->codec_tag == MKTAG('g','p','m','d')) { hdlr_type = "meta"; descr = "GoPro MET"; // GoPro Metadata + } else if (track->par->codec_tag == MKTAG('m','e','b','x')) { + hdlr_type = "meta"; + descr = "Metadata Boxed"; } else { av_log(s, AV_LOG_WARNING, "Unknown hdlr_type for %s, writing dummy values\n", @@ -3734,6 +3768,8 @@ static int mov_write_minf_tag(AVFormatContext *s, AVIOContext *pb, MOVMuxContext mov_write_gmhd_tag(pb, track); } else if (track->tag == MKTAG('g','p','m','d')) { mov_write_gmhd_tag(pb, track); + } else if (track->tag == MKTAG('m','e','b','x')) { + mov_write_gmhd_tag(pb, track); } if (track->mode == MODE_MOV) /* ISO 14496-12 8.4.3.1 specifies hdlr only within mdia or meta boxes */ mov_write_hdlr_tag(s, pb, NULL); @@ -8803,6 +8839,7 @@ static const AVCodecTag codec_mp4_tags[] = { { AV_CODEC_ID_DVD_SUBTITLE, MKTAG('m', 'p', '4', 's') }, { AV_CODEC_ID_MOV_TEXT, MKTAG('t', 'x', '3', 'g') }, { AV_CODEC_ID_BIN_DATA, MKTAG('g', 'p', 'm', 'd') }, + { AV_CODEC_ID_MEBX, MKTAG('m', 'e', 'b', 'x') }, { AV_CODEC_ID_MPEGH_3D_AUDIO, MKTAG('m', 'h', 'm', '1') }, { AV_CODEC_ID_TTML, MOV_MP4_TTML_TAG }, { AV_CODEC_ID_TTML, MOV_ISMV_TTML_TAG }, -- 2.49.0 _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org