#include "CAudioIODef.h"
#include <system_info.h>
+#include <cassert>
#define FEATURE_MICROPHONE "http://tizen.org/feature/microphone"
/**
* Internal functions
*/
-static audio_io_error_e __convert_CAudioError(CAudioError& error) {
- switch (error.getError()) {
+static audio_io_error_e __convert_audio_io_error(CAudioError::EError error) {
+ switch (error) {
case CAudioError::EError::ERROR_NONE:
return AUDIO_IO_ERROR_NONE;
case CAudioError::EError::ERROR_INVALID_ARGUMENT:
}
static void __check_audio_param(int sample_rate, audio_channel_e channel, audio_sample_type_e type, bool is_output) {
- if (sample_rate < static_cast<int>(CAudioInfo::MIN_SYSTEM_SAMPLERATE) ||
- sample_rate > static_cast<int>(CAudioInfo::MAX_SYSTEM_SAMPLERATE))
+ if (sample_rate < CAudioInfo::MIN_SYSTEM_SAMPLERATE ||
+ sample_rate > CAudioInfo::MAX_SYSTEM_SAMPLERATE)
THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Invalid sample rate :%d", sample_rate);
if (channel < AUDIO_CHANNEL_MONO ||
AUDIO_IO_LOGD("[%p] created", handle);
*input = handle;
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
__handle_safe_free(handle, (void *)input, false);
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
} catch (const std::bad_alloc&) {
- CAudioError e(CAudioError::EError::ERROR_OUT_OF_MEMORY);
+//LCOV_EXCL_START
AUDIO_IO_LOGE("Failed to allocate handle");
__handle_safe_free(handle, (void *)input, false);
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(CAudioError::EError::ERROR_OUT_OF_MEMORY);
//LCOV_EXCL_STOP
}
SAFE_FINALIZE(handle->audioIoHandle);
SAFE_DELETE(handle->audioIoHandle);
SAFE_DELETE(handle);
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
AUDIO_IO_LOGD("destroyed");
AUDIO_IO_LOGD("[%p], stream_info:[%p]", handle, stream_info);
handle->audioIoHandle->setStreamInfo(stream_info);
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
AUDIO_IO_LOGD("[%p] done", handle);
AUDIO_IO_LOGD("[%p]", handle);
handle->audioIoHandle->prepare();
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
AUDIO_IO_LOGD("[%p] prepared", handle);
AUDIO_IO_LOGD("[%p]", handle);
handle->audioIoHandle->unprepare();
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
AUDIO_IO_LOGD("[%p] unprepared", handle);
AUDIO_IO_LOGD("[%p]", handle);
handle->audioIoHandle->pause();
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
AUDIO_IO_LOGD("[%p] paused", handle);
AUDIO_IO_LOGD("[%p]", handle);
handle->audioIoHandle->resume();
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
AUDIO_IO_LOGD("[%p] resumed", handle);
AUDIO_IO_LOGD("[%p]", handle);
handle->audioIoHandle->flush();
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
AUDIO_IO_LOGD("[%p] flushed", handle);
#ifdef _AUDIO_IO_DEBUG_TIMING_
AUDIO_IO_LOGD("readn:%zu", readn);
#endif
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
return ret;
THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_HANDLE, "Handle is NULL");
*size = inputHandle->getBufferSize();
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
return AUDIO_IO_ERROR_NONE;
assert(handle->audioIoHandle);
*sample_rate = handle->audioIoHandle->getAudioInfo().getSampleRate();
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
return AUDIO_IO_ERROR_NONE;
assert(handle->audioIoHandle);
*channel = __convert_audio_info_channel_to_channel(handle->audioIoHandle->getAudioInfo().getChannel());
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
return AUDIO_IO_ERROR_NONE;
assert(handle->audioIoHandle);
*type = __convert_audio_info_sample_type_to_sample_type(handle->audioIoHandle->getAudioInfo().getSampleType());
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
return AUDIO_IO_ERROR_NONE;
cb.set(__stream_cb_internal, static_cast<void*>(handle));
handle->audioIoHandle->setStreamCallback(cb);
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
AUDIO_IO_LOGD("[%p] done", handle);
cb.unset();
handle->audioIoHandle->setStreamCallback(cb);
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
AUDIO_IO_LOGD("[%p] done", handle);
auto inputHandle = static_cast<CAudioInput*>(handle->audioIoHandle);
if (!inputHandle)
- THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_HANDLE, "Handle is NULL");
+ THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_HANDLE, "Handle is NULL"); // LCOV_EXCL_LINE
inputHandle->peek(buffer, &_length);
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
*length = (unsigned int)_length;
auto inputHandle = static_cast<CAudioInput*>(handle->audioIoHandle);
if (!inputHandle)
- THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_HANDLE, "Handle is NULL");
+ THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_HANDLE, "Handle is NULL"); // LCOV_EXCL_LINE
inputHandle->drop();
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
return AUDIO_IO_ERROR_NONE;
cb.set(__state_changed_cb_internal, static_cast<void*>(handle));
handle->audioIoHandle->setStateChangedCallback(cb);
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
AUDIO_IO_LOGD("[%p] done", handle);
try {
if (!handle)
THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
- "Parameters are NULL output:%p", input);
+ "Parameters are NULL input:%p", input);
assert(handle->audioIoHandle);
AUDIO_IO_LOGD("[%p]", handle);
cb.unset();
handle->audioIoHandle->setStateChangedCallback(cb);
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
AUDIO_IO_LOGD("[%p] done", handle);
return AUDIO_IO_ERROR_NONE;
}
+int cpp_audio_in_get_volume(audio_in_h input, double *volume) {
+ auto handle = static_cast<audio_io_s*>(input);
+
+ try {
+ if (!handle || !volume)
+ THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
+ "Parameters are NULL input:%p, volume:%p", input, 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);
+
+ *volume = input_handle->getVolume();
+ } 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;
+}
+
+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;
+}
/**
* Audio Out
AUDIO_IO_LOGD("[%p] created", handle);
*output = handle;
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
__handle_safe_free(handle, (void *)output, true);
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
} catch (const std::bad_alloc&) {
- CAudioError e(CAudioError::EError::ERROR_OUT_OF_MEMORY);
+//LCOV_EXCL_START
AUDIO_IO_LOGE("Failed to allocate handle");
__handle_safe_free(handle, (void *)output, true);
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(CAudioError::EError::ERROR_OUT_OF_MEMORY);
//LCOV_EXCL_STOP
}
SAFE_FINALIZE(handle->audioIoHandle);
SAFE_DELETE(handle->audioIoHandle);
SAFE_DELETE(handle);
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
AUDIO_IO_LOGD("[%p] destroyed", handle);
AUDIO_IO_LOGD("[%p], stream_info:[%p]", handle, stream_info);
handle->audioIoHandle->setStreamInfo(stream_info);
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
AUDIO_IO_LOGD("[%p] done", handle);
AUDIO_IO_LOGD("[%p]", handle);
handle->audioIoHandle->prepare();
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
AUDIO_IO_LOGD("[%p] prepared", handle);
AUDIO_IO_LOGD("[%p]", handle);
handle->audioIoHandle->unprepare();
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
AUDIO_IO_LOGD("[%p] unprepared", handle);
AUDIO_IO_LOGD("[%p]", handle);
handle->audioIoHandle->pause();
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
AUDIO_IO_LOGD("[%p] paused", handle);
AUDIO_IO_LOGD("[%p]", handle);
handle->audioIoHandle->resume();
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
AUDIO_IO_LOGD("[%p] resumed", handle);
assert(handle->audioIoHandle);
AUDIO_IO_LOGD("[%p]", handle);
- handle->audioIoHandle->drain();
- } catch (CAudioError& e) {
+ auto output_handle = dynamic_cast<CAudioOutput*>(handle->audioIoHandle);
+ if (output_handle == nullptr)
+ return __convert_audio_io_error(CAudioError::EError::ERROR_INVALID_HANDLE);
+
+ output_handle->drain();
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
AUDIO_IO_LOGD("[%p] drained", handle);
AUDIO_IO_LOGD("[%p]", handle);
handle->audioIoHandle->flush();
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
AUDIO_IO_LOGD("[%p] flushed", handle);
#ifdef _AUDIO_IO_DEBUG_TIMING_
AUDIO_IO_LOGD("written:%zu", written);
#endif
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
return ret;
THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_HANDLE, "Handle is NULL");
*size = outputHandle->getBufferSize();
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
return AUDIO_IO_ERROR_NONE;
assert(handle->audioIoHandle);
*sample_rate = handle->audioIoHandle->getAudioInfo().getSampleRate();
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
return AUDIO_IO_ERROR_NONE;
assert(handle->audioIoHandle);
*channel = __convert_audio_info_channel_to_channel(handle->audioIoHandle->getAudioInfo().getChannel());
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
return AUDIO_IO_ERROR_NONE;
assert(handle->audioIoHandle);
*type = __convert_audio_info_sample_type_to_sample_type(handle->audioIoHandle->getAudioInfo().getSampleType());
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
return AUDIO_IO_ERROR_NONE;
assert(handle->audioIoHandle);
*type = __convert_audio_info_audio_type_to_sound_type(handle->audioIoHandle->getAudioInfo().getAudioType());
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
return AUDIO_IO_ERROR_NONE;
cb.set(__stream_cb_internal, static_cast<void*>(handle));
handle->audioIoHandle->setStreamCallback(cb);
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
AUDIO_IO_LOGD("[%p] done", handle);
cb.unset();
handle->audioIoHandle->setStreamCallback(cb);
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
AUDIO_IO_LOGD("[%p] done", handle);
cb.set(__state_changed_cb_internal, static_cast<void*>(handle));
handle->audioIoHandle->setStateChangedCallback(cb);
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
AUDIO_IO_LOGD("[%p] done", handle);
cb.unset();
handle->audioIoHandle->setStateChangedCallback(cb);
- } catch (CAudioError& e) {
+ } catch (const CAudioError& e) {
AUDIO_IO_LOGE("%s", e.getErrorMsg());
- return __convert_CAudioError(e);
+ return __convert_audio_io_error(e.getError());
}
AUDIO_IO_LOGD("[%p] done", handle);