Signed-off-by: Martin Schrodt <mar...@schrodt.org> --- audio/paaudio.c | 18 +++++++----------- qapi/audio.json | 5 ++++- 2 files changed, 11 insertions(+), 12 deletions(-)
diff --git a/audio/paaudio.c b/audio/paaudio.c index 1a799ca3e7..c9007fdb01 100644 --- a/audio/paaudio.c +++ b/audio/paaudio.c @@ -500,16 +500,12 @@ static pa_stream *qpa_simple_new ( if (dir == PA_STREAM_PLAYBACK) { r = pa_stream_connect_playback (stream, dev, attr, PA_STREAM_INTERPOLATE_TIMING -#ifdef PA_STREAM_ADJUST_LATENCY |PA_STREAM_ADJUST_LATENCY -#endif |PA_STREAM_AUTO_TIMING_UPDATE, NULL, NULL); } else { r = pa_stream_connect_record (stream, dev, attr, PA_STREAM_INTERPOLATE_TIMING -#ifdef PA_STREAM_ADJUST_LATENCY |PA_STREAM_ADJUST_LATENCY -#endif |PA_STREAM_AUTO_TIMING_UPDATE); } @@ -549,12 +545,8 @@ static int qpa_init_out(HWVoiceOut *hw, struct audsettings *as, ss.channels = as->nchannels; ss.rate = as->freq; - /* - * qemu audio tick runs at 100 Hz (by default), so processing - * data chunks worth 10 ms of sound should be a good fit. - */ - ba.tlength = pa_usec_to_bytes (10 * 1000, &ss); - ba.minreq = pa_usec_to_bytes (5 * 1000, &ss); + ba.tlength = pa_usec_to_bytes (ppdo->latency, &ss); + ba.minreq = -1; ba.maxlength = -1; ba.prebuf = -1; @@ -813,7 +805,11 @@ static int qpa_validate_per_direction_opts (Audiodev *dev, AudiodevPaPerDirectio { if (!pdo->has_buffer_length) { pdo->has_buffer_length = true; - pdo->buffer_length = dev->timer_period * 4; + pdo->buffer_length = dev->timer_period * 9 / 2; + } + if (!pdo->has_latency) { + pdo->has_latency = true; + pdo->latency = 15000; } return 1; } diff --git a/qapi/audio.json b/qapi/audio.json index 97aee37288..3717d552cd 100644 --- a/qapi/audio.json +++ b/qapi/audio.json @@ -206,12 +206,15 @@ # # @name: name of the sink/source to use # +# @latency: latency you want PulseAudio to archieve in microseconds +# (default 15000) # Since: 4.0 ## { 'struct': 'AudiodevPaPerDirectionOptions', 'base': 'AudiodevPerDirectionOptions', 'data': { - '*name': 'str' } } + '*name': 'str', + '*latency': 'uint32' } } ## # @AudiodevPaOptions: -- 2.21.0