[0.6.264] Delete video sink when player set audio only 63/265163/1
authorGilbok Lee <gilbok.lee@samsung.com>
Tue, 12 Oct 2021 06:35:04 +0000 (15:35 +0900)
committerGilbok Lee <gilbok.lee@samsung.com>
Tue, 12 Oct 2021 06:35:27 +0000 (15:35 +0900)
- player has blocked when player set audio only

Change-Id: I0cf2b1c51ffc196334b1303cbf23d8803b0c58dc

packaging/libmm-player.spec
src/mm_player_gst.c
src/mm_player_priv.c

index 92619d1..9df3d35 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmm-player
 Summary:    Multimedia Framework Player Library
-Version:    0.6.263
+Version:    0.6.264
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index 14447fc..2944e42 100644 (file)
@@ -3055,20 +3055,20 @@ __mmplayer_gst_find_child_element(GstBin *bin, const gchar *element_name)
        MMPLAYER_RETURN_VAL_IF_FAIL(bin && element_name, NULL);
 
        iter = gst_bin_iterate_recurse(bin);
-       if (iter != NULL) {
-               while (gst_iterator_next(iter, &item) == GST_ITERATOR_OK) {
-                       ch_element = g_value_get_object(&item);
-                       ch_factory = gst_element_get_factory(ch_element);
-                       LOGD("children factory %s", GST_OBJECT_NAME(ch_factory));
-                       if (g_strrstr(GST_OBJECT_NAME(ch_factory), element_name)) {
-                               LOGD("Find %s element", element_name);
-                               break;
-                       }
-                       ch_element = NULL;
-                       g_value_reset(&item);
+       MMPLAYER_RETURN_VAL_IF_FAIL(iter, NULL);
+
+       while (gst_iterator_next(iter, &item) == GST_ITERATOR_OK) {
+               ch_element = g_value_get_object(&item);
+               ch_factory = gst_element_get_factory(ch_element);
+               LOGD("children factory %s", GST_OBJECT_NAME(ch_factory));
+               if (g_strrstr(GST_OBJECT_NAME(ch_factory), element_name)) {
+                       LOGD("Find %s element", element_name);
+                       break;
                }
-               gst_iterator_free(iter);
+               ch_element = NULL;
+               g_value_reset(&item);
        }
+       gst_iterator_free(iter);
 
        MMPLAYER_FLEAVE();
        return ch_element;
index b4114f0..6f88332 100644 (file)
@@ -2270,6 +2270,8 @@ _mmplayer_set_audio_only(MMHandleType hplayer, bool audio_only)
                                                                        player->pipeline->videobin[MMPLAYER_V_SINK].gst,
                                                                        MM_ERROR_PLAYER_NO_OP); /* invalid op */
 
+               __mmplayer_del_sink(player, player->pipeline->videobin[MMPLAYER_V_SINK].gst);
+
                __mmplayer_switch_stream(player, MM_PLAYER_TRACK_TYPE_VIDEO, INVALID_TRACK_INDEX);
 
                /* release decoder resource */
@@ -7597,6 +7599,8 @@ _mmplayer_gst_decode_pad_removed(GstElement *elem, GstPad *pad,
 
        __mmplayer_release_signal_connection(player, MM_PLAYER_SIGNAL_TYPE_VIDEOBIN);
 
+       __mmplayer_del_sink(player, videobin[MMPLAYER_V_SINK].gst);
+
        if (!gst_bin_remove(GST_BIN_CAST(mainbin[MMPLAYER_M_PIPE].gst), videobin[MMPLAYER_V_BIN].gst)) {
                LOGE("failed to remove videobin");
                gst_object_unref(GST_OBJECT(videobin[MMPLAYER_V_BIN].gst));