From 1729104c2c1547d0907c170cd936fb50f587052e Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Fri, 17 May 2019 19:54:51 -0400 Subject: [PATCH] video-transition: When using non crossfade effect use 'over' operations For smptealph element to work as expected the following compositing element should mix with the default "over" operator, as described in its documentation. --- ges/ges-video-transition.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/ges/ges-video-transition.c b/ges/ges-video-transition.c index 4c36cca54e..e84c84bc6a 100644 --- a/ges/ges-video-transition.c +++ b/ges/ges-video-transition.c @@ -364,9 +364,13 @@ ges_video_transition_create_element (GESTrackElement * object) mixer, GES_VIDEO_STANDARD_TRANSITION_TYPE_BAR_WIPE_LR, &priv->smpte, priv, &priv->mixer_ghostb); g_object_set (priv->mixer_sinka, "zorder", 0, NULL); - gst_util_set_object_arg (G_OBJECT (priv->mixer_sinka), "operator", "source"); g_object_set (priv->mixer_sinkb, "zorder", 1, NULL); - gst_util_set_object_arg (G_OBJECT (priv->mixer_sinkb), "operator", "add"); + gst_util_set_object_arg (G_OBJECT (priv->mixer_sinka), "operator", + priv->type == + GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE ? "source" : "over"); + gst_util_set_object_arg (G_OBJECT (priv->mixer_sinkb), "operator", + priv->type == + GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE ? "add" : "over"); fast_element_link (mixer, priv->positioner); fast_element_link (priv->positioner, oconv); @@ -539,6 +543,13 @@ ges_video_transition_set_transition_type_internal (GESVideoTransition g_object_set (priv->smpte, "type", (gint) type, NULL); } + gst_util_set_object_arg (G_OBJECT (priv->mixer_sinka), "operator", + priv->type == + GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE ? "source" : "over"); + gst_util_set_object_arg (G_OBJECT (priv->mixer_sinkb), "operator", + priv->type == + GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE ? "add" : "over"); + return TRUE; }