From patchwork Sun Jan 16 23:03:45 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 33617 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp2272487iog; Sun, 16 Jan 2022 15:04:53 -0800 (PST) X-Google-Smtp-Source: ABdhPJy1Ip6XjI2VndzDVFaQcIQg0fsNi1mrRIn/3oCXyqw2zvzX6VJrQ4ab4joHV1r6Pm8Y7zii X-Received: by 2002:a17:907:a41e:: with SMTP id sg30mr14346367ejc.249.1642374293035; Sun, 16 Jan 2022 15:04:53 -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 ds6si1036570ejc.375.2022.01.16.15.04.52; Sun, 16 Jan 2022 15:04:53 -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=TUYMo5BX; 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 B838868AEC7; Mon, 17 Jan 2022 01:04:43 +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-oln040092073090.outbound.protection.outlook.com [40.92.73.90]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3A2CB68807F for ; Mon, 17 Jan 2022 01:04:37 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nbdZkwHcfsRNjugAF73vwoJpFpiupoFBe/U0Uq8f5AUo7WJdzlmBgm9OzHZEwjPvc9y+chvQgUJ849al4Wc7jg3FstzgUPV210GGBYPVlY8IWr2dmnkOXDbVj9VIwr/DNvpwIGjQru1UlhIXJLYvdRDvkniudKAA6dKm58uD3OrATBjtePUhXqZ5XcWLNKRu+6VM/lUMHGTqo0a97KYbjsnf+iNL9NRLZ181ByXqq/kSPhkNSNw6/wP0WZnG1YJiHfNs4DoHVF15ntEKCux87q1GjqI2hEdNU+dTKo2E7uE/X9mgvOfFNRvLMTnAuTCXqVSnBYekFZNqTi52jXXqCg== 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=LC6NVNISpAUChC8i9FEbt1XRSKpv4rwS1mgNn+Hz3Cw=; b=FqHHvWNJbwv/cFz43K5GuWEFtRQ6EEgs2yJsMKdDaZT26gG1jUfnJa5tMi1t4Z+pgSWzBBy4donL6UUoeFXPzEmO8Q68ttEJyuLn4MPcHEH2arFuszrfleiw78rNt87ez57rSGNfjNj5XAAAY3GdWzVA639rEeXEVSdie6Q0lUqV+vfaYFnfE4gj7/DHT76hMuM007uWmKv3QadHrjIUp+V1SyqXbrQ9OXI07T3U+K+S/W1MvIz3UY6bv13gjZ8CQt+W6vbgt8+42HHEwv7H1NcprZOCIkaB6DwUWD94aVxYA4UyZNK/K1cTySfmZSo3nvESfZ7s89IRob9En9LsoA== 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=LC6NVNISpAUChC8i9FEbt1XRSKpv4rwS1mgNn+Hz3Cw=; b=TUYMo5BX9Qudd8ZxBncbNTbtxM4Kz85kttl3XYzHV/SIAxsijGj63cA8IW/Tx97aK4oTS7fY+F3GetOtLJi6o5jlu84UUVPxPpsEE/3CAdJ8pWNDtkAnU114+egrRhCCSDixIym6CvSkg78T6HL5G7Sc72rLVMB/HCVGEMMW/zhsf74viH1xCF14wgWhcvdFTJA+zsMaiNtBephb+uZdd8MddElh3dus11APRbErG8cGp7oHnkNgiewTQJ/E9jD9a77HZr4RFJU7LAW5RfvWILRHq3UbheDmIoNFCxYNn/K1qCYqXvO8jWMU8U7RxN28vIPGpb9D6jSOVHzsrHOuiQ== 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:36 +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:36 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 17 Jan 2022 00:03:45 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [XucHFi5q05jz5EOo3umqfNUljXFnIe0s] 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-4-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 79c283b7-9839-4605-6439-08d9d94490b9 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQ2WpFcKeHQajRkhOqduPns34yw9P8ngdqfNwe25h/h6nNOlivhwyzCnV1+eaVi6oIMSvIizD75EYeB35va1oeTn8DamOrsvZ1GRRbWZUpHBb2xNHw7U98cDYPBmKhEctEjVZN2crpD0mJ14uhpNO96AVkGjIqjYbIL8aHiAgRhg1meBdg71bLxC2buWuZ6ElsgfcLGsW3vw+hQwA82AxYDgczUhHitNdEpx+dtf5JkScPgCpGZ5fhyUD965rLNAKNZ7/+xOJnrNyhnvr8Zmc9GmdNBEoEa68OsGeBbJ9Fmgc+EIF/E8gJDBGikmbI+VOVCrinVdgl4UVith8s2nAN+80ozmiFvJSxdr+sSwqGc4kq7sxIO1RTN4UdAyOE6ugVhp8FtrE1nfSRGhcXKGQ4XQC82oS6EKvP0oVnyrN5vwYCVEceoTNdLlBIpjyXNCiRtrXPCsM7/V0+KeWtzKMDc40kElS8DmjcUqK/vaveVw+q4Yr193h3dYdgqIGKgFmiqLg7sRwp+1QQCXOkQv51BXul90Cfxq2RPOCCsTclUfgJZNAX30x+KG8EYZgOFIEQmf1emizU2T54m7ZzA7g95/GNUPDaBNANok9xjpuc1xuGmzHShsH2M2AP0mT2jNbh+PTRbVFbTjlaOV0TEQKuZTgc2dNk3VVc1Z8xXRBkZjNCBMfUs1IZD9/3xe1CtCBW6y4VwDFKGBM96SfL8lW6h+ysRnOf/lJsnNB1+yP4DYxsNaxqahhboefueZVEznLE= X-MS-TrafficTypeDiagnostic: AS8PR03MB7704:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: HZepuD4c9bm2uZhM7VF0ooHEY7qMyAMA+gDZq4QGuiZICxh4XH/avXUs9PExsASjx2c1qqj8OjGuWBdExBYI4vQpDi68/6xdD0b+b18K/Mgz+zc3G9WfUptlFAodtWkdXBFu78BlVsQ68a8pJ5FHm07OE9LruJdzPcuaRLHc3gR8N3ymT6tu7Rn9FFCtL0kzJ9FYFcotWsGSXo4G9eDm8zbErb2ejc+Kk4WBVR9TGM99BPjv5QN/QdDN6LVCaFhmaXHYl+XpLWBr1FYHviJBhvgNP8QyqBrqXARS1tDjhTQ9wWDJxlD59XLAPIjOweijrZOXJ7T2vAca+949b/RKxIqpQj82WFqx3JjB30IVKS6T9r8ril1y5N/aMJfjMfJNrf5ecL/5P94E9eutwGk9ZR8VqHYd5qEgQK1iqnHxa/5licAoA8leSpKv29c+UoW1L3xKYXnvTAc+OcLdGOONsnlLufDi5R1qQSxifpDDc6xR/xb+HuBepX+F116KLMLhGFKfnLqcUfnQRw/dbno0nESVmpMpWbMkJNGYq0sc/2tGL1I+Iw+mGpt7yrfVYYD+BacpgwoxLK4hEUM7C+vqSw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: dayGeicGZPZNDQME643jFWCPlPZyombcBv3V+XXI2Bjc0u7o4jvzfXUq1eX96ymwPG6ubBylbQKXnsNfH36WPYVegye6LFqYWm19oYav3qNf02CNO6ZfEx09Z05TcEVOYA4pdHQRRYCdz+6EUPg60+Cga3lh9//1CfWihheimeeZhK49AJqYuWS72W2rNEAXfm5retERE35A/TunucS5WvA1l+PrvrDoh+UwdXY5IcyKCAKWI1FjOuBD7rUnKuBOyPKCSVES7z4PhixzIy6g2BV6a8CkxnxVWmI+okinfNnJMzlaZ2N1YaLB+b1m+LyxAFifYG5aVpyQF39gFrv7KkdSXQLBEvMJaxAHrET2BO4eM1yKbR5ByUh1CSuGwcNQEuZ7QZIWmtiQ8rkXBueax9GFtlzScxmV1hPjT9e1s51SyTb3P972HjAYQlVxUIEyu0yuo1KJgE0WsmGe2T51hFIUBPeNK7y4AMPMT9ps3CR6rueYjqhxl2UdRoe/RhCK0i0B+estShFtMHRypp9Ve2FCYkBwQlb1S7o5CH9+PZuo/hvli152X63pmkqH/qaLLXFqhPrUOOzc2GvIrWUjk41mdNtiAmWpi75emsML97DSk/AneBcnc5KhfRCUkyfvwTIanBV/8CYG0vgYlaE6N3yttpwd9DvQcERiLHGUexZOH0STW/45SXsZvGgiRed64TGNIIZRwLjD9DztLWJc7gowTA9NgnoXyZ1Rp8qNXaAW/0tMgiIi89lZPLiMzJ89LolxdrLnPgZnJjs5f+PReIj8UP+VFTUIL3lAMxOAkoNhepvOhUU83gL1tvvbz02h2od3aoEAc40LR6YbCOHyADVdFxzERd8szWjN9pRRkT9DhP46GAEuIbAt4TSn6JqmVAYOqWIJbzThYgUF6GsJVnbsU0wAQ53wvvUCpBfotNd0dORilovDd5ZyXssgU42aTxnKOkhYjFgiPqoe9994TQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 79c283b7-9839-4605-6439-08d9d94490b9 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:36.0594 (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 05/25] avformat/matroskaenc: Don't waste bytes when writing attachments 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: lU508K08JzBS Signed-off-by: Andreas Rheinhardt --- libavformat/matroskaenc.c | 20 ++++++++++++-------- tests/ref/lavf/mkv_attachment | 4 ++-- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 154de25f59..0927e0b873 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -2056,30 +2056,34 @@ static int mkv_write_attachments(AVFormatContext *s) for (i = 0; i < s->nb_streams; i++) { const AVStream *st = s->streams[i]; mkv_track *track = &mkv->tracks[i]; - ebml_master attached_file; + EBML_WRITER(6); const AVDictionaryEntry *t; const char *mimetype; if (st->codecpar->codec_type != AVMEDIA_TYPE_ATTACHMENT) continue; - attached_file = start_ebml_master(dyn_cp, MATROSKA_ID_ATTACHEDFILE, 0); + ebml_writer_open_master(&writer, MATROSKA_ID_ATTACHEDFILE); if (t = av_dict_get(st->metadata, "title", NULL, 0)) - put_ebml_string(dyn_cp, MATROSKA_ID_FILEDESC, t->value); + ebml_writer_add_string(&writer, MATROSKA_ID_FILEDESC, t->value); if (!(t = av_dict_get(st->metadata, "filename", NULL, 0))) { av_log(s, AV_LOG_ERROR, "Attachment stream %d has no filename tag.\n", i); ffio_free_dyn_buf(&dyn_cp); return AVERROR(EINVAL); } - put_ebml_string(dyn_cp, MATROSKA_ID_FILENAME, t->value); + ebml_writer_add_string(&writer, MATROSKA_ID_FILENAME, t->value); mimetype = get_mimetype(st); av_assert0(mimetype); - put_ebml_string(dyn_cp, MATROSKA_ID_FILEMIMETYPE, mimetype); - put_ebml_binary(dyn_cp, MATROSKA_ID_FILEDATA, st->codecpar->extradata, st->codecpar->extradata_size); - put_ebml_uid(dyn_cp, MATROSKA_ID_FILEUID, track->uid); - end_ebml_master(dyn_cp, attached_file); + ebml_writer_add_string(&writer, MATROSKA_ID_FILEMIMETYPE, mimetype); + ebml_writer_add_bin(&writer, MATROSKA_ID_FILEDATA, st->codecpar->extradata, st->codecpar->extradata_size); + ebml_writer_add_uid(&writer, MATROSKA_ID_FILEUID, track->uid); + ret = ebml_writer_write(&writer, dyn_cp); + if (ret < 0) { + ffio_free_dyn_buf(&dyn_cp); + return ret; + } } return end_ebml_master_crc32(pb, &dyn_cp, mkv, MATROSKA_ID_ATTACHMENTS, 0, 0, 1); diff --git a/tests/ref/lavf/mkv_attachment b/tests/ref/lavf/mkv_attachment index 0149bf2010..4a2f9eb7f1 100644 --- a/tests/ref/lavf/mkv_attachment +++ b/tests/ref/lavf/mkv_attachment @@ -1,3 +1,3 @@ -6a77b40186840d596bd584182ac3a283 *tests/data/lavf/lavf.mkv_attachment -472579 tests/data/lavf/lavf.mkv_attachment +32b24b97956f1fbcfbc1a94aac8f6202 *tests/data/lavf/lavf.mkv_attachment +472574 tests/data/lavf/lavf.mkv_attachment tests/data/lavf/lavf.mkv_attachment CRC=0xec6c3c68