[ACR-1664] Add new enum for channel type (up-to 16 channels for recording)
[platform/core/api/audio-io.git] / src / cpp / cpp_audio_io.cpp
index a2b4722..86fbf78 100644 (file)
@@ -137,83 +137,35 @@ static audio_io_error_e __convert_audio_io_error(CAudioError::EError error) {
 }
 
 static CAudioInfo::EChannel __convert_channel_to_audio_info_channel(const audio_channel_e &src_channel) {
-    switch (src_channel) {
-    case AUDIO_CHANNEL_MONO:
-        return CAudioInfo::EChannel::CHANNEL_MONO;
-    case AUDIO_CHANNEL_STEREO:
-        return CAudioInfo::EChannel::CHANNEL_STEREO;
-    case AUDIO_CHANNEL_MULTI_3:
-        return CAudioInfo::EChannel::CHANNEL_MULTI_3;
-    case AUDIO_CHANNEL_MULTI_4:
-        return CAudioInfo::EChannel::CHANNEL_MULTI_4;
-    case AUDIO_CHANNEL_MULTI_5:
-        return CAudioInfo::EChannel::CHANNEL_MULTI_5;
-    case AUDIO_CHANNEL_MULTI_6:
-        return CAudioInfo::EChannel::CHANNEL_MULTI_6;
-    case AUDIO_CHANNEL_MULTI_7:
-        return CAudioInfo::EChannel::CHANNEL_MULTI_7;
-    case AUDIO_CHANNEL_MULTI_8:
-        return CAudioInfo::EChannel::CHANNEL_MULTI_8;
-    default:
-        return CAudioInfo::EChannel::CHANNEL_MONO;
-    }
+    if (src_channel < AUDIO_CHANNEL_MONO ||
+        src_channel > AUDIO_CHANNEL_MULTI_16)
+        THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Invalid src_channel:%d", src_channel);
+
+    return static_cast<CAudioInfo::EChannel>(src_channel - AUDIO_CHANNEL_MONO + 1);
 }
 
 static audio_channel_e __convert_audio_info_channel_to_channel(const CAudioInfo::EChannel& src_channel) {
-    switch (src_channel) {
-    case CAudioInfo::EChannel::CHANNEL_MONO:
-        return AUDIO_CHANNEL_MONO;
-    case CAudioInfo::EChannel::CHANNEL_STEREO:
-        return AUDIO_CHANNEL_STEREO;
-    case CAudioInfo::EChannel::CHANNEL_MULTI_3:
-        return AUDIO_CHANNEL_MULTI_3;
-    case CAudioInfo::EChannel::CHANNEL_MULTI_4:
-        return AUDIO_CHANNEL_MULTI_4;
-    case CAudioInfo::EChannel::CHANNEL_MULTI_5:
-        return AUDIO_CHANNEL_MULTI_5;
-    case CAudioInfo::EChannel::CHANNEL_MULTI_6:
-        return AUDIO_CHANNEL_MULTI_6;
-    case CAudioInfo::EChannel::CHANNEL_MULTI_7:
-        return AUDIO_CHANNEL_MULTI_7;
-    case CAudioInfo::EChannel::CHANNEL_MULTI_8:
-        return AUDIO_CHANNEL_MULTI_8;
-    default:
-        return AUDIO_CHANNEL_MONO;
-    }
+    if (src_channel < CAudioInfo::EChannel::CHANNEL_MONO ||
+        src_channel >= CAudioInfo::EChannel::CHANNEL_MAX)
+        THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Invalid src_channel:%d", static_cast<int>(src_channel));
+
+    return static_cast<audio_channel_e>(static_cast<int>(src_channel) + AUDIO_CHANNEL_MONO - 1);
 }
 
 static CAudioInfo::ESampleType __convert_sample_type_to_audio_info_sample_type(const audio_sample_type_e& src_type) {
-    switch (src_type) {
-    case AUDIO_SAMPLE_TYPE_U8:
-        return CAudioInfo::ESampleType::SAMPLE_TYPE_U8;
-    case AUDIO_SAMPLE_TYPE_S16_LE:
-        return CAudioInfo::ESampleType::SAMPLE_TYPE_S16_LE;
-    case AUDIO_SAMPLE_TYPE_S24_LE:
-        return CAudioInfo::ESampleType::SAMPLE_TYPE_S24_LE;
-    case AUDIO_SAMPLE_TYPE_S24_32_LE:
-        return CAudioInfo::ESampleType::SAMPLE_TYPE_S24_32_LE;
-    case AUDIO_SAMPLE_TYPE_S32_LE:
-        return CAudioInfo::ESampleType::SAMPLE_TYPE_S32_LE;
-    default:
-        return CAudioInfo::ESampleType::SAMPLE_TYPE_U8;
-    }
+    if (src_type < AUDIO_SAMPLE_TYPE_U8 ||
+        src_type > AUDIO_SAMPLE_TYPE_S32_LE)
+        THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Invalid src_type:%d", src_type);
+
+    return static_cast<CAudioInfo::ESampleType>(static_cast<int>(src_type) - AUDIO_SAMPLE_TYPE_U8 + 1);
 }
 
 static audio_sample_type_e __convert_audio_info_sample_type_to_sample_type(const CAudioInfo::ESampleType &src_type) {
-    switch (src_type) {
-    case CAudioInfo::ESampleType::SAMPLE_TYPE_U8:
-        return AUDIO_SAMPLE_TYPE_U8;
-    case CAudioInfo::ESampleType::SAMPLE_TYPE_S16_LE:
-        return AUDIO_SAMPLE_TYPE_S16_LE;
-    case CAudioInfo::ESampleType::SAMPLE_TYPE_S24_LE:
-        return AUDIO_SAMPLE_TYPE_S24_LE;
-    case CAudioInfo::ESampleType::SAMPLE_TYPE_S24_32_LE:
-        return AUDIO_SAMPLE_TYPE_S24_32_LE;
-    case CAudioInfo::ESampleType::SAMPLE_TYPE_S32_LE:
-        return AUDIO_SAMPLE_TYPE_S32_LE;
-    default:
-        return AUDIO_SAMPLE_TYPE_U8;
-    }
+    if (src_type < CAudioInfo::ESampleType::SAMPLE_TYPE_U8 ||
+        src_type >= CAudioInfo::ESampleType::SAMPLE_TYPE_MAX)
+        THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Invalid src_type:%d", static_cast<int>(src_type));
+
+    return static_cast<audio_sample_type_e>(static_cast<int>(src_type) + AUDIO_SAMPLE_TYPE_U8 - 1);
 }
 
 static  CAudioInfo::EAudioType __convert_sound_type_to_audio_info_audio_type(const sound_type_e &src_type) {
@@ -282,12 +234,12 @@ static void __check_audio_param(int sample_rate, audio_channel_e channel, audio_
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Invalid sample rate :%d", sample_rate);
 
     if (channel < AUDIO_CHANNEL_MONO ||
-        channel > ((is_output) ? AUDIO_CHANNEL_STEREO : AUDIO_CHANNEL_MULTI_8))
+        channel > ((is_output) ? AUDIO_CHANNEL_STEREO : AUDIO_CHANNEL_MULTI_16))
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Invalid channel :%d", channel);
 
     if (type < AUDIO_SAMPLE_TYPE_U8 ||
         type > AUDIO_SAMPLE_TYPE_S32_LE)
-        THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Invalid sample type :%d", type);
+        THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Invalid sample type :0x%x", type);
 }
 
 static CAudioInfo __generate_audio_input_info(int sampleRate, audio_channel_e channel, audio_sample_type_e sample_type) {