From patchwork Sun Jan 16 23:03:49 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 33621 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp2272965iog; Sun, 16 Jan 2022 15:05:36 -0800 (PST) X-Google-Smtp-Source: ABdhPJyvWO73I/p/EbdTwnDZ7KViSUJJEOOIItT624zJfaCWreT/lEcPz5TqlrIppgs7F8Ld+dSm X-Received: by 2002:a05:6402:43c5:: with SMTP id p5mr15467036edc.95.1642374336042; Sun, 16 Jan 2022 15:05:36 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id ji10si6393863ejc.471.2022.01.16.15.05.35; Sun, 16 Jan 2022 15:05:36 -0800 (PST) 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=YkMOfnsc; 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 1E2DB68AF0A; Mon, 17 Jan 2022 01:05:00 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073070.outbound.protection.outlook.com [40.92.73.70]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7441268AE99 for ; Mon, 17 Jan 2022 01:04:58 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=l09O8kvxlzdDTqSKIRbl8hvLKetng4qt9JqBF7wDsSEodHeeKNIjyi7arApY+t4OKjayf/q/ppes1+4L/wY4ixz3ksFqBEj0GGW8yWFk0JHPP2IWMQl4VrP/ve7M3O9l/tuXNVXEFwmIOVZzIVHeHs8K08APC46hQ/7JIOF4loenClp0t5VUMiTkwfebblNtP4BYeVrOg4xHoh5WBg11DAkFV2E7jUlA8v8cn73DIBkKE0mr1qMO3yr3c4ndDvIvYmEg9MnfIg/CdO1yW/kkI7bRnienbvRrjuNN6Frf6uWR/J/FtcVRDOd0Ied8mIFNjmWVXx1krwBCbuklxUcV3w== 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=Owh9PgKIM79afO9eos4TSLk54nRZJlOzpz48TYubiNY=; b=YC10aa7ZDMqBs5bs/w8niimc8fXkYZufhLzqT7s/18rkWjBx4n3nKxY16iWPd6Afj7ruQI/HiyJQ5ZdYSi1lTGVzyOAfrl9E2fh+EFafwU3vV5NH5O28tDr14HCU4M2ch+XhfcRQxvwXDoFLKRxS+MJxNBQRtQ8tbgAY2f7x8TpHzGtpq9L25ZL8oESCMzp5TOpqcUAtjPPH8rheekXCBpLVyE/7RDySHxW+3IMC7GClO12SMiBLdj9XiuPRakzdTxdYCVliI23F9DoSINnQn9R07Gm5xxjjBbLqP2+fDbWweoEufk+v4h6wjeeibSP0urqVlWvVh3NSVomC1cevdg== 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=Owh9PgKIM79afO9eos4TSLk54nRZJlOzpz48TYubiNY=; b=YkMOfnsc0rmCFKWgQaCOAM3ce1pK8gNyMU4EWQeNdegDvyq9ImswTi4BvzhxGnuv9em//kAbACGGe+ZhCQB9+BvkHIzWkZktbb//SCXPdytmaC1jlcXr+cfgfBseUZYj4Ebh4GF/heRCdk8qbcUuab6MvvtFx5cNBaamHVugKt1YCN4ep3yAMAX0JObdUesZYSI0r2iXdkn3/Q+L963gYTx/hOg8QugRSylvSU9TeejUpoyXiCgaJtPSeIfzWqn+3Uxf3cSUtGWny6KrbjDJId4SiwDesHkzHce4VeOkKgUaEqHQ7kY9FvKzTi3Fsq/y0lDcgW1od9RbShGBfQ1tTA== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AS8PR03MB7704.eurprd03.prod.outlook.com (2603:10a6:20b:403::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4888.10; Sun, 16 Jan 2022 23:04:57 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::19fc:be9f:2c9c:53f5]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::19fc:be9f:2c9c:53f5%9]) with mapi id 15.20.4888.013; Sun, 16 Jan 2022 23:04:57 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 17 Jan 2022 00:03:49 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [b5/uxrd8YJmJblJzCQ0/92ehHJn2RsyA] X-ClientProxiedBy: AM0PR10CA0070.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:208:15::23) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20220116230405.194506-8-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 17313ad1-a22e-4bc4-9fca-08d9d9449d42 X-MS-Exchange-SLBlob-MailProps: +LiGfBxqLEuZvKHt/RRJ4O3wxWCrUcc4xmg+S8kYo3U2NKCdFccZBUTIu+KSE8qpl8ocuVMEnoEEsFKPTlLAJ1mValnFdmuvLLat0+tcj1uauv/fguwkkFeAFF4kFkp91rX0LxMrEVmiHiEBvJ2NyOsxw2BQRmEL3+L+VLoUHrHIbExdAInc+9onMx1Ffk5MADzh4OgVCJ+bcOiXe1MDlvx7U6TD6Sn9v1j2mKQPwLfCcUZ8BqZj+YT+zcq8C3EG8vUthmhrdKN36/IHNqkCJr+oERU56A2dwYzaR7OVUoGxRLrmbUCsD9Bq9u72Jdsy0c3b8jR8yS43X530HeVwQ/F7z2X4MkZ8AaFJo+UN8yMlTYbzacBvvBDog3O2csvR/iZKO+ptqNZFVBzcOc7PP/MznUsq+6q6h6e2n6ADnQn68tMER/olvLVz+dWvZvEtXlmPcEZFRqRksR6/P+w8Wl8YCwGyR1g++0YVG0xJLrurj/8AzSZamx5BjnQiOC4OJ5bKT124/5KMUvdkIRJI8IswVgEY++p9c2CsBsBi7Jk+nNFI/PrWoM49Hasx0ZnDe8BWcpgvwJaitAa8EFktdWZ9RdXpeQIA2M/WhTkGoUy77/1mCJKJ2t0FeN+RwsC4Da71nfEkf36q4M8y8mHtlBaq05XWTfV5Za0IuHr/0M98MRGoZf8hmmKKWHYFM0HBckpDSAcrWR4HqiB6QFLEzymBO/eBDFv7DXm0FgaRI7rdPZK8Q/rAMnySMrXwBCSZclfeyinUacWUtczTQaBC/iPstRToKp+w X-MS-TrafficTypeDiagnostic: AS8PR03MB7704:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Mwyc4aUz03HPEodIc5dIAnLsAPPSht2hpmFw/yTAa7qqHyRlbgbVF9RYZ1l1JdDJ+dT8bXrnwx7BKbbBQL4S4I7RgzK+6YsN4HHbKD+v9U7Rhizv7BSablZd/m/uPBraKcYh8kXqZWLS/fx8Idf6/GXjbPO1pWWWjC40D7eq3xsox1nDWFPfrAoWXGwpNmBwJYhp2FvMcaslXDfdatUSU2EDhQ73eH8QrEkKckfiOoXJitIjMKS2MGfczSgiXUNxLo9+aVDrtglFDR7PPqCTGt5zjHrqsYdLo/7cv8HzdJRdrWyf9mceaJrgfP0iJQi8LRnRq9/VHT6BBL3qZ5Kbdcdg3fHDkSUOctNfhnTiyM40vuxMJXQNdS+bL4KhZ+5VNnFWWaHTcF5l7Si66nLUidlsbaYHEpzZEzMGGSM7xJcOfTBl0/jyuw7/155FPwVZdctY65yB692dOB4z5HMl/yy9llY6AXG7cUDTB3sjXhE9gR6I4tt+Z9aQKk4bOYdMv36neRhgE70SLCxhcuB6CStSnyxIj5TN6cHpWmyNjkvxbv0t4+RFcnxMgfNXPhJavOEgDlnhckOuzCX7/Xmxew== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Moqw52YY/leTjyf3sNpfmXPP5ZJOpOECjy6afOxruMNnolXtM37twkBENNf2+Me8EEu6CyoNZ9OHVhvLPR++wd7xXvk7KbKw6pj/ivYYkLMgMwrw9SQ3Atdqe5n3SWzN1GmDEcxIDGb/wViHOWo/DbX62c5/W8SW1B6F5iWnyjb5m/JPFxzAL4FMzqnXElSpBOoH9c4E8WcucjipxEfu4dJegaqYK1zxncnHOAt7LHq68JVkSPwbHD7SHZ0hSUcxpHiGSj4tRoLD8b0a0glVkCkIxX2r22Yw3BR1UXgmpY8oIJNRWOkjYgqZw7gdPRxo5P1+ma3vRxCFfyn7sjIxAb+dLMmIXn0FHVRPf1u4NKgqKOqL17cZ5nB2c94dftgnoKzY9K8Tioj2ca9bAIuzSLgvJraKE5eip9d4K7pDEWfsMeunbscjr2BT6ZLeP+TpIDqfgGlIliYmR5BcpSK6eZUXoz7yBKI9zydZ+tYHsWqAe0WkKlX3lbFWb90VhijETffZFnVH3cKuY2G8ZB0G7AkG40qLo86Fq/xfpgMBlIjhbgEhw2NUsYYc+/COdujW7Eiuo3WunTNDHceccdVeTCA3EWZnU04fWYtuVmpc80q8RKtZI0B/t3b5Kesimp1JquV3qDk7USMtsE6tMdZtE7FHssGIjNKNTYlnvEo+SIK5luCJe4XQj2AgagVAVFz3kzqdv4Sd8KYxDa6BjYZRZMQIEq1zHQ2RVqmjkmCfb+435u5JbFq5jBX2LZ5FdfyPINFX8IX4uzKtiasRWQqYy6lbU8tGsbeT5ET76jmtI3p3TuLRSq0tA4aMO5N5D+h0oJCvdXon7541IoXb2x/Hg30ZwyRIxFzvPWlK2UufuTMYTRAZBx4J+UdYYf6gnqmi0HoTQqbogIXJMDxlzTkBC7aeYqDNxjgs6b+6lHC9H/ZKFSK+a4vZc4Si3ZDQhW84crUhl4nOt284oJmxgmYTlw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 17313ad1-a22e-4bc4-9fca-08d9d9449d42 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jan 2022 23:04:57.1400 (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: AS8PR03MB7704 Subject: [FFmpeg-devel] [PATCH 09/25] avformat/matroskaenc: Don't waste bytes on ChapterAtoms 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: 1KbqbPsMrfEA Also check the (user-provided) metadata tags for being too long. Signed-off-by: Andreas Rheinhardt --- libavformat/matroskaenc.c | 22 ++++++++++++---------- tests/ref/fate/webm-dash-chapters | 4 ++-- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 236dd3ae8d..fa58f1e171 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -2013,12 +2013,13 @@ 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++) { - ebml_master chapteratom, chapterdisplay; const AVChapter *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; uint64_t uid = create_new_ids ? i + 1ULL : c->id; + EBML_WRITER(7); + if (chapterstart < 0 || chapterstart > chapterend || chapterend < 0) { av_log(s, AV_LOG_ERROR, "Invalid chapter start (%"PRId64") or end (%"PRId64").\n", @@ -2027,17 +2028,18 @@ static int mkv_write_chapters(AVFormatContext *s) goto fail; } - chapteratom = start_ebml_master(dyn_cp, MATROSKA_ID_CHAPTERATOM, 0); - put_ebml_uint(dyn_cp, MATROSKA_ID_CHAPTERUID, uid); - put_ebml_uint(dyn_cp, MATROSKA_ID_CHAPTERTIMESTART, chapterstart); - put_ebml_uint(dyn_cp, MATROSKA_ID_CHAPTERTIMEEND, chapterend); + ebml_writer_open_master(&writer, MATROSKA_ID_CHAPTERATOM); + ebml_writer_add_uint(&writer, MATROSKA_ID_CHAPTERUID, uid); + ebml_writer_add_uint(&writer, MATROSKA_ID_CHAPTERTIMESTART, chapterstart); + ebml_writer_add_uint(&writer, MATROSKA_ID_CHAPTERTIMEEND, chapterend); if ((t = av_dict_get(c->metadata, "title", NULL, 0))) { - chapterdisplay = start_ebml_master(dyn_cp, MATROSKA_ID_CHAPTERDISPLAY, 0); - put_ebml_string(dyn_cp, MATROSKA_ID_CHAPSTRING, t->value); - put_ebml_string(dyn_cp, MATROSKA_ID_CHAPLANG , "und"); - end_ebml_master(dyn_cp, chapterdisplay); + ebml_writer_open_master(&writer, MATROSKA_ID_CHAPTERDISPLAY); + ebml_writer_add_string(&writer, MATROSKA_ID_CHAPSTRING, t->value); + ebml_writer_add_string(&writer, MATROSKA_ID_CHAPLANG , "und"); } - end_ebml_master(dyn_cp, chapteratom); + ret = ebml_writer_write(&writer, dyn_cp); + 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, diff --git a/tests/ref/fate/webm-dash-chapters b/tests/ref/fate/webm-dash-chapters index c2f87b2d7c..95114e6526 100644 --- a/tests/ref/fate/webm-dash-chapters +++ b/tests/ref/fate/webm-dash-chapters @@ -1,5 +1,5 @@ -d3a67db17fdca71b9f8cf57c341a031b *tests/data/fate/webm-dash-chapters.webm -111218 tests/data/fate/webm-dash-chapters.webm +01732642a0750de3959fd348092929a5 *tests/data/fate/webm-dash-chapters.webm +111162 tests/data/fate/webm-dash-chapters.webm #extradata 0: 3469, 0xc6769ddc #tb 0: 1/1000 #media_type 0: audio