gint stream_id = 0;
gchar stream_props[MAX_PROPS_LEN] = {0,};
GstStructure *props = NULL;
- gint stream_focus_status = 0;
/* set volume table
* It should be set after player creation through attribute.
if (!stream_type) {
LOGE("stream_type is null.\n");
} else {
- if (_mmplayer_is_using_internal_sound_focus(&player->sound_focus))
- stream_focus_status = 1;
-
- snprintf(stream_props, sizeof(stream_props)-1, "props,media.role=%s, media.parent_id=%d, media.focus_status=%d",
- stream_type, stream_id, stream_focus_status);
+ if (player->sound_focus.focus_id)
+ snprintf(stream_props, sizeof(stream_props)-1, "props,media.role=%s, media.parent_id=%d, media.focus_id=%d",
+ stream_type, stream_id, player->sound_focus.focus_id);
+ else
+ snprintf(stream_props, sizeof(stream_props)-1, "props,media.role=%s, media.parent_id=%d",
+ stream_type, stream_id);
props = gst_structure_from_string(stream_props, NULL);
g_object_set(player->pipeline->audiobin[MMPLAYER_A_SINK].gst, "stream-properties", props, NULL);
- LOGI("stream_id[%d], stream_type[%s], stream_focus[%d], result[%s].\n", stream_id, stream_type, stream_focus_status, stream_props);
+ LOGI("stream_type[%s], stream_id[%d], focus_id[%d], result[%s].\n", stream_type, stream_id, player->sound_focus.focus_id, stream_props);
}
mm_attrs_get_int_by_name(attrs, "sound_latency_mode", &latency_mode);
player->sound_focus.cb_pending = FALSE;
EXIT:
+ if (mm_sound_update_focus_status(id, 0))
+ LOGE("failed to update focus status\n");
MMPLAYER_CMD_UNLOCK(player);
LOGW("dispatched");
return;
_mmplayer_sound_acquire_focus(MMPlayerSoundFocus* sound_focus)
{
int ret = MM_ERROR_NONE;
- const gchar *stream_type = NULL;
MMPLAYER_FENTER();
MMPLAYER_CHECK_SOUND_FOCUS_INSTANCE(sound_focus);
return MM_ERROR_NONE;
}
- stream_type = __mmplayer_sound_get_stream_type(sound_focus->session_type);
-
- if ((!strstr(stream_type, "media")) ||
- (sound_focus->session_flags & MM_SESSION_OPTION_PAUSE_OTHERS)) {
+ if (_mmplayer_is_using_internal_sound_focus(sound_focus)) {
ret = mm_sound_acquire_focus(sound_focus->focus_id, FOCUS_FOR_BOTH, NULL);
if (ret != MM_ERROR_NONE) {
}
sound_focus->acquired = TRUE;
+
+ ret = mm_sound_update_focus_status(sound_focus->focus_id, 1);
+ if (ret != MM_ERROR_NONE)
+ LOGE("failed to update focus status\n");
}
MMPLAYER_FLEAVE();
_mmplayer_sound_release_focus(MMPlayerSoundFocus* sound_focus)
{
int ret = MM_ERROR_NONE;
- const gchar *stream_type = NULL;
MMPLAYER_FENTER();
MMPLAYER_CHECK_SOUND_FOCUS_INSTANCE(sound_focus);
return MM_ERROR_NONE;
}
- stream_type = __mmplayer_sound_get_stream_type(sound_focus->session_type);
-
- if ((!strstr(stream_type, "media")) ||
- (sound_focus->session_flags & MM_SESSION_OPTION_PAUSE_OTHERS)) {
+ if (_mmplayer_is_using_internal_sound_focus(sound_focus)) {
ret = mm_sound_release_focus(sound_focus->focus_id, FOCUS_FOR_BOTH, NULL);
if (ret != MM_ERROR_NONE) {
LOGE("failed to release sound focus\n");
}
sound_focus->acquired = FALSE;
+
+ ret = mm_sound_update_focus_status(sound_focus->focus_id, 0);
+ if (ret != MM_ERROR_NONE)
+ LOGE("failed to update focus status\n");
}
MMPLAYER_FLEAVE();
return false;
if ((sound_focus->session_type == MM_SESSION_TYPE_MEDIA && sound_focus->session_flags & MM_SESSION_OPTION_PAUSE_OTHERS) ||
- (sound_focus->session_type == MM_SESSION_TYPE_CALL) ||
- (sound_focus->session_type == MM_SESSION_TYPE_VIDEOCALL) ||
- (sound_focus->session_type == MM_SESSION_TYPE_VOIP) ||
(sound_focus->session_type == MM_SESSION_TYPE_NOTIFY) ||
(sound_focus->session_type == MM_SESSION_TYPE_ALARM) ||
(sound_focus->session_type == MM_SESSION_TYPE_EMERGENCY))