[Bug 778830] v4l2dec: Fix race when going from PAUSED to READY

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Wed Feb 22 08:50:04 UTC 2017


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

Nicolas Dufresne (stormer) <nicolas at ndufresne.ca> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
 Attachment #346389|none                        |needs-work
             status|                            |

--- Comment #8 from Nicolas Dufresne (stormer) <nicolas at ndufresne.ca> ---
Review of attachment 346389:
 --> (https://bugzilla.gnome.org/review?bug=778830&attachment=346389)

It would also be nice to make a version with an internal version of
pad_get_state(), so we could merge in 1.10.

::: sys/v4l2/gstv4l2videodec.c
@@ +478,3 @@
   /* When flushing, decoding thread may never run */
+  if (gst_pad_get_task_state (GST_VIDEO_DECODER_SRC_PAD (self)) !=
+      GST_TASK_STOPPED) {

Is that really possible in the task implementation ? When I read
gst_task_func(), the state will always be stopped when this is called. That's
because we take a ref in start_task, and will only leave gst_task_func() when
the state is STOPPED.

What this is trying to do, is to catch the case were we flush before our task
function get called. Because we have no guaranty to be called once. In that
case, the output_flow won't be set properly.

Maybe with a small rework, we could manage to initially set the output_flow to
FLUSHING, and get away with 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