After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 639240 - pulsesink: PLAYING->PAUSED->PLAYING transition causes dropout
pulsesink: PLAYING->PAUSED->PLAYING transition causes dropout
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
git master
Other Linux
: Normal blocker
: 0.10.27
Assigned To: GStreamer Maintainers
GStreamer Maintainers
: 619634 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2011-01-11 18:15 UTC by Arun Raghavan
Modified: 2011-02-15 14:47 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
pulsesink: Make corking during pause synchronous (1.09 KB, patch)
2011-01-11 18:15 UTC, Arun Raghavan
committed Details | Review

Description Arun Raghavan 2011-01-11 18:15:01 UTC
This becomes prominent with large buffer-time values - going from PLAYING to PAUSED and then back to PLAYING introduces a gap in playback with pulsesink.

The root cause of the problem is that when we cork the stream (while pausing the ringbuffer), we do not actually wait for the cork to complete before proceeding. The stream clock might only really pause after we take a snapshot for start_time. This difference gets taken up as base_time when going back to PLAYING, causing a drop in playback.
Comment 1 Arun Raghavan 2011-01-11 18:15:53 UTC
Created attachment 178073 [details] [review]
pulsesink: Make corking during pause synchronous

This makes the call to pa_stream_cork() during ringbuffer pause()
synchronous, which makes sure that the clock does not advance after we
take a snapshot for start_time.
Comment 2 Arun Raghavan 2011-01-11 18:17:10 UTC
The complete fix requires another one-liner in PulseAudio that prevents the clock from advancing in the corked state. I will take this up on the PulseAudio side in parallel.
Comment 3 Tim-Philipp Müller 2011-01-12 00:25:17 UTC
Comment on attachment 178073 [details] [review]
pulsesink: Make corking during pause synchronous

commit 7280ea1f68fc43ed4850278b0d75c4ba0e61effe
Author: Arun Raghavan <arun.raghavan@collabora.co.uk>
Date:   Tue Jan 11 23:39:12 2011 +0530

    pulsesink: Make corking during pause synchronous
    
    This makes the call to pa_stream_cork() during ringbuffer pause()
    synchronous, which makes sure that the clock does not advance after we
    take a snapshot for start_time.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=639240
Comment 4 Wim Taymans 2011-02-15 14:47:32 UTC
*** Bug 619634 has been marked as a duplicate of this bug. ***