#include "config.h"
#endif
#include <string.h>
+
#include "gsteffectv.h"
#define GST_TYPE_AGINGTV \
};
/* elementfactory information */
-GstElementDetails gst_agingtv_details = {
+static GstElementDetails gst_agingtv_details = GST_ELEMENT_DETAILS (
"AgingTV",
"Filter/Video/Effect",
- "LGPL",
- "Aply aging effect on video",
- VERSION,
- "Wim Taymans <wim.taymans@chello.be>",
- "(C) 2001 FUKUCHI Kentarou",
-};
+ "Apply aging effect on video",
+ "Wim Taymans <wim.taymans@chello.be>"
+);
/* Filter signals and args */
ARG_0,
};
+static void gst_agingtv_base_init (gpointer g_class);
static void gst_agingtv_class_init (GstAgingTVClass * klass);
static void gst_agingtv_init (GstAgingTV * filter);
if (!agingtv_type) {
static const GTypeInfo agingtv_info = {
- sizeof (GstAgingTVClass), NULL,
+ sizeof (GstAgingTVClass),
+ gst_agingtv_base_init,
NULL,
(GClassInitFunc) gst_agingtv_class_init,
NULL,
}
static void
+gst_agingtv_base_init (gpointer g_class)
+{
+ GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+ gst_element_class_add_pad_template (element_class, gst_effectv_src_factory ());
+ gst_element_class_add_pad_template (element_class, gst_effectv_sink_factory ());
+
+ gst_element_class_set_details (element_class, &gst_agingtv_details);
+}
+
+static void
gst_agingtv_class_init (GstAgingTVClass * klass)
{
GObjectClass *gobject_class;
};
/* elementfactory information */
-GstElementDetails gst_dicetv_details = {
+static GstElementDetails gst_dicetv_details = GST_ELEMENT_DETAILS (
"DiceTV",
"Filter/Video/Effect",
- "LGPL",
"'Dices' the screen up into many small squares",
- VERSION,
- "Wim Taymans <wim.taymans@chello.be>",
- "(c) 2001 Sam Mertens",
-};
+ "Wim Taymans <wim.taymans@chello.be>"
+);
/* Filter signals and args */
ARG_CUBE_BITS,
};
+static void gst_dicetv_base_init (gpointer g_class);
static void gst_dicetv_class_init (GstDiceTVClass * klass);
static void gst_dicetv_init (GstDiceTV * filter);
if (!dicetv_type) {
static const GTypeInfo dicetv_info = {
- sizeof (GstDiceTVClass), NULL,
+ sizeof (GstDiceTVClass),
+ gst_dicetv_base_init,
NULL,
(GClassInitFunc) gst_dicetv_class_init,
NULL,
}
static void
+gst_dicetv_base_init (gpointer g_class)
+{
+ GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+ gst_element_class_add_pad_template (element_class, gst_effectv_src_factory ());
+ gst_element_class_add_pad_template (element_class, gst_effectv_sink_factory ());
+
+ gst_element_class_set_details (element_class, &gst_dicetv_details);
+}
+
+static void
gst_dicetv_class_init (GstDiceTVClass * klass)
{
GObjectClass *gobject_class;
};
/* elementfactory information */
-GstElementDetails gst_edgetv_details = {
+static GstElementDetails gst_edgetv_details = GST_ELEMENT_DETAILS (
"EdgeTV",
"Filter/Video/Effect",
- "LGPL",
- "Aply edge detect on video",
- VERSION,
- "Wim Taymans <wim.taymans@chello.be>",
- "(C) 2001 FUKUCHI Kentarou",
-};
+ "Apply edge detect on video",
+ "Wim Taymans <wim.taymans@chello.be>"
+);
/* Filter signals and args */
ARG_0,
};
+static void gst_edgetv_base_init (gpointer g_class);
static void gst_edgetv_class_init (GstEdgeTVClass * klass);
static void gst_edgetv_init (GstEdgeTV * filter);
if (!edgetv_type) {
static const GTypeInfo edgetv_info = {
- sizeof (GstEdgeTVClass), NULL,
+ sizeof (GstEdgeTVClass),
+ gst_edgetv_base_init,
NULL,
(GClassInitFunc) gst_edgetv_class_init,
NULL,
}
static void
+gst_edgetv_base_init (gpointer g_class)
+{
+ GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+ gst_element_class_add_pad_template (element_class, gst_effectv_src_factory ());
+ gst_element_class_add_pad_template (element_class, gst_effectv_sink_factory ());
+
+ gst_element_class_set_details (element_class, &gst_edgetv_details);
+}
+
+static void
gst_edgetv_class_init (GstEdgeTVClass * klass)
{
GObjectClass *gobject_class;
* Boston, MA 02111-1307, USA.
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include <string.h>
#include <gst/gst.h>
#include <gst/video/video.h>
struct _elements_entry {
gchar *name;
GType (*type) (void);
- GstElementDetails *details;
- gboolean (*factoryinit) (GstElementFactory *factory);
};
static struct _elements_entry _elements[] = {
- { "edgeTV", gst_edgetv_get_type, &gst_edgetv_details, NULL },
- { "agingTV", gst_agingtv_get_type, &gst_agingtv_details, NULL },
- { "diceTV", gst_dicetv_get_type, &gst_dicetv_details, NULL },
- { "warpTV", gst_warptv_get_type, &gst_warptv_details, NULL },
- { "shagadelicTV", gst_shagadelictv_get_type, &gst_shagadelictv_details, NULL },
- { "vertigoTV", gst_vertigotv_get_type, &gst_vertigotv_details, NULL },
- { "revTV", gst_revtv_get_type, &gst_revtv_details, NULL },
- { "quarkTV", gst_quarktv_get_type, &gst_quarktv_details, NULL },
+ { "edgeTV", gst_edgetv_get_type },
+ { "agingTV", gst_agingtv_get_type },
+ { "diceTV", gst_dicetv_get_type },
+ { "warpTV", gst_warptv_get_type },
+ { "shagadelicTV", gst_shagadelictv_get_type },
+ { "vertigoTV", gst_vertigotv_get_type },
+ { "revTV", gst_revtv_get_type },
+ { "quarkTV", gst_quarktv_get_type },
{ NULL, 0 },
};
}
static gboolean
-plugin_init (GModule * module, GstPlugin * plugin)
+plugin_init (GstPlugin * plugin)
{
- GstElementFactory *factory;
gint i = 0;
while (_elements[i].name) {
- factory = gst_element_factory_new (_elements[i].name,
- (_elements[i].type) (),
- _elements[i].details);
-
- if (!factory) {
- g_warning ("gst_effecttv_new failed for `%s'",
- _elements[i].name);
- continue;
- }
- gst_element_factory_add_pad_template (factory, gst_effectv_src_factory ());
- gst_element_factory_add_pad_template (factory, gst_effectv_sink_factory ());
-
- gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory));
- if (_elements[i].factoryinit) {
- _elements[i].factoryinit (factory);
- }
+ if (!gst_element_register (plugin, _elements[i].name,
+ GST_RANK_NONE, (_elements[i].type) ()))
+ return FALSE;
i++;
}
return TRUE;
}
-GstPluginDesc plugin_desc = {
+GST_PLUGIN_DEFINE (
GST_VERSION_MAJOR,
GST_VERSION_MINOR,
"effectv",
- plugin_init
-};
+ "effect plugins from the effectv project",
+ plugin_init,
+ VERSION,
+ "LGPL",
+ "Wim Taymans <wim.taymans@chello.be>, (c) 2001 FUKUCHI Kentarou, (c) 2001 Sam Mertens, (c) 2002 Ed Tannenbaum",
+ GST_PACKAGE,
+ GST_ORIGIN
+);
#include <gst/gst.h>
GType gst_edgetv_get_type (void);
-extern GstElementDetails gst_edgetv_details;
-
GType gst_agingtv_get_type (void);
-extern GstElementDetails gst_agingtv_details;
-
GType gst_dicetv_get_type (void);
-extern GstElementDetails gst_dicetv_details;
-
GType gst_warptv_get_type (void);
-extern GstElementDetails gst_warptv_details;
-
GType gst_shagadelictv_get_type (void);
-extern GstElementDetails gst_shagadelictv_details;
-
GType gst_vertigotv_get_type (void);
-extern GstElementDetails gst_vertigotv_details;
-
GType gst_revtv_get_type (void);
-extern GstElementDetails gst_revtv_details;
-
GType gst_quarktv_get_type (void);
-extern GstElementDetails gst_quarktv_details;
extern GstPadTemplate *gst_effectv_sink_factory ();
extern GstPadTemplate *gst_effectv_src_factory ();
};
/* elementfactory information */
-GstElementDetails gst_quarktv_details = {
+static GstElementDetails gst_quarktv_details = GST_ELEMENT_DETAILS (
"QuarkTV",
"Filter/Video/Effect",
- "LGPL",
- "Motion disolver",
- VERSION,
- "FUKUCHI, Kentarou <fukuchi@users.sourceforge.net>",
- "(C) 2001 FUKUCHI Kentarou",
-};
-
+ "Motion dissolver",
+ "FUKUCHI, Kentarou <fukuchi@users.sourceforge.net>"
+);
/* Filter signals and args */
enum
ARG_PLANES,
};
+static void gst_quarktv_base_init (gpointer g_class);
static void gst_quarktv_class_init (GstQuarkTVClass * klass);
static void gst_quarktv_init (GstQuarkTV * filter);
if (!quarktv_type) {
static const GTypeInfo quarktv_info = {
sizeof (GstQuarkTVClass),
- NULL,
+ gst_quarktv_base_init,
NULL,
(GClassInitFunc) gst_quarktv_class_init,
NULL,
}
static void
+gst_quarktv_base_init (gpointer g_class)
+{
+ GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+ gst_element_class_add_pad_template (element_class, gst_effectv_src_factory ());
+ gst_element_class_add_pad_template (element_class, gst_effectv_sink_factory ());
+
+ gst_element_class_set_details (element_class, &gst_quarktv_details);
+}
+
+static void
gst_quarktv_class_init (GstQuarkTVClass * klass)
{
GObjectClass *gobject_class;
};
/* elementfactory information */
-GstElementDetails gst_revtv_details = {
+static GstElementDetails gst_revtv_details = GST_ELEMENT_DETAILS (
"RevTV",
"Filter/Video/Effect",
- "LGPL",
"A video waveform monitor for each line of video processed",
- VERSION,
- "Wim Taymans <wim.taymans@chello.be>",
- "(C) 2001 FUKUCHI Kentarou,"
- "(c) 2002 Ed Tannenbaum",
-};
+ "Wim Taymans <wim.taymans@chello.be>"
+);
/* Filter signals and args */
ARG_GAIN,
};
+static void gst_revtv_base_init (gpointer g_class);
static void gst_revtv_class_init (GstRevTVClass * klass);
static void gst_revtv_init (GstRevTV * filter);
if (!revtv_type) {
static const GTypeInfo revtv_info = {
- sizeof (GstRevTVClass), NULL,
+ sizeof (GstRevTVClass),
+ gst_revtv_base_init,
NULL,
(GClassInitFunc) gst_revtv_class_init,
NULL,
}
static void
+gst_revtv_base_init (gpointer g_class)
+{
+ GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+ gst_element_class_add_pad_template (element_class, gst_effectv_src_factory ());
+ gst_element_class_add_pad_template (element_class, gst_effectv_sink_factory ());
+
+ gst_element_class_set_details (element_class, &gst_revtv_details);
+}
+
+static void
gst_revtv_class_init (GstRevTVClass * klass)
{
GObjectClass *gobject_class;
};
/* elementfactory information */
-GstElementDetails gst_shagadelictv_details = {
+static GstElementDetails gst_shagadelictv_details = GST_ELEMENT_DETAILS (
"ShagadelicTV",
"Filter/Video/Effect",
- "LGPL",
"Oh behave, ShagedelicTV makes images shagadelic!",
- VERSION,
- "Wim Taymans <wim.taymans@chello.be>",
- "(C) 2001 FUKUCHI Kentarou",
-};
+ "Wim Taymans <wim.taymans@chello.be>"
+);
/* Filter signals and args */
ARG_0,
};
+static void gst_shagadelictv_base_init (gpointer g_class);
static void gst_shagadelictv_class_init (GstShagadelicTVClass * klass);
static void gst_shagadelictv_init (GstShagadelicTV * filter);
if (!shagadelictv_type) {
static const GTypeInfo shagadelictv_info = {
- sizeof (GstShagadelicTVClass), NULL,
+ sizeof (GstShagadelicTVClass),
+ gst_shagadelictv_base_init,
NULL,
(GClassInitFunc) gst_shagadelictv_class_init,
NULL,
}
static void
+gst_shagadelictv_base_init (gpointer g_class)
+{
+ GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+ gst_element_class_add_pad_template (element_class, gst_effectv_src_factory ());
+ gst_element_class_add_pad_template (element_class, gst_effectv_sink_factory ());
+
+ gst_element_class_set_details (element_class, &gst_shagadelictv_details);
+}
+
+static void
gst_shagadelictv_class_init (GstShagadelicTVClass * klass)
{
GObjectClass *gobject_class;
};
/* elementfactory information */
-GstElementDetails gst_vertigotv_details = {
+static GstElementDetails gst_vertigotv_details = GST_ELEMENT_DETAILS (
"VertigoTV",
"Filter/Video/Effect",
- "LGPL",
"A loopback alpha blending effector with rotating and scaling",
- VERSION,
- "Wim Taymans <wim.taymans@chello.be>",
- "(C) 2001 FUKUCHI Kentarou",
-};
+ "Wim Taymans <wim.taymans@chello.be>"
+);
/* Filter signals and args */
ARG_ZOOM_SPEED,
};
+static void gst_vertigotv_base_init (gpointer g_class);
static void gst_vertigotv_class_init (GstVertigoTVClass * klass);
static void gst_vertigotv_init (GstVertigoTV * filter);
if (!vertigotv_type) {
static const GTypeInfo vertigotv_info = {
- sizeof (GstVertigoTVClass), NULL,
+ sizeof (GstVertigoTVClass),
+ gst_vertigotv_base_init,
NULL,
(GClassInitFunc) gst_vertigotv_class_init,
NULL,
}
static void
+gst_vertigotv_base_init (gpointer g_class)
+{
+ GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+ gst_element_class_add_pad_template (element_class, gst_effectv_src_factory ());
+ gst_element_class_add_pad_template (element_class, gst_effectv_sink_factory ());
+
+ gst_element_class_set_details (element_class, &gst_vertigotv_details);
+}
+
+static void
gst_vertigotv_class_init (GstVertigoTVClass * klass)
{
GObjectClass *gobject_class;
};
/* elementfactory information */
-GstElementDetails gst_warptv_details = {
+static GstElementDetails gst_warptv_details = GST_ELEMENT_DETAILS (
"WarpTV",
"Filter/Video/Effect",
- "LGPL",
"WarpTV does realtime goo'ing of the video input",
- VERSION,
- "Sam Lantinga <slouken@devolution.com>",
- "Wim Taymans <wim.taymans@chello.be>, "
- "(C) 2001 FUKUCHI Kentarou",
-};
+ "Sam Lantinga <slouken@devolution.com>"
+);
/* Filter signals and args */
ARG_0,
};
+static void gst_warptv_base_init (gpointer g_class);
static void gst_warptv_class_init (GstWarpTVClass * klass);
static void gst_warptv_init (GstWarpTV * filter);
if (!warptv_type) {
static const GTypeInfo warptv_info = {
- sizeof (GstWarpTVClass), NULL,
+ sizeof (GstWarpTVClass),
+ gst_warptv_base_init,
NULL,
(GClassInitFunc) gst_warptv_class_init,
NULL,
}
static void
+gst_warptv_base_init (gpointer g_class)
+{
+ GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+ gst_element_class_add_pad_template (element_class, gst_effectv_src_factory ());
+ gst_element_class_add_pad_template (element_class, gst_effectv_sink_factory ());
+
+ gst_element_class_set_details (element_class, &gst_warptv_details);
+}
+
+static void
gst_warptv_class_init (GstWarpTVClass * klass)
{
GObjectClass *gobject_class;