mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-26 11:41:09 +00:00
pulsesink: Fix occasional period of silence on resume
According to comment in gst_pulsering_stream_latency_cb, latency updates happen every 100 ms. The code in gst_pulsering_stream_latency_cb does not care about the actual state of the ringbuffer, pbuf->acquired or not. Thus, every 100 ms the ringbuf->segdone may be set, even though the object itself might be in 'destroyed' state. On next gst_pulseringbuffer_acquire the segdone is not touched, so playback may resume with invalid/wrong segdone value. This finally leads to a period of silence playing after resuming the pipeline. The problem was found on 'not-yet-released'-hardware and so far was not reproducible on desktop computer. Removing the callback as long as the ringbuffer is not in 'acquired' state solves the problem reliably on the hardware device that the issue was detected on. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3082>
This commit is contained in:
parent
b9d8fb3d63
commit
6a2a5fd44c
1 changed files with 1 additions and 0 deletions
|
@ -323,6 +323,7 @@ gst_pulsering_destroy_stream (GstPulseRingBuffer * pbuf)
|
|||
pa_stream_set_write_callback (pbuf->stream, NULL, NULL);
|
||||
pa_stream_set_underflow_callback (pbuf->stream, NULL, NULL);
|
||||
pa_stream_set_overflow_callback (pbuf->stream, NULL, NULL);
|
||||
pa_stream_set_latency_update_callback (pbuf->stream, NULL, NULL);
|
||||
|
||||
pa_stream_unref (pbuf->stream);
|
||||
pbuf->stream = NULL;
|
||||
|
|
Loading…
Reference in a new issue