Commit 8b7964f8 authored by Andreas Rheinhardt's avatar Andreas Rheinhardt Committed by James Almer

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: 's avatarAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: 's avatarJames Almer <jamrial@gmail.com>
parent 4ebeab15
...@@ -2059,9 +2059,7 @@ static int mkv_blockgroup_size(int pkt_size) ...@@ -2059,9 +2059,7 @@ static int mkv_blockgroup_size(int pkt_size)
int size = pkt_size + 4; int size = pkt_size + 4;
size += ebml_num_size(size); size += ebml_num_size(size);
size += 2; // EBML ID for block and block duration size += 2; // EBML ID for block and block duration
size += 8; // max size of block duration size += 9; // max size of block duration incl. length field
size += ebml_num_size(size);
size += 1; // blockgroup EBML ID
return size; return size;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment