audio-io fixed reference of CAudioInfo, check supported stream info 43/48143/3 accepted/tizen/mobile/20150917.040759 accepted/tizen/tv/20150917.040808 accepted/tizen/wearable/20150917.040820 submit/tizen/20150916.011509
authorKimJeongYeon <jeongyeon.kim@samsung.com>
Tue, 15 Sep 2015 04:35:47 +0000 (13:35 +0900)
committerKimJeongYeon <jeongyeon.kim@samsung.com>
Tue, 15 Sep 2015 06:18:32 +0000 (15:18 +0900)
[Version] 0.3.17
[Profile] Common
[Issue Type] Bug
[Dependency module] NA
[Dependency commit] NA
[Comment]

Signed-off-by: KimJeongYeon <jeongyeon.kim@samsung.com>
Change-Id: I30625eb98b6edf639c73280c1a43cd5628ad6133

include/CAudioIO.h
include/CAudioInfo.h
include/CPulseStreamSpec.h
packaging/capi-media-audio-io.spec
src/cpp/CAudioIO.cpp
src/cpp/CAudioInfo.cpp
src/cpp/CAudioInput.cpp
src/cpp/CPulseStreamSpec.cpp
src/cpp/cpp_audio_io.cpp

index dc648a2..37054dd 100644 (file)
@@ -84,7 +84,7 @@ namespace tizen_media_audio {
         virtual void onSignal(CAudioSessionHandler* pHandler, mm_sound_signal_name_t signal, int value);
 
         /* Methods */
-        CAudioInfo getAudioInfo() throw (CAudioError);
+        CAudioInfo& getAudioInfo() throw (CAudioError);
 
         virtual void setStreamCallback(SStreamCallback callback) throw (CAudioError);
         SStreamCallback getStreamCallback() throw (CAudioError);
index 86ba7d8..0a24381 100644 (file)
@@ -97,9 +97,9 @@ namespace tizen_media_audio {
         EChannel getChannel();
         ESampleType getSampleType();
         EAudioType getAudioType();
-        void setAudioType(EAudioType AudioType);
+        void setAudioType(EAudioType audioType);
         int getAudioIndex();
-        void setAudioIndex(int AudioIndex);
+        void setAudioIndex(int audioIndex);
         void convertAudioType2StreamType (CAudioInfo::EAudioType audioType, char **streamType);
         void convertInputStreamType2AudioType (char *streamType, CAudioInfo::EAudioType *audioType);
         void convertOutputStreamType2AudioType (char *streamType, CAudioInfo::EAudioType *audioType);
index 784524b..7d9ed96 100644 (file)
@@ -54,7 +54,7 @@ namespace tizen_media_audio {
         /* Setter & Getter */
         EStreamLatency getStreamLatency();
         const char*    getStreamLatencyToString();
-        CAudioInfo     getAudioInfo();
+        CAudioInfo&    getAudioInfo();
         pa_sample_spec getSampleSpec();
         pa_channel_map getChannelMap();
         const char*    getStreamName();
index ef5b9a5..fa1c419 100644 (file)
@@ -1,6 +1,6 @@
 Name:           capi-media-audio-io
 Summary:        An Audio Input & Audio Output library in Tizen Native API
-Version:        0.3.16
+Version:        0.3.17
 Release:        0
 Group:          Multimedia/API
 License:        Apache-2.0
index 833fbe8..479608c 100644 (file)
@@ -384,7 +384,7 @@ void CAudioIO::flush() throw (CAudioError) {
     }
 }
 
-CAudioInfo CAudioIO::getAudioInfo() throw (CAudioError) {
+CAudioInfo& CAudioIO::getAudioInfo() throw (CAudioError) {
     if (__mIsInit == false) {
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Doesn't initialize CAudioIO");
     }
index e847f68..4cb002d 100644 (file)
@@ -74,8 +74,8 @@ CAudioInfo::EAudioType CAudioInfo::getAudioType() {
     return __mAudioType;
 }
 
-void CAudioInfo::setAudioType(CAudioInfo::EAudioType AudioType) {
-    __mAudioType = AudioType;
+void CAudioInfo::setAudioType(CAudioInfo::EAudioType audioType) {
+    __mAudioType = audioType;
     return;
 }
 
@@ -83,13 +83,12 @@ int CAudioInfo::getAudioIndex() {
     return __mAudioIndex;
 }
 
-void CAudioInfo::setAudioIndex(int AudioIndex) {
-    __mAudioIndex = AudioIndex;
+void CAudioInfo::setAudioIndex(int audioIndex) {
+    __mAudioIndex = audioIndex;
     return;
 }
 
-void CAudioInfo::convertAudioType2StreamType (CAudioInfo::EAudioType audioType, char **streamType)
-{
+void CAudioInfo::convertAudioType2StreamType (CAudioInfo::EAudioType audioType, char **streamType) {
     if (audioType < CAudioInfo::EAudioType::AUDIO_IN_TYPE_MEDIA || audioType >= CAudioInfo::EAudioType::AUDIO_TYPE_MAX) {
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_NOT_SUPPORTED_TYPE, "The audioType is not supported [audioType:%d]", audioType);
     }
@@ -97,33 +96,25 @@ void CAudioInfo::convertAudioType2StreamType (CAudioInfo::EAudioType audioType,
     return;
 }
 
-void CAudioInfo::convertInputStreamType2AudioType (char *streamType, CAudioInfo::EAudioType *audioType)
-{
-    unsigned int i;
-    for (i = (unsigned int)CAudioInfo::EAudioType::AUDIO_IN_TYPE_MEDIA ; i < (unsigned int)CAudioInfo::EAudioType::AUDIO_OUT_TYPE_MEDIA ; i++) {
+void CAudioInfo::convertInputStreamType2AudioType (char *streamType, CAudioInfo::EAudioType *audioType) {
+    for (unsigned int i = (unsigned int)CAudioInfo::EAudioType::AUDIO_IN_TYPE_MEDIA ; i < (unsigned int)CAudioInfo::EAudioType::AUDIO_OUT_TYPE_MEDIA ; i++) {
         if (!strcmp((char *)__STREAM_TYPE_TABLE[i], streamType)) {
-            break;
+            *audioType = (CAudioInfo::EAudioType)i;
+            return;
         }
     }
-    if (i >= (unsigned int)CAudioInfo::EAudioType::AUDIO_OUT_TYPE_MEDIA) {
-        THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_NOT_SUPPORTED_TYPE, "The streamType is not supported [streamType:%s]", streamType);
-    }
-    *audioType = (CAudioInfo::EAudioType)i;
+    THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_NOT_SUPPORTED_TYPE, "The streamType of input is not supported [streamType:%s]", streamType);
     return;
 }
 
-void CAudioInfo::convertOutputStreamType2AudioType (char *streamType, CAudioInfo::EAudioType *audioType)
-{
-    unsigned int i;
-    for (i = (unsigned int)CAudioInfo::EAudioType::AUDIO_OUT_TYPE_MEDIA ; i < (unsigned int)CAudioInfo::EAudioType::AUDIO_TYPE_MAX ; i++) {
+void CAudioInfo::convertOutputStreamType2AudioType (char *streamType, CAudioInfo::EAudioType *audioType) {
+    for (unsigned int i = (unsigned int)CAudioInfo::EAudioType::AUDIO_OUT_TYPE_MEDIA ; i < (unsigned int)CAudioInfo::EAudioType::AUDIO_TYPE_MAX ; i++) {
         if (!strcmp((char *)__STREAM_TYPE_TABLE[i], streamType)) {
-            break;
+            *audioType = (CAudioInfo::EAudioType)i;
+            return;
         }
     }
-    if (i >= (unsigned int)CAudioInfo::EAudioType::AUDIO_TYPE_MAX) {
-        THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_NOT_SUPPORTED_TYPE, "The streamType is not supported [streamType:%s]", streamType);
-    }
-    *audioType = (CAudioInfo::EAudioType)i;
+    THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_NOT_SUPPORTED_TYPE, "The streamType of output is not supported [streamType:%s]", streamType);
     return;
 }
 
index 1bec4a1..e137075 100644 (file)
@@ -164,7 +164,7 @@ void CAudioInput::prepare() throw (CAudioError) {
         }
 
         // Init StreamSpec
-        AUDIO_IO_LOGD("Set Strem Spec : CPulseStreamSpec::STREAM_LATENCY_INPUT_MID");
+        AUDIO_IO_LOGD("Set Stream Spec : CPulseStreamSpec::STREAM_LATENCY_INPUT_MID");
         CPulseStreamSpec::EStreamLatency streamSpec = CPulseStreamSpec::EStreamLatency::STREAM_LATENCY_INPUT_MID;
         CPulseStreamSpec spec(streamSpec, mAudioInfo);
 
index bbc1b65..b40771d 100644 (file)
@@ -161,7 +161,7 @@ const char* CPulseStreamSpec::getStreamLatencyToString() {
     return latency;
 }
 
-CAudioInfo CPulseStreamSpec::getAudioInfo() {
+CAudioInfo& CPulseStreamSpec::getAudioInfo() {
     return __mAudioInfo;
 }
 
index 59ecc1a..97355f1 100644 (file)
@@ -478,20 +478,29 @@ int cpp_audio_in_set_stream_info(audio_in_h input, sound_stream_info_h stream_in
         assert(handle->audioIoHandle);
 
         int errorCode = SOUND_MANAGER_ERROR_NONE;
-        CAudioInfo::EAudioType AudioType = CAudioInfo::EAudioType::AUDIO_IN_TYPE_MEDIA;
+        CAudioInfo::EAudioType audioType = CAudioInfo::EAudioType::AUDIO_IN_TYPE_MEDIA;
         char *type = NULL;
         int index = -1;
+        bool avail = false;
 
-        if ((errorCode = sound_manager_get_type_from_stream_information (stream_info, &type)) != SOUND_MANAGER_ERROR_NONE) {
-            THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Parameter stream_info->stream_type is invalid [ret:%d]", errorCode);
+        if ((errorCode = sound_manager_is_available_stream_information(stream_info, NATIVE_API_AUDIO_IO, &avail)) != SOUND_MANAGER_ERROR_NONE) {
+            THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Parameter stream_info is invalid [ret:%d]", errorCode);
         }
-        handle->audioIoHandle->getAudioInfo().convertInputStreamType2AudioType(type, &AudioType);
-        handle->audioIoHandle->getAudioInfo().setAudioType(AudioType);
 
-        if ((errorCode = sound_manager_get_index_from_stream_information (stream_info, &index)) != SOUND_MANAGER_ERROR_NONE) {
-            THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Parameter stream_info->index is invalid [ret:%d]", errorCode);
+        if (avail) {
+            if ((errorCode = sound_manager_get_type_from_stream_information (stream_info, &type)) != SOUND_MANAGER_ERROR_NONE) {
+                THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Parameter stream_info->stream_type is invalid [ret:%d]", errorCode);
+            }
+            handle->audioIoHandle->getAudioInfo().convertInputStreamType2AudioType(type, &audioType);
+            handle->audioIoHandle->getAudioInfo().setAudioType(audioType);
+
+            if ((errorCode = sound_manager_get_index_from_stream_information (stream_info, &index)) != SOUND_MANAGER_ERROR_NONE) {
+                THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Parameter stream_info->index is invalid [ret:%d]", errorCode);
+            }
+            handle->audioIoHandle->getAudioInfo().setAudioIndex(index);
+        } else {
+            THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_NOT_SUPPORTED_TYPE, "Input stream is not supported");
         }
-        handle->audioIoHandle->getAudioInfo().setAudioIndex(index);
     } catch (CAudioError e) {
         AUDIO_IO_LOGE("%s", e.getErrorMsg());
         return __convert_CAudioError(e);
@@ -1096,20 +1105,29 @@ int cpp_audio_out_set_stream_info(audio_out_h output, sound_stream_info_h stream
         assert(handle->audioIoHandle);
 
         int errorCode = SOUND_MANAGER_ERROR_NONE;
-        CAudioInfo::EAudioType AudioType = CAudioInfo::EAudioType::AUDIO_OUT_TYPE_MEDIA;
+        CAudioInfo::EAudioType audioType = CAudioInfo::EAudioType::AUDIO_OUT_TYPE_MEDIA;
         char *type = NULL;
         int index = -1;
+        bool avail = false;
 
-        if ((errorCode = sound_manager_get_type_from_stream_information (stream_info, &type)) != SOUND_MANAGER_ERROR_NONE) {
-            THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Parameter stream_info->stream_type is invalid [ret:%d]", errorCode);
+        if ((errorCode = sound_manager_is_available_stream_information(stream_info, NATIVE_API_AUDIO_IO, &avail)) != SOUND_MANAGER_ERROR_NONE) {
+            THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Parameter stream_info is invalid [ret:%d]", errorCode);
         }
-        handle->audioIoHandle->getAudioInfo().convertOutputStreamType2AudioType(type, &AudioType);
-        handle->audioIoHandle->getAudioInfo().setAudioType(AudioType);
 
-        if ((errorCode = sound_manager_get_index_from_stream_information (stream_info, &index)) != SOUND_MANAGER_ERROR_NONE) {
-            THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Parameter stream_info->index is invalid [ret:%d]", errorCode);
+        if (avail) {
+            if ((errorCode = sound_manager_get_type_from_stream_information (stream_info, &type)) != SOUND_MANAGER_ERROR_NONE) {
+                THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Parameter stream_info->stream_type is invalid [ret:%d]", errorCode);
+            }
+            handle->audioIoHandle->getAudioInfo().convertOutputStreamType2AudioType(type, &audioType);
+            handle->audioIoHandle->getAudioInfo().setAudioType(audioType);
+
+            if ((errorCode = sound_manager_get_index_from_stream_information (stream_info, &index)) != SOUND_MANAGER_ERROR_NONE) {
+                THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Parameter stream_info->index is invalid [ret:%d]", errorCode);
+            }
+            handle->audioIoHandle->getAudioInfo().setAudioIndex(index);
+        } else {
+            THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_NOT_SUPPORTED_TYPE, "Output stream is not supported");
         }
-        handle->audioIoHandle->getAudioInfo().setAudioIndex(index);
     } catch (CAudioError e) {
         AUDIO_IO_LOGE("%s", e.getErrorMsg());
         return __convert_CAudioError(e);