summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2019-04-20 01:40:57 +0200
committerJames Almer <jamrial@gmail.com>2019-05-08 13:02:28 -0300
commit8b7964f8f83edeb8296086470123050b3546d213 (patch)
tree130e5296fb4dcceeb0facf752bcfd8b7fb2fca0c
parent4ebeab15b037a21f195696cef1f7522daf42f3ee (diff)
downloadffmpeg-streaming-8b7964f8f83edeb8296086470123050b3546d213.zip
ffmpeg-streaming-8b7964f8f83edeb8296086470123050b3546d213.tar.gz
avformat/matroskaenc: Fix BlockGroup size calculation
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 <andreas.rheinhardt@gmail.com> Signed-off-by: James Almer <jamrial@gmail.com>
-rw-r--r--libavformat/matroskaenc.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
index c006cbf..1849ae3 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;
}
OpenPOWER on IntegriCloud