From: Eunhae Choi Date: Thu, 21 Jul 2016 06:59:11 +0000 (+0900) Subject: add custome event to do flush-buffer at videosink X-Git-Tag: submit/tizen/20160805.054353~3^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b8973f0c9f01a4df22013679d1e41fe0672f54a7;p=platform%2Fcore%2Fmultimedia%2Flibmm-player.git add custome event to do flush-buffer at videosink Change-Id: I76a4c6e7d094233da7381f1146bf106038a68b37 --- diff --git a/packaging/libmm-player.spec b/packaging/libmm-player.spec index 6ed62ee..56021be 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.90 +Version: 0.5.91 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/mm_player_priv.c b/src/mm_player_priv.c index 634bfae..6591ea3 100644 --- a/src/mm_player_priv.c +++ b/src/mm_player_priv.c @@ -12108,6 +12108,7 @@ __mmplayer_verify_next_play_path(mm_player_t *player) gint uri_idx = 0, check_cnt = 0; char *uri = NULL; gint mode = MM_PLAYER_PD_MODE_NONE; + gint video = 0; gint count = 0; gint gapless = 0; guint num_of_list = 0; @@ -12129,10 +12130,11 @@ __mmplayer_verify_next_play_path(mm_player_t *player) goto ERROR; } + mm_attrs_get_int_by_name(attrs, "content_video_found", &video); + #ifdef TIZEN_TV /* gapless playback is not supported in case of video at TV profile. */ - mm_attrs_get_int_by_name(attrs, "content_video_found", &mode); - if (mode) + if (video) { LOGW("not support video gapless playback"); goto ERROR; @@ -12158,6 +12160,12 @@ __mmplayer_verify_next_play_path(mm_player_t *player) LOGE("can not get gapless mode\n"); } + if (video && !gapless) + { + LOGW("not enabled video gapless playback"); + goto ERROR; + } + if ((count == -1 || count > 1)) /* enable gapless when looping or repeat */ gapless = 1; @@ -12599,6 +12607,7 @@ __mmplayer_deactivate_selector(mm_player_t *player, MMPlayerTrackType type) enum MainElementID sinkId = MMPLAYER_M_NUM; GstPad *srcpad = NULL; GstPad *sinkpad = NULL; + gboolean send_notice = FALSE; MMPLAYER_FENTER(); MMPLAYER_RETURN_VAL_IF_FAIL (player, FALSE); @@ -12616,6 +12625,7 @@ __mmplayer_deactivate_selector(mm_player_t *player, MMPlayerTrackType type) selectorId = MMPLAYER_M_V_INPUT_SELECTOR; sinkId = MMPLAYER_V_BIN; sinkbin = player->pipeline->videobin; + send_notice = TRUE; break; case MM_PLAYER_TRACK_TYPE_TEXT: selectorId = MMPLAYER_M_T_INPUT_SELECTOR; @@ -12647,6 +12657,14 @@ __mmplayer_deactivate_selector(mm_player_t *player, MMPlayerTrackType type) /* after getting drained signal there is no data flows, so no need to do pad_block */ LOGD("unlink %s:%s, %s:%s", GST_DEBUG_PAD_NAME(srcpad), GST_DEBUG_PAD_NAME(sinkpad)); gst_pad_unlink (srcpad, sinkpad); + + /* send custom event to sink pad to handle it at video sink */ + if (send_notice) { + LOGD("send custom event to sinkpad"); + GstStructure *s = gst_structure_new_empty ("application/flush-buffer"); + GstEvent *event = gst_event_new_custom (GST_EVENT_CUSTOM_DOWNSTREAM, s); + gst_pad_send_event (sinkpad, event); + } } gst_object_unref (sinkpad);