dashdemux: Rewrite ISOBMFF & SIDX handling
authorSebastian Dröge <sebastian@centricular.com>
Wed, 12 Apr 2017 17:01:40 +0000 (20:01 +0300)
committerSebastian Dröge <sebastian@centricular.com>
Tue, 18 Apr 2017 11:49:08 +0000 (13:49 +0200)
commitdb57a3b04f97327e9ecda370a16cd7c6550de639
tree0d429916cd05091783d14a5e390360dcf4a42d80
parent22c037df6c6511859e6dfa0c627a9e768151425e
dashdemux: Rewrite ISOBMFF & SIDX handling

The previous code was handling both as separate steps and then tried to
combine the results, but this resulted in all kinds of bugs which showed
themselves as failures during seeking and offset tracking getting wrong.
This also showed itself with gst-validate on the sample stream.

The rewritten code now parses everything in one go and tracks the
current offset only once, and as a side effect simplifies the code a
lot.

Also added is detection of SIDX that point to other SIDX instead of
actual media segments, e.g. with this stream:
  http://dash.akamaized.net/dash264/TestCases/1a/sony/SNE_DASH_SD_CASE1A_REVISED.mpd
Support for this will have to be added at some point but that should
also be easier with the rewritten code.

https://bugzilla.gnome.org/show_bug.cgi?id=781233
ext/dash/gstdashdemux.c
ext/dash/gstdashdemux.h
ext/dash/gstmpdparser.c