[Bug 796648] New: Add support for instantaneous rate changes

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Fri Jun 22 11:32:56 UTC 2018


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

            Bug ID: 796648
           Summary: Add support for instantaneous rate changes
    Classification: Platform
           Product: GStreamer
           Version: unspecified
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: Normal
         Component: gstreamer (core)
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: slomo at coaxion.net
        QA Contact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---

Currently doing smooth playback rate changes requires doing a non-flushing seek
to the current position (start/stop_type=NONE). This generally takes a while as
the new rate will only take place once the segment event from the demuxer
arrives in the sink, so after all currently buffered data was consumed by the
sink.

The code here implements an approach that allows the rate to change more or
less instantaneously:
https://cgit.freedesktop.org/~slomo/gstreamer/log/?h=instant-rate-change
https://cgit.freedesktop.org/~slomo/gst-plugins-base/log/?h=instant-rate-change
https://cgit.freedesktop.org/~slomo/gst-plugins-good/log/?h=instant-rate-change
https://cgit.freedesktop.org/~slomo/gst-plugins-bad/log/?h=instant-rate-change

Supported demuxers are matroskademux, qtdemux and tsdemux. Most testing was
done with qtdemux but it has all kinds of unrelated seeking problems,
matroskademux seems to work best at this point.

The design is described here:
https://cgit.freedesktop.org/~slomo/gst-docs/tree/markdown/design/gapless-rate-change.md?h=instant-rate-change

In short the idea is that demuxer notify all sinks immediately about the new
rate that is to be applied, the sinks apply it immediately from that point
onwards until the corresponding segment event arrives and then compensate for
the difference in running time that actually has passed and that upstream
believes has passed.

-- 
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