+int cpp_audio_in_set_volume(audio_in_h input, double volume) {
+ auto handle = static_cast<audio_io_s*>(input);
+
+ try {
+ if (!handle)
+ THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
+ "Parameters are NULL input:%p", input);
+
+ if (volume < CAudioInfo::MIN_RECORD_VOLUME || volume > CAudioInfo::MAX_RECORD_VOLUME)
+ THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Invalid volume: %f", volume);
+
+ assert(handle->audioIoHandle);
+ AUDIO_IO_LOGD("[%p]", handle);
+
+ auto input_handle = dynamic_cast<CAudioInput*>(handle->audioIoHandle);
+ if (input_handle == nullptr)
+ return __convert_audio_io_error(CAudioError::EError::ERROR_INVALID_HANDLE);
+
+ input_handle->setVolume(volume);
+ } catch (const CAudioError& e) {
+ AUDIO_IO_LOGE("%s", e.getErrorMsg());
+ return __convert_audio_io_error(e.getError());
+ }
+
+ AUDIO_IO_LOGD("[%p] done", handle);
+
+ return AUDIO_IO_ERROR_NONE;
+}