mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-07 07:58:51 +00:00
ges: Move supported formats from filesource to timelineobject
This is usefull by any subclass of GESTimelineObject + Bind it in python + Fix the keyfile formatter tests API: ges_timeline_object_set_supported_formats API: ges_timeline_object_get_supported_formats
This commit is contained in:
parent
8d15025aae
commit
6386247cc4
6 changed files with 91 additions and 25 deletions
|
@ -674,6 +674,15 @@
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
(define-method set_supported_formats
|
||||||
|
(of-object "GESTimelineObject")
|
||||||
|
(c-name "ges_timeline_object_set_supported_formats")
|
||||||
|
(return-type "none")
|
||||||
|
(parameters
|
||||||
|
'("GESTrackType" "supportedformats")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
(define-method set_is_image
|
(define-method set_is_image
|
||||||
(of-object "GESTimelineFileSource")
|
(of-object "GESTimelineFileSource")
|
||||||
(c-name "ges_timeline_filesource_set_is_image")
|
(c-name "ges_timeline_filesource_set_is_image")
|
||||||
|
@ -707,6 +716,12 @@
|
||||||
(return-type "const-gchar*")
|
(return-type "const-gchar*")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
(define-method get_supported_formats
|
||||||
|
(of-object "GESTimelineObject")
|
||||||
|
(c-name "ges_timeline_object_get_supported_formats")
|
||||||
|
(return-type "GESTrackType")
|
||||||
|
)
|
||||||
|
|
||||||
(define-method get_supported_formats
|
(define-method get_supported_formats
|
||||||
(of-object "GESTimelineFileSource")
|
(of-object "GESTimelineFileSource")
|
||||||
(c-name "ges_timeline_filesource_get_supported_formats")
|
(c-name "ges_timeline_filesource_get_supported_formats")
|
||||||
|
|
|
@ -301,6 +301,8 @@ ges_timeline_object_get_top_effects
|
||||||
ges_timeline_object_get_top_effect_position
|
ges_timeline_object_get_top_effect_position
|
||||||
ges_timeline_object_move_to_layer
|
ges_timeline_object_move_to_layer
|
||||||
ges_timeline_object_set_top_effect_priority
|
ges_timeline_object_set_top_effect_priority
|
||||||
|
ges_timeline_object_set_supported_formats
|
||||||
|
ges_timeline_object_get_supported_formats
|
||||||
<SUBSECTION Standard>
|
<SUBSECTION Standard>
|
||||||
GES_TIMELINE_OBJECT_DURATION
|
GES_TIMELINE_OBJECT_DURATION
|
||||||
GES_TIMELINE_OBJECT_INPOINT
|
GES_TIMELINE_OBJECT_INPOINT
|
||||||
|
|
|
@ -44,10 +44,6 @@ struct _GESTimelineFileSourcePrivate
|
||||||
gboolean is_image;
|
gboolean is_image;
|
||||||
|
|
||||||
guint64 maxduration;
|
guint64 maxduration;
|
||||||
|
|
||||||
/* The formats supported by this filesource
|
|
||||||
* TODO : Could maybe be moved to a parent class */
|
|
||||||
GESTrackType supportedformats;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum
|
enum
|
||||||
|
@ -56,7 +52,6 @@ enum
|
||||||
PROP_URI,
|
PROP_URI,
|
||||||
PROP_MAX_DURATION,
|
PROP_MAX_DURATION,
|
||||||
PROP_MUTE,
|
PROP_MUTE,
|
||||||
PROP_SUPPORTED_FORMATS,
|
|
||||||
PROP_IS_IMAGE,
|
PROP_IS_IMAGE,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -81,9 +76,6 @@ ges_timeline_filesource_get_property (GObject * object, guint property_id,
|
||||||
case PROP_MAX_DURATION:
|
case PROP_MAX_DURATION:
|
||||||
g_value_set_uint64 (value, priv->maxduration);
|
g_value_set_uint64 (value, priv->maxduration);
|
||||||
break;
|
break;
|
||||||
case PROP_SUPPORTED_FORMATS:
|
|
||||||
g_value_set_flags (value, priv->supportedformats);
|
|
||||||
break;
|
|
||||||
case PROP_IS_IMAGE:
|
case PROP_IS_IMAGE:
|
||||||
g_value_set_boolean (value, priv->is_image);
|
g_value_set_boolean (value, priv->is_image);
|
||||||
break;
|
break;
|
||||||
|
@ -109,10 +101,6 @@ ges_timeline_filesource_set_property (GObject * object, guint property_id,
|
||||||
ges_timeline_filesource_set_max_duration (tfs,
|
ges_timeline_filesource_set_max_duration (tfs,
|
||||||
g_value_get_uint64 (value));
|
g_value_get_uint64 (value));
|
||||||
break;
|
break;
|
||||||
case PROP_SUPPORTED_FORMATS:
|
|
||||||
ges_timeline_filesource_set_supported_formats (tfs,
|
|
||||||
g_value_get_flags (value));
|
|
||||||
break;
|
|
||||||
case PROP_IS_IMAGE:
|
case PROP_IS_IMAGE:
|
||||||
ges_timeline_filesource_set_is_image (tfs, g_value_get_boolean (value));
|
ges_timeline_filesource_set_is_image (tfs, g_value_get_boolean (value));
|
||||||
break;
|
break;
|
||||||
|
@ -175,16 +163,6 @@ ges_timeline_filesource_class_init (GESTimelineFileSourceClass * klass)
|
||||||
g_param_spec_boolean ("mute", "Mute", "Mute audio track",
|
g_param_spec_boolean ("mute", "Mute", "Mute audio track",
|
||||||
FALSE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
|
FALSE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
|
||||||
|
|
||||||
/**
|
|
||||||
* GESTimelineFileSource:supported-formats:
|
|
||||||
*
|
|
||||||
* The formats supported by the filesource.
|
|
||||||
*/
|
|
||||||
g_object_class_install_property (object_class, PROP_SUPPORTED_FORMATS,
|
|
||||||
g_param_spec_flags ("supported-formats", "Supported formats",
|
|
||||||
"Formats supported by the file", GES_TYPE_TRACK_TYPE,
|
|
||||||
GES_TRACK_TYPE_UNKNOWN, G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GESTimelineFileSource:is-image:
|
* GESTimelineFileSource:is-image:
|
||||||
*
|
*
|
||||||
|
@ -276,7 +254,8 @@ void
|
||||||
ges_timeline_filesource_set_supported_formats (GESTimelineFileSource * self,
|
ges_timeline_filesource_set_supported_formats (GESTimelineFileSource * self,
|
||||||
GESTrackType supportedformats)
|
GESTrackType supportedformats)
|
||||||
{
|
{
|
||||||
self->priv->supportedformats = supportedformats;
|
ges_timeline_object_set_supported_formats (GES_TIMELINE_OBJECT (self),
|
||||||
|
supportedformats);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -360,7 +339,7 @@ ges_timeline_filesource_get_uri (GESTimelineFileSource * self)
|
||||||
GESTrackType
|
GESTrackType
|
||||||
ges_timeline_filesource_get_supported_formats (GESTimelineFileSource * self)
|
ges_timeline_filesource_get_supported_formats (GESTimelineFileSource * self)
|
||||||
{
|
{
|
||||||
return self->priv->supportedformats;
|
return ges_timeline_object_get_supported_formats (GES_TIMELINE_OBJECT (self));
|
||||||
}
|
}
|
||||||
|
|
||||||
static GESTrackObject *
|
static GESTrackObject *
|
||||||
|
@ -370,7 +349,7 @@ ges_timeline_filesource_create_track_object (GESTimelineObject * obj,
|
||||||
GESTimelineFileSourcePrivate *priv = GES_TIMELINE_FILE_SOURCE (obj)->priv;
|
GESTimelineFileSourcePrivate *priv = GES_TIMELINE_FILE_SOURCE (obj)->priv;
|
||||||
GESTrackObject *res;
|
GESTrackObject *res;
|
||||||
|
|
||||||
if (!(priv->supportedformats & track->type)) {
|
if (!(ges_timeline_object_get_supported_formats (obj) & track->type)) {
|
||||||
GST_DEBUG ("We don't support this track format");
|
GST_DEBUG ("We don't support this track format");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -124,6 +124,9 @@ struct _GESTimelineObjectPrivate
|
||||||
GList *mappings;
|
GList *mappings;
|
||||||
|
|
||||||
guint nb_effects;
|
guint nb_effects;
|
||||||
|
|
||||||
|
/* The formats supported by this TimelineObject */
|
||||||
|
GESTrackType supportedformats;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum
|
enum
|
||||||
|
@ -135,6 +138,7 @@ enum
|
||||||
PROP_PRIORITY,
|
PROP_PRIORITY,
|
||||||
PROP_HEIGHT,
|
PROP_HEIGHT,
|
||||||
PROP_LAYER,
|
PROP_LAYER,
|
||||||
|
PROP_SUPPORTED_FORMATS,
|
||||||
PROP_LAST
|
PROP_LAST
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -165,6 +169,9 @@ ges_timeline_object_get_property (GObject * object, guint property_id,
|
||||||
case PROP_LAYER:
|
case PROP_LAYER:
|
||||||
g_value_set_object (value, tobj->priv->layer);
|
g_value_set_object (value, tobj->priv->layer);
|
||||||
break;
|
break;
|
||||||
|
case PROP_SUPPORTED_FORMATS:
|
||||||
|
g_value_set_flags (value, tobj->priv->supportedformats);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||||
}
|
}
|
||||||
|
@ -192,6 +199,10 @@ ges_timeline_object_set_property (GObject * object, guint property_id,
|
||||||
ges_timeline_object_set_priority_internal (tobj,
|
ges_timeline_object_set_priority_internal (tobj,
|
||||||
g_value_get_uint (value));
|
g_value_get_uint (value));
|
||||||
break;
|
break;
|
||||||
|
case PROP_SUPPORTED_FORMATS:
|
||||||
|
ges_timeline_object_set_supported_formats (tobj,
|
||||||
|
g_value_get_flags (value));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||||
}
|
}
|
||||||
|
@ -268,6 +279,21 @@ ges_timeline_object_class_init (GESTimelineObjectClass * klass)
|
||||||
g_object_class_install_property (object_class, PROP_HEIGHT,
|
g_object_class_install_property (object_class, PROP_HEIGHT,
|
||||||
properties[PROP_HEIGHT]);
|
properties[PROP_HEIGHT]);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GESTimelineObject:supported-formats:
|
||||||
|
*
|
||||||
|
* The formats supported by the object.
|
||||||
|
*
|
||||||
|
* Since: 0.10.XX
|
||||||
|
*/
|
||||||
|
properties[PROP_SUPPORTED_FORMATS] = g_param_spec_flags ("supported-formats",
|
||||||
|
"Supported formats", "Formats supported by the file",
|
||||||
|
GES_TYPE_TRACK_TYPE, GES_TRACK_TYPE_UNKNOWN,
|
||||||
|
G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
|
||||||
|
|
||||||
|
g_object_class_install_property (object_class, PROP_SUPPORTED_FORMATS,
|
||||||
|
properties[PROP_SUPPORTED_FORMATS]);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GESTimelineObject:layer
|
* GESTimelineObject:layer
|
||||||
*
|
*
|
||||||
|
@ -1173,6 +1199,38 @@ update_height (GESTimelineObject * object)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ges_timeline_object_set_supported_formats:
|
||||||
|
* @self: the #GESTimelineObject to set supported formats on
|
||||||
|
* @supportedformats: the #GESTrackType defining formats supported by @self
|
||||||
|
*
|
||||||
|
* Sets the formats supported by the file.
|
||||||
|
*
|
||||||
|
* Since: 0.10.XX
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
ges_timeline_object_set_supported_formats (GESTimelineObject * self,
|
||||||
|
GESTrackType supportedformats)
|
||||||
|
{
|
||||||
|
self->priv->supportedformats = supportedformats;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ges_timeline_object_get_supported_formats:
|
||||||
|
* @self: the #GESTimelineObject
|
||||||
|
*
|
||||||
|
* Get the formats supported by @self.
|
||||||
|
*
|
||||||
|
* Returns: The formats supported by @self.
|
||||||
|
*
|
||||||
|
* Since: 0.10.XX
|
||||||
|
*/
|
||||||
|
GESTrackType
|
||||||
|
ges_timeline_object_get_supported_formats (GESTimelineObject * self)
|
||||||
|
{
|
||||||
|
return self->priv->supportedformats;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* PROPERTY NOTIFICATIONS FROM TRACK OBJECTS
|
* PROPERTY NOTIFICATIONS FROM TRACK OBJECTS
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include <glib-object.h>
|
#include <glib-object.h>
|
||||||
#include <gst/gst.h>
|
#include <gst/gst.h>
|
||||||
#include <ges/ges-types.h>
|
#include <ges/ges-types.h>
|
||||||
|
#include <ges/ges-track.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
@ -282,6 +283,13 @@ ges_timeline_object_set_top_effect_priority (GESTimelineObject *object,
|
||||||
GESTrackEffect *effect,
|
GESTrackEffect *effect,
|
||||||
guint newpriority);
|
guint newpriority);
|
||||||
|
|
||||||
|
GESTrackType
|
||||||
|
ges_timeline_object_get_supported_formats (GESTimelineObject * self);
|
||||||
|
|
||||||
|
void
|
||||||
|
ges_timeline_object_set_supported_formats (GESTimelineObject * self,
|
||||||
|
GESTrackType supportedformats);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* _GES_TIMELINE_OBJECT */
|
#endif /* _GES_TIMELINE_OBJECT */
|
||||||
|
|
|
@ -119,6 +119,7 @@ GST_START_TEST (test_keyfile_save)
|
||||||
KEY ("Object0", "in-point", "0");
|
KEY ("Object0", "in-point", "0");
|
||||||
KEY ("Object0", "duration", "2000000000");
|
KEY ("Object0", "duration", "2000000000");
|
||||||
KEY ("Object0", "priority", "2");
|
KEY ("Object0", "priority", "2");
|
||||||
|
KEY ("Object0", "supported-formats", "GES_TRACK_TYPE_UNKNOWN");
|
||||||
KEY ("Object0", "mute", "false");
|
KEY ("Object0", "mute", "false");
|
||||||
KEY ("Object0", "vpattern", "100% Black");
|
KEY ("Object0", "vpattern", "100% Black");
|
||||||
KEY ("Object0", "freq", "440");
|
KEY ("Object0", "freq", "440");
|
||||||
|
@ -138,6 +139,7 @@ GST_START_TEST (test_keyfile_save)
|
||||||
KEY ("Object1", "in-point", "0");
|
KEY ("Object1", "in-point", "0");
|
||||||
KEY ("Object1", "duration", "500000000");
|
KEY ("Object1", "duration", "500000000");
|
||||||
KEY ("Object1", "priority", "1");
|
KEY ("Object1", "priority", "1");
|
||||||
|
KEY ("Object1", "supported-formats", "GES_TRACK_TYPE_UNKNOWN");
|
||||||
KEY ("Object1", "vtype", "A bar moves from left to right");
|
KEY ("Object1", "vtype", "A bar moves from left to right");
|
||||||
COMPARE;
|
COMPARE;
|
||||||
|
|
||||||
|
@ -152,6 +154,7 @@ GST_START_TEST (test_keyfile_save)
|
||||||
KEY ("Object2", "in-point", "0");
|
KEY ("Object2", "in-point", "0");
|
||||||
KEY ("Object2", "duration", "2000000000");
|
KEY ("Object2", "duration", "2000000000");
|
||||||
KEY ("Object2", "priority", "3");
|
KEY ("Object2", "priority", "3");
|
||||||
|
KEY ("Object2", "supported-formats", "GES_TRACK_TYPE_UNKNOWN");
|
||||||
KEY ("Object2", "mute", "false");
|
KEY ("Object2", "mute", "false");
|
||||||
KEY ("Object2", "vpattern", "100% Black");
|
KEY ("Object2", "vpattern", "100% Black");
|
||||||
KEY ("Object2", "freq", "440");
|
KEY ("Object2", "freq", "440");
|
||||||
|
@ -182,6 +185,7 @@ GST_START_TEST (test_keyfile_save)
|
||||||
KEY ("Object3", "in-point", "0");
|
KEY ("Object3", "in-point", "0");
|
||||||
KEY ("Object3", "duration", "1000000000");
|
KEY ("Object3", "duration", "1000000000");
|
||||||
KEY ("Object3", "priority", "0");
|
KEY ("Object3", "priority", "0");
|
||||||
|
KEY ("Object3", "supported-formats", "GES_TRACK_TYPE_UNKNOWN");
|
||||||
KEY ("Object3", "mute", "false");
|
KEY ("Object3", "mute", "false");
|
||||||
KEY ("Object3", "text", "\"the\\\\ quick\\\\ brown\\\\ fox\"");
|
KEY ("Object3", "text", "\"the\\\\ quick\\\\ brown\\\\ fox\"");
|
||||||
KEY ("Object3", "font-desc", "\"Serif\\\\ 36\"");
|
KEY ("Object3", "font-desc", "\"Serif\\\\ 36\"");
|
||||||
|
|
Loading…
Reference in a new issue