[Bug 741104] dashdemux: add support for I frame based trick play

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Tue Aug 9 10:30:08 UTC 2016


https://bugzilla.gnome.org/show_bug.cgi?id=741104

--- Comment #61 from Chris Bass <floobleflam at gmail.com> ---
Review of attachment 332716:
 --> (https://bugzilla.gnome.org/review?bug=741104&attachment=332716)

::: ext/dash/gstdashdemux.c
@@ +2021,3 @@
+
+        /* Non-non-sync sample aka sync sample */
+        if (!GST_ISOFF_SAMPLE_FLAGS_SAMPLE_IS_NON_SYNC_SAMPLE (sample_flags))
{

The code is only looking for sync samples, so when it runs it only extracts the
IDR frame at the beginning of the segments, and not the other I-frames in the
segment. It needs also to add frames whose sample_flags include
sample_depends_on == 2.

I tried adding the following here:

if (!GST_ISOFF_SAMPLE_FLAGS_SAMPLE_IS_NON_SYNC_SAMPLE (sample_flags)
       || (GST_ISOFF_SAMPLE_FLAGS_SAMPLE_DEPENDS_ON (sample_flags)
           == 0x2)) {

...and that worked well for fast-forward speeds up to about 10x, beyond which
there wasn't enough network throughput to download all the I-frames from each
segment. It didn't appear to work so well for fast-reverse - it definitely
didn't look like all the I-frames were being displayed in that case.

If the intention for this code is to assemble a table of all IDR & I-frames in
a segment, then the use of *sync_samples in the names here is a bit misleading
- it would probably be better to rename things (e.g., *independent_samples, or
something like that).

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list