audio_in_prepare() can return an error enumerator for device policy restriction when pulseaudio does not work well due to the access denied.
print error value in audio_io_test.c
[Version] 0.3.36
[Profile] Common
[Issue Type] Feature enhancement
Change-Id: Icc1573c4ec97116d5455cad50631508aee55030e
ERROR_PERMISSION_DENIED,
+ ERROR_DEVICE_POLICY_RESTRICTION,
ERROR_DEVICE_NOT_OPENED,
ERROR_DEVICE_NOT_CLOSED,
AUDIO_IO_ERROR_INVALID_OPERATION = TIZEN_ERROR_INVALID_OPERATION, /**< Invalid operation */
AUDIO_IO_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< Device open error by security */
AUDIO_IO_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED, /**< Not supported */
+ AUDIO_IO_ERROR_DEVICE_POLICY_RESTRICTION = TIZEN_ERROR_DEVICE_POLICY_RESTRICTION, /**< Device policy restriction (Since 3.0) */
AUDIO_IO_ERROR_DEVICE_NOT_OPENED = TIZEN_ERROR_AUDIO_IO | 0x01, /**< Device open error */
AUDIO_IO_ERROR_DEVICE_NOT_CLOSED = TIZEN_ERROR_AUDIO_IO | 0x02, /**< Device close error */
AUDIO_IO_ERROR_INVALID_BUFFER = TIZEN_ERROR_AUDIO_IO | 0x03, /**< Invalid buffer pointer */
* @retval #AUDIO_IO_ERROR_NONE Successful
* @retval #AUDIO_IO_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #AUDIO_IO_ERROR_NOT_SUPPORTED Not supported
+ * @retval #AUDIO_IO_ERROR_DEVICE_POLICY_RESTRICTION Device policy restriction
* @retval #AUDIO_IO_ERROR_INVALID_STATE Invalid state
*
* @post The state will be #AUDIO_IO_STATE_RUNNING.
Name: capi-media-audio-io
Summary: An Audio Input & Audio Output library in Tizen Native API
-Version: 0.3.35
+Version: 0.3.36
Release: 0
Group: Multimedia/API
License: Apache-2.0
case EError::ERROR_NOT_SUPPORTED: return COLOR_RED "ERROR_NOT_SUPPORTED" COLOR_END;
case EError::ERROR_NOT_SUPPORTED_TYPE: return COLOR_RED "ERROR_NOT_SUPPORTED_TYPE" COLOR_END;
case EError::ERROR_PERMISSION_DENIED: return COLOR_RED "ERROR_PERMISSION_DENIED" COLOR_END;
+ case EError::ERROR_DEVICE_POLICY_RESTRICTION: return COLOR_RED "ERROR_DEVICE_POLICY_RESTRICTION" COLOR_END;
case EError::ERROR_DEVICE_NOT_OPENED: return COLOR_RED "ERROR_DEVICE_NOT_OPENED" COLOR_END;
case EError::ERROR_DEVICE_NOT_CLOSED: return COLOR_RED "ERROR_DEVICE_NOT_CLOSED" COLOR_END;
case EError::ERROR_OUT_OF_MEMORY: return COLOR_RED "ERROR_OUT_OF_MEMORY" COLOR_END;
if (!PA_STREAM_IS_GOOD(state)) {
err = pa_context_errno(__mpContext);
pa_threaded_mainloop_unlock(__mpMainloop);
- THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INTERNAL_OPERATION, "pa_stream's state is not good : err[%d]", err);
+ if (err == PA_ERR_ACCESS) {
+ THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_DEVICE_POLICY_RESTRICTION, "pa_stream's state is not good : err[%d]", err);
+ } else {
+ THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INTERNAL_OPERATION, "pa_stream's state is not good : err[%d]", err);
+ }
}
/* Wait until the stream is ready */
case CAudioError::EError::ERROR_PERMISSION_DENIED:
ret = AUDIO_IO_ERROR_PERMISSION_DENIED;
break;
+ case CAudioError::EError::ERROR_DEVICE_POLICY_RESTRICTION:
+ ret = AUDIO_IO_ERROR_DEVICE_POLICY_RESTRICTION;
+ break;
case CAudioError::EError::ERROR_NOT_SUPPORTED:
ret = AUDIO_IO_ERROR_NOT_SUPPORTED;
break;
ret = audio_in_prepare(input);
if (ret != 0) {
- printf("audio_in_prepare failed.\n");
+ printf("audio_in_prepare failed, err(0x%x)\n", ret);
audio_in_destroy(input);
return 0;
} else {
ret = audio_in_get_buffer_size(input, &size);
if (ret != AUDIO_IO_ERROR_NONE) {
- printf("audio_in_get_buffer_size failed.\n");
+ printf("audio_in_get_buffer_size failed, err(0x%x)\n", ret);
return 0;
} else {
printf("size(%d)\n", size);
ret = audio_out_prepare(output);
if (ret != 0) {
- printf("audio_out_prepare failed.\n");
+ printf("audio_out_prepare failed, err(0x%x)\n", ret);
audio_out_destroy(output);
return 0;
}
printf("audio_in_prepare\n");
ret = audio_in_prepare(input);
if (ret != 0) {
- printf("audio_in_prepare failed.\n");
+ printf("audio_in_prepare failed, err(0x%x)\n", ret);
audio_in_destroy(input);
goto EXIT;
} else {
ret = audio_in_get_buffer_size(input, &size);
if (ret != AUDIO_IO_ERROR_NONE) {
- printf("audio_in_get_buffer_size failed.\n");
+ printf("audio_in_get_buffer_size failed, err(0x%x)\n", ret);
goto EXIT;
} else {
printf("size(%d)\n", size);
printf("audio_out_prepare\n");
ret = audio_out_prepare(output);
if (ret != 0) {
- printf("audio_out_prepare failed.\n");
+ printf("audio_out_prepare failed, err(0x%x)\n", ret);
audio_out_destroy(output);
goto EXIT;
}