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 752770 - dashdemux: index segment url generated from template is not properly used
dashdemux: index segment url generated from template is not properly used
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
git master
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2015-07-23 10:28 UTC by Florin Apostol
Modified: 2018-11-03 13:38 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
fix index URI generation based on Time/Number (6.49 KB, patch)
2015-09-16 10:56 UTC, Vincent Penquerc'h
none Details | Review

Description Florin Apostol 2015-07-23 10:28:18 UTC
According to the standard:
5.3.9.5.4 Index Segment information
"The presence of explicit Index Segment information is indicated
...
- by the presence of SegmentTemplate@index attribute. If either $Number$ or $Time$ are present the Template-based Segment URL construction in 5.3.9.4.4 shall be applied with number set to the number of the corresponding Media Segment. If not present, the SegmentTemplate@index attribute constitutes a reference to Representation Index."

So, depending on the presence of $Number$ or $Time$ in the template, the resulting url should be interpreted differently: if one of them is present, the url points to a index segment for a media segment and thus should be downloaded every time the corresponding media segment is downloaded. If $Number$ or $Time$  are not present, the generated url points to a RepresentationIndex which contains the IndexSegment for the entire representation, so it should be downloaded only once at the beginning.

But the function gst_mpdparser_build_URL_from_template does not indicate to the caller if $Number$ or $Time$ were used, so the caller is unable to differentiate between the 2 situations.

Currently the index segment is downloaded by the gst_adaptive_demux_stream_download_header_fragment based on information provided by gst_dash_demux_stream_update_headers_info which calls gst_mpd_client_get_next_header_index. But this function will generate an index segment uri by forcing number and time to 0, which is obvious wrong and will generate a wrong index url.
Comment 1 Vincent Penquerc'h 2015-09-16 10:56:13 UTC
Created attachment 311449 [details] [review]
fix index URI generation based on Time/Number

First attempt. This is probably wrong because I have trouble understanding this whole thing. The generation returns a boolean saying whether Time or Number was encountered, and the caller can then decide whether to ignore.

The tests now fail at one place:

  assert_equals_string (fragment.index_uri, "/TestIndex");

This is because the fragment does not have a specific index URI, as this is a global one. Not sure whether the test is right or wrong here...

Last, gst_mpd_client_get_next_header still generates URIs with Time/Number at 0. I'm not sure what the difference is between headers and index. I'm inclined to believe "same as Ogg", but I'm not 100% sure :)

I'm not seeing a MPD file with an index SegmentTemplate property to test with.
Comment 2 Florin Apostol 2015-09-16 11:05:38 UTC
a fix for this was provided for https://bugzilla.gnome.org/show_bug.cgi?id=752714
That patch solves several related bugs, including this one.
Comment 3 GStreamer system administrator 2018-11-03 13:38:23 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/281.