/**
* @internal
+ * @brief Definition for the value indicating that the reference device for the stream information was not set.
+ * @since_tizen 7.0
+ * @see sound_manager_get_echo_cancel_reference_device()
+ */
+#define SOUND_MANAGER_STREAM_NO_REFERENCE_DEVICE 0
+
+/**
+ * @internal
* @brief Gets the maximum master volume level.
* @since_tizen 3.0
* @param[out] max_level The maximum volume level
* @internal
* @brief Sets acoustic echo cancellation reference device
* @since_tizen 7.0
- * @remark You can get a device handle by using sound_manager_get_device_list() and sound_manager_get_next_device()
+ * @remark You can get a device handle by using sound_manager_get_device_list() and sound_manager_get_next_device()\n
+ * If @a device is not supported by @a stream_info, #SOUND_MANAGER_ERROR_POLICY will be returned.
* @param[in] stream_info The handle of stream information
* @param[in] device The reference device of echo-cancellation
* @return @c 0 on success,
* otherwise a negative error value
* @retval #SOUND_MANAGER_ERROR_NONE Success
* @retval #SOUND_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #SOUND_MANAGER_ERROR_INVALID_OPERATION Invalid operation
+ * @retval #SOUND_MANAGER_ERROR_POLICY Noncompliance with the sound system policy
* @retval #SOUND_MANAGER_ERROR_INTERNAL Internal error inside the sound system
* @see sound_manager_create_stream_information()
* @see sound_manager_get_device_list()
* @internal
* @brief Gets acoustic echo cancellation reference device
* @since_tizen 7.0
+ * @remarks If there is no reference device that has been set, the output value will be set to
+ * #SOUND_MANAGER_STREAM_NO_REFERENCE_DEVICE.\n
+ * You can get a device handle of the id value by using sound_manager_get_device_list(),
+ * sound_manager_get_next_device() and sound_manager_get_device_id().
* @param[in] stream_info The handle of stream information
- * @param[out] device The reference device of echo-cancellation
+ * @param[out] device_id The reference device id of echo-cancellation
* @return @c 0 on success,
* otherwise a negative error value
* @retval #SOUND_MANAGER_ERROR_NONE Success
* @retval #SOUND_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #SOUND_MANAGER_ERROR_INVALID_OPERATION Invalid operation
* @see sound_manager_create_stream_information()
+ * @see sound_manager_get_device_list()
+ * @see sound_manager_get_next_device()
+ * @see sound_manager_free_device_list()
*/
-int sound_manager_get_echo_cancel_reference_device(sound_stream_info_h stream_info, sound_device_h *device);
+int sound_manager_get_echo_cancel_reference_device(sound_stream_info_h stream_info, int *device_id);
/**
* @internal
void *user_data;
manual_route_info_s manual_route_info;
preferred_device_info_s preferred_device_info;
- sound_device_h reference_device;
+ int echo_cancel_reference_device;
pthread_mutex_t focus_state_mutex;
pthread_mutex_t focus_cb_mutex;
pthread_mutex_t vstream_mutex;
int _set_echo_cancel_reference_device(sound_stream_info_s *stream_info, sound_device_h device);
-int _get_echo_cancel_reference_device(sound_stream_info_s *stream_info, sound_device_h *device);
+int _get_echo_cancel_reference_device(sound_stream_info_s *stream_info, int *device_id);
int _set_rpi_playback_route(sound_rpi_playback_route_type type);
Name: capi-media-sound-manager
Summary: Sound Manager library
-Version: 0.6.45
+Version: 0.6.46
Release: 0
Group: Multimedia/API
License: Apache-2.0
int sound_manager_set_echo_cancel_reference_device(sound_stream_info_h stream_info, sound_device_h device)
{
- sound_stream_info_s *stream_h = (sound_stream_info_s*)stream_info;
-
- return _set_echo_cancel_reference_device(stream_h, device);
+ return _set_echo_cancel_reference_device((sound_stream_info_s*)stream_info, device);
}
-int sound_manager_get_echo_cancel_reference_device(sound_stream_info_h stream_info, sound_device_h *device)
+int sound_manager_get_echo_cancel_reference_device(sound_stream_info_h stream_info, int *device_id)
{
- sound_stream_info_s *stream_h = (sound_stream_info_s*)stream_info;
-
- return _get_echo_cancel_reference_device(stream_h, device);
+ return _get_echo_cancel_reference_device((sound_stream_info_s*)stream_info, device_id);
}
int sound_manager_set_rpi_playback_route(sound_rpi_playback_route_type type)
{
mm_sound_device_type_e mm_sound_device_type;
sound_device_type_e device_type;
+ int device_id;
char *device_type_str = NULL;
char *avail_device_item = NULL;
bool found = false;
int ret, i;
SM_ARG_CHECK(stream_info);
+ SM_ARG_CHECK(device);
if ((ret = mm_sound_get_device_type(device, &mm_sound_device_type)) != MM_ERROR_NONE)
return _convert_sound_manager_error_code(__func__, ret);
+ if ((ret = mm_sound_get_device_id(device, &device_id)) != MM_ERROR_NONE)
+ return _convert_sound_manager_error_code(__func__, ret);
+
if ((ret = _convert_device_type(mm_sound_device_type, &device_type)) != SOUND_MANAGER_ERROR_NONE)
return ret;
}
if (!found) {
- LOGE("Can't find available reference device");
- return SOUND_MANAGER_ERROR_INVALID_OPERATION;
+ LOGE("not supported device[type:%s, id:%d]", device_type_str, device_id);
+ return SOUND_MANAGER_ERROR_POLICY;
}
- stream_info->reference_device = device;
+ stream_info->echo_cancel_reference_device = device_id;
+ LOGI("stream_info[%p, %s] reference device_id[%d]",
+ stream_info, stream_info->stream_type, device_id);
return SOUND_MANAGER_ERROR_NONE;
}
-int _get_echo_cancel_reference_device(sound_stream_info_s *stream_info, sound_device_h *device)
+int _get_echo_cancel_reference_device(sound_stream_info_s *stream_info, int *device_id)
{
SM_ARG_CHECK(stream_info);
- SM_ARG_CHECK(device);
+ SM_ARG_CHECK(device_id);
- if (!stream_info->reference_device)
- return SOUND_MANAGER_ERROR_INVALID_OPERATION;
+ *device_id = stream_info->echo_cancel_reference_device;
- *device = stream_info->reference_device;
+ LOGI("stream_info[%p, %s] reference device_id[%d]",
+ stream_info, stream_info->stream_type, *device_id);
return SOUND_MANAGER_ERROR_NONE;
}