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: Vignesh Venkatasubramanian <vigneshv@google.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
acebff8e5d
commit
8acb76567a
@ -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 @@
|
|||||||
<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 @@
|
|||||||
<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 @@
|
|||||||
<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 @@
|
|||||||
<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>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user