diff options
author | Martin Schrodt <martin@schrodt.org> | 2019-03-15 09:46:52 +0100 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2019-03-18 12:21:15 +0100 |
commit | f6142777659f2e7ad143f2850f1f036f899f475f (patch) | |
tree | cded3595db62bb7213492afb1e7e50fd82e8f184 /audio/paaudio.c | |
parent | baea032ec751306805214190b1ac23f409e9739a (diff) | |
download | qemu-f6142777659f2e7ad143f2850f1f036f899f475f.zip qemu-f6142777659f2e7ad143f2850f1f036f899f475f.tar.gz qemu-f6142777659f2e7ad143f2850f1f036f899f475f.tar.bz2 |
audio/paaudio: prolong and make latency configurable
The latency of a connection to the PulseAudio server is determined by
the tlength parameter. This was hardcoded to 10ms, which is a bit too
tight on my machine, causing audio on host and guest to malfunction.
A setting of 15ms works fine here. To allow tweaking, I also made the
setting configurable via the new -audiodev config. This allows to squeeze out better timings in scenarios where the emulation allows it.
I also removed setting of the minreq parameter to (seemingly arbitrary) half the latency, since it showed worse audio quality during my tests. Allowing PulseAudio to request smaller chunks helped.
Signed-off-by: Martin Schrodt <martin@schrodt.org>
Message-id: 20190315084653.120020-3-martin@schrodt.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'audio/paaudio.c')
-rw-r--r-- | audio/paaudio.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/audio/paaudio.c b/audio/paaudio.c index ab2a37b..be27c73 100644 --- a/audio/paaudio.c +++ b/audio/paaudio.c @@ -549,12 +549,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; @@ -818,6 +814,10 @@ static int qpa_validate_per_direction_opts(Audiodev *dev, pdo->has_buffer_length = true; pdo->buffer_length = 46440; } + if (!pdo->has_latency) { + pdo->has_latency = true; + pdo->latency = 15000; + } return 1; } |