From patchwork Thu Mar 14 16:40:47 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Schrodt X-Patchwork-Id: 10853309 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 401B417EF for ; Thu, 14 Mar 2019 16:44:44 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2DE972A4B5 for ; Thu, 14 Mar 2019 16:44:44 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 222EF2A4E4; Thu, 14 Mar 2019 16:44:44 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id C32302A4B5 for ; Thu, 14 Mar 2019 16:44:43 +0000 (UTC) Received: from localhost ([127.0.0.1]:41398 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h4TTH-0003Td-36 for patchwork-qemu-devel@patchwork.kernel.org; Thu, 14 Mar 2019 12:44:43 -0400 Received: from eggs.gnu.org ([209.51.188.92]:38902) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h4TPa-0000QO-GK for qemu-devel@nongnu.org; Thu, 14 Mar 2019 12:40:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h4TPZ-0003iX-LM for qemu-devel@nongnu.org; Thu, 14 Mar 2019 12:40:54 -0400 Received: from [2a01:4f8:141:20d3::2] (port=55038 helo=zapp.schrodt.org) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1h4TPZ-0003gW-C1 for qemu-devel@nongnu.org; Thu, 14 Mar 2019 12:40:53 -0400 Received: from schapa.schrodt.org ([46.237.225.84]:38384 helo=zoidberg.machine.schrodt.org) by zapp.schrodt.org with esmtps (TLSv1.3:TLS_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1h4TPU-0003te-9D; Thu, 14 Mar 2019 17:40:48 +0100 Received: from spheenik by zoidberg.machine.schrodt.org with local (Exim 4.92) (envelope-from ) id 1h4TPT-000M3g-Q9; Thu, 14 Mar 2019 17:40:47 +0100 From: Martin Schrodt To: qemu-devel@nongnu.org Date: Thu, 14 Mar 2019 17:40:47 +0100 Message-Id: <20190314164047.84660-4-martin@schrodt.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190314164047.84660-1-martin@schrodt.org> References: <20190314164047.84660-1-martin@schrodt.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a01:4f8:141:20d3::2 Subject: [Qemu-devel] [PATCH V3 3/3] audio/paaudio: fix microphone input being unusable X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kraxel@redhat.com Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP 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 --- audio/paaudio.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/audio/paaudio.c b/audio/paaudio.c index adf5fe3779..7ea636342f 100644 --- a/audio/paaudio.c +++ b/audio/paaudio.c @@ -601,6 +601,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; @@ -611,6 +612,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 ( @@ -620,7 +626,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) {