Add echo-cancel properties to AudioInfo
[platform/core/api/audio-io.git] / src / cpp / CAudioIO.cpp
index 7565f6b..093e7c2 100644 (file)
@@ -223,4 +223,20 @@ void CAudioIO::setStreamInfo(sound_stream_info_h stream_info) {
     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); //LCOV_EXCL_LINE
     getAudioInfo().setAudioIndex(index);
+
+    if (mDirection == CAudioInfo::EAudioDirection::AUDIO_DIRECTION_IN) {
+        sound_device_h device = NULL;
+
+        if ((errorCode = sound_manager_get_echo_cancel_reference_device(stream_info, &device) != SOUND_MANAGER_ERROR_NONE))
+            THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Can't get reference device [ret:%d]", errorCode); //LCOV_EXCL_LINE
+
+        if (device) {
+            int id;
+
+            if ((errorCode = sound_manager_get_device_id(device, &id) != SOUND_MANAGER_ERROR_NONE))
+                THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_OPERATION, "Can't get device id [ret:%d]", errorCode); //LCOV_EXCL_LINE
+
+            getAudioInfo().bindEchoCancelReferenceDeviceId(id);
+        }
+    }
 }