From: Martin Schrodt Date: Fri, 15 Mar 2019 08:46:53 +0000 (+0100) Subject: audio/paaudio: fix microphone input being unusable X-Git-Tag: v4.0.0-rc0~9^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ade103011c6476353fbc2a707aa6ef1f1aa9e2fb;p=thirdparty%2Fqemu.git audio/paaudio: fix microphone input being unusable The current code does not specify the metrics of the buffers for the input device. This makes PulseAudio choose very bad defaults, which causes input to be unusable: Audio put in gets out 30 seconds later. This patch fixes that and makes the latency configurable as well. Signed-off-by: Martin Schrodt Message-id: 20190315084653.120020-4-martin@schrodt.org Signed-off-by: Gerd Hoffmann --- diff --git a/audio/paaudio.c b/audio/paaudio.c index be27c73f094..45295b4e5ec 100644 --- a/audio/paaudio.c +++ b/audio/paaudio.c @@ -605,6 +605,7 @@ static int qpa_init_in(HWVoiceIn *hw, struct audsettings *as, void *drv_opaque) { int error; pa_sample_spec ss; + pa_buffer_attr ba; struct audsettings obt_as = *as; PAVoiceIn *pa = (PAVoiceIn *) hw; paaudio *g = pa->g = drv_opaque; @@ -615,6 +616,11 @@ 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 = -1; + ba.minreq = -1; + ba.prebuf = -1; + obt_as.fmt = pa_to_audfmt (ss.format, &obt_as.endianness); pa->stream = qpa_simple_new ( @@ -624,7 +630,7 @@ static int qpa_init_in(HWVoiceIn *hw, struct audsettings *as, void *drv_opaque) ppdo->has_name ? ppdo->name : NULL, &ss, NULL, /* channel map */ - NULL, /* buffering attributes */ + &ba, /* buffering attributes */ &error ); if (!pa->stream) {