From: David Henningsson Date: Mon, 25 Mar 2013 08:20:15 +0000 (+0100) Subject: protocol-native: Lower default minreq in low-latency scenarios X-Git-Tag: v3.99.1~25 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5f326b705d8f7f0c14e7e0c7d7c2751f3a5ebe43;p=platform%2Fupstream%2Fpulseaudio.git protocol-native: Lower default minreq in low-latency scenarios If minreq is not explicitly specified, it was always initialized to 20 ms (DEFAULT_PROCESS_MSEC). However when the total latency is not much higher than 20 ms, this is way too high. Instead use tlength/4 as a measure: this will give a decent sink_usec in all modes (both traditional, adjust latency and early request modes). This greatly improves PulseAudio's ability to ask for data in time in low-latency scenarios. Signed-off-by: David Henningsson --- diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c index e8aa13c..9523e7a 100644 --- a/src/pulsecore/protocol-native.c +++ b/src/pulsecore/protocol-native.c @@ -939,8 +939,14 @@ static void fix_playback_buffer_attr(playback_stream *s) { if (s->buffer_attr.tlength > s->buffer_attr.maxlength) s->buffer_attr.tlength = s->buffer_attr.maxlength; - if (s->buffer_attr.minreq == (uint32_t) -1) - s->buffer_attr.minreq = (uint32_t) pa_usec_to_bytes_round_up(DEFAULT_PROCESS_MSEC*PA_USEC_PER_MSEC, &s->sink_input->sample_spec); + if (s->buffer_attr.minreq == (uint32_t) -1) { + uint32_t process = (uint32_t) pa_usec_to_bytes_round_up(DEFAULT_PROCESS_MSEC*PA_USEC_PER_MSEC, &s->sink_input->sample_spec); + /* With low-latency, tlength/4 gives a decent default in all of traditional, adjust latency and early request modes. */ + uint32_t m = s->buffer_attr.tlength / 4; + if (frame_size) + m -= m % frame_size; + s->buffer_attr.minreq = PA_MIN(process, m); + } if (s->buffer_attr.minreq <= 0) s->buffer_attr.minreq = (uint32_t) frame_size;