Skip to content

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.

Edited by Tim-Philipp Müller

Merge request reports