Commit 8acb7656 authored by Vignesh Venkatasubramanian's avatar Vignesh Venkatasubramanian Committed by Michael Niedermayer

lavf/webm_dash: fix hardcode in cues_end computation

Fix an incorrect hard code in cues_end computation. Updating the fate
test reference files related to the fix as well. The earlier computation
was clearly wrong as the cues_end field was greater than the file size
itself in some cases.
Signed-off-by: 's avatarVignesh Venkatasubramanian <vigneshv@google.com>
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent acebff8e
...@@ -3261,10 +3261,13 @@ static int webm_dash_manifest_cues(AVFormatContext *s) ...@@ -3261,10 +3261,13 @@ static int webm_dash_manifest_cues(AVFormatContext *s)
before_pos = avio_tell(matroska->ctx->pb); before_pos = avio_tell(matroska->ctx->pb);
cues_start = seekhead[i].pos + matroska->segment_start; cues_start = seekhead[i].pos + matroska->segment_start;
if (avio_seek(matroska->ctx->pb, cues_start, SEEK_SET) == cues_start) { if (avio_seek(matroska->ctx->pb, cues_start, SEEK_SET) == cues_start) {
uint64_t cues_length = 0, cues_id = 0; // cues_end is computed as cues_start + cues_length + length of the
ebml_read_num(matroska, matroska->ctx->pb, 4, &cues_id); // Cues element ID + EBML length of the Cues element. cues_end is
ebml_read_length(matroska, matroska->ctx->pb, &cues_length); // inclusive and the above sum is reduced by 1.
cues_end = cues_start + cues_length + 11; // 11 is the offset of Cues ID. uint64_t cues_length = 0, cues_id = 0, bytes_read = 0;
bytes_read += ebml_read_num(matroska, matroska->ctx->pb, 4, &cues_id);
bytes_read += ebml_read_length(matroska, matroska->ctx->pb, &cues_length);
cues_end = cues_start + cues_length + bytes_read - 1;
} }
avio_seek(matroska->ctx->pb, before_pos, SEEK_SET); avio_seek(matroska->ctx->pb, before_pos, SEEK_SET);
if (cues_start == -1 || cues_end == -1) return -1; if (cues_start == -1 || cues_end == -1) return -1;
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
<Representation id="1" bandwidth="302355"> <Representation id="1" bandwidth="302355">
<BaseURL>dash_video2.webm</BaseURL> <BaseURL>dash_video2.webm</BaseURL>
<SegmentBase <SegmentBase
indexRange="1115782-1115886"> indexRange="1115782-1115879">
<Initialization <Initialization
range="0-249" /> range="0-249" />
</SegmentBase> </SegmentBase>
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
<Representation id="1" bandwidth="82814"> <Representation id="1" bandwidth="82814">
<BaseURL>dash_audio2.webm</BaseURL> <BaseURL>dash_audio2.webm</BaseURL>
<SegmentBase <SegmentBase
indexRange="335312-335432"> indexRange="335312-335425">
<Initialization <Initialization
range="0-3927" /> range="0-3927" />
</SegmentBase> </SegmentBase>
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
<Representation id="1" bandwidth="83502"> <Representation id="1" bandwidth="83502">
<BaseURL>dash_audio3.webm</BaseURL> <BaseURL>dash_audio3.webm</BaseURL>
<SegmentBase <SegmentBase
indexRange="335312-335432"> indexRange="335312-335425">
<Initialization <Initialization
range="0-3927" /> range="0-3927" />
</SegmentBase> </SegmentBase>
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
<Representation id="1" bandwidth="321574"> <Representation id="1" bandwidth="321574">
<BaseURL>dash_video3.webm</BaseURL> <BaseURL>dash_video3.webm</BaseURL>
<SegmentBase <SegmentBase
indexRange="1116070-1116461"> indexRange="1116070-1116455">
<Initialization <Initialization
range="0-249" /> range="0-249" />
</SegmentBase> </SegmentBase>
......
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