From 8e225014f6c12b47e151bc78ff6c1ba9244a4c04 Mon Sep 17 00:00:00 2001 From: Eunhae Choi Date: Thu, 7 Jul 2016 17:26:26 +0900 Subject: [PATCH] ignore buffering msg during ready state Change-Id: I6e44633907796d61d708430d1235b40addae6f7d --- packaging/libmm-player.spec | 2 +- src/mm_player_priv.c | 24 ++++++++++++++++++++++++ src/mm_player_resource.c | 3 --- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/packaging/libmm-player.spec b/packaging/libmm-player.spec index e935fa8..fab2987 100644 --- a/packaging/libmm-player.spec +++ b/packaging/libmm-player.spec @@ -1,6 +1,6 @@ Name: libmm-player Summary: Multimedia Framework Player Library -Version: 0.5.88 +Version: 0.5.89 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/mm_player_priv.c b/src/mm_player_priv.c index eaa341b..a84cb77 100644 --- a/src/mm_player_priv.c +++ b/src/mm_player_priv.c @@ -1485,6 +1485,13 @@ __mmplayer_gst_callback(GstBus *bus, GstMessage *msg, gpointer data) // @ if (!MMPLAYER_IS_STREAMING(player)) break; + /* ignore the buffering messages during building pipeline, * + * not to block the main loop */ + if (MMPLAYER_CURRENT_STATE(player) <= MM_PLAYER_STATE_READY) { + LOGW("ignore the buffering msg (state:%d)", MMPLAYER_CURRENT_STATE(player)); + break; + } + /* ignore the prev buffering message */ if ((player->streamer) && (player->streamer->is_buffering == FALSE) && (player->streamer->is_buffering_done == TRUE)) { @@ -2644,6 +2651,23 @@ __mmplayer_gst_decode_pad_added (GstElement *elem, GstPad *pad, gpointer data) if (stype == MM_DISPLAY_SURFACE_NULL || stype == MM_DISPLAY_SURFACE_REMOTE) { LOGD ("no video sink by null surface or multiple track"); + MMPlayerResourceState resource_state = RESOURCE_STATE_NONE; + if (_mmplayer_resource_manager_get_state(&player->resource_manager, &resource_state) + == MM_ERROR_NONE) + { + /* acquire resources for video playing */ + if (resource_state >= RESOURCE_STATE_PREPARED) + { + if (_mmplayer_resource_manager_acquire(&player->resource_manager) + != MM_ERROR_NONE) + { + LOGE("could not acquire resources for video playing\n"); + _mmplayer_resource_manager_unprepare(&player->resource_manager); + goto ERROR; + } + } + } + gchar *caps_str = gst_caps_to_string(caps); if (strstr(caps_str, "ST12") || strstr(caps_str, "SN12")) { diff --git a/src/mm_player_resource.c b/src/mm_player_resource.c index b218fee..0ef7d68 100644 --- a/src/mm_player_resource.c +++ b/src/mm_player_resource.c @@ -413,7 +413,6 @@ int _mmplayer_resource_manager_acquire(MMPlayerResourceManager *resource_manager LOGE("- could not acquire resource, ret(%d)\n", ret); ret = MM_ERROR_RESOURCE_INTERNAL; } -#if 0 /* Fix me: Disable below logic temporarily */ else { gint64 end_time = g_get_monotonic_time() + MMPLAYER_RESOURCE_ACQUIRE_TIMEOUT*G_TIME_SPAN_SECOND; @@ -427,8 +426,6 @@ int _mmplayer_resource_manager_acquire(MMPlayerResourceManager *resource_manager LOGD("- resources are acquired\n"); } } -#endif - MMPLAYER_RESOURCE_UNLOCK(resource_manager); } } -- 2.7.4