summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2008-09-03 19:59:12 +0200
committerLennart Poettering <lennart@poettering.net>2008-09-03 20:25:38 +0200
commitd0e5d3638fcc30c01d59742fbf6dbe15d4ec610e (patch)
tree2de1038f3df41acfd7b7e2b445c54f6a8abe0507
parente94473de09a5877196196f15a8bc52b2a155a819 (diff)
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)
-rw-r--r--pulse/pcm_pulse.c13
1 files 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) {