[Bug 730989] omxdec: Get stuck while doing ctrl+c during preroll

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Fri May 30 07:00:24 PDT 2014


https://bugzilla.gnome.org/show_bug.cgi?id=730989
  GStreamer | gst-omx | 1.3.1

--- Comment #4 from Nicolas Dufresne <nicolas.dufresne at collabora.co.uk> 2014-05-30 14:00:20 UTC ---
Just a note, I've had to fix the same pattern in v4l2videodec (didn't check
OMX). The loop thread is a pad task, hence it's holding on the stream lock. We
cannot rely on GstVideoDecoder::stop() as it's called after trying to
deactivate the pad. When we try to deactivate the pad, the loop is still
holding on the stream lock, so deactivate will block on that:

gstpad.c:957
      GST_PAD_STREAM_LOCK (pad); <-- ** Here **
      GST_DEBUG_OBJECT (pad, "stopped streaming");
      GST_OBJECT_LOCK (pad);
      remove_events (pad);
      GST_OBJECT_UNLOCK (pad);
      GST_PAD_STREAM_UNLOCK (pad);

So what I did, is to override the state change virtual, and before chaining to
the base class, I do what's needed to make by loop exit. The base class could
be improved, but this fixed it.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- 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