pulsesink: Uncork stream while flushing the ringbuffer
authorArun Raghavan <arun.raghavan@collabora.co.uk>
Mon, 17 Jan 2011 14:39:16 +0000 (20:09 +0530)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Mon, 17 Jan 2011 15:40:12 +0000 (15:40 +0000)
After starting the ringbuffer, we wait for enough data to arrive before
uncorking the stream. This will cause the pipeline to stall if we get an
EOS (or otherwise need to flush the stream) before sufficient data
becomes available. This patch makes sure that the stream is uncorked
while flushing to avoid this problem.

Fixes issue with a webkit unit test testing reverse playback of
an MP4 H.264/AAC file.

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

ext/pulse/pulsesink.c

index f885843..9bebfec 100644 (file)
@@ -2637,6 +2637,11 @@ gst_pulsesink_flush_ringbuffer (GstPulseSink * psink)
 
   gst_pulsering_flush (pbuf);
 
+  /* Uncork if we haven't already (happens when waiting to get enough data
+   * to send out the first time) */
+  if (pbuf->corked)
+    gst_pulsering_set_corked (pbuf, FALSE, FALSE);
+
   /* We're not interested if this operation failed or not */
 unlock:
   pa_threaded_mainloop_unlock (mainloop);