#866: pa_simple_drain() takes much longer (about 2000ms) than expected to complete --------------------+------------------------------------------------------- Reporter: th | Owner: lennart Type: defect | Status: new Milestone: | Component: daemon Keywords: | --------------------+------------------------------------------------------- The libpulse-simple API has a function, pa_simple_drain() which is supposed to "[w]ait until all data already written is played by the daemon".
However with the version that ships with Ubuntu 10.10, it waits a *fair* bit more than that, approximately 2 seconds (see below). This is also the case for Fedora 14 according to a user on IRC who confirmed this issue, hence I am reporting it here. This means, that when I want to synchronize audio in my program ie. ensure that previously streamed audio has finished playing, e.g. before I start playing a new sound or just prior to exiting the program, there is a typically 2.2 second extra delay. Without this call, at the end of playback before exiting, the final sound will be clipped off at the end, since there is still unbuffered audio waiting to be sent, so it is needed to call this at the end of the program, but now causes an extra delay of several seconds before the program exits. I have attached a program that demonstrates this behaviour. Compile with: $ gcc `pkg-config --cflags --libs libpulse-simple` -o beep beep.c Here is the output from the program: $ ./beep [0.039147] playing 440 hz tone volume 50 for 500 ms [0.291107] play done [0.291116] not calling pa_simple_drain() [0.293467] playing 680 hz tone volume 50 for 500 ms [0.855440] play done [0.855459] not calling pa_simple_drain() [0.857808] playing 440 hz tone volume 50 for 500 ms [1.312107] play done [3.544309] pa_simple_drain() done [3.546687] playing 680 hz tone volume 50 for 500 ms [3.798973] play done [6.132183] pa_simple_drain() done [6.134535] playing 440 hz tone volume 50 for 500 ms [6.386808] play done [6.386824] not calling pa_simple_drain() [6.386851] playing 440 hz tone volume 0 for 500 ms [6.951772] play done [6.951789] not calling pa_simple_drain() [6.956659] playing 880 hz tone volume 50 for 1000 ms [7.912965] play done [10.144917] pa_simple_drain() done I have also reported this on Ubuntu's bug tracker: [https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/660567] -- Ticket URL: <http://pulseaudio.org/ticket/866> PulseAudio <http://pulseaudio.org/> The PulseAudio Sound Server _______________________________________________ pulseaudio-tickets mailing list pulseaudio-tickets@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-tickets