From a4210a1ea47562d090f7c96cd01d9043afdfb165 Mon Sep 17 00:00:00 2001 From: Brandon Lewis Date: Wed, 30 Jun 2010 17:50:49 +0200 Subject: [PATCH] check in GESTrackOperation --- docs/libs/ges-sections.txt | 16 ++++++ ges/Makefile.am | 2 + ges/ges-track-operation.c | 118 +++++++++++++++++++++++++++++++++++++++++++++ ges/ges-track-operation.h | 84 ++++++++++++++++++++++++++++++++ ges/ges-types.h | 3 ++ 5 files changed, 223 insertions(+) create mode 100644 ges/ges-track-operation.c create mode 100644 ges/ges-track-operation.h diff --git a/docs/libs/ges-sections.txt b/docs/libs/ges-sections.txt index c88a415..f46eba5 100644 --- a/docs/libs/ges-sections.txt +++ b/docs/libs/ges-sections.txt @@ -80,6 +80,22 @@ ges_track_source_get_type
+ges-track-operation +GESTrackOperation +GESTrackOperation +GESTrackOperationClass +ges_track_operation_get_type +ges_track_operation_new + +GES_IS_TRACK_OPERATION +GES_IS_TRACK_OPERATION_CLASS +GES_TRACK_OPERATION +GES_TRACK_OPERATION_CLASS +GES_TRACK_OPERATION_GET_CLASS +GES_TYPE_TRACK_OPERATION +
+ +
ges-track-filesource GESTrackFileSource GESTrackFileSource diff --git a/ges/Makefile.am b/ges/Makefile.am index 664aec5..0f55b37 100644 --- a/ges/Makefile.am +++ b/ges/Makefile.am @@ -24,6 +24,7 @@ libges_@GST_MAJORMINOR@_la_SOURCES = \ ges-track.c \ ges-track-object.c \ ges-track-source.c \ + ges-track-operation.c \ ges-track-filesource.c \ ges-track-transition.c \ ges-track-audio-transition.c \ @@ -55,6 +56,7 @@ libges_@GST_MAJORMINOR@include_HEADERS = \ ges-track.h \ ges-track-object.h \ ges-track-source.h \ + ges-track-operation.h \ ges-track-filesource.h \ ges-track-transition.h \ ges-track-audio-transition.h \ diff --git a/ges/ges-track-operation.c b/ges/ges-track-operation.c new file mode 100644 index 0000000..a856bca --- /dev/null +++ b/ges/ges-track-operation.c @@ -0,0 +1,118 @@ +/* GStreamer Editing Services + * Copyright (C) 2009 Edward Hervey + * 2009 Nokia Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/** + * SECTION:ges-track-operation + * @short_description: Base Class for single-media operations + */ + +#include "ges-internal.h" +#include "ges-track-object.h" +#include "ges-track-operation.h" + +G_DEFINE_TYPE (GESTrackOperation, ges_track_operation, GES_TYPE_TRACK_OBJECT); + +static void +ges_track_operation_get_property (GObject * object, guint property_id, + GValue * value, GParamSpec * pspec) +{ + switch (property_id) { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +ges_track_operation_set_property (GObject * object, guint property_id, + const GValue * value, GParamSpec * pspec) +{ + switch (property_id) { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +ges_track_operation_dispose (GObject * object) +{ + G_OBJECT_CLASS (ges_track_operation_parent_class)->dispose (object); +} + +static void +ges_track_operation_finalize (GObject * object) +{ + G_OBJECT_CLASS (ges_track_operation_parent_class)->finalize (object); +} + +static gboolean +ges_track_operation_create_gnl_object (GESTrackObject * object) +{ + GESTrackOperationClass *klass = NULL; + GESTrackOperation *self = NULL; + GstElement *child = NULL; + GstElement *gnlobject; + + self = GES_TRACK_OPERATION (object); + klass = GES_TRACK_OPERATION_GET_CLASS (self); + + gnlobject = gst_element_factory_make ("gnloperation", NULL); + + if (klass->create_element) { + child = klass->create_element (self); + + if (G_UNLIKELY (!child)) { + GST_ERROR ("create_element returned NULL"); + return TRUE; + } + + gst_bin_add (GST_BIN (gnlobject), child); + self->element = child; + } + + object->gnlobject = gnlobject; + + return TRUE; +} + +static void +ges_track_operation_class_init (GESTrackOperationClass * klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GESTrackObjectClass *track_class = GES_TRACK_OBJECT_CLASS (klass); + + object_class->get_property = ges_track_operation_get_property; + object_class->set_property = ges_track_operation_set_property; + object_class->dispose = ges_track_operation_dispose; + object_class->finalize = ges_track_operation_finalize; + + track_class->create_gnl_object = ges_track_operation_create_gnl_object; + klass->create_element = NULL; +} + +static void +ges_track_operation_init (GESTrackOperation * self) +{ +} + +GESTrackOperation * +ges_track_operation_new (void) +{ + return g_object_new (GES_TYPE_TRACK_OPERATION, NULL); +} diff --git a/ges/ges-track-operation.h b/ges/ges-track-operation.h new file mode 100644 index 0000000..001ffbe --- /dev/null +++ b/ges/ges-track-operation.h @@ -0,0 +1,84 @@ +/* GStreamer Editing Services + * Copyright (C) 2009 Edward Hervey + * 2009 Nokia Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef _GES_TRACK_OPERATION +#define _GES_TRACK_OPERATION + +#include +#include +#include +#include + +G_BEGIN_DECLS + +#define GES_TYPE_TRACK_OPERATION ges_track_operation_get_type() + +#define GES_TRACK_OPERATION(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), GES_TYPE_TRACK_OPERATION, GESTrackOperation)) + +#define GES_TRACK_OPERATION_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), GES_TYPE_TRACK_OPERATION, GESTrackOperationClass)) + +#define GES_IS_TRACK_OPERATION(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GES_TYPE_TRACK_OPERATION)) + +#define GES_IS_TRACK_OPERATION_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), GES_TYPE_TRACK_OPERATION)) + +#define GES_TRACK_OPERATION_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), GES_TYPE_TRACK_OPERATION, GESTrackOperationClass)) + +/** + * GESTrackOperation: + * @parent: parent + * + * Base class for overlays, transitions, and effects + * + */ + +struct _GESTrackOperation { + /*< public >*/ + GESTrackObject parent; + /*< private >*/ + GstElement *element; +}; + +/** + * GESTrackOperationClass: + * @parent_class: the parent class + * @create_element: method to create the gstreamer element which fills the + * gnlobject + * + * Base class for track objects which produce data but do not consuem it. + * + */ + +struct _GESTrackOperationClass { + GESTrackObjectClass parent_class; + GstElement *(*create_element) (GESTrackOperation *); +}; + +GType ges_track_operation_get_type (void); + +GESTrackOperation* ges_track_operation_new (void); + +G_END_DECLS + +#endif /* _GES_TRACK_OPERATION */ diff --git a/ges/ges-types.h b/ges/ges-types.h index 8e4dbc8..c15884d 100644 --- a/ges/ges-types.h +++ b/ges/ges-types.h @@ -66,6 +66,9 @@ typedef struct _GESTrackObjectClass GESTrackObjectClass; typedef struct _GESTrackSource GESTrackSource; typedef struct _GESTrackSourceClass GESTrackSourceClass; +typedef struct _GESTrackOperation GESTrackOperation; +typedef struct _GESTrackOperationClass GESTrackOperationClass; + typedef struct _GESTrackFileSource GESTrackFileSource; typedef struct _GESTrackFileSourceClass GESTrackFileSourceClass; -- 2.7.4