[ACR-1664] Add new enum for channel type (up-to 16 channels for recording) 69/261569/4 accepted/tizen/6.5/unified/20211028.094619 accepted/tizen/unified/20210924.132737 submit/tizen/20210923.063705 submit/tizen_6.5/20211028.161701 tizen_6.5.m2_release
authorSeungbae Shin <seungbae.shin@samsung.com>
Wed, 21 Jul 2021 07:55:01 +0000 (16:55 +0900)
committerSeungbae Shin <seungbae.shin@samsung.com>
Fri, 17 Sep 2021 10:03:48 +0000 (19:03 +0900)
[Version] 0.5.43
[Issue Type] Add

Change-Id: Ib8faee13123e91b1a857b93e273956ccb7a857d6

include/CAudioInfo.h
include/audio_io.h
packaging/capi-media-audio-io.spec
src/cpp/cpp_audio_io.cpp
test/audio_io_test.c

index 06c3925..60c2de9 100644 (file)
@@ -43,6 +43,14 @@ namespace tizen_media_audio {
             CHANNEL_MULTI_6,                /**< 6 channel */
             CHANNEL_MULTI_7,                /**< 7 channel */
             CHANNEL_MULTI_8,                /**< 8 channel */
+            CHANNEL_MULTI_9,                /**< 9 channel */
+            CHANNEL_MULTI_10,               /**< 10 channel */
+            CHANNEL_MULTI_11,               /**< 11 channel */
+            CHANNEL_MULTI_12,               /**< 12 channel */
+            CHANNEL_MULTI_13,               /**< 13 channel */
+            CHANNEL_MULTI_14,               /**< 14 channel */
+            CHANNEL_MULTI_15,               /**< 15 channel */
+            CHANNEL_MULTI_16,               /**< 16 channel */
             CHANNEL_MAX
         };
 
index 421b0d5..a78c239 100644 (file)
@@ -90,6 +90,14 @@ typedef enum {
        AUDIO_CHANNEL_MULTI_6,             /**< 6 channels (Since 5.5) */
        AUDIO_CHANNEL_MULTI_7,             /**< 7 channels (Since 5.5) */
        AUDIO_CHANNEL_MULTI_8,             /**< 8 channels (Since 5.5) */
+       AUDIO_CHANNEL_MULTI_9,             /**< 9 channels (Since 6.5) */
+       AUDIO_CHANNEL_MULTI_10,            /**< 10 channels (Since 6.5) */
+       AUDIO_CHANNEL_MULTI_11,            /**< 11 channels (Since 6.5) */
+       AUDIO_CHANNEL_MULTI_12,            /**< 12 channels (Since 6.5) */
+       AUDIO_CHANNEL_MULTI_13,            /**< 13 channels (Since 6.5) */
+       AUDIO_CHANNEL_MULTI_14,            /**< 14 channels (Since 6.5) */
+       AUDIO_CHANNEL_MULTI_15,            /**< 15 channels (Since 6.5) */
+       AUDIO_CHANNEL_MULTI_16             /**< 16 channels (Since 6.5) */
 } audio_channel_e;
 
 /**
index aaaa3b2..7ae7c16 100644 (file)
@@ -1,6 +1,6 @@
 Name:           capi-media-audio-io
 Summary:        An Audio Input & Audio Output library in Tizen Native API
-Version:        0.5.42
+Version:        0.5.43
 Release:        0
 Group:          Multimedia/API
 License:        Apache-2.0
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) {
index 2e0f754..e766df7 100644 (file)
@@ -38,7 +38,10 @@ test_wav_t test_wav;
 
 static int ch_table[] = { 0, AUDIO_CHANNEL_MONO, AUDIO_CHANNEL_STEREO,
                           AUDIO_CHANNEL_MULTI_3, AUDIO_CHANNEL_MULTI_4, AUDIO_CHANNEL_MULTI_5,
-                          AUDIO_CHANNEL_MULTI_6, AUDIO_CHANNEL_MULTI_7, AUDIO_CHANNEL_MULTI_8 };
+                          AUDIO_CHANNEL_MULTI_6, AUDIO_CHANNEL_MULTI_7, AUDIO_CHANNEL_MULTI_8,
+                          AUDIO_CHANNEL_MULTI_9, AUDIO_CHANNEL_MULTI_10, AUDIO_CHANNEL_MULTI_11,
+                          AUDIO_CHANNEL_MULTI_12, AUDIO_CHANNEL_MULTI_13, AUDIO_CHANNEL_MULTI_14,
+                          AUDIO_CHANNEL_MULTI_15, AUDIO_CHANNEL_MULTI_16 };
 static char *state_str[] = { "IDLE", "RUNNING", "PAUSED" };
 
 static void _audio_in_state_cb(audio_in_h handle, audio_io_state_e previous, audio_io_state_e current,
@@ -1022,7 +1025,7 @@ int main(int argc, char **argv)
                audio_io_test_read_write();
        } else if (argc == 4) {
                int channel_idx = atoi(argv[3]);
-               if (channel_idx < 0 || channel_idx > 8) {
+               if (channel_idx <= 0 || channel_idx > 16) {
                        printf("Invalid channel\n");
                        return 0;
                }