From 544efdf5aaaf4b77f44f250b4dbfdd3ed0c87a4c Mon Sep 17 00:00:00 2001
From: Eric Wong <normalperson@yhbt.net>
Date: Sun, 7 Sep 2008 22:01:47 -0700
Subject: alsa: move bitformat reading code out of the way

---
 src/audioOutputs/audioOutput_alsa.c | 28 ++++++++++++----------------
 1 file changed, 12 insertions(+), 16 deletions(-)

(limited to 'src/audioOutputs')

diff --git a/src/audioOutputs/audioOutput_alsa.c b/src/audioOutputs/audioOutput_alsa.c
index 62f34e854..ef4ae54ff 100644
--- a/src/audioOutputs/audioOutput_alsa.c
+++ b/src/audioOutputs/audioOutput_alsa.c
@@ -134,6 +134,17 @@ static int alsa_testDefault(void)
 	return 0;
 }
 
+static snd_pcm_format_t get_bitformat(const AudioFormat * af)
+{
+	switch (af->bits) {
+	case 8: return SND_PCM_FORMAT_S8;
+	case 16: return SND_PCM_FORMAT_S16;
+	case 24: return SND_PCM_FORMAT_S24;
+	case 32: return SND_PCM_FORMAT_S32;
+	}
+	return SND_PCM_FORMAT_UNKNOWN;
+}
+
 static int alsa_openDevice(AudioOutput * audioOutput)
 {
 	AlsaData *ad = audioOutput->data;
@@ -151,24 +162,9 @@ static int alsa_openDevice(AudioOutput * audioOutput)
 	unsigned int period_time, period_time_ro;
 	unsigned int buffer_time;
 
-	switch (audioFormat->bits) {
-	case 8:
-		bitformat = SND_PCM_FORMAT_S8;
-		break;
-	case 16:
-		bitformat = SND_PCM_FORMAT_S16;
-		break;
-	case 24:
-		bitformat = SND_PCM_FORMAT_S24;
-		break;
-	case 32:
-		bitformat = SND_PCM_FORMAT_S32;
-		break;
-	default:
+	if ((bitformat = get_bitformat(audioFormat)) == SND_PCM_FORMAT_UNKNOWN)
 		ERROR("ALSA device \"%s\" doesn't support %i bit audio\n",
 		      ad->device, audioFormat->bits);
-		return -1;
-	}
 
 	err = E(snd_pcm_open, &ad->pcmHandle, ad->device,
 	        SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK);
-- 
cgit v1.2.3