[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