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 741248 - dashdemux cannot switch representations in ISOBMFF OnDemand profile
dashdemux cannot switch representations in ISOBMFF OnDemand profile
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
git master
Other All
: Normal normal
: 1.5.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2014-12-08 13:30 UTC by Richard Mitic
Modified: 2015-01-16 20:27 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Richard Mitic 2014-12-08 13:30:48 UTC
The following pipeline plays DASH content in ISOBMFF OnDemand profile:

GST_DEBUG=qtdemux:2 gst-launch-1.0 playbin uri=http://download.tsi.telecom-paristech.fr/gpac/DASH_CONFORMANCE/TelecomParisTech/mp4-onDemand/mp4-onDemand-mpd-V.mpd

The byte ranges of the segments in each representation are contained in the 'sidx' box, which is never parsed. The result is that the lowest quality representation is played for the entire duration.
Comment 1 Thiago Sousa Santos 2015-01-13 18:04:50 UTC
I have something working for this. Going to do final organization and cleanups and publish here.

Are there any other samples available?
Comment 2 Richard Mitic 2015-01-14 08:48:14 UTC
DASH-IF have a load of test material available. See https://github.com/Dash-Industry-Forum/dash.js/blob/development/app/sources.json

A quick grep shows that these ones (http://pastebin.com/yhA46HkG) are ISO on-demand profile.
Comment 3 Richard Mitic 2015-01-14 08:49:22 UTC
I didn't check any of them myself by the way, so no guarantees. Enjoy :)
Comment 4 Thiago Sousa Santos 2015-01-16 20:27:29 UTC
This commit adds support for this profile. It still can be improved in some ways but it requires deeper changes in the adaptivedemux baseclass so I decided to do that as a second step. Please reopen if you find any issues.

commit 3055bb331a931b59dbeca26f9c299566a0cf1e68
Author: Thiago Santos <thiagoss@osg.samsung.com>
Date:   Mon Jan 12 17:40:47 2015 -0300

    dashdemux: implement ISOBMFF profile handling
    
    The ISOBMFF profile allows definind subsegments in a segment. At those
    subsegment boundaries the client can switch from one representation to
    another as they have aligned indexes.
    
    To handle those the 'sidx' index is parsed from the stream and the
    entries point to pts/offset of the samples in the stream. Knowing that
    the entries are aligned in the different representation allows the client
    to switch mid fragment. In this profile a single fragment is used per
    representation and the subsegments are contained in this fragment.
    
    To notify the superclass about the subsegment boundary the chunk_received
    function returns a special flow return that indicates that. In this case,
    the super class will check if a more suitable bitrate is available and will
    change to the same subsegment in this new representation.
    
    It also requires special handling of the position in the stream as the
    fragment advancing is now done by incrementing the index of the subsegment.
    It will only advance to the next fragment once all subsegments have been
    downloaded.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=741248