From 12597322a2c4a1271249eb66192bfb6f0e1294e5 Mon Sep 17 00:00:00 2001
From: Warren Dukes <warren.dukes@gmail.com>
Date: Sat, 23 Oct 2004 01:04:58 +0000
Subject: configure shout encoding quality and audio format

git-svn-id: https://svn.musicpd.org/mpd/trunk@2307 09075e82-0dd4-0310-85a5-a0d7c8717e4f
---
 src/audio.c | 48 ++++++++++++++++++++++++++++--------------------
 1 file changed, 28 insertions(+), 20 deletions(-)

(limited to 'src/audio.c')

diff --git a/src/audio.c b/src/audio.c
index f8bcd7edc..75d833be3 100644
--- a/src/audio.c
+++ b/src/audio.c
@@ -66,22 +66,27 @@ void getOutputAudioFormat(AudioFormat * inAudioFormat,
 
 void initAudioConfig() {
         char * conf = getConf()[CONF_AUDIO_OUTPUT_FORMAT];
-        char * test;
 
         if(NULL == conf) return;
 
         audio_configFormat = malloc(sizeof(AudioFormat));
 
-        memset(audio_configFormat,0,sizeof(AudioFormat));
+	if(0 != parseAudioConfig(audio_configFormat, conf)) exit(EXIT_FAILURE);
+}
+
+int parseAudioConfig(AudioFormat * audioFormat, char * conf) {
+        char * test;
 
-        audio_configFormat->sampleRate = strtol(conf,&test,10);
+        memset(audioFormat,0,sizeof(AudioFormat));
+
+        audioFormat->sampleRate = strtol(conf,&test,10);
        
         if(*test!=':') {
                 ERROR("error parsing audio output format: %s\n",conf);
-                exit(EXIT_FAILURE);
+		return -1;
         }
  
-        /*switch(audio_configFormat->sampleRate) {
+        /*switch(audioFormat->sampleRate) {
         case 48000:
         case 44100:
         case 32000:
@@ -89,47 +94,50 @@ void initAudioConfig() {
                 break;
         default:
                 ERROR("sample rate %i can not be used for audio output\n",
-                        (int)audio_configFormat->sampleRate);
-                exit(EXIT_FAILURE);
+                        (int)audioFormat->sampleRate);
+		return -1
         }*/
 
-        if(audio_configFormat->sampleRate <= 0) {
+        if(audioFormat->sampleRate <= 0) {
                 ERROR("sample rate %i is not >= 0\n",
-                                (int)audio_configFormat->sampleRate);
-                exit(EXIT_FAILURE);
+                                (int)audioFormat->sampleRate);
+		return -1;
         }
 
-        audio_configFormat->bits = strtol(test+1,&test,10);
+        audioFormat->bits = strtol(test+1,&test,10);
         
         if(*test!=':') {
                 ERROR("error parsing audio output format: %s\n",conf);
-                exit(EXIT_FAILURE);
+		return -1;
         }
 
-        switch(audio_configFormat->bits) {
+        switch(audioFormat->bits) {
         case 16:
                 break;
         default:
                 ERROR("bits %i can not be used for audio output\n",
-                        (int)audio_configFormat->bits);
-                exit(EXIT_FAILURE);
+                        (int)audioFormat->bits);
+		return -1;
         }
 
-        audio_configFormat->channels = strtol(test+1,&test,10);
+        audioFormat->channels = strtol(test+1,&test,10);
         
         if(*test!='\0') {
                 ERROR("error parsing audio output format: %s\n",conf);
-                exit(EXIT_FAILURE);
+		return -1;
         }
 
-        switch(audio_configFormat->channels) {
+        switch(audioFormat->channels) {
+	case 1:
         case 2:
                 break;
         default:
                 ERROR("channels %i can not be used for audio output\n",
-                        (int)audio_configFormat->channels);
-                exit(EXIT_FAILURE);
+                        (int)audioFormat->channels);
+		return -1;
         }
+
+	return 0;
 }
 
 void finishAudioConfig() {
-- 
cgit v1.2.3