aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker RĂ¼melin <vr_qemu@t-online.de>2021-01-10 11:02:35 +0100
committerGerd Hoffmann <kraxel@redhat.com>2021-01-15 11:25:22 +0100
commitd9a8b27a7e9b6467ff1709ae8a44d816d90c4d71 (patch)
treef820225a717306a9c09c8e2c3cf76edb8922193f
parent00413ed9c2fff416b3c1ee94b2e968e9c564c7bd (diff)
paaudio: send recorded data in smaller chunks
Tell PulseAudio to send recorded audio data in smaller chunks than timer_period, so there's a good chance that qemu can read recorded audio data every time it looks for new data. PulseAudio tries to send buffer updates at a fragsize / 2 rate. With fragsize = timer_period / 2 * 3 the update rate is 75% of timer_period. The lower limit for the recording buffer size maxlength is fragsize * 2. Signed-off-by: Volker RĂ¼melin <vr_qemu@t-online.de> Message-id: 9315afe5-5958-c0b4-ea1e-14769511a9d5@t-online.de Message-Id: <20210110100239.27588-19-vr_qemu@t-online.de> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
-rw-r--r--audio/paaudio.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/audio/paaudio.c b/audio/paaudio.c
index 3186868294..1e6f4448ce 100644
--- a/audio/paaudio.c
+++ b/audio/paaudio.c
@@ -568,8 +568,9 @@ static int qpa_init_in(HWVoiceIn *hw, struct audsettings *as, void *drv_opaque)
ss.channels = as->nchannels;
ss.rate = as->freq;
- ba.fragsize = pa_usec_to_bytes(ppdo->latency, &ss);
- ba.maxlength = pa_usec_to_bytes(ppdo->latency * 2, &ss);
+ ba.fragsize = pa_usec_to_bytes((g->dev->timer_period >> 1) * 3, &ss);
+ ba.maxlength = pa_usec_to_bytes(
+ MAX(ppdo->latency, g->dev->timer_period * 3), &ss);
ba.minreq = -1;
ba.prebuf = -1;