}
static gboolean
-__mmplayer_is_offload_supportable(mm_player_t *player)
+__mmplayer_is_audio_offload_device_type(mm_player_t *player)
{
gboolean ret = TRUE;
GDBusConnection *conn = NULL;
return ret;
}
+static void __mmplayer_rebuild_audio_pipeline(mm_player_t *player)
+{
+ MMPlayerStateType current_state = MM_PLAYER_STATE_NONE;
+ gint64 position = 0;
+
+ MMPLAYER_RETURN_IF_FAIL(player && player->attrs &&
+ player->pipeline && player->pipeline->mainbin);
+
+ MMPLAYER_CMD_LOCK(player);
+ current_state = MMPLAYER_CURRENT_STATE(player);
+
+ if (!gst_element_query_position(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst, GST_FORMAT_TIME, &position))
+ LOGW("getting current position failed in paused");
+
+ _mmplayer_unrealize((MMHandleType)player);
+ _mmplayer_realize((MMHandleType)player);
+
+ _mmplayer_set_position((MMHandleType)player, position);
+
+ /* async not to be blocked in streaming case */
+ mm_attrs_set_int_by_name(player->attrs, "profile_prepare_async", TRUE);
+ if (mm_attrs_commit_all(player->attrs))
+ LOGE("failed to commit");
+
+ _mmplayer_pause((MMHandleType)player);
+
+ if (current_state == MM_PLAYER_STATE_PLAYING)
+ _mmplayer_start((MMHandleType)player);
+ MMPLAYER_CMD_UNLOCK(player);
+
+ LOGD("rebuilding audio pipeline is completed.");
+}
+
void __mmplayer_audio_device_connected_cb(MMSoundDevice_t device_h, bool is_connected, void *user_data)
{
mm_player_t *player = (mm_player_t *)user_data;
return;
}
- is_supportable = __mmplayer_is_offload_supportable(player);
+ is_supportable = __mmplayer_is_audio_offload_device_type(player);
if (player->build_audio_offload == is_supportable) {
LOGD("keep current pipeline without re-building");
return;
}
- /* FIXME: rebuild pipeline */
- LOGD("FIXME: re-build pipeline");
+ /* rebuild pipeline */
+ LOGD("re-build pipeline - offload: %d", is_supportable);
+ player->build_audio_offload = FALSE;
+ __mmplayer_rebuild_audio_pipeline(player);
return;
}
if (!__mmplayer_add_audio_device_connected_cb(player))
goto DONE;
- if (!__mmplayer_is_offload_supportable(player))
+ if (!__mmplayer_is_audio_offload_device_type(player))
goto DONE;
LOGD("audio offload can be built");