matroskaenc.c currently only allows BlockMore elements if the BlockAddID is 1. Recently YouTube has been using BlockAddID == 4 for HDR10+ dynamic metadata (see [1]), which FFmpeg drops because of its filtering.
The attached patch changes matroskaenc.c so it stops filtering by BlockAddID, allowing FFmpeg to retain metadata from WebM and Matroska streams when remuxing. [1]: https://www.webmproject.org/docs/container/#BlockAddID
From c4f6f8e0f9669938970416ff3ac159ecc1aa344f Mon Sep 17 00:00:00 2001 From: Michael Bradshaw <mjbshaw@google.com> Date: Mon, 10 Feb 2020 12:33:32 -0800 Subject: [PATCH] lavf: stop filtering side data in mkv --- libavformat/matroskaenc.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 42f21eae8b..b561a4538e 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -2147,7 +2147,7 @@ static int mkv_write_block(AVFormatContext *s, AVIOContext *pb, side_data_size -= 8; } - if ((side_data_size && additional_id == 1) || discard_padding) { + if (side_data_size || discard_padding) { block_group = start_ebml_master(pb, MATROSKA_ID_BLOCKGROUP, 0); blockid = MATROSKA_ID_BLOCK; } @@ -2171,17 +2171,17 @@ static int mkv_write_block(AVFormatContext *s, AVIOContext *pb, put_ebml_sint(pb, MATROSKA_ID_DISCARDPADDING, discard_padding); } - if (side_data_size && additional_id == 1) { + if (side_data_size) { block_additions = start_ebml_master(pb, MATROSKA_ID_BLOCKADDITIONS, 0); block_more = start_ebml_master(pb, MATROSKA_ID_BLOCKMORE, 0); - put_ebml_uint(pb, MATROSKA_ID_BLOCKADDID, 1); + put_ebml_uint(pb, MATROSKA_ID_BLOCKADDID, additional_id); put_ebml_id(pb, MATROSKA_ID_BLOCKADDITIONAL); put_ebml_num(pb, side_data_size, 0); avio_write(pb, side_data, side_data_size); end_ebml_master(pb, block_more); end_ebml_master(pb, block_additions); } - if ((side_data_size && additional_id == 1) || discard_padding) { + if (side_data_size || discard_padding) { end_ebml_master(pb, block_group); } -- 2.24.0.525.g8f36a354ae-goog
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".