[Bug 773912] New: basesink: Returns flushing on PLAYING->PAUSED if it can block in ->render

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Thu Nov 3 20:06:10 UTC 2016


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

            Bug ID: 773912
           Summary: basesink: Returns flushing on PLAYING->PAUSED if it
                    can block in ->render
    Classification: Platform
           Product: GStreamer
           Version: git master
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gstreamer (core)
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: olivier.crete at ocrete.ca
        QA Contact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---

Created attachment 339068
  --> https://bugzilla.gnome.org/attachment.cgi?id=339068&action=edit
Example program

Basesink has ->unlock() and ->unlock_stop() vfuncs, they are used to implement
flushing and drop the buffer currently being rendered.

In gst_base_sink_change_state(), when doing the PAUSED->PLAYING or
PLAYING->PAUSED transition, it calls ->unlock(), which will cause the subclass
to return GST_FLOW_FLUSHING and will stop streaming.

I think we have to remove the unlock()/unlock_stop() from the state change,
which also means that it can't take the preroll lock while blocking inside the
->render() vfunc. I'll try preparing patches for that to see how it works.

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