}
if (strstr(name, "video")) {
- player->video_fakesink = fakesink;
-
if (player->v_stream_caps) {
gst_caps_unref(player->v_stream_caps);
player->v_stream_caps = NULL;
}
-
if (player->ini.set_dump_element_flag)
__mmplayer_add_dump_buffer_probe(player, fakesink);
-
-
- if (player->set_mode.media_packet_video_stream) { /* export video decoded frame */
- g_object_set(G_OBJECT(fakesink), "signal-handoffs", TRUE, "max-lateness", FAKE_SINK_MAX_LATENESS, NULL);
-
- __mmplayer_add_signal_connection(player,
- G_OBJECT(fakesink),
- MM_PLAYER_SIGNAL_TYPE_VIDEOBIN,
- "handoff",
- G_CALLBACK(__mmplayer_video_stream_decoded_render_cb),
- (gpointer)player);
-
- __mmplayer_add_signal_connection(player,
- G_OBJECT(fakesink),
- MM_PLAYER_SIGNAL_TYPE_VIDEOBIN,
- "preroll-handoff",
- G_CALLBACK(__mmplayer_video_stream_decoded_preroll_cb),
- (gpointer)player);
- }
}
g_object_set(G_OBJECT(fakesink), "sync", TRUE, NULL);
goto DONE;
}
- if (stype == MM_DISPLAY_SURFACE_NULL) {
+ /* in case of exporting video frame, it requires the 360 video filter.
+ * it will be handled in _no_more_pads(). */
+ if ((stype == MM_DISPLAY_SURFACE_NULL) && (!player->set_mode.media_packet_video_stream)){
__mmplayer_gst_make_fakesink(player, pad, name);
goto DONE;
}
factory_name = player->ini.videosink_element_overlay;
break;
case MM_DISPLAY_SURFACE_REMOTE:
+ case MM_DISPLAY_SURFACE_NULL:
if (strlen(player->ini.videosink_element_fake) > 0)
factory_name = player->ini.videosink_element_fake;
break;
- case MM_DISPLAY_SURFACE_NULL:
- LOGE("null surface type have to be handled in _decode_pad_added()");
- break;
default:
LOGE("unidentified surface type");
break;
gchar *factory_name = NULL;
MMPlayerGstElement *videobin = NULL;
MMHandleType attrs;
+ int gapless = 0;
MMPLAYER_FENTER();
MMPLAYER_RETURN_VAL_IF_FAIL(player && player->pipeline && player->pipeline->videobin, MM_ERROR_PLAYER_NOT_INITIALIZED);
return MM_ERROR_PLAYER_INTERNAL;
}
- if (surface_type == MM_DISPLAY_SURFACE_OVERLAY || surface_type == MM_DISPLAY_SURFACE_REMOTE) {
- int gapless = 0;
-
- if (surface_type == MM_DISPLAY_SURFACE_OVERLAY) {
- bool use_tbm = (player->set_mode.video_zc || (player->is_360_feature_enabled && player->is_content_spherical));
- LOGD("OVERLAY: selected videosink is %s", factory_name);
-
- if (!use_tbm) {
- /* support shard memory with S/W codec on HawkP */
- if (strncmp(factory_name, "tizenwlsink", strlen(factory_name)) == 0) {
- g_object_set(player->pipeline->videobin[MMPLAYER_V_SINK].gst,
- "use-tbm", use_tbm, NULL);
- }
+ LOGD("surface type %d, videosink factory name is %s", surface_type, factory_name);
+ if (surface_type == MM_DISPLAY_SURFACE_OVERLAY) {
+ bool use_tbm = (player->set_mode.video_zc || (player->is_360_feature_enabled && player->is_content_spherical));
+ if (!use_tbm) {
+ /* support shard memory with S/W codec on HawkP */
+ if (strncmp(factory_name, "tizenwlsink", strlen(factory_name)) == 0) {
+ g_object_set(player->pipeline->videobin[MMPLAYER_V_SINK].gst,
+ "use-tbm", use_tbm, NULL);
}
- } else {
- LOGE("REMOTE : add data probe at videosink");
- g_object_set(G_OBJECT(player->pipeline->videobin[MMPLAYER_V_SINK].gst),
- "sync", TRUE, "max-lateness", FAKE_SINK_MAX_LATENESS, NULL);
}
+ } else {
+ g_object_set(G_OBJECT(player->pipeline->videobin[MMPLAYER_V_SINK].gst),
+ "sync", TRUE, "max-lateness", FAKE_SINK_MAX_LATENESS, NULL);
+ }
- mm_attrs_get_int_by_name(attrs, "gapless_mode", &gapless);
- if (gapless > 0) {
- LOGD("disable last-sample");
- g_object_set(player->pipeline->videobin[MMPLAYER_V_SINK].gst, "enable-last-sample", FALSE, NULL);
- }
+ mm_attrs_get_int_by_name(attrs, "gapless_mode", &gapless);
+ if (gapless > 0) {
+ LOGD("disable last-sample");
+ g_object_set(player->pipeline->videobin[MMPLAYER_V_SINK].gst, "enable-last-sample", FALSE, NULL);
+ }
- if (player->set_mode.media_packet_video_stream) {
- int enable = 0;
- mm_attrs_get_int_by_name(player->attrs, "enable_video_decoded_cb", &enable);
- if (enable || (surface_type == MM_DISPLAY_SURFACE_REMOTE))
- g_object_set(G_OBJECT(player->pipeline->videobin[MMPLAYER_V_SINK].gst), "signal-handoffs", TRUE, NULL);
+ if (player->set_mode.media_packet_video_stream) {
+ int enable = 0;
+ mm_attrs_get_int_by_name(player->attrs, "enable_video_decoded_cb", &enable);
+ if (enable || (surface_type == MM_DISPLAY_SURFACE_REMOTE) || (surface_type == MM_DISPLAY_SURFACE_NULL))
+ g_object_set(G_OBJECT(player->pipeline->videobin[MMPLAYER_V_SINK].gst), "signal-handoffs", TRUE, NULL);
- __mmplayer_add_signal_connection(player,
- G_OBJECT(player->pipeline->videobin[MMPLAYER_V_SINK].gst),
- MM_PLAYER_SIGNAL_TYPE_VIDEOBIN,
- "handoff",
- G_CALLBACK(__mmplayer_video_stream_decoded_render_cb),
- (gpointer)player);
+ __mmplayer_add_signal_connection(player,
+ G_OBJECT(player->pipeline->videobin[MMPLAYER_V_SINK].gst),
+ MM_PLAYER_SIGNAL_TYPE_VIDEOBIN,
+ "handoff",
+ G_CALLBACK(__mmplayer_video_stream_decoded_render_cb),
+ (gpointer)player);
- __mmplayer_add_signal_connection(player,
- G_OBJECT(player->pipeline->videobin[MMPLAYER_V_SINK].gst),
- MM_PLAYER_SIGNAL_TYPE_VIDEOBIN,
- "preroll-handoff",
- G_CALLBACK(__mmplayer_video_stream_decoded_preroll_cb),
- (gpointer)player);
- }
+ __mmplayer_add_signal_connection(player,
+ G_OBJECT(player->pipeline->videobin[MMPLAYER_V_SINK].gst),
+ MM_PLAYER_SIGNAL_TYPE_VIDEOBIN,
+ "preroll-handoff",
+ G_CALLBACK(__mmplayer_video_stream_decoded_preroll_cb),
+ (gpointer)player);
}
if (_mmplayer_update_video_param(player, "update_all_param") != MM_ERROR_NONE)
if (callback && !player->bufmgr)
player->bufmgr = tbm_bufmgr_init(-1);
- player->set_mode.media_packet_video_stream = (callback) ? TRUE : FALSE;
+ player->set_mode.media_packet_video_stream = (callback) ? true : false;
player->video_stream_cb = callback;
player->video_stream_cb_user_param = user_param;
/* don't make video because of not required */
if ((stype == MM_DISPLAY_SURFACE_NULL) &&
- (player->set_mode.media_packet_video_stream == FALSE)) {
- LOGD("no video because it's not required. -> return expose");
+ (!player->set_mode.media_packet_video_stream)) {
+ LOGD("no need video decoding, expose pad");
result = GST_AUTOPLUG_SELECT_EXPOSE;
goto DONE;
}
player->adjust_subtitle_pos = 0;
player->last_multiwin_status = FALSE;
player->has_closed_caption = FALSE;
- player->set_mode.media_packet_video_stream = FALSE;
+ player->set_mode.media_packet_video_stream = false;
player->profile.uri_type = MM_PLAYER_URI_TYPE_NONE;
memset(&player->set_mode, 0, sizeof(MMPlayerSetMode));
/* recover mode */