From d0e5d3638fcc30c01d59742fbf6dbe15d4ec610e Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 3 Sep 2008 19:59:12 +0200 Subject: Use PA_STREAM_EARLY_REQUESTS if available Use PA_STREAM_EARLY_REQUESTS if PA knows it. PA >= 0.9.12 learned this flag which will make the buffering more similar to traditional fragment/period-based scheduling. Instead of delaying buffer fillup until the latest moment possible this will cause fillups much earlier. This is useful for compatibility for broken ALSA clients that don't care about 'readability' of the ALSA fd but instead schedule audio via usleep() or a similar call. (One exampler being mplayer) --- pulse/pcm_pulse.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/pulse/pcm_pulse.c b/pulse/pcm_pulse.c index 5a5b954..fb88697 100644 --- a/pulse/pcm_pulse.c +++ b/pulse/pcm_pulse.c @@ -539,15 +539,22 @@ static int pulse_prepare(snd_pcm_ioplug_t * io) r = pa_stream_connect_playback(pcm->stream, pcm->device, &pcm->buffer_attr, PA_STREAM_AUTO_TIMING_UPDATE | - PA_STREAM_INTERPOLATE_TIMING, - NULL, NULL); + PA_STREAM_INTERPOLATE_TIMING +#ifdef PA_STREAM_EARLY_REQUESTS + | PA_STREAM_EARLY_REQUESTS +#endif + , NULL, NULL); } else { pa_stream_set_read_callback(pcm->stream, stream_request_cb, pcm); r = pa_stream_connect_record(pcm->stream, pcm->device, &pcm->buffer_attr, PA_STREAM_AUTO_TIMING_UPDATE | - PA_STREAM_INTERPOLATE_TIMING); + PA_STREAM_INTERPOLATE_TIMING +#ifdef PA_STREAM_EARLY_REQUESTS + | PA_STREAM_EARLY_REQUESTS +#endif + ); } if (r < 0) { -- cgit