Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3738>
/*********************************************
- * GESTrackElement subclasses contructores *
+ * GESTrackElement subclasses constructors *
********************************************/
G_GNUC_INTERNAL GESAudioTestSource * ges_audio_test_source_new (void);
G_GNUC_INTERNAL GESAudioUriSource * ges_audio_uri_source_new (gchar *uri);
}
g_object_set (mixer_pad, "xpos", meta->posx, "ypos",
- meta->posy, "width", meta->width, "height", meta->height,
- "operator", meta->operator, NULL);
+ meta->posy, "width", meta->width, "height", meta->height, NULL);
+
+ if (self->ABI.abi.has_operator)
+ g_object_set (mixer_pad, "operator", meta->operator, NULL);
}
/****************************************************
self->mixer =
gst_element_factory_create (ges_get_compositor_factory (), cname);
+ self->ABI.abi.has_operator =
+ gst_compositor_operator_get_type_and_default_value (NULL) != G_TYPE_NONE;
g_free (cname);
if (GST_IS_BIN (self->mixer)) {
GstCaps *caps;
gboolean is_transition;
- gpointer _ges_reserved[GES_PADDING];
+ union {
+ gpointer _ges_reserved[GES_PADDING];
+
+ struct {
+ gboolean has_operator;
+ } abi;
+
+ } ABI;
};
G_GNUC_INTERNAL
G_DEFINE_TYPE (GstFramePositioner, gst_frame_positioner,
GST_TYPE_BASE_TRANSFORM);
-static GType
+GType
gst_compositor_operator_get_type_and_default_value (int *default_operator_value)
{
static gsize _init = 0;
g_once_init_leave (&_init, 1);
}
- *default_operator_value = operator_value;
+ if (default_operator_value)
+ *default_operator_value = operator_value;
return operator_gtype;
}
*
* The blending operator for the source.
*/
- if (operator_gtype) {
+ if (operator_gtype != G_TYPE_NONE) {
properties[PROP_OPERATOR] =
g_param_spec_enum ("operator", "Operator",
"Blending operator to use for blending this pad over the previous ones",
gint operator;
};
+G_GNUC_INTERNAL GType gst_compositor_operator_get_type_and_default_value (int *default_operator_value);
G_GNUC_INTERNAL void ges_frame_positioner_set_source_and_filter (GstFramePositioner *pos,
GESTrackElement *trksrc,
GstElement *capsfilter);