Skip to content
  • Henry Hoegelow's avatar
    pulsesink: Fix occasional period of silence on resume · 6a2a5fd4
    Henry Hoegelow authored and GStreamer Marge Bot's avatar GStreamer Marge Bot committed
    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: <!3082>
    6a2a5fd4