Revert "video-transition: Make use of the new compositor::crossfade-ratio property"

This reverts commit 57be9b6799.
This commit is contained in:
Thibault Saunier 2018-10-28 15:33:31 +00:00
parent e04a6c7fc3
commit b64dd33661
2 changed files with 27 additions and 29 deletions

View file

@ -104,8 +104,6 @@ parse_metadata (GstPad * mixer_pad, GstPadProbeInfo * info,
if (!self->disable_zorder_alpha) {
g_object_set (mixer_pad, "alpha", meta->alpha,
"zorder", meta->zorder, NULL);
} else {
g_object_set (mixer_pad, "alpha", meta->alpha, NULL);
}
g_object_set (mixer_pad, "xpos", meta->posx, "ypos",

View file

@ -49,7 +49,8 @@ struct _GESVideoTransitionPrivate
GESVideoStandardTransitionType pending_type;
/* these enable video interpolation */
GstTimedValueControlSource *crossfade_control_source;
GstTimedValueControlSource *fade_in_control_source;
GstTimedValueControlSource *fade_out_control_source;
GstTimedValueControlSource *smpte_control_source;
/* so we can support changing between wipes */
@ -191,7 +192,8 @@ ges_video_transition_init (GESVideoTransition * self)
{
self->priv = ges_video_transition_get_instance_private (self);
self->priv->crossfade_control_source = NULL;
self->priv->fade_in_control_source = NULL;
self->priv->fade_out_control_source = NULL;
self->priv->smpte_control_source = NULL;
self->priv->smpte = NULL;
self->priv->mixer_sink = NULL;
@ -229,9 +231,14 @@ ges_video_transition_dispose (GObject * object)
GST_DEBUG ("disposing");
if (priv->crossfade_control_source) {
gst_object_unref (priv->crossfade_control_source);
priv->crossfade_control_source = NULL;
if (priv->fade_in_control_source) {
gst_object_unref (priv->fade_in_control_source);
priv->fade_in_control_source = NULL;
}
if (priv->fade_out_control_source) {
gst_object_unref (priv->fade_out_control_source);
priv->fade_out_control_source = NULL;
}
if (priv->smpte_control_source) {
@ -299,17 +306,14 @@ ges_video_transition_set_property (GObject * object,
static GstTimedValueControlSource *
set_interpolation (GstObject * element, GESVideoTransitionPrivate * priv,
const gchar * propname, gboolean absolute)
const gchar * propname)
{
GstControlSource *control_source;
g_object_set (element, propname, (gfloat) 0.0, NULL);
control_source = gst_interpolation_control_source_new ();
gst_object_add_control_binding (GST_OBJECT (element),
absolute ? gst_direct_control_binding_new_absolute (GST_OBJECT (element),
propname, control_source) :
gst_direct_control_binding_new (GST_OBJECT (element), propname,
control_source));
g_object_set (control_source, "mode", GST_INTERPOLATION_MODE_LINEAR, NULL);
@ -333,14 +337,8 @@ ges_video_transition_create_element (GESTrackElement * object)
topbin = gst_bin_new ("transition-bin");
iconva =
gst_parse_bin_from_description
("videoconvert ! capsfilter caps=\"video/x-raw,format=BGRA\"", TRUE,
NULL);
iconvb =
gst_parse_bin_from_description
("videoconvert ! capsfilter caps=\"video/x-raw,format=BGRA\"", TRUE,
NULL);
iconva = gst_element_factory_make ("videoconvert", "tr-csp-a");
iconvb = gst_element_factory_make ("videoconvert", "tr-csp-b");
priv->positioner =
gst_element_factory_make ("framepositioner", "frame_tagger");
g_object_set (priv->positioner, "zorder",
@ -350,10 +348,7 @@ ges_video_transition_create_element (GESTrackElement * object)
gst_bin_add_many (GST_BIN (topbin), iconva, iconvb, priv->positioner,
oconv, NULL);
mixer =
g_object_new (GES_TYPE_SMART_MIXER, "name",
GES_TIMELINE_ELEMENT_NAME (self), NULL);
g_object_set (GES_SMART_MIXER (mixer)->mixer, "background", 3, NULL);
mixer = ges_smart_mixer_new (NULL);
GES_SMART_MIXER (mixer)->disable_zorder_alpha = TRUE;
gst_bin_add (GST_BIN (topbin), mixer);
@ -389,11 +384,12 @@ ges_video_transition_create_element (GESTrackElement * object)
/* set up interpolation */
priv->crossfade_control_source =
set_interpolation (GST_OBJECT (priv->mixer_sinka), priv,
"crossfade-ratio", TRUE);
priv->fade_out_control_source =
set_interpolation (GST_OBJECT (priv->mixer_sinka), priv, "alpha");
priv->fade_in_control_source =
set_interpolation (GST_OBJECT (priv->mixer_sinkb), priv, "alpha");
priv->smpte_control_source =
set_interpolation (GST_OBJECT (priv->smpte), priv, "position", FALSE);
set_interpolation (GST_OBJECT (priv->smpte), priv, "position");
priv->mixer = gst_object_ref (mixer);
if (priv->pending_type)
@ -461,12 +457,16 @@ ges_video_transition_update_control_sources (GESVideoTransition * self,
GST_LOG ("updating controller");
if (type == GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE) {
ges_video_transition_update_control_source
(priv->crossfade_control_source, duration, 1.0, 0.0);
(priv->fade_in_control_source, duration, 0.0, 1.0);
ges_video_transition_update_control_source
(priv->fade_out_control_source, duration, 1.0, 0.0);
ges_video_transition_update_control_source (priv->smpte_control_source,
duration, 0.0, 0.0);
} else {
ges_video_transition_update_control_source
(priv->crossfade_control_source, duration, -1.0, -1.0);
(priv->fade_in_control_source, duration, 1.0, 1.0);
ges_video_transition_update_control_source
(priv->fade_out_control_source, duration, 1.0, 1.0);
ges_video_transition_update_control_source (priv->smpte_control_source,
duration, 1.0, 0.0);
}