From: Sangchul Lee Date: Wed, 24 Feb 2016 06:20:40 +0000 (+0900) Subject: Add support for SOUND_STREAM_TYPE_SOLO by internal API X-Git-Tag: submit/tizen/20160224.084622~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F96%2F60196%2F4;p=platform%2Fcore%2Fapi%2Fsound-manager.git Add support for SOUND_STREAM_TYPE_SOLO by internal API [Version] Release 0.3.43 [Profile] Common [Issue Type] New feature Change-Id: I029d410dbc69051353e5cdd7c3c868520f7382ff Signed-off-by: Sangchul Lee --- diff --git a/include/sound_manager_internal.h b/include/sound_manager_internal.h index c1fa642..d6eab56 100644 --- a/include/sound_manager_internal.h +++ b/include/sound_manager_internal.h @@ -66,6 +66,7 @@ typedef enum { SOUND_STREAM_TYPE_VIDEO_CALL, /**< Sound stream type for video-call */ SOUND_STREAM_TYPE_RADIO, /**< Sound stream type for radio */ SOUND_STREAM_TYPE_LOOPBACK, /**< Sound stream type for loopback */ + SOUND_STREAM_TYPE_SOLO, /**< Sound stream type for solo */ } sound_stream_type_internal_e; /** diff --git a/include/sound_manager_private.h b/include/sound_manager_private.h index 146e27d..feb3c65 100644 --- a/include/sound_manager_private.h +++ b/include/sound_manager_private.h @@ -154,6 +154,7 @@ typedef struct _manual_route_info_s { typedef struct _sound_stream_info_s { unsigned int index; char *stream_type; + bool is_focus_unavailable; pa_threaded_mainloop *pa_mainloop; pa_context *pa_context; stream_conf_info_s stream_conf_info; @@ -233,6 +234,8 @@ int _convert_stream_type(sound_stream_type_e enum_type, char **stream_type); int _convert_stream_type_for_internal(sound_stream_type_internal_e stream_type_enum, char **stream_type); +void _set_focus_availability(sound_stream_info_s *stream_info); + int _convert_stream_type_to_change_reason(const char *stream_type, sound_stream_focus_change_reason_e *change_reason); int _convert_device_type(sound_device_type_e device_type_enum, char **device_type); diff --git a/packaging/capi-media-sound-manager.spec b/packaging/capi-media-sound-manager.spec index fdd19ff..e609da6 100755 --- a/packaging/capi-media-sound-manager.spec +++ b/packaging/capi-media-sound-manager.spec @@ -1,6 +1,6 @@ Name: capi-media-sound-manager Summary: Sound Manager library -Version: 0.3.42 +Version: 0.3.43 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/sound_manager.c b/src/sound_manager.c index 1a555d4..12d1e3b 100644 --- a/src/sound_manager.c +++ b/src/sound_manager.c @@ -197,6 +197,7 @@ int sound_manager_create_stream_information(sound_stream_type_e stream_type, sou memset(stream_h, 0, sizeof(sound_stream_info_s)); ret = _convert_stream_type(stream_type, &stream_h->stream_type); if (ret == MM_ERROR_NONE) { + _set_focus_availability(stream_h); ret = _make_pa_connection_and_register_focus(stream_h, callback, user_data); if (ret == MM_ERROR_NONE) { *stream_info = (sound_stream_info_h)stream_h; @@ -310,6 +311,9 @@ int sound_manager_acquire_focus(sound_stream_info_h stream_info, sound_stream_fo SM_INSTANCE_CHECK(stream_h); + if (stream_h->is_focus_unavailable) + return _convert_sound_manager_error_code(__func__, MM_ERROR_POLICY_INTERNAL); + ret = mm_sound_acquire_focus(stream_h->index, (mm_sound_focus_type_e)focus_mask, additional_info); if (ret == MM_ERROR_NONE) { stream_h->acquired_focus |= focus_mask; diff --git a/src/sound_manager_internal.c b/src/sound_manager_internal.c index a8c8859..411eab2 100644 --- a/src/sound_manager_internal.c +++ b/src/sound_manager_internal.c @@ -84,6 +84,7 @@ int sound_manager_create_stream_information_internal(sound_stream_type_internal_ memset(stream_h, 0, sizeof(sound_stream_info_s)); ret = _convert_stream_type_for_internal(stream_type, &stream_h->stream_type); if (ret == MM_ERROR_NONE) { + _set_focus_availability(stream_h); ret = _make_pa_connection_and_register_focus(stream_h, callback, user_data); if (!ret) { *stream_info = (sound_stream_info_h)stream_h; diff --git a/src/sound_manager_private.c b/src/sound_manager_private.c index 4db3b3c..723f265 100644 --- a/src/sound_manager_private.c +++ b/src/sound_manager_private.c @@ -153,7 +153,7 @@ int _convert_stream_type(sound_stream_type_e stream_type_enum, char **stream_typ ret = MM_ERROR_SOUND_INTERNAL; break; } - LOGI("stream_type[%s]", stream_type); + LOGI("stream_type[%s]", *stream_type); return ret; } @@ -184,6 +184,9 @@ int _convert_stream_type_for_internal(sound_stream_type_internal_e stream_type_e case SOUND_STREAM_TYPE_LOOPBACK: *stream_type = "loopback"; break; + case SOUND_STREAM_TYPE_SOLO: + *stream_type = "solo"; + break; default: LOGE("could not find the stream_type[%d] in this switch case statement", stream_type_enum); ret = MM_ERROR_SOUND_INTERNAL; @@ -194,6 +197,20 @@ int _convert_stream_type_for_internal(sound_stream_type_internal_e stream_type_e return ret; } +void _set_focus_availability(sound_stream_info_s *stream_info) +{ + if (stream_info == NULL || stream_info->stream_type == NULL) { + LOGE("invalid argument"); + return; + } + if (!strncmp(stream_info->stream_type, "solo", SOUND_STREAM_TYPE_LEN)) { + stream_info->is_focus_unavailable = true; + LOGI("this stream_type[%s] does not support focus", stream_info->stream_type); + } + + return; +} + int _convert_stream_type_to_change_reason(const char *stream_type, sound_stream_focus_change_reason_e *change_reason) { int ret = MM_ERROR_NONE;