After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 755132 - mpdparser: If no Initialization is present in the SegmentBase, assume it is before the indexRange
mpdparser: If no Initialization is present in the SegmentBase, assume it is b...
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
unspecified
Other All
: Normal normal
: 1.6.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2015-09-16 21:20 UTC by Sebastian Dröge (slomo)
Modified: 2015-10-02 08:03 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
mpdparser: If no Initialization is present in the SegmentBase, assume it is before the indexRange (4.66 KB, patch)
2015-09-16 21:20 UTC, Sebastian Dröge (slomo)
committed Details | Review

Description Sebastian Dröge (slomo) 2015-09-16 21:20:53 UTC
See commit message
Comment 1 Sebastian Dröge (slomo) 2015-09-16 21:20:58 UTC
Created attachment 311507 [details] [review]
mpdparser: If no Initialization is present in the SegmentBase, assume it is before the indexRange
Comment 2 Sebastian Dröge (slomo) 2015-09-16 21:24:04 UTC
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?
Comment 3 Sebastian Dröge (slomo) 2015-09-16 21:25:30 UTC
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.
Comment 4 Thiago Sousa Santos 2015-09-21 22:03:58 UTC
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?
Comment 5 Sebastian Dröge (slomo) 2015-09-22 08:16:49 UTC
(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
Comment 6 Sebastian Dröge (slomo) 2015-09-25 22:29:22 UTC
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