gstreamer/subprojects/gst-plugins-good/ext/pulse
Henry Hoegelow 6a2a5fd44c 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>
2022-12-12 08:29:28 +00:00
..
gstpulseelement.c Replace gst-i18n-*.h with gi18n-lib.h 2022-04-19 18:01:06 +00:00
gstpulseelements.h
meson.build meson: Call pkgconfig.generate in the loop where we declare plugins dependencies 2022-09-01 21:17:35 +00:00
plugin.c
pulsedeviceprovider.c
pulsedeviceprovider.h
pulsesink.c pulsesink: Fix occasional period of silence on resume 2022-12-12 08:29:28 +00:00
pulsesink.h
pulsesrc.c
pulsesrc.h
pulseutil.c
pulseutil.h