From patchwork Fri Apr 19 23:40:57 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [FFmpeg-devel, 02/15] avformat/matroskaenc: Fix BlockGroup size calculation From: Andreas Rheinhardt X-Patchwork-Id: 12835 Message-Id: <20190419234110.32980-2-andreas.rheinhardt@gmail.com> To: ffmpeg-devel@ffmpeg.org Cc: Andreas Rheinhardt Date: Sat, 20 Apr 2019 01:40:57 +0200 The earlier code included the size of the BlockGroup's length field and the EBML ID in the calculation of the size for the payload and ignored the size of the duration's length field. This meant that Blockgroups corresponding to packets with size 2^(7n) - 17 - n - i, i = 0,..., n - 1, n = 1,..., 8 (i.e. 110, 16364, 16365, 2097130..2097132, ...) were written with length fields that are unnecessarily long. Signed-off-by: Andreas Rheinhardt --- libavformat/matroskaenc.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index c006cbf35c..1849ae3333 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -2059,9 +2059,7 @@ static int mkv_blockgroup_size(int pkt_size) int size = pkt_size + 4; size += ebml_num_size(size); size += 2; // EBML ID for block and block duration - size += 8; // max size of block duration - size += ebml_num_size(size); - size += 1; // blockgroup EBML ID + size += 9; // max size of block duration incl. length field return size; }