GNOME Bugzilla – Bug 755132
mpdparser: If no Initialization is present in the SegmentBase, assume it is before the indexRange
Last modified: 2015-10-02 08:03:04 UTC
See commit message
Created attachment 311507 [details] [review] mpdparser: If no Initialization is present in the SegmentBase, assume it is before the indexRange
This works for http://dash.edgesuite.net/dash264/TestCases/9a/qualcomm/1/MultiRate.mpd http://dash.edgesuite.net/dash264/TestCases/9a/qualcomm/2/MultiRate.mpd http://dash.edgesuite.net/dash264/TestCases/4b/qualcomm/1/ED_OnDemand_5SecSeg_Subtitles.mpd http://dash.edgesuite.net/dash264/TestCases/4b/qualcomm/2/TearsOfSteel_onDem5secSegSubTitles.mpd This does not work for http://dash.edgesuite.net/dash264/TestCasesHD/1a/qualcomm/1/MultiRate.mpd http://dash.edgesuite.net/dash264/TestCasesHD/1a/qualcomm/2/MultiRate.mpd The two where it doesn't work for, the indexRange in the MPD is 36 bytes to high. When changing the MPD parser to subtract 36 from the range start and range end, then this stream also works. I guess these two streams are just broken, but if anybody has an idea?
Review of attachment 311507 [details] [review]: ::: ext/dash/gstmpdparser.c @@ +4678,3 @@ + stream->cur_segment_base->Initialization->range->last_byte_pos; + } + } else if (stream->cur_segment_base->indexRange) { Maybe this should also only be done if indexRangeExact, not sure.
From the spec: 5.3.9.5.2 - Initialization Segment information Each Representation has assigned at most one Initialization Segment. The presence of an Initialization Segment is indicated by the presence of SegmentBase.Initialization, SegmentList.Initialization, the SegmentTemplate.Initialization element or the SegmentTemplate@initialization attribute that may contain URL and byte range information or URL construction rules for the Initialization Segment. If neither Initialization element nor SegmentTemplate@initialization attribute are present for a Representation then each Media Segment within the Representation shall be self-initializing. And for @indexRangeExact: when set to 'true' specifies that for all Segments in the Representation, the data outside the prefix defined by @indexRange contains the data needed to access all access units of all media streams syntactically and semantically. === I wonder if 'the data outside the prefix' means the data before it? If so, your patch makes sense under the condition that indexRangeExact is set. Did you report those 2 streams that don't work?
(In reply to Thiago Sousa Santos from comment #4) > I wonder if 'the data outside the prefix' means the data before it? If so, > your patch makes sense under the condition that indexRangeExact is set. So should I change the patch to only do that if indexRangeExact is set? That was the only interpretation I had for the relevant parts of the specs here, but it seemed all a bit weird :) > Did you report those 2 streams that don't work? Oh, yes: https://github.com/Dash-Industry-Forum/Test-Vectors/issues/30
commit 6cafc644165f604acddba0e317a0897ed72595e1 Author: Sebastian Dröge <sebastian@centricular.com> Date: Wed Sep 16 23:12:54 2015 +0200 mpdparser: If no Initialization is present in the SegmentBase, assume it is before the indexRange https://bugzilla.gnome.org/show_bug.cgi?id=755132