[Bug 764939] basesink: deadlock caused by klass->wait_event() which leaves preroll mutex locked

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Tue Apr 12 12:59:05 UTC 2016


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

--- Comment #11 from A Ashley <bugzilla at ashley-family.net> ---
When GST_EVENT_EOS arrives, we want to let the hardware output drain, so that
EOS is not signalled before the output is empty.

In the class_init function of our element we override the wait_event virtual
method:
 gstbasesink_class->wait_event = GST_DEBUG_FUNCPTR (gst_fun_sink_wait_event);


The gst_fun_sink_wait_event() function calls the base sink wait_event:

static GstFlowReturn
gst_fun_sink_wait_event(GstBaseSink *basesink, GstEvent *event)
{
  GstFlowReturn ret;
  GstFunSink* sink = GST_FUN_SINK( basesink );

  switch( GST_EVENT_TYPE( event ) ) {
  case GST_EVENT_EOS:
       GST_DEBUG_OBJECT (sink, "End of stream");
       gst_fun_sink_wait_until_empty (sink);
       GST_DEBUG_OBJECT (sink, "End of stream - done");
      break;
  default:
       break;
  }
  ret = GST_BASE_SINK_CLASS( gst_fun_sink_parent_class )->wait_event( basesink,
event );
  return ret;
}

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