From patchwork Wed Jun 15 06:47:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36235 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp192589pzb; Tue, 14 Jun 2022 23:48:03 -0700 (PDT) X-Google-Smtp-Source: AGRyM1sm2j/rAYATIwonOVMQE1G5YFRFeamxdHSOEmFf6ByGhzkqmjU6rDEzMG3hSFdgqVsSQbs5 X-Received: by 2002:aa7:c450:0:b0:431:55c6:29f9 with SMTP id n16-20020aa7c450000000b0043155c629f9mr10571981edr.14.1655275683589; Tue, 14 Jun 2022 23:48:03 -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 cr19-20020a170906d55300b0071212933e05si14114824ejc.433.2022.06.14.23.48.02; Tue, 14 Jun 2022 23:48:03 -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=O7KCQHfJ; 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 05DE268B585; Wed, 15 Jun 2022 09:47:59 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2027.outbound.protection.outlook.com [40.92.91.27]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 26EC968B585 for ; Wed, 15 Jun 2022 09:47:52 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XBRTFi6TSD5q4hX7L6qfwffhN+sbUitDq+3Yj8Fu6ivJbDl1+HbDn6oApsR29HvKSZ6AgKZ6xAz5n0M18uroJh5vLWkb/NSjDAvGaKKCDrhbR66nLtLBLxVyg5zoUqaDxUr5uafsLvS6GlvFpuK0kgVM6NGam4/JfsDf8SrWB6F/oYMuDzp78MOGark25ooUCPV9LHHqzwDuYKDmMGSqZ1oZR4hrrqXrklbXK7Rjorv59ArDJoL7IMJwlEUpHEXe0SlchXRIlBl4xE1nuEvXcANgc9ABGBlSkgP9lzRfBN1vD7TfNj5bCpiHQwr5XzmkMDy1XHSkYbaQw9dL8TKZOw== 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:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Il0aXfJbVtu6oxoFvzLZBEqzAOS28aVpAiUJymlVHJw=; b=JvRq/gxjbBSvscuUVP3XIsqK2mgO/Fd+fPd6De9+1WtoJ3ynE0DQYbPmVSnBLu40bRZvnUMu1CYC8KPuoMLZ3zbBelqapEJL68h4Dcsqknfiw0eLbc80K6uytPkJriXfOeZtpHLtkPCDL/QNixMUJ8aC4hIXv9rfpIHPFzIcTI877/yg8Ihz3E4d0OmfzQav3o7uKqX08ym7fYhKnmCNLeQl1Cnk6ZfUDdcWyYJ1K9NnyoTZwqbkteZ1WcO35q0leLfblQJQqwuDnDxBnkNcuscD3E4L3DeV+ydBYe/MmKLxgX+pE8YOvZAJxBb/xyJq5Pif12Daj3BfywEF1XJOBg== 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=Il0aXfJbVtu6oxoFvzLZBEqzAOS28aVpAiUJymlVHJw=; b=O7KCQHfJhcn4S1SFWfwquuuyMlD1bLlKAU7acprxYu8sifWI0hyzqBKGxrNB4sWFwsk22avw+xElvH5wZKXwKjWFtapSw1smRfnOIr49Pkds5DPdMidkVQex/+9yKPnY04oyK9kWLsN2j3BK6/dchVjpUimH4DejrpVLlHfePT55qmCTNAvvpb+9vhCmxQTcpYgPyca/R4dfJM5CEM+qMo8j/vSQKSpmVr8iz5AzSIJfwT6mC6QhD7bwdW1eoU10udoiciOkkHfXTMjkzyCY6936Q02bknTtp67ZkbxZ1eCTpVNqnZre6E163EcsMgFExxJ7IImSDZ6N5n55SffeAQ== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by AM0PR01MB4740.eurprd01.prod.exchangelabs.com (2603:10a6:208:ec::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.14; Wed, 15 Jun 2022 06:47:50 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5332.021; Wed, 15 Jun 2022 06:47:50 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 15 Jun 2022 08:47:42 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 X-TMN: [sIQjcbkPLslUWKVWHBBQ8bTjcHDjK9nA] X-ClientProxiedBy: ZR0P278CA0026.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:1c::13) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220615064742.2245919-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e6cfd771-b7dd-49cd-b45e-08da4e9af6f8 X-MS-Exchange-SLBlob-MailProps: EpEO96k6WomtMq5UKPi+rg6o36zkFloY5S7x7ytUkZ9oClVLDsxHfqnC6HQZXeDV0KoQUy/n0FaPSNgIHWGAQVT9mWfkCvq0jlC5CySdtOV4x4QFL9ChdqUFtKqDmUhqTHUEMOh5vsGjDeFS0iPyJxNmg17RQ8ALEpHUk7TkFtc4yxixRHJesyPymnMyljyfSgaNfMNo41HM+InawsVbk5zmWIvE223j4pnX55cRHoj5faf0N5e9TURMmtNW1a1Zau4LXgXTzd58hsyBj4aBS6dass7DyeYRlur5fsqC7UBduJrviHEQJzsE3OJlSTP0htN5woY+RdinymY5d9elAayE9uHUzGSRznfsiF4v19H/a+QQvNNJxfjF3JgksV3srX4kZTOP+OWqExkcjDJFNkhvwl/L/uIw3EezAE1syEWr0AC/Pld6ts6rsbqKdauFeOh6zeYV4fTZqQijL9e/IW1mfk2AwF9aBFwLWdluQU2KesW9T9iukFCePvFUrFXJvcoSDkTsecB/HDEYUqdM8YYOV+RXpF/w9xcK34nbyCjEUvLfQLLlA77pnOl5vjqmXsu8M6l7BhmIT9Xf+Gjl0BJH+BObc55O8U8g3Wg7dSepC2ab8KK71OyoVYUG0+qko4KiH48hkG2/t4ZJKXfn0ZzflsGzfOWrXXbUjBU6H5LBMNvWP36tMqHYFGqrMVuDO9SwgKUE7S0N+cOYCizPPYlwDjRai1Ypfvw6Zhs7ZYwpOj7MUOGCrqp9jRUGa6/q7vW6Y16r5Ag= X-MS-TrafficTypeDiagnostic: AM0PR01MB4740:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6yvshM6LYQ3DcrnANoPaUpl8oeOOkWl+J8wSiEKSG0i9wJsk45jCUJK9E16AdYMBWJ3nrx/HWUt9t9F4dLzxOortMaB9zsI0rJkQZB0EHZnlwGW9T5sDEHaSN/viZ7CMxq2crmUIiAdJTS2wmYNACV/1blvgB9MvlYb8mjrgy1ZfiYP2nslgfFpbWAKBJyrR/brVvb61ns2FrBsP3peORaXb3ItEcZ4lSplWnXvvDgZmI/7hx/goydXFuSelaitsE7hFsYyDI0bDua8qMifyjR7uDhjAZ1ulm8NHVW04FJVhqNLcUM1oIkCzORZdRVao8kqigoQT71nBoGd8S7ekECOWIGybWpnOJ6izL/fEd1oeNC16buPT0ZLesURYbjHVnuRD6F5OmoiSbAK5EWLKH/X29KYiFdQMgGTIqzRUhdVwR7NHMkCoxlYDmccOfO+ncwS30uEoC20rIkdcBT3CLhUFGbOjxp7Hg+hHmjiPxn0DY0m9Ya7lfRjLpcMeMorGC0fMu0rrldTPZoU9dUNUnqgefbWmDYX8mdhA1eah3Lqn2H2mw9SrF4zaTCRnNddG2WeYbMNpOP+yYslEgqG8ew== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: uSlb6LnVqK7eLoyA7eleaBXwlAs7ynVCrQxMm/lCtrTrn9O3dyG/JwfHhkIxkZtNLFdWxErJku4pIPcxeA2WcBcIjXcOn4tR/kwWyXVR7sYJLtbSTuCtvBdLNLY/PT+jqucf1W8pqcFlR3xkyarmR6EVVtNcIn8aLhSHmIXAdQHFuRpAmm4sC947giYjgEA91nnKyTBzBbM9g1xC4Y7WHb75AD4E5GXuMMCprM4XnBWvxxCnB7qE5z9mD/ixAAYsEWQvpIRMNEjwII9we3dl3RSqlWgPYfauP0J0pa04TYskGno5wRFTUJqAt8KOmqDf4aJ1WV8vGwaZWDn0fuRDxKTyMJ+nb8YEm6Xzv9fore/M8mw1kijud/5M20KSQVwC5vlhP5duLNlfHBMEz2TEVxNo7R3KzN+M2WocDKU/bSlARwpz7WzdIudIn7K2nk4iAVQuV3j5o1BXZaJvexnlRuVcBRVLRQARJ2GtgkTRAZJJOVAH3VDdoTM48250/nR4yoXU6C0BM+WMJplR5ZVafaLri5oHL5Py/eVyyGFRpDoGqechBiUgnuTdPF+dhkSN4JMXR9EqU2Xj3xjMtZqXeCrp14LlstsgOC3xNTqmNx3CmretCJ1uiMAO5GUUYV80aDnMhReysvBEZUYW8y9KUp6q5AnYwAp9FU8+0b3KyUR1xttOP3HRH+WQKqX69SixA8bOk28sHMcrFpU6hQ2QygZUfYv2UuxTtc3HVxmJ8pk53sBiY2drxbmuhNu6sYV9pkpkknYny6vFl3KEu9LWgjWWZZjfGb99XfopnI/gO+Ghn3cdW45VX/QN83VP4VfptTtwAm95HNu5UWsbmFQ8KOHTlu0PHzLR5vC4cVuHHgWiwrtttPMOTA3p6tmUzYNasylLwsvukCxh0hpdg0ucGcEqO10+1Z+m/YWdYzOFd6SJlKg0wDyhjtlJS4VvoUhj2sCc7zR7X4mWfy7ePKe7XMTwAOIbY0G3nTbKXpp+aypTUqxK4ow3lEiIMbhk4snblM5rC1WSdkecV2Xws2UIBMWYagJk2dZ2kqUGSMdlS0BqDMtQzUDxynr38c+/BLpjU+hLWMtzEAJKV3yLj6C5W5DDaLOWdrhDlEjm7jv4l+brER+Afkz48d2/3MsgaFyGz3nNfSQwdM0MJvo6nMak0UPgG8bUJwNFrJ6H+vYVwGPpYONerUXfurd2Fsc0ROqoeJHFBNVLTd1GWRzvgMbOy2gKIW6SMutzemoWEhd5XSMtXy4yGHsoEQcAuTtB3kvbllRJZERdytVoeBFqtNfny9/C/wVol2W4flQl4q+1+q34RNrZRbrJJFKK9qm140VM0qV5YcyKN9zsk+rqqqs8hl96HoROolbFgpr3e23tZe+rLcfKHZRt+35Equl4Fmohvl1igliYa7+LN+KZ52Idi4UbWcQD1Be2kUmQjQBI+q+mKbp4aqyV7PrXA+0PdMdopQZVgXE3opp1u27ZPC736w== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e6cfd771-b7dd-49cd-b45e-08da4e9af6f8 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jun 2022 06:47:50.5520 (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: AM0PR01MB4740 Subject: [FFmpeg-devel] [PATCH] avformat/matroskaenc: Convert chapter metadata 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: NYJjVrN9GEuB It is no longer converted since mkv_write_chapters() is called before mkv_write_tags() which happens since commit 4ebfc13c338423cf48f1a1266c890422367f7775. Given the fact that chapters can also be written late, mkv_write_chapters() has to convert the metadata itself. Fixes ticket #9812. Signed-off-by: Andreas Rheinhardt --- Will apply this tomorrow unless there are objections. libavformat/matroskaenc.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 482b5812e5..2211d99ae8 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -2094,7 +2094,7 @@ static int mkv_write_chapters(AVFormatContext *s) create_new_ids = mkv_new_chapter_ids_needed(s); for (unsigned i = 0; i < s->nb_chapters; i++) { - const AVChapter *c = s->chapters[i]; + AVChapter *const c = s->chapters[i]; int64_t chapterstart = av_rescale_q(c->start, c->time_base, scale); int64_t chapterend = av_rescale_q(c->end, c->time_base, scale); const AVDictionaryEntry *t; @@ -2122,11 +2122,15 @@ static int mkv_write_chapters(AVFormatContext *s) if (ret < 0) goto fail; - if (tags && mkv_check_tag(c->metadata, MATROSKA_ID_TAGTARGETS_CHAPTERUID)) { - ret = mkv_write_tag(mkv, c->metadata, tags, NULL, - MATROSKA_ID_TAGTARGETS_CHAPTERUID, uid); - if (ret < 0) - goto fail; + if (tags) { + ff_metadata_conv(&c->metadata, ff_mkv_metadata_conv, NULL); + + if (mkv_check_tag(c->metadata, MATROSKA_ID_TAGTARGETS_CHAPTERUID)) { + ret = mkv_write_tag(mkv, c->metadata, tags, NULL, + MATROSKA_ID_TAGTARGETS_CHAPTERUID, uid); + if (ret < 0) + goto fail; + } } } end_ebml_master(dyn_cp, editionentry); From patchwork Wed Jun 15 12:01:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36239 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp318361pzb; Wed, 15 Jun 2022 05:01:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx2/6M74GkLrxQDhs1R1FcdGTom9TUiSE5GIbxOjB8FaCrKPFMOvh5ixlULQKj1zQMJfV4+ X-Received: by 2002:a17:907:3f81:b0:6ff:1a3d:9092 with SMTP id hr1-20020a1709073f8100b006ff1a3d9092mr8842541ejc.319.1655294518253; Wed, 15 Jun 2022 05:01:58 -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 dp21-20020a170906c15500b00711d54647bdsi16288575ejc.479.2022.06.15.05.01.55; Wed, 15 Jun 2022 05:01:58 -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=V1IbDPOa; 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 229F568B5C6; Wed, 15 Jun 2022 15:01:45 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2017.outbound.protection.outlook.com [40.92.89.17]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 17F65680CE9 for ; Wed, 15 Jun 2022 15:01:38 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XwlJbaqmbpWC6oWVPETr2JrMxDhWFOk0Go9dYCPEcTFeiglLVaTWgKoHhPb5+lq6TNgFVcc0ewJly3TixTrNk+nEmkIy5KJXPOG2C3920wF4tql4OpHTwDOwOlQSEDhH6VHAAUpXw4bhf+UhXLHFeUgvmhC1Vs4QRvcYIMzKGzJO4hylddEkoTnPwunDui6X2DJh1MvMQisFv+YFNKGrb9uSgX0i91TfYxi7hGDmx/+XVdA1pCOs2GdH/RWmg4zdRHzIb6YC9TLN9u4rOLSMaLbCBjNbqr79vJ1U7b9NJHmR8nR2Z7B6vhZ/Qb3gZmNokRkSRqMyEEZQvXU0w3RkZA== 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:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=z3VABYFsbdc3zdgUh6PzgK7q5QQZnlR95QQYhyPZ2jI=; b=GsWtYif9tXTFmgXGN4G+9LloMQlWX+PO42W84Qo7X2X+6sWvrcoAS5OMZoF8FBFrOJP1zA7vNI3CX92MaAYPbbvnh6LmxatBHXbu0nH8K6a/02MytX9Sqgd/+lrc+KV5nS2SJY5/6M1mI7IHKFKuLs0QNRUUaYhe72pQq4VDAIaCJ9IfhuIGicF7xh6nQo6YwOfe4vCeKaHqJqdgYrdoc48jc2nTyE0KjhjhrkZTLH38m6TFd3P8B9R6YxDZB8CqySPMwI97W2pSNnMJQEgLh+HRxTgvkb32cXAvHD+ZjcTE2C0MtlPKsRr0QcDJkzVlWn2GviGZMsonsl7O1Fm9Hg== 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=z3VABYFsbdc3zdgUh6PzgK7q5QQZnlR95QQYhyPZ2jI=; b=V1IbDPOaYjxJmUAge01QvHTzGH6UuCtzJhgX6BjTq8Lv6LLdA8k3g9x8d4D+x+3ugKfGALraVRB5Eq6O6UrEdnHQ0/llV7N+7+DVqpAVazUMEh1+CbaqlritoWd8yIupdzDUEoTKu3APVQGYNz9zGB5nzPEWc3tsOXieMQkN18q0x966ZsnGYFFyUR6qdnC5VBhZ+IiMY7ZIHbKZmC6n8CDUZt022QQlp+JxGSBXM2rKsQd4b8Smyq5L/iplwfh+JFpEXBbKwhOkn7eHXG9FWTPPoFI2Tay3Spd588L67e1R21KRZJxXriD6Zp2fGf1amMzws14BIo1wG7SSgPApuw== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by PA4PR01MB9139.eurprd01.prod.exchangelabs.com (2603:10a6:102:2ae::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.20; Wed, 15 Jun 2022 12:01:34 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5332.021; Wed, 15 Jun 2022 12:01:34 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 15 Jun 2022 14:01:14 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [Av8yNnmIys/JObPOOUap5AdH/5bFYxRZ] X-ClientProxiedBy: ZR0P278CA0117.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:20::14) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220615120116.2983646-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 088d97c5-643b-4e82-dfbd-08da4ec6cae7 X-MS-Exchange-SLBlob-MailProps: EpEO96k6WomGpXm9AlGWtEGVfaZg9wGUF0C+0hGVJUIiVs38GdErBjjaqJtksnawR/4WX4WohUaSIx74hFx6p5G6JHdJrxaiIq5sddjTw/H65WNuFl2zQMRHRcajWhWktJhHwOQsv8Y5cPwnInFncQssjajmzGfxDPxW5smEK2zai6VqQDiEcLMlkvwCyTYPLBvHedC8hYEh4TGoqyns8tNa25fn70lFR866s0Kl1d4cCtY4nZkmTMBinD6FagvxzzXANXMbzHNDOu1PysazK3Kh20h5DG28fXtF2NE2i5Mt1cvNLS/SmiMG9ThkYOYw0ItGXyZoI/ljYISFWj07+MpBsufNdSq26nwYDGp4Eo7M29pBprc8eNvmeinxakizpuOEnfeDAfCg8A21VIbSacFsZqWuIjvM09VHq4HiKVr8rxV6hKnL/fzwn51uzxGtqOh2Tjnfjan/pbST6LG6qz0UGtj4FJRM147KmfARtKniMp1ByXYwzEVW0xKe/srOZYogdAeaRy4cWsZd931CWmWlMYHOPqPZiRG0wxiOiaOu6UFZ+7uP39vFd3VLp2MqO3oAUEuh71RuJwVQ7HhUCbbTIhCOUbApLs+P4+kqOS0vke+wO0Ga/uYZoaS9R9q72VQOUotd6pExDmoW3VuPDYF5nrHtR9dO7xabU9vfpqdNfePcKDu0e613mMx61rQ15FTMSF+gmBCCBM7tMM2+TGB75i3NcIqFmIJGhjT9mCsBvUbUBkWojz7/RrVh1KpuZk8e5KGyemg= X-MS-TrafficTypeDiagnostic: PA4PR01MB9139:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TI0Gsc1JHbQDGmsE89wj0N6FKG6DEDz3rQU9UmGkDPe32ncy4WeUMGZFRRPUXbyhhRADKGLDOLM9UO6z5jAEC0HaxyEI9g1/wnh4F77E2ecRKdw+Zoh2PT5u2lh0CB+wQvMeDBDIlh5+tYCTR3QdgyV1XBmOKwlcGl0E1pAYh7ibHSONEScnc1oV0synRJ1niWVTDhcSYoEPa4leF7Rnecb0zfKt4Zc5BzdqoX1c5sGnQ4qhMy/p/7vSOV5SIMYVq1eampE9vn3kcrIxK2C/af1xi3+/B/OdzQOxwGHhulcNcC9R8QZvmA1HfTIq/8sfNFjgJis0aAJaP+63jDuNkM5Zdx8DcMvYSWx7pAZ+06wPAVMeYVaSOXKo9ZzlAgjJ+FkjnVHZODJFPXMoAPzU6z+udlcjadqi3bHEOQ4Kg9cIVDubONd1BKS1+7Wz8ORl+t5Xt5LXaW8MMJKhzw4uPDJoFbm2uu2M1XuXU71IUa2wN1MEKcnl4HB8JVGh9a6PUTD9o2lmLio6EJS+LozqAkhOlpZJdoLLeINJ+dpBcT8laX/1mdVeR9Um1coJUFjPw8MEUSKaW0y5kHhCrcAQog== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: UOH8iQb/JTkQ3uh7SEEjwdl+I3pe0fXbqfx+IHrgUJETxRlCIp8+1l0i58lAzjXHlfUeRSHvCO8YH7Jrl0v5MquhEnWLRd8pK65FV3XeboG8hXF28TdLxFg+6XAhPNzRQQxYiV0PsTESRbA+toqpUcULWqc5M9atr7aJTJA2gRzHg0iNvY23ZFhp0Y6lqpYmAApxHIn36yxjZunwFxvWxNw2lPcx4y3rbd5AtYBp3AA4YnBRXgg2jbX688kJ9CIP1XsDdpuoHkZ2pmEjFngF9Lyk8EN4JxcL9UsCVN0fSz5tK7gHo/YTMwDsNoSaXGc14/W4eIfIDO9QfwYh/ucFr6xd5kFZjZ9YxmSOjv2YH+BLjKwRRjkMfRM9th8qxd5MH0TuEZHkI845MittO6uteAP8QsI7lMzn9F2n0wQWPOVQ4yNeBGGTIBPaN41rZRZpxKC2bvUO1z+F1u51K9a1eBg5QbfgIgo8iQ/78cD5sdn1lRIs09b1kEMP0q5w7CL157+tWS7pTA/xH4MfupRvA3EUF4EawiW5oO9/AJchi3ouSYBAW1+ZakQPHPmazr7V04hKfotSfaCK0QJM195rFLLJHkV+odwKMdT4R6OUxRLScD6ZTrUmdX7zLcvAXaXefyyUivxogY2Av9biTxP+cFgHilYYxfOQjyCEETsfkbTOm3dIFJcaZ+zRDdkgnWjtydUMBESifBBXBLmxjL2870YSWvsJA7QO72vM5C2kW6jujb8X/+Hww/6lBKQWlmLE+bKGFiVrNFct5mJMg1Aeghu/gSEac35QUi4b/L+nB/V3ktbaheMLbTsiSJFEJkuwFPzULUdmAL7Q6VIpVGI8BbKuFpNF7b7qFrDf/WwgQ3QyhDDfZYi2pDhYMwHuISKI0cYtiRhBEdC12g3p5jQxFGSjZR3CwK5mZnRkX0RCPFxauo5EQFf4iNPKFZxBXgfKv8fxKQvQrtDP7+kkUBcbzsGtohwSZ1IeRa/tl/bCdyZyadG0DZVyOM55wBP8aGmH/i7ym2FlE7nMFfpCBjViIXkY9Iueb1Bnq4WMua3R9ZpmvKMGtTdeaOa4tnMmsDHncWMQMt1n/Wsw6sInglQeO7eFY9eHpgt2moTVWwta96tBgD1H4OFinT8jKOsjLaYmWc0vAVsZMLoAuH/QBfzfneU/kBWwR/AQ1AgOIDBZyp7Lw1yL5Dn9nRTINdjDYDEohBD8ADaJrqnqTsVrkOnuKTrYtFQ/+NTfib5t/HTEygNDYAYXeW5uSeLrqxof8MEAQ88hWs9enTMXsTAXbA1vgbTmZxPtzHcRgKp62mxiqMJfrL0ldaC5szDQEZf+9QWX1I9w0PdM55pXgc8jBu1+uZFpG0WsY++GpDpCABP3UzbDeT1LvFtnYCiMAD4OaG0SPJ7ghEFCYHHJ5LCJn1W3KebohkxEmt067jvn2rh0jDgKoaAs7MXH6d1LxJH0qAY2+f42CXPc/LBejvZJv1rYPA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 088d97c5-643b-4e82-dfbd-08da4ec6cae7 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jun 2022 12:01:34.7593 (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: PA4PR01MB9139 Subject: [FFmpeg-devel] [PATCH 2/4] avformat/matroskaenc: Don't waste bytes to Write Tag length fields 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: Hc/uic+XEO1v This is possible by using a dynamic buffer to write them; said dynamic buffer is (re)used and reset as appropriate. Signed-off-by: Andreas Rheinhardt --- libavformat/matroskaenc.c | 113 ++++++++++-------- tests/ref/fate/aac-autobsf-adtstoasc | 4 +- tests/ref/fate/matroska-avoid-negative-ts | 4 +- tests/ref/fate/matroska-dovi-write-config7 | 4 +- tests/ref/fate/matroska-dovi-write-config8 | 4 +- tests/ref/fate/matroska-dvbsub-remux | 4 +- tests/ref/fate/matroska-flac-extradata-update | 4 +- tests/ref/fate/matroska-h264-remux | 4 +- .../fate/matroska-mastering-display-metadata | 4 +- tests/ref/fate/matroska-move-cues-to-front | 4 +- tests/ref/fate/matroska-mpegts-remux | 4 +- tests/ref/fate/matroska-ms-mode | 4 +- tests/ref/fate/matroska-pgs-remux | 4 +- tests/ref/fate/matroska-pgs-remux-durations | 4 +- tests/ref/fate/matroska-qt-mode | 4 +- tests/ref/fate/matroska-spherical-mono-remux | 4 +- tests/ref/fate/matroska-vp8-alpha-remux | 4 +- tests/ref/fate/matroska-zero-length-block | 4 +- tests/ref/fate/rgb24-mkv | 4 +- tests/ref/fate/webm-dash-chapters | 4 +- tests/ref/fate/webm-webvtt-remux | 4 +- tests/ref/lavf-fate/av1.mkv | 4 +- tests/ref/lavf/mka | 4 +- tests/ref/lavf/mkv | 4 +- tests/ref/lavf/mkv_attachment | 4 +- tests/ref/seek/lavf-mkv | 44 +++---- 26 files changed, 131 insertions(+), 122 deletions(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 2211d99ae8..404fbdf579 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -216,6 +216,13 @@ typedef struct MatroskaMuxContext { BlockContext cur_block; + /* Used as temporary buffer to use the minimal amount of bytes + * to write the length field of EBML Masters. + * Every user has to reset the buffer after using it and + * different uses may not overlap. It is currently used in + * mkv_write_tag(). */ + AVIOContext *tmp_bc; + AVPacket *cur_audio_pkt; unsigned nb_attachments; @@ -247,6 +254,9 @@ typedef struct MatroskaMuxContext { /** 4 * (1-byte EBML ID, 1-byte EBML size, 8-byte uint max) */ #define MAX_CUETRACKPOS_SIZE 40 +/** 2 + 1 Simpletag header, 2 + 1 + 8 Name "DURATION", 23B for TagString */ +#define DURATION_SIMPLETAG_SIZE (2 + 1 + (2 + 1 + 8) + 23) + /** Seek preroll value for opus */ #define OPUS_SEEK_PREROLL 80000000 @@ -814,6 +824,7 @@ static void mkv_deinit(AVFormatContext *s) ffio_free_dyn_buf(&mkv->info.bc); ffio_free_dyn_buf(&mkv->track.bc); ffio_free_dyn_buf(&mkv->tags.bc); + ffio_free_dyn_buf(&mkv->tmp_bc); av_freep(&mkv->cur_block.h2645_nalu_list.nalus); av_freep(&mkv->cues.entries); @@ -1911,24 +1922,14 @@ static int mkv_write_simpletag(AVIOContext *pb, const AVDictionaryEntry *t) return ret; } -static int mkv_write_tag_targets(MatroskaMuxContext *mkv, AVIOContext **pb, - ebml_master *tag, uint32_t elementid, uint64_t uid) +static void mkv_write_tag_targets(MatroskaMuxContext *mkv, AVIOContext *pb, + uint32_t elementid, uint64_t uid) { - ebml_master targets; - int ret; - - if (!*pb) { - ret = start_ebml_master_crc32(pb, mkv); - if (ret < 0) - return ret; - } - - *tag = start_ebml_master(*pb, MATROSKA_ID_TAG, 0); - targets = start_ebml_master(*pb, MATROSKA_ID_TAGTARGETS, 4 + 1 + 8); + ebml_master targets = start_ebml_master(pb, MATROSKA_ID_TAGTARGETS, + 4 + 1 + 8); if (elementid) - put_ebml_uid(*pb, elementid, uid); - end_ebml_master(*pb, targets); - return 0; + put_ebml_uid(pb, elementid, uid); + end_ebml_master(pb, targets); } static int mkv_check_tag_name(const char *name, uint32_t elementid) @@ -1946,29 +1947,41 @@ static int mkv_check_tag_name(const char *name, uint32_t elementid) } static int mkv_write_tag(MatroskaMuxContext *mkv, const AVDictionary *m, - AVIOContext **pb, ebml_master *tag, + AVIOContext **pb, unsigned reserved_size, uint32_t elementid, uint64_t uid) { const AVDictionaryEntry *t = NULL; - ebml_master tag2; - int ret; + AVIOContext *const tmp_bc = mkv->tmp_bc; + uint8_t *buf; + int ret, size; - ret = mkv_write_tag_targets(mkv, pb, tag ? tag : &tag2, elementid, uid); - if (ret < 0) - return ret; + mkv_write_tag_targets(mkv, tmp_bc, elementid, uid); while ((t = av_dict_get(m, "", t, AV_DICT_IGNORE_SUFFIX))) { if (mkv_check_tag_name(t->key, elementid)) { - ret = mkv_write_simpletag(*pb, t); + ret = mkv_write_simpletag(tmp_bc, t); if (ret < 0) - return ret; + goto end; } } + if (reserved_size) + put_ebml_void(tmp_bc, reserved_size); - if (!tag) - end_ebml_master(*pb, tag2); + size = avio_get_dyn_buf(tmp_bc, &buf); + if (tmp_bc->error) { + ret = tmp_bc->error; + goto end; + } + if (!*pb) { + ret = start_ebml_master_crc32(pb, mkv); + if (ret < 0) + goto end; + } + put_ebml_binary(*pb, MATROSKA_ID_TAG, buf, size); - return 0; +end: + ffio_reset_dyn_buf(tmp_bc); + return ret; } static int mkv_check_tag(const AVDictionary *m, uint32_t elementid) @@ -1985,15 +1998,14 @@ static int mkv_check_tag(const AVDictionary *m, uint32_t elementid) static int mkv_write_tags(AVFormatContext *s) { MatroskaMuxContext *mkv = s->priv_data; - ebml_master tag, *tagp = IS_SEEKABLE(s->pb, mkv) ? &tag : NULL; - int i, ret; + int i, ret, seekable = IS_SEEKABLE(s->pb, mkv); mkv->wrote_tags = 1; ff_metadata_conv_ctx(s, ff_mkv_metadata_conv, NULL); if (mkv_check_tag(s->metadata, 0)) { - ret = mkv_write_tag(mkv, s->metadata, &mkv->tags.bc, NULL, 0, 0); + ret = mkv_write_tag(mkv, s->metadata, &mkv->tags.bc, 0, 0, 0); if (ret < 0) return ret; } @@ -2005,29 +2017,16 @@ static int mkv_write_tags(AVFormatContext *s) if (st->codecpar->codec_type == AVMEDIA_TYPE_ATTACHMENT) continue; - if (!tagp && !mkv_check_tag(st->metadata, MATROSKA_ID_TAGTARGETS_TRACKUID)) + if (!seekable && !mkv_check_tag(st->metadata, MATROSKA_ID_TAGTARGETS_TRACKUID)) continue; - ret = mkv_write_tag(mkv, st->metadata, &mkv->tags.bc, tagp, + ret = mkv_write_tag(mkv, st->metadata, &mkv->tags.bc, + seekable ? DURATION_SIMPLETAG_SIZE : 0, MATROSKA_ID_TAGTARGETS_TRACKUID, track->uid); if (ret < 0) return ret; - - if (tagp) { - AVIOContext *pb = mkv->tags.bc; - ebml_master simpletag; - - simpletag = start_ebml_master(pb, MATROSKA_ID_SIMPLETAG, - 2 + 1 + 8 + 23); - put_ebml_string(pb, MATROSKA_ID_TAGNAME, "DURATION"); - track->duration_offset = avio_tell(pb); - - // Reserve space to write duration as a 20-byte string. - // 2 (ebml id) + 1 (data size) + 20 (data) - put_ebml_void(pb, 23); - end_ebml_master(pb, simpletag); - end_ebml_master(pb, tag); - } + if (seekable) + track->duration_offset = avio_tell(mkv->tags.bc) - DURATION_SIMPLETAG_SIZE; } if (mkv->nb_attachments && !IS_WEBM(mkv)) { @@ -2041,7 +2040,7 @@ static int mkv_write_tags(AVFormatContext *s) if (!mkv_check_tag(st->metadata, MATROSKA_ID_TAGTARGETS_ATTACHUID)) continue; - ret = mkv_write_tag(mkv, st->metadata, &mkv->tags.bc, NULL, + ret = mkv_write_tag(mkv, st->metadata, &mkv->tags.bc, 0, MATROSKA_ID_TAGTARGETS_ATTACHUID, track->uid); if (ret < 0) return ret; @@ -2126,7 +2125,7 @@ static int mkv_write_chapters(AVFormatContext *s) ff_metadata_conv(&c->metadata, ff_mkv_metadata_conv, NULL); if (mkv_check_tag(c->metadata, MATROSKA_ID_TAGTARGETS_CHAPTERUID)) { - ret = mkv_write_tag(mkv, c->metadata, tags, NULL, + ret = mkv_write_tag(mkv, c->metadata, tags, 0, MATROSKA_ID_TAGTARGETS_CHAPTERUID, uid); if (ret < 0) goto fail; @@ -2326,6 +2325,10 @@ static int mkv_write_header(AVFormatContext *s) AVIOContext *pb = s->pb; int ret, version = 2; + ret = avio_open_dyn_buf(&mkv->tmp_bc); + if (ret < 0) + return ret; + if (!IS_WEBM(mkv) || av_dict_get(s->metadata, "stereo_mode", NULL, 0) || av_dict_get(s->metadata, "alpha_mode", NULL, 0)) @@ -3000,6 +3003,7 @@ after_cues: // update stream durations if (mkv->tags.bc) { + AVIOContext *tags_bc = mkv->tags.bc; int i; for (i = 0; i < s->nb_streams; ++i) { const AVStream *st = s->streams[i]; @@ -3008,17 +3012,22 @@ after_cues: if (track->duration_offset > 0) { double duration_sec = track->duration * av_q2d(st->time_base); char duration_string[20] = ""; + ebml_master simpletag; av_log(s, AV_LOG_DEBUG, "stream %d end duration = %" PRIu64 "\n", i, track->duration); - avio_seek(mkv->tags.bc, track->duration_offset, SEEK_SET); + avio_seek(tags_bc, track->duration_offset, SEEK_SET); + simpletag = start_ebml_master(tags_bc, MATROSKA_ID_SIMPLETAG, + 2 + 1 + 8 + 23); + put_ebml_string(tags_bc, MATROSKA_ID_TAGNAME, "DURATION"); snprintf(duration_string, 20, "%02d:%02d:%012.9f", (int) duration_sec / 3600, ((int) duration_sec / 60) % 60, fmod(duration_sec, 60)); - put_ebml_binary(mkv->tags.bc, MATROSKA_ID_TAGSTRING, duration_string, 20); + put_ebml_binary(tags_bc, MATROSKA_ID_TAGSTRING, duration_string, 20); + end_ebml_master(tags_bc, simpletag); } } diff --git a/tests/ref/fate/aac-autobsf-adtstoasc b/tests/ref/fate/aac-autobsf-adtstoasc index b9bfb37142..8b6d9d96ee 100644 --- a/tests/ref/fate/aac-autobsf-adtstoasc +++ b/tests/ref/fate/aac-autobsf-adtstoasc @@ -1,5 +1,5 @@ -224607440d242dad567b8ee2ed3afeac *tests/data/fate/aac-autobsf-adtstoasc.matroska -6651 tests/data/fate/aac-autobsf-adtstoasc.matroska +29daa1e1985dac4baae0774a0b56149d *tests/data/fate/aac-autobsf-adtstoasc.matroska +6644 tests/data/fate/aac-autobsf-adtstoasc.matroska #extradata 0: 2, 0x0030001c #tb 0: 1/1000 #media_type 0: audio diff --git a/tests/ref/fate/matroska-avoid-negative-ts b/tests/ref/fate/matroska-avoid-negative-ts index f20918483c..129ea1be66 100644 --- a/tests/ref/fate/matroska-avoid-negative-ts +++ b/tests/ref/fate/matroska-avoid-negative-ts @@ -1,5 +1,5 @@ -804842437b2be0a1604ce33c6b08c800 *tests/data/fate/matroska-avoid-negative-ts.matroska -973070 tests/data/fate/matroska-avoid-negative-ts.matroska +fbe66be73d379073e0705891f290a6b2 *tests/data/fate/matroska-avoid-negative-ts.matroska +973055 tests/data/fate/matroska-avoid-negative-ts.matroska #extradata 0: 22, 0x2885037c #tb 0: 1/1000 #media_type 0: video diff --git a/tests/ref/fate/matroska-dovi-write-config7 b/tests/ref/fate/matroska-dovi-write-config7 index 65c397b807..9207b14b5c 100644 --- a/tests/ref/fate/matroska-dovi-write-config7 +++ b/tests/ref/fate/matroska-dovi-write-config7 @@ -1,5 +1,5 @@ -7981e419c77ebd4180caafc0b45ade4d *tests/data/fate/matroska-dovi-write-config7.matroska -72693 tests/data/fate/matroska-dovi-write-config7.matroska +d23b8b0d0613a82ba36fdc27acf3ef5d *tests/data/fate/matroska-dovi-write-config7.matroska +72672 tests/data/fate/matroska-dovi-write-config7.matroska #extradata 0: 116, 0x2b8d1669 #extradata 1: 116, 0x2b8d1669 #tb 0: 1/1000 diff --git a/tests/ref/fate/matroska-dovi-write-config8 b/tests/ref/fate/matroska-dovi-write-config8 index 9741921b4c..5feb7b8065 100644 --- a/tests/ref/fate/matroska-dovi-write-config8 +++ b/tests/ref/fate/matroska-dovi-write-config8 @@ -1,5 +1,5 @@ -a5f259b0d7590e1ef77e09c3a75d0801 *tests/data/fate/matroska-dovi-write-config8.matroska -3600595 tests/data/fate/matroska-dovi-write-config8.matroska +0047ca43aa8ab2948752e367f184dc1f *tests/data/fate/matroska-dovi-write-config8.matroska +3600576 tests/data/fate/matroska-dovi-write-config8.matroska #extradata 0: 551, 0xa18acf66 #extradata 1: 2, 0x00340022 #tb 0: 1/1000 diff --git a/tests/ref/fate/matroska-dvbsub-remux b/tests/ref/fate/matroska-dvbsub-remux index 7c543e5a7d..b7346b8f55 100644 --- a/tests/ref/fate/matroska-dvbsub-remux +++ b/tests/ref/fate/matroska-dvbsub-remux @@ -1,5 +1,5 @@ -e675d3a76a4720f3e65bf56ec6041fe1 *tests/data/fate/matroska-dvbsub-remux.matroska -39025 tests/data/fate/matroska-dvbsub-remux.matroska +77d210dc36d7a01988d159b3c902524c *tests/data/fate/matroska-dvbsub-remux.matroska +39010 tests/data/fate/matroska-dvbsub-remux.matroska #extradata 0: 5, 0x00bb0064 #extradata 1: 5, 0x00bb0064 #tb 0: 1/1000 diff --git a/tests/ref/fate/matroska-flac-extradata-update b/tests/ref/fate/matroska-flac-extradata-update index b0276f734d..e8812f51b5 100644 --- a/tests/ref/fate/matroska-flac-extradata-update +++ b/tests/ref/fate/matroska-flac-extradata-update @@ -1,5 +1,5 @@ -56ff5763fd81ad3bc02c22402cd685e2 *tests/data/fate/matroska-flac-extradata-update.matroska -2008 tests/data/fate/matroska-flac-extradata-update.matroska +732446e97bae29037ff0cd9963d4ac08 *tests/data/fate/matroska-flac-extradata-update.matroska +1987 tests/data/fate/matroska-flac-extradata-update.matroska #extradata 0: 34, 0x7acb09e7 #extradata 1: 34, 0x7acb09e7 #extradata 2: 34, 0x443402dd diff --git a/tests/ref/fate/matroska-h264-remux b/tests/ref/fate/matroska-h264-remux index 4004afef9a..6edd88fba8 100644 --- a/tests/ref/fate/matroska-h264-remux +++ b/tests/ref/fate/matroska-h264-remux @@ -1,5 +1,5 @@ -e4b0303e7bfbc8394bf47e11ab991d48 *tests/data/fate/matroska-h264-remux.matroska -2036061 tests/data/fate/matroska-h264-remux.matroska +3c00191234d5c4d77151d38a86403101 *tests/data/fate/matroska-h264-remux.matroska +2036033 tests/data/fate/matroska-h264-remux.matroska #tb 0: 1/25 #media_type 0: video #codec_id 0: rawvideo diff --git a/tests/ref/fate/matroska-mastering-display-metadata b/tests/ref/fate/matroska-mastering-display-metadata index b5d8812ee4..5b23e9506c 100644 --- a/tests/ref/fate/matroska-mastering-display-metadata +++ b/tests/ref/fate/matroska-mastering-display-metadata @@ -1,5 +1,5 @@ -62866a79d93bbe699d6abb6592ceb50e *tests/data/fate/matroska-mastering-display-metadata.matroska -1669585 tests/data/fate/matroska-mastering-display-metadata.matroska +69a904789151abaee46033391a4fce46 *tests/data/fate/matroska-mastering-display-metadata.matroska +1669555 tests/data/fate/matroska-mastering-display-metadata.matroska #extradata 0: 4, 0x040901a3 #extradata 3: 200, 0x506463a8 #tb 0: 1/1000 diff --git a/tests/ref/fate/matroska-move-cues-to-front b/tests/ref/fate/matroska-move-cues-to-front index 4f627bfdfb..78697b2eae 100644 --- a/tests/ref/fate/matroska-move-cues-to-front +++ b/tests/ref/fate/matroska-move-cues-to-front @@ -1,5 +1,5 @@ -62064edeb4a621fd0097f04c410c165c *tests/data/fate/matroska-move-cues-to-front.matroska -23210303 tests/data/fate/matroska-move-cues-to-front.matroska +8ebfcf15768bbe66611e349383fbf26a *tests/data/fate/matroska-move-cues-to-front.matroska +23210287 tests/data/fate/matroska-move-cues-to-front.matroska #tb 0: 1/1000 #media_type 0: audio #codec_id 0: pcm_s24be diff --git a/tests/ref/fate/matroska-mpegts-remux b/tests/ref/fate/matroska-mpegts-remux index 148bc0ffbc..2faab0892f 100644 --- a/tests/ref/fate/matroska-mpegts-remux +++ b/tests/ref/fate/matroska-mpegts-remux @@ -1,5 +1,5 @@ -4e6253c1f5f96ff64ae855dea426547d *tests/data/fate/matroska-mpegts-remux.matroska -6509 tests/data/fate/matroska-mpegts-remux.matroska +acaf3ebe07afe9815e0a984921d3ab87 *tests/data/fate/matroska-mpegts-remux.matroska +6494 tests/data/fate/matroska-mpegts-remux.matroska #tb 0: 1/1000 #media_type 0: audio #codec_id 0: ac3 diff --git a/tests/ref/fate/matroska-ms-mode b/tests/ref/fate/matroska-ms-mode index f911d744d1..f90a7e431f 100644 --- a/tests/ref/fate/matroska-ms-mode +++ b/tests/ref/fate/matroska-ms-mode @@ -1,5 +1,5 @@ -20e86febdfa8a2d5aefd83f89d5d99a7 *tests/data/fate/matroska-ms-mode.matroska -413101 tests/data/fate/matroska-ms-mode.matroska +afb4fc9b2ca6cafc03d8029fdf4da876 *tests/data/fate/matroska-ms-mode.matroska +413086 tests/data/fate/matroska-ms-mode.matroska #extradata 0: 40, 0x54290c93 #extradata 1: 114, 0xb6c80771 #tb 0: 1/1000 diff --git a/tests/ref/fate/matroska-pgs-remux b/tests/ref/fate/matroska-pgs-remux index 4fab0ffdd8..ed5beb7463 100644 --- a/tests/ref/fate/matroska-pgs-remux +++ b/tests/ref/fate/matroska-pgs-remux @@ -1,5 +1,5 @@ -9aa538611b5f3bd0455b2afd3dafe08d *tests/data/fate/matroska-pgs-remux.matroska -49751 tests/data/fate/matroska-pgs-remux.matroska +6703d4e9a905bc5a1fc529776e8ffb51 *tests/data/fate/matroska-pgs-remux.matroska +49744 tests/data/fate/matroska-pgs-remux.matroska #tb 0: 1/1000 #media_type 0: subtitle #codec_id 0: hdmv_pgs_subtitle diff --git a/tests/ref/fate/matroska-pgs-remux-durations b/tests/ref/fate/matroska-pgs-remux-durations index ba649d0ddf..a255640fa6 100644 --- a/tests/ref/fate/matroska-pgs-remux-durations +++ b/tests/ref/fate/matroska-pgs-remux-durations @@ -1,5 +1,5 @@ -20fa9d515b08718c42d3e3a8a4a8bf5d *tests/data/fate/matroska-pgs-remux-durations.matroska -49763 tests/data/fate/matroska-pgs-remux-durations.matroska +a547f8b6463a60e5ef2e9a2b117c4dfa *tests/data/fate/matroska-pgs-remux-durations.matroska +49756 tests/data/fate/matroska-pgs-remux-durations.matroska #tb 0: 1/1000 #media_type 0: subtitle #codec_id 0: hdmv_pgs_subtitle diff --git a/tests/ref/fate/matroska-qt-mode b/tests/ref/fate/matroska-qt-mode index f16382b9b3..17a8e6619e 100644 --- a/tests/ref/fate/matroska-qt-mode +++ b/tests/ref/fate/matroska-qt-mode @@ -1,5 +1,5 @@ -7f3a5c46ccb2b95074bdabc034ee71d1 *tests/data/fate/matroska-qt-mode.matroska -1884236 tests/data/fate/matroska-qt-mode.matroska +39a3d6faff69892c8a20301560b80b14 *tests/data/fate/matroska-qt-mode.matroska +1884224 tests/data/fate/matroska-qt-mode.matroska #extradata 0: 90, 0x817d0185 #tb 0: 1/1000 #media_type 0: video diff --git a/tests/ref/fate/matroska-spherical-mono-remux b/tests/ref/fate/matroska-spherical-mono-remux index 6b7d64f6d5..6b975c1586 100644 --- a/tests/ref/fate/matroska-spherical-mono-remux +++ b/tests/ref/fate/matroska-spherical-mono-remux @@ -1,5 +1,5 @@ -28d9277e1992fa362e7eac7a16261fde *tests/data/fate/matroska-spherical-mono-remux.matroska -161569 tests/data/fate/matroska-spherical-mono-remux.matroska +31cdace875cb696973d5a493ce776eea *tests/data/fate/matroska-spherical-mono-remux.matroska +161554 tests/data/fate/matroska-spherical-mono-remux.matroska #extradata 0: 43, 0x2b0e0d7b #extradata 1: 43, 0x2b0e0d7b #tb 0: 1/1000 diff --git a/tests/ref/fate/matroska-vp8-alpha-remux b/tests/ref/fate/matroska-vp8-alpha-remux index c17e8d0587..17c15ec9df 100644 --- a/tests/ref/fate/matroska-vp8-alpha-remux +++ b/tests/ref/fate/matroska-vp8-alpha-remux @@ -1,5 +1,5 @@ -58147987d42f32d105d96b24b0755257 *tests/data/fate/matroska-vp8-alpha-remux.matroska -235018 tests/data/fate/matroska-vp8-alpha-remux.matroska +fd4f24bf776a2f84e01b0aa7fdfece38 *tests/data/fate/matroska-vp8-alpha-remux.matroska +235011 tests/data/fate/matroska-vp8-alpha-remux.matroska #tb 0: 1/1000 #media_type 0: video #codec_id 0: vp8 diff --git a/tests/ref/fate/matroska-zero-length-block b/tests/ref/fate/matroska-zero-length-block index 924cec1e3f..bef887d58b 100644 --- a/tests/ref/fate/matroska-zero-length-block +++ b/tests/ref/fate/matroska-zero-length-block @@ -1,5 +1,5 @@ -f37ba7e8a30eaa33c1fd0ef77447fb41 *tests/data/fate/matroska-zero-length-block.matroska -636 tests/data/fate/matroska-zero-length-block.matroska +d9c8efb9d64addce3cac97e6c417d985 *tests/data/fate/matroska-zero-length-block.matroska +630 tests/data/fate/matroska-zero-length-block.matroska #tb 0: 1/1000 #media_type 0: subtitle #codec_id 0: subrip diff --git a/tests/ref/fate/rgb24-mkv b/tests/ref/fate/rgb24-mkv index a9461dfc1b..f2cff5ff96 100644 --- a/tests/ref/fate/rgb24-mkv +++ b/tests/ref/fate/rgb24-mkv @@ -1,5 +1,5 @@ -afc7b59819a8d69773b04757278fccef *tests/data/fate/rgb24-mkv.matroska -58217 tests/data/fate/rgb24-mkv.matroska +a46cb669137f18ac0a42012485e5e863 *tests/data/fate/rgb24-mkv.matroska +58211 tests/data/fate/rgb24-mkv.matroska #tb 0: 1/10 #media_type 0: video #codec_id 0: rawvideo diff --git a/tests/ref/fate/webm-dash-chapters b/tests/ref/fate/webm-dash-chapters index 840fc2d4a4..9444824c4c 100644 --- a/tests/ref/fate/webm-dash-chapters +++ b/tests/ref/fate/webm-dash-chapters @@ -1,5 +1,5 @@ -f97445ba73e182c888fa077348384083 *tests/data/fate/webm-dash-chapters.webm -111156 tests/data/fate/webm-dash-chapters.webm +aa3ca15fae0239d6bf67fa0658a8bc3b *tests/data/fate/webm-dash-chapters.webm +111150 tests/data/fate/webm-dash-chapters.webm #extradata 0: 3469, 0xc6769ddc #tb 0: 1/1000 #media_type 0: audio diff --git a/tests/ref/fate/webm-webvtt-remux b/tests/ref/fate/webm-webvtt-remux index d847bbee2b..88def03dbe 100644 --- a/tests/ref/fate/webm-webvtt-remux +++ b/tests/ref/fate/webm-webvtt-remux @@ -1,5 +1,5 @@ -8620a6614f149fc49ab7f4552373943e *tests/data/fate/webm-webvtt-remux.webm -6556 tests/data/fate/webm-webvtt-remux.webm +0b43695bf27bbe48ea44e969d8908e1f *tests/data/fate/webm-webvtt-remux.webm +6528 tests/data/fate/webm-webvtt-remux.webm #tb 0: 1/1000 #media_type 0: subtitle #codec_id 0: webvtt diff --git a/tests/ref/lavf-fate/av1.mkv b/tests/ref/lavf-fate/av1.mkv index 7d7acae135..2008e1a932 100644 --- a/tests/ref/lavf-fate/av1.mkv +++ b/tests/ref/lavf-fate/av1.mkv @@ -1,3 +1,3 @@ -33e58aee4132d60e7ae21ecf3ae9e35f *tests/data/lavf-fate/lavf.av1.mkv -55649 tests/data/lavf-fate/lavf.av1.mkv +72a4713f9165c73574d40e8b81c5d70f *tests/data/lavf-fate/lavf.av1.mkv +55642 tests/data/lavf-fate/lavf.av1.mkv tests/data/lavf-fate/lavf.av1.mkv CRC=0x7c27cc15 diff --git a/tests/ref/lavf/mka b/tests/ref/lavf/mka index 5d4ab243c0..7af63e0779 100644 --- a/tests/ref/lavf/mka +++ b/tests/ref/lavf/mka @@ -1,3 +1,3 @@ -036f852ae7ae18cf38ddc99ea39032fb *tests/data/lavf/lavf.mka -43576 tests/data/lavf/lavf.mka +e2d55cd3844fd7237a92181dbbcb08d9 *tests/data/lavf/lavf.mka +43569 tests/data/lavf/lavf.mka tests/data/lavf/lavf.mka CRC=0x3a1da17e diff --git a/tests/ref/lavf/mkv b/tests/ref/lavf/mkv index e089bff61c..d9497a0a64 100644 --- a/tests/ref/lavf/mkv +++ b/tests/ref/lavf/mkv @@ -1,3 +1,3 @@ -c5e6db66eb81415c2a5128f4298850a8 *tests/data/lavf/lavf.mkv -320417 tests/data/lavf/lavf.mkv +17e637fc06015fea86428840418ffea2 *tests/data/lavf/lavf.mkv +320403 tests/data/lavf/lavf.mkv tests/data/lavf/lavf.mkv CRC=0xec6c3c68 diff --git a/tests/ref/lavf/mkv_attachment b/tests/ref/lavf/mkv_attachment index 18dc902ca7..a8cc075bf1 100644 --- a/tests/ref/lavf/mkv_attachment +++ b/tests/ref/lavf/mkv_attachment @@ -1,3 +1,3 @@ -a24aaf26dde6461f89acb7dd7c492015 *tests/data/lavf/lavf.mkv_attachment -472567 tests/data/lavf/lavf.mkv_attachment +3855fb336711517b32b0ec41e8505b4d *tests/data/lavf/lavf.mkv_attachment +472553 tests/data/lavf/lavf.mkv_attachment tests/data/lavf/lavf.mkv_attachment CRC=0xec6c3c68 diff --git a/tests/ref/seek/lavf-mkv b/tests/ref/seek/lavf-mkv index cbdbe9bfd1..6b64367802 100644 --- a/tests/ref/seek/lavf-mkv +++ b/tests/ref/seek/lavf-mkv @@ -1,48 +1,48 @@ -ret: 0 st: 1 flags:1 dts: 0.000000 pts: 0.000000 pos: 665 size: 208 +ret: 0 st: 1 flags:1 dts: 0.000000 pts: 0.000000 pos: 651 size: 208 ret: 0 st:-1 flags:0 ts:-1.000000 -ret: 0 st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos: 881 size: 27837 +ret: 0 st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos: 867 size: 27837 ret: 0 st:-1 flags:1 ts: 1.894167 -ret: 0 st: 0 flags:1 dts: 0.971000 pts: 0.971000 pos: 292297 size: 27834 +ret: 0 st: 0 flags:1 dts: 0.971000 pts: 0.971000 pos: 292283 size: 27834 ret: 0 st: 0 flags:0 ts: 0.788000 -ret: 0 st: 0 flags:1 dts: 0.971000 pts: 0.971000 pos: 292297 size: 27834 +ret: 0 st: 0 flags:1 dts: 0.971000 pts: 0.971000 pos: 292283 size: 27834 ret: 0 st: 0 flags:1 ts:-0.317000 -ret: 0 st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos: 881 size: 27837 +ret: 0 st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos: 867 size: 27837 ret:-1 st: 1 flags:0 ts: 2.577000 ret: 0 st: 1 flags:1 ts: 1.471000 -ret: 0 st: 1 flags:1 dts: 0.993000 pts: 0.993000 pos: 320138 size: 209 +ret: 0 st: 1 flags:1 dts: 0.993000 pts: 0.993000 pos: 320124 size: 209 ret: 0 st:-1 flags:0 ts: 0.365002 -ret: 0 st: 0 flags:1 dts: 0.491000 pts: 0.491000 pos: 146849 size: 27925 +ret: 0 st: 0 flags:1 dts: 0.491000 pts: 0.491000 pos: 146835 size: 27925 ret: 0 st:-1 flags:1 ts:-0.740831 -ret: 0 st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos: 881 size: 27837 +ret: 0 st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos: 867 size: 27837 ret:-1 st: 0 flags:0 ts: 2.153000 ret: 0 st: 0 flags:1 ts: 1.048000 -ret: 0 st: 0 flags:1 dts: 0.971000 pts: 0.971000 pos: 292297 size: 27834 +ret: 0 st: 0 flags:1 dts: 0.971000 pts: 0.971000 pos: 292283 size: 27834 ret: 0 st: 1 flags:0 ts:-0.058000 -ret: 0 st: 1 flags:1 dts: 0.000000 pts: 0.000000 pos: 665 size: 208 +ret: 0 st: 1 flags:1 dts: 0.000000 pts: 0.000000 pos: 651 size: 208 ret: 0 st: 1 flags:1 ts: 2.836000 -ret: 0 st: 1 flags:1 dts: 0.993000 pts: 0.993000 pos: 320138 size: 209 +ret: 0 st: 1 flags:1 dts: 0.993000 pts: 0.993000 pos: 320124 size: 209 ret:-1 st:-1 flags:0 ts: 1.730004 ret: 0 st:-1 flags:1 ts: 0.624171 -ret: 0 st: 0 flags:1 dts: 0.491000 pts: 0.491000 pos: 146849 size: 27925 +ret: 0 st: 0 flags:1 dts: 0.491000 pts: 0.491000 pos: 146835 size: 27925 ret: 0 st: 0 flags:0 ts:-0.482000 -ret: 0 st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos: 881 size: 27837 +ret: 0 st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos: 867 size: 27837 ret: 0 st: 0 flags:1 ts: 2.413000 -ret: 0 st: 0 flags:1 dts: 0.971000 pts: 0.971000 pos: 292297 size: 27834 +ret: 0 st: 0 flags:1 dts: 0.971000 pts: 0.971000 pos: 292283 size: 27834 ret:-1 st: 1 flags:0 ts: 1.307000 ret: 0 st: 1 flags:1 ts: 0.201000 -ret: 0 st: 1 flags:1 dts: 0.000000 pts: 0.000000 pos: 665 size: 208 +ret: 0 st: 1 flags:1 dts: 0.000000 pts: 0.000000 pos: 651 size: 208 ret: 0 st:-1 flags:0 ts:-0.904994 -ret: 0 st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos: 881 size: 27837 +ret: 0 st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos: 867 size: 27837 ret: 0 st:-1 flags:1 ts: 1.989173 -ret: 0 st: 0 flags:1 dts: 0.971000 pts: 0.971000 pos: 292297 size: 27834 +ret: 0 st: 0 flags:1 dts: 0.971000 pts: 0.971000 pos: 292283 size: 27834 ret: 0 st: 0 flags:0 ts: 0.883000 -ret: 0 st: 0 flags:1 dts: 0.971000 pts: 0.971000 pos: 292297 size: 27834 +ret: 0 st: 0 flags:1 dts: 0.971000 pts: 0.971000 pos: 292283 size: 27834 ret: 0 st: 0 flags:1 ts:-0.222000 -ret: 0 st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos: 881 size: 27837 +ret: 0 st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos: 867 size: 27837 ret:-1 st: 1 flags:0 ts: 2.672000 ret: 0 st: 1 flags:1 ts: 1.566000 -ret: 0 st: 1 flags:1 dts: 0.993000 pts: 0.993000 pos: 320138 size: 209 +ret: 0 st: 1 flags:1 dts: 0.993000 pts: 0.993000 pos: 320124 size: 209 ret: 0 st:-1 flags:0 ts: 0.460008 -ret: 0 st: 0 flags:1 dts: 0.491000 pts: 0.491000 pos: 146849 size: 27925 +ret: 0 st: 0 flags:1 dts: 0.491000 pts: 0.491000 pos: 146835 size: 27925 ret: 0 st:-1 flags:1 ts:-0.645825 -ret: 0 st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos: 881 size: 27837 +ret: 0 st: 0 flags:1 dts: 0.011000 pts: 0.011000 pos: 867 size: 27837 From patchwork Wed Jun 15 12:01:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36240 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp318511pzb; Wed, 15 Jun 2022 05:02:11 -0700 (PDT) X-Google-Smtp-Source: AGRyM1sI7JPEd0m/SL/tcU9Nni59jn2IcCH7C9TBTpaURbHP2qfC1OIH3ve8aauzi7hWQSjPcl+U X-Received: by 2002:a05:6402:40d6:b0:42e:3d4:4406 with SMTP id z22-20020a05640240d600b0042e03d44406mr12193215edb.387.1655294531496; Wed, 15 Jun 2022 05:02:11 -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 o13-20020a170906974d00b00718cce808fesi9519079ejy.486.2022.06.15.05.02.03; Wed, 15 Jun 2022 05:02:11 -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=BbEHooOn; 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 4305468B737; Wed, 15 Jun 2022 15:01:50 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2017.outbound.protection.outlook.com [40.92.89.17]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4357F68B71A for ; Wed, 15 Jun 2022 15:01:43 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=O1f4pX5nalm23TTZLGW1vQHwsCGoBWpRgqDv5VczQRNBuJI86CC4VUAfMfwQZjLkP2rFpRgMSqVKrqt00LyUQxvje0uV7Z7c2fOS4YtrudihHvNnSgrMDWjt+v5eI/GfSnOh6qxEqkmm5N9KYSz+k6WfBXtHgUCAcCqFPD6npZwwXHTENAOUM8kWLrQa+qUBU4G2x2ZCv5mCARi+FLEnoJoxwBjuSq8Hy+x53+f1v4+bDzbaHcvQ0O120+vPAF851depu4ii2E3MQi9qIDdU/G1kYSSphAcaL9aJDD9ikRJ+EZe6aNEMD7nAHCtqW3+DSKK0yhxbVxVBWi+RgPGqEg== 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:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=BjOVFQ12/CftPmrONQTNUbufIGf0/ZwzFB2kZ7fpc14=; b=acxFnX6ZzBxPJIfobyiSrpgd+EQUg3l4POP2+gdmQ+Rvg4kIDOb9TeKMBlUuEZ5xVvn/9zqt/r04OXiX5rcJXfMWIyJq38fXLL+T9Q8lAMMedvxTjPzGu30TemzQelPS6WCJfVMAPQ4C6p5P9rM3KhX3nRaUJ3+LvpkHmIzID/v6DNFvpP8nD/tHgLARM7u7SXQhFXmZrZpVx9NHIQXJdprJIiB5Rtr8yXlHmeM+JlWxlT8t5rs3rxowrwq9ko5fsD1cuj8FPsuXxxO3w5EhORBJ1CB9P45ZW2D/DC/QJNphLyc+ZigRh4LnVVB56+kcwfIxBhJ4msz+1HsxnS8rOA== 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=BjOVFQ12/CftPmrONQTNUbufIGf0/ZwzFB2kZ7fpc14=; b=BbEHooOn9v2SkffItN4saG4U8gN+T6i1WAzzY4AuWdtSDnuEeisP3R+AB4SezLyLrH8zW8Ps/wNul7w9Aou4bcZ1WsBcWckkU/z4FEzPATTRJJhd+Vm35zVJWLEpc0bAEJD+m7b8i3HuLf4TnbBVQ0DLqvX722ObwmVLRS3FKvYyMTWnf+MLhR4e0dk4kMCcubdWQShS3yLUUzP2Ac+4NrEPv0a7f4b9ZwGyJsdFniT/PnNl0NyGCqAlX1jCrAKcnwhRIGVCEzcu0qYHRZAU7HvOxU37PUIzFwCFxNsHr0+YYajeLAASS2e75IIrW+8kVso/nMFVEQeYsee2hUDR9w== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by PA4PR01MB9139.eurprd01.prod.exchangelabs.com (2603:10a6:102:2ae::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.20; Wed, 15 Jun 2022 12:01:39 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5332.021; Wed, 15 Jun 2022 12:01:39 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 15 Jun 2022 14:01:15 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [wo87yHbg7y4TSDJyfQpeGMRyFYyiFJaB] X-ClientProxiedBy: ZR0P278CA0117.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:20::14) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220615120116.2983646-2-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a9f94ad5-e5bf-4fd6-6f0d-08da4ec6cdff X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQr1rwG6sv1IMnfYhbo6dHxrjZ9RH00BcmMDtr9lsoJgPKwojKw4vxpiN20v0SXiqgEn9AWQS24Fvq0j/s6E2vUzXgofKP9Nf3SPlTPEn56YQY1twTQAmtly/vzI4lzQqW3z4WyZuKuhjf4Tn0p46ZWZ85YC/mWXILOJneZM2r+4Vwf+ihOnkxbVEkhMLp496j6f12PlNXxhXX1vg42z0fiWLIqS61xMdh1FZHxCW9owng+xZpESBIsjzMqhUBBnWM4+ECV3sVtqXv9dX3+KGkK0xE0rIQXYvKFYROWl66gAxzvyS+vyAzxdXfOPbLCDkY/tmvnyTq+joJhyKV164Fl84ugQCFGy0YE4ksXWMNuhQr1GV7nG78K9dC7KxNnLiVqiOLJziAkMaYCVD1yLzNpi9zgWXmoSAuoUXdJXbZmKIyDPmEewJxgBKq+znl6A2au/6Caq5/5P6gkm/4t/MPJx9uBl3zvgbxWnZclVWV+Pv8z0vADHz6cQzOT6nJDxHv7R+MXtlMuQVmDwO9kxandjRkwMSkET/vJRPmYW5f9t1SxnSLJvFipqt1NsTfHAc4p/awh5Pnh6jVVRSclqUEv81S39Xe5aE8AbiT/E8gK/mCKE9XE+schmFVKiN8eBlRdENkQjl7ZjWvoM1eEf5zxaT5kD3RlVBesI8JH3SGimDxYd0oLLUfQNC4ZFPoq9I910t2ZOrB2eJ2r9mKZ0dWnDI3+jndDXAu3pTnQKe/pBH+8yaguPJqZe68tBT4VhFI= X-MS-TrafficTypeDiagnostic: PA4PR01MB9139:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 45QEH7453gsLmsiVB/YWWes5HjQ7cSoCcjlQJvU8B4eCND/fFZl3UcZR1xI8AHcz12SAIMxcQM4M0/ei7gKpkK5o8xad0rQ5iaeA4inkxi2WyLChhJyZziAEzowsRRBBgScpSIxWR6q60R6YMGwnA1DfG5uG44q4HxEfK6QpvVeLjzgaDmKGBqdcysnVgyw3W0YNqp7ECHMDBKwseyJIOqCbK8XvVQDgPRjWOOrwtSA1NjIWuvum/EeitAITwPvh+QPxgqHuYBKON+T2Qs0YETNE08pRxQPLF4vqCn8g1jm3a/1WVhuwO/Nc0K4VvOGNTHGrPVNEUuWQyUNslP6Wpub7Zp9xTM7j3PN85cuYxmWh1wuczLUsxf9qzNCZS6DJrDBhFTVhgu6CR5NWgAC1zV2sWtwnJe4D9LkUN9V0TdP5hd30hL+NeOPMvXWEo7PyMP8NOMhwwfKwwDRVQVnWsJNSgSO7I3spwdztHKRBwVOxwj9tRD5NvKoAY7JobVTmQU+585sROM6HqWpHOqFet6y6z05/PjVKQDtFELgIHIGsyOWwyL62elXseu1JeCxq5VXDBf873OYvmC9Czk6qYA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Lkkr0TPYYqusRUpHK21GE8f2kfSZuN1skiBybZGMxwEQRfA+54vMiRHc1uRpyY+NUGfQF+46G9q8+BrUW4RsNVE8IEggkM87GAaYHUWrsbQ3ZUeu2v5wCDMojMiZleRLninOfTRKx698lX7Qr4RlFe8jnrfiG/mIhPgudrQVBo0jKKsSkLzmwmjmCZ7zWCJIkusQRoTFTlhIQ9IyTPzLsO2fpILnBrX9Go4nPBwAk3DMoW93s3t9/Ta2EuBzKHI/T5sgZpJVX3vzSxmKVI12gc0zPUpl5uRQ21QE4+IZ4m7MgE0ivC2gjBk7yrfT4k/6EFoiTwc1AzWiysYtwESImx4PtXaZftDSeDb5gzro9FWxc/Asyj1GliQVQLAj0sPPEnCOER9DBQ+Z2L1IYUh9PPuy/waWeiFDs4qtPrpjQq/komsT62WXEEeST8OmGfx6tl03lmJN3Ca5Dec/LzXyrx9R6cR/aYzauqlsJgbZ1aQkPAxaBVH+tCVyERMgA/iR/baILLuur0dHDDVOclL01Hj17kiuuOUos2Jy6oRafn+a0yUaUL2toIe5VtHwETSG2lF+tfgwl/hT74v9Eq2C8tu4uO/Qqo6ehlmDixT+Ir+QkT3YPf/XQcAvFVT8obAa46BFJQHiX3+rEi2MpKwtWvIJ1nbxvu799POHim8Q/dkooetHDceklDVS9VMFaofw6MH4sdUeex6sOcvlqRM5FOvyKrXbkJGnXKZFu3174YgTTLlSrD3Xq2lgiw0NaOt4TCk0P98FDA3nX++cKv9uKy9piHZHcfElGTtab+dhpCXLaUlwDdEdjpcoLj69sJiiC7kC/+55yB6+Acl8G3acTWOQU9fUtgnUd88ouYrJW0Tw3uwbKbxIAefuCO3GQ4BB/Uc8siVOuanwTKWz19MKYJVFXEAXBwE6gklQYbSboVKTOvrQzttq6HSgauNRzEIa//BrqMWPXkOm0fGqK6rXvP9SbzGUo8KOGL2J0WLqXB12XiOQFy0P8djpoebGLHoBpWOwSQ2LyMecWW/d6bCUNQiRxD9s1KWswNAQz0LsM0tagE0+q6iSzuj4WSyycZK0hy8Hus9FJ57LV6n43EEc7MghDTIXzjuKJ/wGU7Qql+wHl+VUV5mQqaAXF6F+4iTLc86pdHrAP4iRb7PRBQTG1XDWF/R1EJQ+phH6QxmFjo40SPb7RrHdejqO/E6+8ginFdTnn3+AGS9JpgdHBpLBTr9aFz7x6D9Qg3SxfW1DN1gi2Gpow06jDLepoqooEd+iD5DvE4V1acis1g7OfVpGyrR0U1NVI7n95vYVW5F9FEkoFKNX6EgNKgUHZ282Si2m8Ar6aXSlPdGHu5WvHS8O7SsnJJn+UYln3lP8AYX5ogG0H2jV2l3bZ6RuWf+aRcaf/33qTrhjPvc+bslZvDHX+Nssh2hi1rTsAaj0J0/J48vs20QFvIrwA+1j/zD2dXv/LENovO5NTLP+jv7qIFKb9A== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a9f94ad5-e5bf-4fd6-6f0d-08da4ec6cdff X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jun 2022 12:01:39.5407 (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: PA4PR01MB9139 Subject: [FFmpeg-devel] [PATCH 3/4] avformat/matroskaenc: Don't check twice whether to write tags 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: GODgJY5ojvAm Because not all metadata is written as tags, the Matroska muxer filters out the tags that are not written as tags. Therefore the code first checks whether a Tag master element needs to be opened for a given stream/chapter/attachment/global metadata. If the answer turns out to be yes, it is checked again whether a given AVDictionaryEntry is written as a tag. This commit changes this: The Tag element is opened unconditionally and in case it turns out that it was unneeded, it is discarded again. This is possible because the Tag element is written into its own dynamic buffer. Signed-off-by: Andreas Rheinhardt --- libavformat/matroskaenc.c | 40 +++++++++++---------------------------- 1 file changed, 11 insertions(+), 29 deletions(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 404fbdf579..f1385c6b21 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -1953,7 +1953,7 @@ static int mkv_write_tag(MatroskaMuxContext *mkv, const AVDictionary *m, const AVDictionaryEntry *t = NULL; AVIOContext *const tmp_bc = mkv->tmp_bc; uint8_t *buf; - int ret, size; + int ret = 0, size, tag_written = 0; mkv_write_tag_targets(mkv, tmp_bc, elementid, uid); @@ -1962,10 +1962,13 @@ static int mkv_write_tag(MatroskaMuxContext *mkv, const AVDictionary *m, ret = mkv_write_simpletag(tmp_bc, t); if (ret < 0) goto end; + tag_written = 1; } } if (reserved_size) put_ebml_void(tmp_bc, reserved_size); + else if (!tag_written) + goto end; size = avio_get_dyn_buf(tmp_bc, &buf); if (tmp_bc->error) { @@ -1984,17 +1987,6 @@ end: return ret; } -static int mkv_check_tag(const AVDictionary *m, uint32_t elementid) -{ - const AVDictionaryEntry *t = NULL; - - while ((t = av_dict_get(m, "", t, AV_DICT_IGNORE_SUFFIX))) - if (mkv_check_tag_name(t->key, elementid)) - return 1; - - return 0; -} - static int mkv_write_tags(AVFormatContext *s) { MatroskaMuxContext *mkv = s->priv_data; @@ -2004,11 +1996,9 @@ static int mkv_write_tags(AVFormatContext *s) ff_metadata_conv_ctx(s, ff_mkv_metadata_conv, NULL); - if (mkv_check_tag(s->metadata, 0)) { - ret = mkv_write_tag(mkv, s->metadata, &mkv->tags.bc, 0, 0, 0); - if (ret < 0) - return ret; - } + ret = mkv_write_tag(mkv, s->metadata, &mkv->tags.bc, 0, 0, 0); + if (ret < 0) + return ret; for (i = 0; i < s->nb_streams; i++) { const AVStream *st = s->streams[i]; @@ -2017,9 +2007,6 @@ static int mkv_write_tags(AVFormatContext *s) if (st->codecpar->codec_type == AVMEDIA_TYPE_ATTACHMENT) continue; - if (!seekable && !mkv_check_tag(st->metadata, MATROSKA_ID_TAGTARGETS_TRACKUID)) - continue; - ret = mkv_write_tag(mkv, st->metadata, &mkv->tags.bc, seekable ? DURATION_SIMPLETAG_SIZE : 0, MATROSKA_ID_TAGTARGETS_TRACKUID, track->uid); @@ -2037,9 +2024,6 @@ static int mkv_write_tags(AVFormatContext *s) if (st->codecpar->codec_type != AVMEDIA_TYPE_ATTACHMENT) continue; - if (!mkv_check_tag(st->metadata, MATROSKA_ID_TAGTARGETS_ATTACHUID)) - continue; - ret = mkv_write_tag(mkv, st->metadata, &mkv->tags.bc, 0, MATROSKA_ID_TAGTARGETS_ATTACHUID, track->uid); if (ret < 0) @@ -2124,12 +2108,10 @@ static int mkv_write_chapters(AVFormatContext *s) if (tags) { ff_metadata_conv(&c->metadata, ff_mkv_metadata_conv, NULL); - if (mkv_check_tag(c->metadata, MATROSKA_ID_TAGTARGETS_CHAPTERUID)) { - ret = mkv_write_tag(mkv, c->metadata, tags, 0, - MATROSKA_ID_TAGTARGETS_CHAPTERUID, uid); - if (ret < 0) - goto fail; - } + ret = mkv_write_tag(mkv, c->metadata, tags, 0, + MATROSKA_ID_TAGTARGETS_CHAPTERUID, uid); + if (ret < 0) + goto fail; } } end_ebml_master(dyn_cp, editionentry); From patchwork Wed Jun 15 12:01:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36241 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp318609pzb; Wed, 15 Jun 2022 05:02:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxI0++tZ3zKVuxt13OLVmN8Kme/T/He52vBRjFIV5sldrc5n2CQoAF6NOH+GV6xujYanuDf X-Received: by 2002:a17:906:73d2:b0:712:2fed:3473 with SMTP id n18-20020a17090673d200b007122fed3473mr8389497ejl.361.1655294535962; Wed, 15 Jun 2022 05:02:15 -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 ds20-20020a170907725400b00715702f1e9esi14367984ejc.799.2022.06.15.05.02.15; Wed, 15 Jun 2022 05:02:15 -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=ukkcs6Fr; 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 613E168B745; Wed, 15 Jun 2022 15:01:55 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2017.outbound.protection.outlook.com [40.92.89.17]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 63F8268B70B for ; Wed, 15 Jun 2022 15:01:48 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PJ8BXZ04W7CKsQC37kpWI/XO2lSAud4UJwi9huBxB4a3I9F/E/3/7U8KxDll+CyVaafN1b2bQW2KfZVE2qbnztHliwIFkpHxTGmVcg2AcPlkyAxbEVcYQYFGdeA81OHObqzx3GcE5UftJJS4FFssrl0u3qxGT5cbV+RcU9s+flXOK90ppztsgk6YUJealuqwHjkDffe8LfmftFWaIziO5ag9N5zD2injjdJVud9OfHSAMYNDTS9R4Qv+Hc7WHKnWK9kmgvrSZwOux/v3VNnKVnQnFBjj5gp0IBkimu3cX5msCtfmLvBiSMu9CssdyDiWul8tmjsRYGznvAnlPjLfNg== 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:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=04QEcRe8oXk074qmSEF0m9UQxaoDOvVPGaLQ/XTFVjg=; b=ZzGlDVYJhlhnYWbaorGI8ls/jv9VRmt+pFqz2m0r7XFHc5dbJfKOgrXHnKXVl5RZqUBjBbOb8SX3NgbN5Vk70GkcW858QD0thsotJ0mvarxvkXbByReqS94lHDhtiMC/tOWMdtShSn5tIsb3a+ZzxvT+T7C9Gdrz0P5PqbLFTLK0C/GElJVIzWpHQU1kz4OwX0/qpqU685jAKAPMwZ4weXoXcbUOCvPzdkgx0LqogsAJ2L4yyB4rVIY8tTNQFv9qNW4RJfw4dpkoGHayd7gD1U7+GxGzGJq8eN6Lg4XjSkmdJecdPQCy5KLNbHCkkgf3BiSRzhjzq8/T9n0MhNPTnQ== 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=04QEcRe8oXk074qmSEF0m9UQxaoDOvVPGaLQ/XTFVjg=; b=ukkcs6FrxGm/aZ4qF5TdLP14wCtL6s1L0QBM53HjOq6+jvv1Q79qDe0/UfRhQkx0r8ca3xCSGw4oHivJ65A73O5ehVirfI4hwLa09m2N7O+3P9q6c32aS7zomcaFb/QUnSiXoldT+qtev5FokvwVYKF4mmHit3sHMmKYvuaj4SXJIwim8U1iOPD2iEWHCSyyFAXrT7vtgmWfVoyn37v8AiZqN8G7Et/jUtHMuU1ueoT/WOo+3uMbitRugF43UcQ8w0Pnxr0zVRlqJ6ZRU9wPF2ZYj4IKj4S5XaSculonI7ZHYBETT158SSdqLTV0/Fp4Y6lpfSBU+4yyGdygmST7TQ== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by PA4PR01MB9139.eurprd01.prod.exchangelabs.com (2603:10a6:102:2ae::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.20; Wed, 15 Jun 2022 12:01:45 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5332.021; Wed, 15 Jun 2022 12:01:45 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 15 Jun 2022 14:01:16 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [J+jqHIu45P1CQ0Y6ZmGIjTDtJqa3jvwn] X-ClientProxiedBy: ZR0P278CA0117.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:20::14) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220615120116.2983646-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e20bf9d6-4f70-4cb3-995f-08da4ec6d152 X-MS-Exchange-SLBlob-MailProps: ZTmCor6bjd/E+eOKjrS5N6RWPMj7VMouq8EaojiHVhFI/2YYMp8I/2eqdNregbqEcLx/pLUJAoux9a3N7b1w7SHOm2VoW/5XL7wZ4Qfcn4GgQyk6o3msteBJuqMVNjlMt/BqWR80p6Ef/G5/4rjtlPbPfwvPtj6JlW4DLHu+fSUibQJPpLGVKu1ETLftOj/7iGsYcNiXHVlTXi/D3gDfTMpdgZZZ6W498HovftIzRAgQa2or5f7h3dI+++IfBLMhTy5DqNIryGzwjSBI1Hct8YAifBzsNPICW/1Ro6jpO6hJeteUTDF9DyT8+enWK0nESPMZT2oNsnTM/yxi8tcMfDoh25CYIlfBrX+Vd5Jcbp/mMC54/ooNzthoF69m4FOjvCEUDIzNo+GIoyoyeNmEtm12lY1Ng+rYKOFv6PG/yPt5oQibhMsm0iS0dfkrQLYA98RHZiPBy0TV63mqhLnhbop/yozrm9/Yuphpe4Nz48lyjWNiGAte1OdlADgFHTi52FAZ61581iCQFAQwtlijYo8oWxAMjOYRpvCcu69PxJ81kT+nmXDiEhmXg+7PwhZlXijkpzJQoatmHjusZ49z6PE8CBWTgQwQusmaXMkw6SQd2VM4ECHpUdWqama8JXHoI7gZcykqr8S/hwfUM1G/SlEPgI9XPkIm72Kny6fQKVE//6f+eXzggMZDfKMgeQSxr91KWoANDKCw5mmcRnoH6WiVf1PuxqLY9bRoEamFnoABjAEd+uoFlyvmJgCyVaokpFRuc+HiQGUY0qt1ZsM0S1vG/VDZKyyd7wfSkntDMo5TX3yVueGLnxhLhpEPCAWS X-MS-TrafficTypeDiagnostic: PA4PR01MB9139:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: p0OJsUlU9tA0t1wOj/UmIn9skbvVOPvL6olNHqE0ZnPwKyktxND+k7m0DZldM3dUaWhIl5dOIoA8rA1rIdXHkyop3BJxkMZh5Ye/5e7F1ddkjOgbGq+6lyY9/EdFwt6hi76CbLRmwjyqW1Vm4AhYOdk0CEbY4Oc6x28Nw0+m2yV8c/m0FNpQvnYJKZEejUukWOq91dkqSH4cbvrkQjn04iX49pHRm49jVI/0rNuQSgGWNgsyVdmol3d0kE1LiB9/SBifImQGbM1ZtYMs2YIsLHGoV0AoMMInSJs10CCJH820LIqIuPQMdd9CAgka2U6HNXItXmpQYYKp5q6ZQwrK+2FqkSrlAbjftDwbT6dciGmrvUFBePEygfwLu/qfO5fz+PW3rk76w95r3SURaL5owIUI3NxejHKSlDQpzlg3SuwHn9LgTHQCda6/gLn/D1Xjif8evi2rFQOxYa/YJrwH4Jt0SSAcAqSo3MPqTydjTmgnIEZcnUAnNU9BvU3xGPa4MgRfixNyqpShgn/UW+7ePMxFUu+QqBq3P117Cga7aYAZy2MvRQoD+kSWayOFGaTwViWAG2tAOhBYulkwpRw0/xO6Z0IJvZo4ThpNkS376XlRuNmPBL5NGxedn4L3ybmr X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /y4SImv23aEWZxrUaHfsajtyvr7XB0ABEOtwoBtxulu8ZTX9Z70n9v2QqOg2iObNf8GgNGCP7fOcoVwv5Icz4NBPNR0v5+Mys2lgsZc7PPiroAaVotSlfBAaS25xlVP6EJzSAKjBPShsPf0TAA1bUXPuI6yN9vBoXyZgnE4IvWQHdf7FSpS7rX4YB/E/Ci/LLWXfMFgHVFsgvdOvO3H49xuuwxAr3WnGbGfzLS9oVuR7c0T8y51lu3qkFk/67vNwxtzGucDs3SpDtrKrqpvfq3p+pI68ox7PemUgphmFMRuATktd4aC7y6sq8yXfcXoG4mevq466gTxeTeQkHcmEA91nLUGTgEozvtZv/FaS4o2S2L7yXroevDxe/E6MtxsB234RmHXHBugRP1sCKHVOdRLdqKC2dSpuKRqH+ksoCKEIn0fJcGy+M1iV6T/rUoe8AINcYv4Y1tjvm8ey35jHZ3r2/V6HFabffBRtET1svIiHsnwsaqXzeyMNXGZjGYzVANifHmzVngBirYmPRC8S9Lq5zICnqYxB1tBaGTH/tcQoJ+Zv7uqN9VMyNsTt+bctwUYw4ulmDE2MlJ80Llbti0C3MwVF9N5DdDMlJJTxK6tyE1FaIKr7nhSqJ6C31ODw5thrtzNGX+f9ZojauQL4zEwzE4Ymv4iFZx57T8AQaq14FoftxbEDLUXlZVQGrdE5thUwybZGB76Oxb4qg+FB64ytEbcnnQ3ftUdxa/Q9JhOzPCaKF0gS3lcyKSq6QWGIXz+0uFIdVVAAfrlmOU3GJZHWMJhN0nmj0MsnjJK7+j2wM9zOzdpHuJ0mYyJDsqg4o6e+2F9j9EZ13xsl2DgmLd0/6V/j0M8OXkkca8A8RG8tToiUzaeFGF4RLOuMiGL+Xqn4oCYOz++3XVLpUMVUCxNuzaoGlapiR+hfdh/PUks2TSHnooN1UX6CPsTh5O09bR3CWCaA6uhSsPsPY8IGIHpOoa5hiyYzZulH0xPTg9cMnj/Xm6rJguslzGR8sYGZ6tGnGTVVlPaIdFnIvb1OAFnMNIXHd/5CqnWBkNR4Zf1tdXkkuXKObB1N7UmdTpHN42pb3CPbECJHPw/d/psxGszyxZ+YvxDy1eGydrRynkaW81LL1SXGRKa2E/pvB6Ck2IMVUEoVnWH+udBHMfQDfdgW0UEm1FDap4LQUzfn95F6mV9suioSXnTOcPjad8KfoXq3NTfjA8JzGw7+eP4pzAoX+iyZB0lW1ZzKO8lKd8qPMtcfvIG/t4n6wbocQlp7c7/o1GALeRcC/840mLRbUtGFM2BpAMgOw0gvbn2dool4jdDa7e5e36nTVlqpm85dGyQSUoJ7iLA/UTQuJFHaBHa9oy1yC50Lv+ZtNQrOMamo4ppew8+c+UQ8pOpRI8vSGv7x190B57pxXKf860yRCbise1/umC++zh3hR/Yf7dHjst1WJTDWTLilyRsgpRUYTvPPDo54YZgxFYYdP+5fYA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e20bf9d6-4f70-4cb3-995f-08da4ec6d152 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jun 2022 12:01:45.1657 (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: PA4PR01MB9139 Subject: [FFmpeg-devel] [PATCH 4/4] avformat/matroskaenc: Reuse dynamic buffer 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: N7XlJv6utaPc Avoids some allocations. Signed-off-by: Andreas Rheinhardt --- libavformat/matroskaenc.c | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index f1385c6b21..60647869ca 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -220,7 +220,8 @@ typedef struct MatroskaMuxContext { * to write the length field of EBML Masters. * Every user has to reset the buffer after using it and * different uses may not overlap. It is currently used in - * mkv_write_tag(). */ + * mkv_write_tag(), in mkv_assemble_cues() as well as in + * mkv_check_new_extra_data(). */ AVIOContext *tmp_bc; AVPacket *cur_audio_pkt; @@ -929,17 +930,10 @@ static int mkv_add_cuepoint(MatroskaMuxContext *mkv, int stream, int64_t ts, return 0; } -static int mkv_assemble_cues(AVStream **streams, AVIOContext *dyn_cp, +static int mkv_assemble_cues(AVStream **streams, AVIOContext *dyn_cp, AVIOContext *cuepoint, const mkv_cues *cues, mkv_track *tracks, int num_tracks, uint64_t offset) { - AVIOContext *cuepoint; - int ret; - - ret = avio_open_dyn_buf(&cuepoint); - if (ret < 0) - return ret; - for (mkv_cuepoint *entry = cues->entries, *end = entry + cues->num_entries; entry < end;) { uint64_t pts = entry->pts; @@ -969,14 +963,13 @@ static int mkv_assemble_cues(AVStream **streams, AVIOContext *dyn_cp, end_ebml_master(cuepoint, track_positions); } while (++entry < end && entry->pts == pts); size = avio_get_dyn_buf(cuepoint, &buf); - if ((ret = cuepoint->error) < 0) - break; + if (cuepoint->error < 0) + return cuepoint->error; put_ebml_binary(dyn_cp, MATROSKA_ID_POINTENTRY, buf, size); ffio_reset_dyn_buf(cuepoint); } - ffio_free_dyn_buf(&cuepoint); - return ret; + return 0; } static int put_xiph_codecpriv(AVFormatContext *s, AVIOContext *pb, @@ -2648,23 +2641,20 @@ static int mkv_check_new_extra_data(AVFormatContext *s, const AVPacket *pkt) // See https://bugs.chromium.org/p/aomedia/issues/detail?id=2012 case AV_CODEC_ID_AV1: if (side_data_size && mkv->track.bc && !par->extradata_size) { - AVIOContext *dyn_cp; + AVIOContext *const dyn_cp = mkv->tmp_bc; uint8_t *codecpriv; int codecpriv_size; - ret = avio_open_dyn_buf(&dyn_cp); - if (ret < 0) - return ret; ff_isom_write_av1c(dyn_cp, side_data, side_data_size, 1); codecpriv_size = avio_get_dyn_buf(dyn_cp, &codecpriv); if ((ret = dyn_cp->error) < 0 || !codecpriv_size && (ret = AVERROR_INVALIDDATA)) { - ffio_free_dyn_buf(&dyn_cp); + ffio_reset_dyn_buf(dyn_cp); return ret; } avio_seek(mkv->track.bc, track->codecpriv_offset, SEEK_SET); // Do not write the OBUs as we don't have space saved for them put_ebml_binary(mkv->track.bc, MATROSKA_ID_CODECPRIVATE, codecpriv, 4); - ffio_free_dyn_buf(&dyn_cp); + ffio_reset_dyn_buf(dyn_cp); ret = ff_alloc_extradata(par, side_data_size); if (ret < 0) return ret; @@ -2891,7 +2881,7 @@ redo_cues: if (ret < 0) return ret; - ret = mkv_assemble_cues(s->streams, cues, &mkv->cues, + ret = mkv_assemble_cues(s->streams, cues, mkv->tmp_bc, &mkv->cues, mkv->tracks, s->nb_streams, offset); if (ret < 0) { ffio_free_dyn_buf(&cues);