mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-23 02:01:12 +00:00
ges: Use assets to instantiate track elements/group
And deprecate all GESTrackElement constructors, but the GESEffect one. Those should **never** be created by users and should become internal in the future. Stop having docstring for the constructors that were internal.
This commit is contained in:
parent
cec1dd3302
commit
ffc11daa40
15 changed files with 86 additions and 39 deletions
|
@ -182,6 +182,7 @@ ges_audio_source_class_init (GESAudioSourceClass * klass)
|
|||
gobject_class->dispose = ges_audio_source_dispose;
|
||||
track_class->nleobject_factorytype = "nlesource";
|
||||
track_class->create_element = ges_audio_source_create_element;
|
||||
track_class->ABI.abi.default_track_type = GES_TRACK_TYPE_AUDIO;
|
||||
audio_source_class->create_source = NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -199,16 +199,18 @@ ges_audio_test_source_get_volume (GESAudioTestSource * self)
|
|||
return g_value_get_double (&val);
|
||||
}
|
||||
|
||||
/**
|
||||
* ges_audio_test_source_new:
|
||||
*
|
||||
* Creates a new #GESAudioTestSource.
|
||||
/* Creates a new #GESAudioTestSource.
|
||||
*
|
||||
* Returns: (transfer floating) (nullable): The newly created #GESAudioTestSource.
|
||||
*/
|
||||
GESAudioTestSource *
|
||||
ges_audio_test_source_new (void)
|
||||
{
|
||||
return g_object_new (GES_TYPE_AUDIO_TEST_SOURCE, "track-type",
|
||||
GES_TRACK_TYPE_AUDIO, NULL);
|
||||
GESAudioTestSource *res;
|
||||
GESAsset *asset = ges_asset_request (GES_TYPE_AUDIO_TEST_SOURCE, NULL, NULL);
|
||||
|
||||
res = GES_AUDIO_TEST_SOURCE (ges_asset_extract (asset, NULL));
|
||||
gst_object_unref (asset);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
|
|
@ -90,6 +90,7 @@ ges_audio_transition_class_init (GESAudioTransitionClass * klass)
|
|||
object_class->finalize = ges_audio_transition_finalize;
|
||||
|
||||
toclass->create_element = ges_audio_transition_create_element;
|
||||
toclass->ABI.abi.default_track_type = GES_TRACK_TYPE_AUDIO;
|
||||
|
||||
}
|
||||
|
||||
|
@ -289,10 +290,18 @@ ges_audio_transition_duration_changed (GESTrackElement * track_element,
|
|||
* Creates a new #GESAudioTransition.
|
||||
*
|
||||
* Returns: (transfer floating): The newly created #GESAudioTransition.
|
||||
*
|
||||
* Deprecated: 1.18: This should never be called by applications as this will
|
||||
* be created by clips.
|
||||
*/
|
||||
GESAudioTransition *
|
||||
ges_audio_transition_new (void)
|
||||
{
|
||||
return g_object_new (GES_TYPE_AUDIO_TRANSITION, "track-type",
|
||||
GES_TRACK_TYPE_AUDIO, NULL);
|
||||
GESAudioTransition *res;
|
||||
GESAsset *asset = ges_asset_request (GES_TYPE_AUDIO_TRANSITION, NULL, NULL);
|
||||
|
||||
res = GES_AUDIO_TRANSITION (ges_asset_extract (asset, NULL));
|
||||
gst_object_unref (asset);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
|
|
@ -51,7 +51,7 @@ struct _GESAudioTransitionClass {
|
|||
gpointer _ges_reserved[GES_PADDING];
|
||||
};
|
||||
|
||||
GES_API
|
||||
GES_DEPRECATED
|
||||
GESAudioTransition* ges_audio_transition_new (void);
|
||||
|
||||
G_END_DECLS
|
||||
|
|
|
@ -242,11 +242,8 @@ _create_track_element (GESClip * self, GESTrackType type)
|
|||
bin_description = effect->priv->audio_bin_description;
|
||||
}
|
||||
|
||||
if (bin_description) {
|
||||
/* FIXME Work with a GESAsset here! */
|
||||
return g_object_new (GES_TYPE_EFFECT, "bin-description",
|
||||
bin_description, "track-type", type, NULL);
|
||||
}
|
||||
if (bin_description)
|
||||
return GES_TRACK_ELEMENT (ges_effect_new (bin_description));
|
||||
|
||||
GST_WARNING ("Effect doesn't handle this track type");
|
||||
return NULL;
|
||||
|
|
|
@ -879,5 +879,11 @@ ges_group_init (GESGroup * self)
|
|||
GESGroup *
|
||||
ges_group_new (void)
|
||||
{
|
||||
return g_object_new (GES_TYPE_GROUP, NULL);
|
||||
GESGroup *res;
|
||||
GESAsset *asset = ges_asset_request (GES_TYPE_GROUP, NULL, NULL);
|
||||
|
||||
res = GES_GROUP (ges_asset_extract (asset, NULL));
|
||||
gst_object_unref (asset);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
|
|
@ -69,14 +69,15 @@ static void
|
|||
ges_text_overlay_class_init (GESTextOverlayClass * klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
GESTrackElementClass *bg_class = GES_TRACK_ELEMENT_CLASS (klass);
|
||||
GESTrackElementClass *track_element_class = GES_TRACK_ELEMENT_CLASS (klass);
|
||||
|
||||
object_class->get_property = ges_text_overlay_get_property;
|
||||
object_class->set_property = ges_text_overlay_set_property;
|
||||
object_class->dispose = ges_text_overlay_dispose;
|
||||
object_class->finalize = ges_text_overlay_finalize;
|
||||
|
||||
bg_class->create_element = ges_text_overlay_create_element;
|
||||
track_element_class->create_element = ges_text_overlay_create_element;
|
||||
track_element_class->ABI.abi.default_track_type = GES_TRACK_TYPE_VIDEO;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -429,10 +430,18 @@ ges_text_overlay_get_ypos (GESTextOverlay * self)
|
|||
*
|
||||
* Returns: (transfer floating) (nullable): The newly created #GESTextOverlay or
|
||||
* %NULL if something went wrong.
|
||||
*
|
||||
* Deprecated: 1.18: This should never be called by applications as this will
|
||||
* be created by clips.
|
||||
*/
|
||||
GESTextOverlay *
|
||||
ges_text_overlay_new (void)
|
||||
{
|
||||
return g_object_new (GES_TYPE_TEXT_OVERLAY, "track-type",
|
||||
GES_TRACK_TYPE_VIDEO, NULL);
|
||||
GESTextOverlay *res;
|
||||
GESAsset *asset = ges_asset_request (GES_TYPE_TEXT_OVERLAY, NULL, NULL);
|
||||
|
||||
res = GES_TEXT_OVERLAY (ges_asset_extract (asset, NULL));
|
||||
gst_object_unref (asset);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
|
|
@ -77,7 +77,7 @@ GES_API
|
|||
void ges_text_overlay_set_ypos (GESTextOverlay * self,
|
||||
gdouble position);
|
||||
|
||||
GES_API
|
||||
GES_DEPRECATED
|
||||
GESTextOverlay *ges_text_overlay_new (void);
|
||||
|
||||
GES_API
|
||||
|
|
|
@ -559,8 +559,7 @@ ges_title_source_get_ypos (GESTitleSource * source)
|
|||
return ypos;
|
||||
}
|
||||
|
||||
/**
|
||||
* ges_title_source_new:
|
||||
/* ges_title_source_new:
|
||||
*
|
||||
* Creates a new #GESTitleSource.
|
||||
*
|
||||
|
@ -570,6 +569,11 @@ ges_title_source_get_ypos (GESTitleSource * source)
|
|||
GESTitleSource *
|
||||
ges_title_source_new (void)
|
||||
{
|
||||
return g_object_new (GES_TYPE_TITLE_SOURCE, "track-type",
|
||||
GES_TRACK_TYPE_VIDEO, NULL);
|
||||
GESTitleSource *res;
|
||||
GESAsset *asset = ges_asset_request (GES_TYPE_TITLE_SOURCE, NULL, NULL);
|
||||
|
||||
res = GES_TITLE_SOURCE (ges_asset_extract (asset, NULL));
|
||||
gst_object_unref (asset);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
|
|
@ -313,8 +313,11 @@ ges_track_element_constructed (GObject * gobject)
|
|||
|
||||
/* set the default has-internal-source */
|
||||
ges_track_element_set_has_internal_source (GES_TRACK_ELEMENT (gobject),
|
||||
GES_TRACK_ELEMENT_CLASS_DEFAULT_HAS_INTERNAL_SOURCE
|
||||
(GES_TRACK_ELEMENT_GET_CLASS (gobject)));
|
||||
GES_TRACK_ELEMENT_CLASS_DEFAULT_HAS_INTERNAL_SOURCE (class));
|
||||
|
||||
if (object->priv->track_type == GES_TRACK_TYPE_UNKNOWN)
|
||||
ges_track_element_set_track_type (GES_TRACK_ELEMENT (gobject),
|
||||
class->ABI.abi.default_track_type);
|
||||
|
||||
G_OBJECT_CLASS (ges_track_element_parent_class)->constructed (gobject);
|
||||
}
|
||||
|
@ -454,6 +457,7 @@ ges_track_element_class_init (GESTrackElementClass * klass)
|
|||
|
||||
klass->create_gnl_object = ges_track_element_create_gnl_object_func;
|
||||
klass->lookup_child = _lookup_child;
|
||||
klass->ABI.abi.default_track_type = GES_TRACK_TYPE_UNKNOWN;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -81,6 +81,8 @@ struct _GESTrackElement {
|
|||
* @default_has_internal_source: What the default
|
||||
* #GESTrackElement:has-internal-source value should be for new elements
|
||||
* from this class.
|
||||
* @default_track_type: What the default #GESTrackElement:track-type value
|
||||
* should be for new elements from this class.
|
||||
*/
|
||||
struct _GESTrackElementClass {
|
||||
/*< private >*/
|
||||
|
@ -106,12 +108,12 @@ struct _GESTrackElementClass {
|
|||
const gchar *prop_name,
|
||||
GstElement **element,
|
||||
GParamSpec **pspec);
|
||||
/*< private >*/
|
||||
/* Padding for API extension */
|
||||
/*< protected >*/
|
||||
union {
|
||||
gpointer _ges_reserved[GES_PADDING_LARGE];
|
||||
struct {
|
||||
gboolean default_has_internal_source;
|
||||
GESTrackType default_track_type;
|
||||
} abi;
|
||||
} ABI;
|
||||
};
|
||||
|
|
|
@ -240,6 +240,8 @@ ges_video_source_class_init (GESVideoSourceClass * klass)
|
|||
|
||||
track_element_class->nleobject_factorytype = "nlesource";
|
||||
track_element_class->create_element = ges_video_source_create_element;
|
||||
track_element_class->ABI.abi.default_track_type = GES_TRACK_TYPE_VIDEO;
|
||||
|
||||
video_source_class->create_source = NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -438,8 +438,7 @@ ges_video_test_source_get_pattern (GESVideoTestSource * source)
|
|||
return g_value_get_enum (&val);
|
||||
}
|
||||
|
||||
/**
|
||||
* ges_video_test_source_new:
|
||||
/* ges_video_test_source_new:
|
||||
*
|
||||
* Creates a new #GESVideoTestSource.
|
||||
*
|
||||
|
@ -449,6 +448,11 @@ ges_video_test_source_get_pattern (GESVideoTestSource * source)
|
|||
GESVideoTestSource *
|
||||
ges_video_test_source_new (void)
|
||||
{
|
||||
return g_object_new (GES_TYPE_VIDEO_TEST_SOURCE, "track-type",
|
||||
GES_TRACK_TYPE_VIDEO, NULL);
|
||||
GESVideoTestSource *res;
|
||||
GESAsset *asset = ges_asset_request (GES_TYPE_VIDEO_TEST_SOURCE, NULL, NULL);
|
||||
|
||||
res = GES_VIDEO_TEST_SOURCE (ges_asset_extract (asset, NULL));
|
||||
gst_object_unref (asset);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
|
|
@ -139,6 +139,7 @@ ges_video_transition_class_init (GESVideoTransitionClass * klass)
|
|||
GObjectClass *object_class;
|
||||
GESTrackElementClass *toclass;
|
||||
GESTimelineElementClass *element_class = GES_TIMELINE_ELEMENT_CLASS (klass);
|
||||
GESTrackElementClass *track_element_class = GES_TRACK_ELEMENT_CLASS (klass);
|
||||
|
||||
object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
|
@ -147,6 +148,8 @@ ges_video_transition_class_init (GESVideoTransitionClass * klass)
|
|||
object_class->dispose = ges_video_transition_dispose;
|
||||
object_class->finalize = ges_video_transition_finalize;
|
||||
|
||||
track_element_class->ABI.abi.default_track_type = GES_TRACK_TYPE_VIDEO;
|
||||
|
||||
/**
|
||||
* GESVideoTransition:border:
|
||||
*
|
||||
|
@ -672,8 +675,7 @@ ges_video_transition_get_transition_type (GESVideoTransition * trans)
|
|||
return trans->priv->type;
|
||||
}
|
||||
|
||||
/**
|
||||
* ges_video_transition_new:
|
||||
/* ges_video_transition_new:
|
||||
*
|
||||
* Creates a new #GESVideoTransition.
|
||||
*
|
||||
|
@ -683,6 +685,11 @@ ges_video_transition_get_transition_type (GESVideoTransition * trans)
|
|||
GESVideoTransition *
|
||||
ges_video_transition_new (void)
|
||||
{
|
||||
return g_object_new (GES_TYPE_VIDEO_TRANSITION, "track-type",
|
||||
GES_TRACK_TYPE_VIDEO, NULL);
|
||||
GESVideoTransition *res;
|
||||
GESAsset *asset = ges_asset_request (GES_TYPE_VIDEO_TRANSITION, NULL, NULL);
|
||||
|
||||
res = GES_VIDEO_TRANSITION (ges_asset_extract (asset, NULL));
|
||||
gst_object_unref (asset);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
|
|
@ -58,7 +58,7 @@ struct _GESVideoTransitionClass {
|
|||
gpointer _ges_reserved[GES_PADDING];
|
||||
};
|
||||
|
||||
GES_API
|
||||
GES_DEPRECATED
|
||||
GESVideoTransition* ges_video_transition_new (void);
|
||||
|
||||
GES_API
|
||||
|
|
Loading…
Reference in a new issue