From: Seungbae Shin Date: Wed, 21 Jul 2021 07:55:01 +0000 (+0900) Subject: [ACR-1664] Add new enum for channel type (up-to 16 channels for recording) X-Git-Tag: accepted/tizen/6.5/unified/20211028.094619^0 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fapi%2Faudio-io.git;a=commitdiff_plain;h=aa24b179dee00e98df93d29da0cf46e334b62c87 [ACR-1664] Add new enum for channel type (up-to 16 channels for recording) [Version] 0.5.43 [Issue Type] Add Change-Id: Ib8faee13123e91b1a857b93e273956ccb7a857d6 --- diff --git a/include/CAudioInfo.h b/include/CAudioInfo.h index 06c3925..60c2de9 100644 --- a/include/CAudioInfo.h +++ b/include/CAudioInfo.h @@ -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 }; diff --git a/include/audio_io.h b/include/audio_io.h index 421b0d5..a78c239 100644 --- a/include/audio_io.h +++ b/include/audio_io.h @@ -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; /** diff --git a/packaging/capi-media-audio-io.spec b/packaging/capi-media-audio-io.spec index aaaa3b2..7ae7c16 100644 --- a/packaging/capi-media-audio-io.spec +++ b/packaging/capi-media-audio-io.spec @@ -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 diff --git a/src/cpp/cpp_audio_io.cpp b/src/cpp/cpp_audio_io.cpp index a2b4722..86fbf78 100644 --- a/src/cpp/cpp_audio_io.cpp +++ b/src/cpp/cpp_audio_io.cpp @@ -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(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(src_channel)); + + return static_cast(static_cast(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(static_cast(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(src_type)); + + return static_cast(static_cast(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) { diff --git a/test/audio_io_test.c b/test/audio_io_test.c index 2e0f754..e766df7 100644 --- a/test/audio_io_test.c +++ b/test/audio_io_test.c @@ -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; }