#include "config.h"
#endif
+#include "gstglelements.h"
#include "caopengllayersink.h"
#include "gstglsinkbin.h"
#include <QuartzCore/QuartzCore.h>
G_DEFINE_TYPE (GstCAOpenGLLayerSinkBin, gst_ca_opengl_layer_sink_bin,
GST_TYPE_GL_SINK_BIN);
+#define _do_init \
+ gl_element_init (plugin);
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (caopengllayersink, "caopengllayersink",
+ GST_RANK_NONE, GST_TYPE_CA_OPENGL_LAYER_SINK, _do_init);
+
enum
{
PROP_BIN_0,
#include "config.h"
#endif
+#include "gstglelements.h"
#include "gstglalpha.h"
#include <string.h>
#include <math.h>
#define gst_gl_alpha_parent_class parent_class
G_DEFINE_TYPE (GstGLAlpha, gst_gl_alpha, GST_TYPE_GL_FILTER);
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (glalpha, "glalpha",
+ GST_RANK_NONE, GST_TYPE_GL_ALPHA, gl_element_init (plugin));
static gboolean
gst_gl_alpha_is_passthrough (GstGLAlpha * glalpha)
#include <stdlib.h>
#include <png.h>
+
+#include "gstglelements.h"
#include "gstglbumper.h"
#if PNG_LIBPNG_VER >= 10400
G_DEFINE_TYPE_WITH_CODE (GstGLBumper, gst_gl_bumper, GST_TYPE_GL_FILTER,
DEBUG_INIT);
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (glbumper, "glbumper",
+ GST_RANK_NONE, GST_TYPE_GL_BUMPER, gl_element_init (plugin));
static void gst_gl_bumper_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
#include <gst/math-compat.h>
#include <gst/video/colorbalance.h>
+#include "gstglelements.h"
#include "gstglcolorbalance.h"
GST_DEBUG_CATEGORY_STATIC (glcolorbalance_debug);
GST_TYPE_GL_FILTER,
G_IMPLEMENT_INTERFACE (GST_TYPE_COLOR_BALANCE,
gst_gl_color_balance_colorbalance_init));
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (glcolorbalance, "glcolorbalance",
+ GST_RANK_NONE, GST_TYPE_GL_COLOR_BALANCE, gl_element_init (plugin));
static GstCaps *
gcb_transform_internal_caps (GstGLFilter * filter,
#endif
#include <gst/gl/gl.h>
+
+#include "gstglelements.h"
#include "gstglcolorconvertelement.h"
GST_DEBUG_CATEGORY_STATIC (gst_gl_color_convert_element_debug);
GST_DEBUG_CATEGORY_INIT (gst_gl_color_convert_element_debug,
"glconvertelement", 0, "convert");
);
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (glcolorconvert, "glcolorconvert",
+ GST_RANK_NONE, GST_TYPE_GL_COLOR_CONVERT_ELEMENT, gl_element_init (plugin));
static gboolean gst_gl_color_convert_element_gl_set_caps (GstGLBaseFilter *
base_filter, GstCaps * in_caps, GstCaps * out_caps);
#include "config.h"
#endif
+#include "gstglelements.h"
#include "gstglcolorscale.h"
#define GST_CAT_DEFAULT gst_gl_colorscale_debug
#define gst_gl_colorscale_parent_class parent_class
G_DEFINE_TYPE_WITH_CODE (GstGLColorscale, gst_gl_colorscale,
GST_TYPE_GL_FILTER, DEBUG_INIT);
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (glcolorscale, "glcolorscale",
+ GST_RANK_NONE, GST_TYPE_GL_COLORSCALE, gl_element_init (plugin));
static void gst_gl_colorscale_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
#include <gst/gl/gstglfuncs.h>
+#include "gstglelements.h"
#include "gstgldeinterlace.h"
#define GST_CAT_DEFAULT gst_gl_deinterlace_debug
#define gst_gl_deinterlace_parent_class parent_class
G_DEFINE_TYPE_WITH_CODE (GstGLDeinterlace, gst_gl_deinterlace,
GST_TYPE_GL_FILTER, DEBUG_INIT);
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (gldeinterlace, "gldeinterlace",
+ GST_RANK_NONE, GST_TYPE_GL_DEINTERLACE, gl_element_init (plugin));
static void gst_gl_deinterlace_set_property (GObject * object,
guint prop_id, const GValue * value, GParamSpec * pspec);
#include <gst/gl/gstglfuncs.h>
+#include "gstglelements.h"
#include "gstgldifferencematte.h"
#include "effects/gstgleffectssources.h"
#define gst_gl_differencematte_parent_class parent_class
G_DEFINE_TYPE_WITH_CODE (GstGLDifferenceMatte, gst_gl_differencematte,
GST_TYPE_GL_FILTER, DEBUG_INIT);
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (gldifferencematte, "gldifferencematte",
+ GST_RANK_NONE, GST_TYPE_GL_DIFFERENCEMATTE, gl_element_init (plugin));
static void gst_gl_differencematte_set_property (GObject * object,
guint prop_id, const GValue * value, GParamSpec * pspec);
#include <gst/allocators/gstdmabuf.h>
#endif
+#include "gstglelements.h"
#include "gstgldownloadelement.h"
GST_DEBUG_CATEGORY_STATIC (gst_gl_download_element_debug);
GST_TYPE_GL_BASE_FILTER,
GST_DEBUG_CATEGORY_INIT (gst_gl_download_element_debug, "gldownloadelement",
0, "download element"););
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (gldownload, "gldownload",
+ GST_RANK_NONE, GST_TYPE_GL_DOWNLOAD_ELEMENT, gl_element_init (plugin));
static gboolean gst_gl_download_element_start (GstBaseTransform * bt);
static gboolean gst_gl_download_element_stop (GstBaseTransform * bt);
#include "config.h"
#endif
+#include "gstglelements.h"
#include "gstgleffects.h"
#define GST_CAT_DEFAULT gst_gl_effects_debug
G_DEFINE_TYPE_WITH_CODE (GstGLEffects, gst_gl_effects, GST_TYPE_GL_FILTER,
DEBUG_INIT);
+static gboolean
+gst_element_init_gleffects (GstPlugin * plugin)
+{
+ gl_element_init (plugin);
+ return gst_gl_effects_register_filters (plugin, GST_RANK_NONE);
+}
+
+GST_ELEMENT_REGISTER_DEFINE_CUSTOM (gleffects, gst_element_init_gleffects);
+
static void gst_gl_effects_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
static void gst_gl_effects_get_property (GObject * object, guint prop_id,
--- /dev/null
+/*
+ * GStreamer
+ * Copyright (C) 2003 Julien Moutte <julien@moutte.net>
+ * Copyright (C) 2005,2006,2007 David A. Schleef <ds@schleef.org>
+ * Copyright (C) 2008 Julien Isorce <julien.isorce@gmail.com>
+ * Copyright (C) 2008 Filippo Argiolas <filippo.argiolas@gmail.com>
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd.
+ * @Author: Stéphane Cerveau <scerveau@collabora.com>
+ *
+ * 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., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gstglelements.h"
+
+#include "gstglmixerbin.h"
+#include "gstglvideomixer.h"
+#include "gstglstereomix.h"
+
+#if GST_GL_HAVE_WINDOW_COCOA
+/* avoid including Cocoa/CoreFoundation from a C file... */
+extern GType gst_ca_opengl_layer_sink_bin_get_type (void);
+#endif
+
+#if GST_GL_HAVE_WINDOW_DISPMANX
+extern void bcm_host_init (void);
+#endif
+
+#if GST_GL_HAVE_WINDOW_X11
+#include <X11/Xlib.h>
+#endif
+
+#define GST_CAT_DEFAULT gst_gl_gstgl_debug
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
+
+void
+gl_element_init (GstPlugin * plugin)
+{
+ static gsize res = FALSE;
+ if (g_once_init_enter (&res)) {
+ GST_DEBUG_CATEGORY_INIT (gst_gl_gstgl_debug, "gstopengl", 0, "gstopengl");
+
+#if GST_GL_HAVE_WINDOW_DISPMANX
+ GST_DEBUG ("Initialize BCM host");
+ bcm_host_init ();
+#endif
+
+#if GST_GL_HAVE_WINDOW_X11
+ if (g_getenv ("GST_GL_XINITTHREADS"))
+ XInitThreads ();
+#endif
+ g_once_init_leave (&res, TRUE);
+ }
+}
--- /dev/null
+/*
+ * Copyright (C) 2003 Julien Moutte <julien@moutte.net>
+ * Copyright (C) 2005,2006,2007 David A. Schleef <ds@schleef.org>
+ * Copyright (C) 2008 Julien Isorce <julien.isorce@gmail.com>
+ * Copyright (C) 2008 Filippo Argiolas <filippo.argiolas@gmail.com>
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd.
+ * @Author: Julian Bouzas <julian.bouzas@collabora.com>
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_GL_ELEMENTS_H__
+#define __GST_GL_ELEMENTS_H__
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+G_GNUC_INTERNAL void gl_element_init (GstPlugin * plugin);
+
+GST_ELEMENT_REGISTER_DECLARE (glimagesink);
+GST_ELEMENT_REGISTER_DECLARE (glimagesinkelement);
+GST_ELEMENT_REGISTER_DECLARE (glupload);
+GST_ELEMENT_REGISTER_DECLARE (gldownload);
+GST_ELEMENT_REGISTER_DECLARE (glcolorconvert);
+GST_ELEMENT_REGISTER_DECLARE (glcolorbalance);
+GST_ELEMENT_REGISTER_DECLARE (glfilterbin);
+GST_ELEMENT_REGISTER_DECLARE (glsinkbin);
+GST_ELEMENT_REGISTER_DECLARE (glsrcbin);
+GST_ELEMENT_REGISTER_DECLARE (glmixerbin);
+GST_ELEMENT_REGISTER_DECLARE (glfiltercube);
+GST_ELEMENT_REGISTER_DECLARE (gltransformation);
+GST_ELEMENT_REGISTER_DECLARE (glvideoflip);
+GST_ELEMENT_REGISTER_DECLARE (gleffects);
+GST_ELEMENT_REGISTER_DECLARE (glcolorscale);
+GST_ELEMENT_REGISTER_DECLARE (glvideomixer);
+GST_ELEMENT_REGISTER_DECLARE (glvideomixerelement);
+GST_ELEMENT_REGISTER_DECLARE (glshader);
+GST_ELEMENT_REGISTER_DECLARE (glfilterapp);
+GST_ELEMENT_REGISTER_DECLARE (glviewconvert);
+GST_ELEMENT_REGISTER_DECLARE (glstereosplit);
+GST_ELEMENT_REGISTER_DECLARE (glstereomix);
+GST_ELEMENT_REGISTER_DECLARE (gltestsrc);
+GST_ELEMENT_REGISTER_DECLARE (gldeinterlace);
+GST_ELEMENT_REGISTER_DECLARE (glalpha);
+GST_ELEMENT_REGISTER_DECLARE (gloverlaycompositor);
+GST_ELEMENT_REGISTER_DECLARE (gloverlay);
+GST_ELEMENT_REGISTER_DECLARE (glfilterglass);
+GST_ELEMENT_REGISTER_DECLARE (glfilterreflectedscreen);
+GST_ELEMENT_REGISTER_DECLARE (glmosaic);
+GST_ELEMENT_REGISTER_DECLARE (gldifferencematte);
+GST_ELEMENT_REGISTER_DECLARE (glbumper);
+GST_ELEMENT_REGISTER_DECLARE (caopengllayersink);
+
+G_END_DECLS
+
+#endif /* __GST_GL_ELEMENTS_H__ */
#include "config.h"
#endif
+#include "gstglelements.h"
#include "gstglfilterapp.h"
#define GST_CAT_DEFAULT gst_gl_filter_app_debug
#define gst_gl_filter_app_parent_class parent_class
G_DEFINE_TYPE_WITH_CODE (GstGLFilterApp, gst_gl_filter_app,
GST_TYPE_GL_FILTER, DEBUG_INIT);
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (glfilterapp, "glfilterapp",
+ GST_RANK_NONE, GST_TYPE_GL_FILTER_APP, gl_element_init (plugin));
static void gst_gl_filter_app_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
#include "config.h"
#endif
+#include "gstglelements.h"
#include "gstglfilterbin.h"
#define GST_CAT_DEFAULT gst_gl_filter_bin_debug
G_DEFINE_TYPE_WITH_CODE (GstGLFilterBin, gst_gl_filter_bin,
GST_TYPE_BIN, GST_DEBUG_CATEGORY_INIT (gst_gl_filter_bin_debug,
"glfilterbin", 0, "glfilterbin element"););
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (glfilterbin, "glfilterbin",
+ GST_RANK_NONE, GST_TYPE_GL_FILTER_BIN, gl_element_init (plugin));
static void gst_gl_filter_bin_finalize (GObject * object);
static void gst_gl_filter_bin_get_property (GObject * object, guint prop_id,
#endif
#include <gst/gl/gstglapi.h>
+
+#include "gstglelements.h"
#include "gstglfiltercube.h"
#include "gstglutils.h"
#define gst_gl_filter_cube_parent_class parent_class
G_DEFINE_TYPE_WITH_CODE (GstGLFilterCube, gst_gl_filter_cube,
GST_TYPE_GL_FILTER, DEBUG_INIT);
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (glfiltercube, "glfiltercube",
+ GST_RANK_NONE, GST_TYPE_GL_FILTER_CUBE, gl_element_init (plugin));
static void gst_gl_filter_cube_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
#include <math.h>
#include <gst/gl/gstglfuncs.h>
+#include "gstglelements.h"
#include "gstglfilterglass.h"
#include "gstglutils.h"
#define gst_gl_filter_glass_parent_class parent_class
G_DEFINE_TYPE_WITH_CODE (GstGLFilterGlass, gst_gl_filter_glass,
GST_TYPE_GL_FILTER, DEBUG_INIT);
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (glfilterglass, "glfilterglass",
+ GST_RANK_NONE, GST_TYPE_GL_FILTER_GLASS, gl_element_init (plugin));
static void gst_gl_filter_glass_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
#endif
#include <math.h>
+
+#include "gstglelements.h"
#include "gstglfilterreflectedscreen.h"
#define GST_CAT_DEFAULT gst_gl_filter_reflected_screen_debug
G_DEFINE_TYPE_WITH_CODE (GstGLFilterReflectedScreen,
gst_gl_filter_reflected_screen, GST_TYPE_GL_FILTER, DEBUG_INIT);
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (glfilterreflectedscreen,
+ "glfilterreflectedscreen", GST_RANK_NONE,
+ GST_TYPE_GL_FILTER_REFLECTED_SCREEN, gl_element_init (plugin));
static void gst_gl_filter_reflected_screen_set_property (GObject * object,
guint prop_id, const GValue * value, GParamSpec * pspec);
#include <gst/gl/gstglfuncs.h>
+#include "gstglelements.h"
#include "gstglfiltershader.h"
#ifdef HAVE_GRAPHENE
#include <graphene-gobject.h>
#define gst_gl_filtershader_parent_class parent_class
G_DEFINE_TYPE_WITH_CODE (GstGLFilterShader, gst_gl_filtershader,
GST_TYPE_GL_FILTER, DEBUG_INIT);
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (glshader, "glshader",
+ GST_RANK_NONE, GST_TYPE_GL_FILTERSHADER, gl_element_init (plugin));
static void gst_gl_filtershader_finalize (GObject * object);
static void gst_gl_filtershader_set_property (GObject * object, guint prop_id,
#include <gst/video/navigation.h>
#include <gst/video/gstvideoaffinetransformationmeta.h>
+#include "gstglelements.h"
#include "gstglimagesink.h"
#include "gstglsinkbin.h"
#include "gstglutils.h"
typedef GstGLSinkBinClass GstGLImageSinkBinClass;
G_DEFINE_TYPE (GstGLImageSinkBin, gst_gl_image_sink_bin, GST_TYPE_GL_SINK_BIN);
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (glimagesink, "glimagesink",
+ GST_RANK_SECONDARY, gst_gl_image_sink_bin_get_type (),
+ gl_element_init (plugin));
enum
{
gst_glimage_sink_navigation_interface_init);
GST_DEBUG_CATEGORY_INIT (gst_debug_glimage_sink, "glimagesink", 0,
"OpenGL Video Sink"));
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (glimagesinkelement, "glimagesinkelement",
+ GST_RANK_NONE, gst_glimage_sink_get_type (), gl_element_init (plugin));
static void
gst_glimage_sink_class_init (GstGLImageSinkClass * klass)
#include <gst/gst.h>
+#include "gstglelements.h"
#include "gstglmixerbin.h"
#define GST_CAT_DEFAULT gst_gl_mixer_bin_debug
G_ADD_PRIVATE (GstGLMixerBin)
G_IMPLEMENT_INTERFACE (GST_TYPE_CHILD_PROXY,
gst_gl_mixer_bin_child_proxy_init));
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (glmixerbin, "glmixerbin",
+ GST_RANK_NONE, GST_TYPE_GL_MIXER_BIN, gl_element_init (plugin));
static guint gst_gl_mixer_bin_signals[LAST_SIGNAL] = { 0 };
#include "config.h"
#endif
+#include "gstglelements.h"
#include "gstglmosaic.h"
#include "gstglutils.h"
G_IMPLEMENT_INTERFACE (GST_TYPE_CHILD_PROXY,
gst_gl_mosaic_child_proxy_init);
DEBUG_INIT);
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (glmosaic, "glmosaic",
+ GST_RANK_NONE, GST_TYPE_GL_MOSAIC, gl_element_init (plugin));
static GstPad *gst_gl_mosaic_request_new_pad (GstElement * element,
GstPadTemplate * temp, const gchar * req_name, const GstCaps * caps);
#include <gst/base/gsttypefindhelper.h>
#include <gst/gl/gstglconfig.h>
+#include "gstglelements.h"
#include "gstgloverlay.h"
#include "effects/gstgleffectssources.h"
#include "gstglutils.h"
#define gst_gl_overlay_parent_class parent_class
G_DEFINE_TYPE_WITH_CODE (GstGLOverlay, gst_gl_overlay, GST_TYPE_GL_FILTER,
DEBUG_INIT);
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (gloverlay, "gloverlay",
+ GST_RANK_NONE, GST_TYPE_GL_OVERLAY, gl_element_init (plugin));
static gboolean gst_gl_overlay_set_caps (GstGLFilter * filter,
GstCaps * incaps, GstCaps * outcaps);
#include <gst/gl/gstglfuncs.h>
#include <gst/video/video.h>
+#include "gstglelements.h"
#include "gstgloverlaycompositorelement.h"
enum
#define gst_gl_overlay_compositor_element_parent_class parent_class
G_DEFINE_TYPE_WITH_CODE (GstGLOverlayCompositorElement,
gst_gl_overlay_compositor_element, GST_TYPE_GL_FILTER, DEBUG_INIT);
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (gloverlaycompositor,
+ "gloverlaycompositor", GST_RANK_NONE,
+ GST_TYPE_GL_OVERLAY_COMPOSITOR_ELEMENT, gl_element_init (plugin));
static GstStaticPadTemplate overlay_sink_pad_template =
GST_STATIC_PAD_TEMPLATE ("sink",
#include <gst/video/navigation.h>
#include <gst/controller/gstproxycontrolbinding.h>
+#include "gstglelements.h"
#include "gstglsinkbin.h"
GST_DEBUG_CATEGORY (gst_debug_gl_sink_bin);
gst_gl_sink_bin_color_balance_init)
GST_DEBUG_CATEGORY_INIT (gst_debug_gl_sink_bin, "glimagesink", 0,
"OpenGL Video Sink Bin"));
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (glsinkbin, "glsinkbin",
+ GST_RANK_NONE, GST_TYPE_GL_SINK_BIN, gl_element_init (plugin));
static void
gst_gl_sink_bin_class_init (GstGLSinkBinClass * klass)
#include "config.h"
#endif
+#include "gstglelements.h"
#include "gstglsrcbin.h"
GST_DEBUG_CATEGORY (gst_debug_gl_src_bin);
GST_TYPE_BIN,
GST_DEBUG_CATEGORY_INIT (gst_debug_gl_src_bin, "glsrcbin", 0,
"OpenGL Video Src Bin"));
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (glsrcbin, "glsrcbin",
+ GST_RANK_NONE, GST_TYPE_GL_SRC_BIN, gl_element_init (plugin));
static void
gst_gl_src_bin_class_init (GstGLSrcBinClass * klass)
#include "config.h"
#endif
+#include "gstglelements.h"
#include "gstglstereomix.h"
#define GST_CAT_DEFAULT gst_gl_stereo_mix_debug
G_DEFINE_TYPE_WITH_CODE (GstGLStereoMix, gst_gl_stereo_mix, GST_TYPE_GL_MIXER,
G_IMPLEMENT_INTERFACE (GST_TYPE_CHILD_PROXY,
gst_gl_stereo_mix_child_proxy_init));
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (glstereomix, "glstereomix",
+ GST_RANK_NONE, GST_TYPE_GL_STEREO_MIX, gl_element_init (plugin));
static GstCaps *_update_caps (GstVideoAggregator * vagg, GstCaps * caps);
static gboolean _negotiated_caps (GstAggregator * aggregator, GstCaps * caps);
#include "config.h"
#endif
+#include "gstglelements.h"
#include "gstglstereosplit.h"
#define GST_CAT_DEFAULT gst_gl_stereosplit_debug
G_DEFINE_TYPE_WITH_CODE (GstGLStereoSplit, gst_gl_stereosplit,
GST_TYPE_ELEMENT, DEBUG_INIT);
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (glstereosplit, "glstereosplit",
+ GST_RANK_NONE, GST_TYPE_GL_STEREOSPLIT, gl_element_init (plugin));
static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK, GST_PAD_ALWAYS,
#include <gst/gl/gstglfuncs.h>
#include <gst/gst-i18n-plugin.h>
+#include "gstglelements.h"
#include "gstgltestsrc.h"
#include "gltestsrc.h"
#define gst_gl_test_src_parent_class parent_class
G_DEFINE_TYPE (GstGLTestSrc, gst_gl_test_src, GST_TYPE_GL_BASE_SRC);
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (gltestsrc, "gltestsrc",
+ GST_RANK_NONE, GST_TYPE_GL_TEST_SRC, gl_element_init (plugin));
static void gst_gl_test_src_set_pattern (GstGLTestSrc * gltestsrc,
int pattern_type);
#include "config.h"
#endif
+#include "gstglelements.h"
#include "gstgltransformation.h"
#include <gst/gl/gstglapi.h>
G_DEFINE_TYPE_WITH_CODE (GstGLTransformation, gst_gl_transformation,
GST_TYPE_GL_FILTER, DEBUG_INIT);
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (gltransformation, "gltransformation",
+ GST_RANK_NONE, GST_TYPE_GL_TRANSFORMATION, gl_element_init (plugin));
static void gst_gl_transformation_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
#include <stdio.h>
#include <gst/gl/gl.h>
+
+#include "gstglelements.h"
#include "gstgluploadelement.h"
GST_DEBUG_CATEGORY_STATIC (gst_gl_upload_element_debug);
GST_TYPE_GL_BASE_FILTER,
GST_DEBUG_CATEGORY_INIT (gst_gl_upload_element_debug, "gluploadelement", 0,
"glupload Element"););
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (glupload, "glupload",
+ GST_RANK_NONE, GST_TYPE_GL_UPLOAD_ELEMENT, gl_element_init (plugin));
static gboolean gst_gl_upload_element_get_unit_size (GstBaseTransform * trans,
GstCaps * caps, gsize * size);
#include "config.h"
#endif
+#include "gstglelements.h"
#include "gstglvideoflip.h"
#define GST_CAT_DEFAULT gst_gl_video_flip_debug
"glvideoflip", 0, "glvideoflip element");
G_IMPLEMENT_INTERFACE (GST_TYPE_VIDEO_DIRECTION,
gst_gl_video_flip_video_direction_interface_init););
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (glvideoflip, "glvideoflip",
+ GST_RANK_NONE, GST_TYPE_GL_VIDEO_FLIP, gl_element_init (plugin));
static void
gst_gl_video_flip_video_direction_interface_init (GstVideoDirectionInterface
#include <gst/gl/gstglfuncs.h>
#include <gst/video/gstvideoaffinetransformationmeta.h>
+#include "gstglelements.h"
#include "gstglvideomixer.h"
#include "gstglmixerbin.h"
G_DEFINE_TYPE (GstGLVideoMixerBin, gst_gl_video_mixer_bin,
GST_TYPE_GL_MIXER_BIN);
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (glvideomixer, "glvideomixer",
+ GST_RANK_NONE, gst_gl_video_mixer_bin_get_type (),
+ gl_element_init (plugin));
static void
gst_gl_video_mixer_bin_init (GstGLVideoMixerBin * self)
G_DEFINE_TYPE_WITH_CODE (GstGLVideoMixer, gst_gl_video_mixer, GST_TYPE_GL_MIXER,
G_IMPLEMENT_INTERFACE (GST_TYPE_CHILD_PROXY,
gst_gl_video_mixer_child_proxy_init); DEBUG_INIT);
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (glvideomixerelement,
+ "glvideomixerelement", GST_RANK_NONE, gst_gl_video_mixer_get_type (),
+ gl_element_init (plugin));
static void gst_gl_video_mixer_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
#include <gst/base/gstbasetransform.h>
+#include "gstglelements.h"
#include "gstglviewconvert.h"
#define GST_CAT_DEFAULT gst_gl_view_convert_element_debug
#define DEBUG_INIT \
GST_DEBUG_CATEGORY_INIT (gst_gl_view_convert_element_debug, "glview_convertelement", 0, "glview_convert element");
+#define parent_class gst_gl_view_convert_element_parent_class
G_DEFINE_TYPE_WITH_CODE (GstGLViewConvertElement, gst_gl_view_convert_element,
GST_TYPE_GL_FILTER, DEBUG_INIT);
-#define parent_class gst_gl_view_convert_element_parent_class
+GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (glviewconvert, "glviewconvert",
+ GST_RANK_NONE, GST_TYPE_GL_VIEW_CONVERT_ELEMENT, gl_element_init (plugin));
static void gst_gl_view_convert_dispose (GObject * object);
static void gst_gl_view_convert_element_set_property (GObject * object,
#include "config.h"
#endif
-#include "gstglimagesink.h"
-#include "gstgluploadelement.h"
-#include "gstgldownloadelement.h"
-#include "gstglcolorconvertelement.h"
-#include "gstglcolorbalance.h"
-#include "gstglfilterbin.h"
-#include "gstglsinkbin.h"
-#include "gstglsrcbin.h"
-
-#include "gstglfiltercube.h"
-#include "gstgleffects.h"
-#include "gstglcolorscale.h"
+#include "gstglelements.h"
#include "gstglmixerbin.h"
#include "gstglvideomixer.h"
#include "gstglstereomix.h"
-#include "gstglfiltershader.h"
-#include "gstglfilterapp.h"
-#include "gstglstereosplit.h"
-#include "gstglviewconvert.h"
-#include "gstgltestsrc.h"
-#include "gstgldeinterlace.h"
-#include "gstglalpha.h"
-#include "gstgloverlaycompositorelement.h"
-
-#ifdef HAVE_GRAPHENE
-#include "gstgltransformation.h"
-#include "gstglvideoflip.h"
-#endif
-#if defined(HAVE_JPEG) && defined(HAVE_PNG)
-#include "gstgloverlay.h"
-#endif
-
-#include "gstglmixerbin.h"
-#include "gstglvideomixer.h"
-#include "gstglstereomix.h"
-
-#if GST_GL_HAVE_OPENGL
-#endif /* GST_GL_HAVE_OPENGL */
-
-#if GST_GL_HAVE_OPENGL
-#include "gstglfilterglass.h"
-/* #include "gstglfilterreflectedscreen.h" */
-#include "gstglmosaic.h"
-#ifdef HAVE_PNG
-#include "gstgldifferencematte.h"
-/* #include "gstglbumper.h" */
-#endif /* HAVE_PNG */
-#endif /* GST_GL_HAVE_OPENGL */
-
-#if GST_GL_HAVE_WINDOW_COCOA
-/* avoid including Cocoa/CoreFoundation from a C file... */
-extern GType gst_ca_opengl_layer_sink_bin_get_type (void);
-#endif
-
-#if GST_GL_HAVE_WINDOW_DISPMANX
-extern void bcm_host_init (void);
-#endif
-
-#if GST_GL_HAVE_WINDOW_X11
-#include <X11/Xlib.h>
-#endif
-
-#define GST_CAT_DEFAULT gst_gl_gstgl_debug
-GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
-
/* Register filters that make up the gstgl plugin */
static gboolean
plugin_init (GstPlugin * plugin)
{
- GST_DEBUG_CATEGORY_INIT (gst_gl_gstgl_debug, "gstopengl", 0, "gstopengl");
-
-#if GST_GL_HAVE_WINDOW_DISPMANX
- GST_DEBUG ("Initialize BCM host");
- bcm_host_init ();
-#endif
-
-#if GST_GL_HAVE_WINDOW_X11
- if (g_getenv ("GST_GL_XINITTHREADS"))
- XInitThreads ();
-#endif
-
- if (!gst_element_register (plugin, "glimagesink",
- GST_RANK_SECONDARY, gst_gl_image_sink_bin_get_type ())) {
- return FALSE;
- }
-
- if (!gst_element_register (plugin, "glimagesinkelement",
- GST_RANK_NONE, gst_glimage_sink_get_type ())) {
- return FALSE;
- }
-
- if (!gst_element_register (plugin, "glupload",
- GST_RANK_NONE, GST_TYPE_GL_UPLOAD_ELEMENT)) {
- return FALSE;
- }
-
- if (!gst_element_register (plugin, "gldownload",
- GST_RANK_NONE, GST_TYPE_GL_DOWNLOAD_ELEMENT)) {
- return FALSE;
- }
-
- if (!gst_element_register (plugin, "glcolorconvert",
- GST_RANK_NONE, GST_TYPE_GL_COLOR_CONVERT_ELEMENT)) {
- return FALSE;
- }
-
- if (!gst_element_register (plugin, "glcolorbalance",
- GST_RANK_NONE, GST_TYPE_GL_COLOR_BALANCE)) {
- return FALSE;
- }
-
- if (!gst_element_register (plugin, "glfilterbin",
- GST_RANK_NONE, GST_TYPE_GL_FILTER_BIN)) {
- return FALSE;
- }
-
- if (!gst_element_register (plugin, "glsinkbin",
- GST_RANK_NONE, GST_TYPE_GL_SINK_BIN)) {
- return FALSE;
- }
-
- if (!gst_element_register (plugin, "glsrcbin",
- GST_RANK_NONE, GST_TYPE_GL_SRC_BIN)) {
- return FALSE;
- }
-
- if (!gst_element_register (plugin, "glmixerbin",
- GST_RANK_NONE, GST_TYPE_GL_MIXER_BIN)) {
- return FALSE;
- }
-
- if (!gst_element_register (plugin, "glfiltercube",
- GST_RANK_NONE, GST_TYPE_GL_FILTER_CUBE)) {
- return FALSE;
- }
+ gboolean ret = FALSE;
+
+ ret |= GST_ELEMENT_REGISTER (glimagesink, plugin);
+ ret |= GST_ELEMENT_REGISTER (glimagesinkelement, plugin);
+ ret |= GST_ELEMENT_REGISTER (glupload, plugin);
+ ret |= GST_ELEMENT_REGISTER (gldownload, plugin);
+ ret |= GST_ELEMENT_REGISTER (glcolorconvert, plugin);
+ ret |= GST_ELEMENT_REGISTER (glcolorbalance, plugin);
+ ret |= GST_ELEMENT_REGISTER (glfilterbin, plugin);
+ ret |= GST_ELEMENT_REGISTER (glsinkbin, plugin);
+ ret |= GST_ELEMENT_REGISTER (glsrcbin, plugin);
+ ret |= GST_ELEMENT_REGISTER (glmixerbin, plugin);
+ ret |= GST_ELEMENT_REGISTER (glfiltercube, plugin);
#ifdef HAVE_GRAPHENE
- if (!gst_element_register (plugin, "gltransformation",
- GST_RANK_NONE, GST_TYPE_GL_TRANSFORMATION)) {
- return FALSE;
- }
-
- if (!gst_element_register (plugin, "glvideoflip",
- GST_RANK_NONE, GST_TYPE_GL_VIDEO_FLIP)) {
- return FALSE;
- }
+ ret |= GST_ELEMENT_REGISTER (gltransformation, plugin);
+ ret |= GST_ELEMENT_REGISTER (glvideoflip, plugin);
#endif
-
- if (!gst_gl_effects_register_filters (plugin, GST_RANK_NONE)) {
- return FALSE;
- };
-
- if (!gst_element_register (plugin, "glcolorscale",
- GST_RANK_NONE, GST_TYPE_GL_COLORSCALE)) {
- return FALSE;
- }
-
- if (!gst_element_register (plugin, "glvideomixer",
- GST_RANK_NONE, gst_gl_video_mixer_bin_get_type ())) {
- return FALSE;
- }
-
- if (!gst_element_register (plugin, "glvideomixerelement",
- GST_RANK_NONE, gst_gl_video_mixer_get_type ())) {
- return FALSE;
- }
-
- if (!gst_element_register (plugin, "glshader",
- GST_RANK_NONE, gst_gl_filtershader_get_type ())) {
- return FALSE;
- }
-
- if (!gst_element_register (plugin, "glfilterapp",
- GST_RANK_NONE, GST_TYPE_GL_FILTER_APP)) {
- return FALSE;
- }
-
- if (!gst_element_register (plugin, "glviewconvert",
- GST_RANK_NONE, GST_TYPE_GL_VIEW_CONVERT_ELEMENT)) {
- return FALSE;
- }
-
- if (!gst_element_register (plugin, "glstereosplit",
- GST_RANK_NONE, GST_TYPE_GL_STEREOSPLIT)) {
- return FALSE;
- }
-
- if (!gst_element_register (plugin, "glstereomix",
- GST_RANK_NONE, GST_TYPE_GL_STEREO_MIX)) {
- return FALSE;
- }
-
- if (!gst_element_register (plugin, "gltestsrc",
- GST_RANK_NONE, GST_TYPE_GL_TEST_SRC)) {
- return FALSE;
- }
-
- if (!gst_element_register (plugin, "gldeinterlace",
- GST_RANK_NONE, GST_TYPE_GL_DEINTERLACE)) {
- return FALSE;
- }
-
- if (!gst_element_register (plugin, "glalpha",
- GST_RANK_NONE, GST_TYPE_GL_ALPHA)) {
- return FALSE;
- }
-
- if (!gst_element_register (plugin, "gloverlaycompositor",
- GST_RANK_NONE, GST_TYPE_GL_OVERLAY_COMPOSITOR_ELEMENT)) {
- return FALSE;
- }
+ ret |= GST_ELEMENT_REGISTER (gleffects, plugin);
+ ret |= GST_ELEMENT_REGISTER (glcolorscale, plugin);
+ ret |= GST_ELEMENT_REGISTER (glvideomixer, plugin);
+ ret |= GST_ELEMENT_REGISTER (glvideomixerelement, plugin);
+ ret |= GST_ELEMENT_REGISTER (glshader, plugin);
+ ret |= GST_ELEMENT_REGISTER (glfilterapp, plugin);
+ ret |= GST_ELEMENT_REGISTER (glviewconvert, plugin);
+ ret |= GST_ELEMENT_REGISTER (glstereosplit, plugin);
+ ret |= GST_ELEMENT_REGISTER (glstereomix, plugin);
+ ret |= GST_ELEMENT_REGISTER (gltestsrc, plugin);
+ ret |= GST_ELEMENT_REGISTER (gldeinterlace, plugin);
+ ret |= GST_ELEMENT_REGISTER (glalpha, plugin);
+ ret |= GST_ELEMENT_REGISTER (gloverlaycompositor, plugin);
#if defined(HAVE_JPEG) && defined(HAVE_PNG)
- if (!gst_element_register (plugin, "gloverlay",
- GST_RANK_NONE, gst_gl_overlay_get_type ())) {
- return FALSE;
- }
+ ret |= GST_ELEMENT_REGISTER (gloverlay, plugin);
#endif
#if GST_GL_HAVE_OPENGL
- if (!gst_element_register (plugin, "glfilterglass",
- GST_RANK_NONE, GST_TYPE_GL_FILTER_GLASS)) {
- return FALSE;
- }
+ ret |= GST_ELEMENT_REGISTER (glfilterglass, plugin);
#if 0
- if (!gst_element_register (plugin, "glfilterreflectedscreen",
- GST_RANK_NONE, GST_TYPE_GL_FILTER_REFLECTED_SCREEN)) {
- return FALSE;
- }
+ ret |= GST_ELEMENT_REGISTER (glfilterreflectedscreen, plugin);
#endif
-
- if (!gst_element_register (plugin, "glmosaic",
- GST_RANK_NONE, GST_TYPE_GL_MOSAIC)) {
- return FALSE;
- }
+ ret |= GST_ELEMENT_REGISTER (glmosaic, plugin);
#ifdef HAVE_PNG
- if (!gst_element_register (plugin, "gldifferencematte",
- GST_RANK_NONE, gst_gl_differencematte_get_type ())) {
- return FALSE;
- }
+ ret |= GST_ELEMENT_REGISTER (gldifferencematte, plugin);
#if 0
- if (!gst_element_register (plugin, "glbumper",
- GST_RANK_NONE, gst_gl_bumper_get_type ())) {
- return FALSE;
- }
+ ret |= GST_ELEMENT_REGISTER (glbumper, plugin);
#endif
#endif /* HAVE_PNG */
#endif /* GST_GL_HAVE_OPENGL */
#if GST_GL_HAVE_WINDOW_COCOA
- if (!gst_element_register (plugin, "caopengllayersink",
- GST_RANK_NONE, gst_ca_opengl_layer_sink_bin_get_type ())) {
- return FALSE;
- }
+ ret |= GST_ELEMENT_REGISTER (caopengllayersink, plugin);
#endif
- return TRUE;
+ return ret;
}
GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
opengl_sources = [
'gstopengl.c',
+ 'gstglelement.c',
'gstglalpha.c',
'gstgluploadelement.c',
'gstgldownloadelement.c',