From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=47792 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Pbaih-0001Ra-7P for qemu-devel@nongnu.org; Sat, 08 Jan 2011 10:28:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Pbaic-0008TQ-44 for qemu-devel@nongnu.org; Sat, 08 Jan 2011 10:28:43 -0500 Received: from mail.serverraum.org ([78.47.150.89]:47798) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Pbaib-0008SK-VH for qemu-devel@nongnu.org; Sat, 08 Jan 2011 10:28:38 -0500 From: Michael Walle Date: Sat, 8 Jan 2011 16:28:24 +0100 Message-Id: <1294500504-10263-2-git-send-email-michael@walle.cc> In-Reply-To: <1294500504-10263-1-git-send-email-michael@walle.cc> References: <1294500504-10263-1-git-send-email-michael@walle.cc> Subject: [Qemu-devel] [PATCH 2/2] alsaaudio: add endianness support for VoiceIn List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Michael Walle Signed-off-by: Michael Walle --- audio/alsaaudio.c | 26 +++++++++++++++++++------- 1 files changed, 19 insertions(+), 7 deletions(-) diff --git a/audio/alsaaudio.c b/audio/alsaaudio.c index 0741203..a86aa08 100644 --- a/audio/alsaaudio.c +++ b/audio/alsaaudio.c @@ -318,7 +318,7 @@ static int alsa_write (SWVoiceOut *sw, void *buf, int len) return audio_pcm_sw_write (sw, buf, len); } -static snd_pcm_format_t aud_to_alsafmt (audfmt_e fmt) +static snd_pcm_format_t aud_to_alsafmt (audfmt_e fmt, int endianness) { switch (fmt) { case AUD_FMT_S8: @@ -328,16 +328,28 @@ static snd_pcm_format_t aud_to_alsafmt (audfmt_e fmt) return SND_PCM_FORMAT_U8; case AUD_FMT_S16: - return SND_PCM_FORMAT_S16_LE; + if (endianness) + return SND_PCM_FORMAT_S16_BE; + else + return SND_PCM_FORMAT_S16_LE; case AUD_FMT_U16: - return SND_PCM_FORMAT_U16_LE; + if (endianness) + return SND_PCM_FORMAT_U16_BE; + else + return SND_PCM_FORMAT_U16_LE; case AUD_FMT_S32: - return SND_PCM_FORMAT_S32_LE; + if (endianness) + return SND_PCM_FORMAT_S32_BE; + else + return SND_PCM_FORMAT_S32_LE; case AUD_FMT_U32: - return SND_PCM_FORMAT_U32_LE; + if (endianness) + return SND_PCM_FORMAT_U32_BE; + else + return SND_PCM_FORMAT_U32_LE; default: dolog ("Internal logic error: Bad audio format %d\n", fmt); @@ -809,7 +821,7 @@ static int alsa_init_out (HWVoiceOut *hw, struct audsettings *as) snd_pcm_t *handle; struct audsettings obt_as; - req.fmt = aud_to_alsafmt (as->fmt); + req.fmt = aud_to_alsafmt (as->fmt, as->endianness); req.freq = as->freq; req.nchannels = as->nchannels; req.period_size = conf.period_size_out; @@ -918,7 +930,7 @@ static int alsa_init_in (HWVoiceIn *hw, struct audsettings *as) snd_pcm_t *handle; struct audsettings obt_as; - req.fmt = aud_to_alsafmt (as->fmt); + req.fmt = aud_to_alsafmt (as->fmt, as->endianness); req.freq = as->freq; req.nchannels = as->nchannels; req.period_size = conf.period_size_in; -- 1.7.2.3