aalib: allow per feature registration
authorJulian Bouzas <julian.bouzas@collabora.com>
Fri, 14 Aug 2020 19:27:31 +0000 (15:27 -0400)
committerStéphane Cerveau <scerveau@collabora.com>
Mon, 29 Mar 2021 10:45:13 +0000 (12:45 +0200)
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.

More details here:

https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/876>

ext/aalib/gstaaplugin.c [new file with mode: 0644]
ext/aalib/gstaasink.c
ext/aalib/gstaasink.h
ext/aalib/gstaatv.c
ext/aalib/gstaatv.h
ext/aalib/meson.build

diff --git a/ext/aalib/gstaaplugin.c b/ext/aalib/gstaaplugin.c
new file mode 100644 (file)
index 0000000..3511e03
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gstaasink.h"
+#include "gstaatv.h"
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+  gboolean ret = FALSE;
+
+  ret |= GST_ELEMENT_REGISTER (aasink, plugin);
+  ret |= GST_ELEMENT_REGISTER (aatv, plugin);
+
+  return ret;
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    aasink,
+    "ASCII Art video sink & filter",
+    plugin_init, VERSION, "LGPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN);
index b4d337d..49a9fce 100644 (file)
@@ -41,8 +41,8 @@
 #include <sys/time.h>
 
 #include <gst/video/gstvideometa.h>
+
 #include "gstaasink.h"
-#include "gstaatv.h"
 
 /* aasink signals and args */
 enum
@@ -92,6 +92,7 @@ static GstStateChangeReturn gst_aasink_change_state (GstElement * element,
 
 #define gst_aasink_parent_class parent_class
 G_DEFINE_TYPE (GstAASink, gst_aasink, GST_TYPE_VIDEO_SINK);
+GST_ELEMENT_REGISTER_DEFINE (aasink, "aasink", GST_RANK_NONE, GST_TYPE_AASINK);
 
 #define GST_TYPE_AADRIVERS (gst_aasink_drivers_get_type())
 static GType
@@ -582,21 +583,3 @@ open_failed:
     return GST_STATE_CHANGE_FAILURE;
   }
 }
-
-static gboolean
-plugin_init (GstPlugin * plugin)
-{
-  if (!gst_element_register (plugin, "aasink", GST_RANK_NONE, GST_TYPE_AASINK))
-    return FALSE;
-
-  if (!gst_element_register (plugin, "aatv", GST_RANK_NONE, GST_TYPE_AATV))
-    return FALSE;
-
-  return TRUE;
-}
-
-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
-    GST_VERSION_MINOR,
-    aasink,
-    "ASCII Art video sink & filter",
-    plugin_init, VERSION, "LGPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN);
index 0723988..7705012 100644 (file)
@@ -47,6 +47,8 @@ struct _GstAASink {
   gint aa_driver;
 };
 
+GST_ELEMENT_REGISTER_DECLARE (aasink);
+
 G_END_DECLS
 
 #endif /* __GST_AASINKE_H__ */
index 9f793d5..1b363df 100644 (file)
@@ -130,6 +130,7 @@ gst_aatv_rain_mode_get_type (void)
 
 #define gst_aatv_parent_class parent_class
 G_DEFINE_TYPE (GstAATv, gst_aatv, GST_TYPE_VIDEO_FILTER);
+GST_ELEMENT_REGISTER_DEFINE (aatv, "aatv", GST_RANK_NONE, GST_TYPE_AATV);
 
 static void
 gst_aatv_scale (GstAATv * aatv, guchar * src, guchar * dest,
index 07aae0d..47a90c2 100644 (file)
@@ -84,6 +84,8 @@ G_DECLARE_FINAL_TYPE (GstAATv, gst_aatv, GST, AATV, GstVideoFilter)
     struct aa_renderparams ascii_parms;
   };
 
+GST_ELEMENT_REGISTER_DECLARE (aatv);
+
 G_END_DECLS
 
 
index 613ccbe..5f9cd3e 100644 (file)
@@ -14,7 +14,7 @@ endif
 if have_aalib
   libaa_dep = cc.find_library('aa', required : aalib_option)
   if libaa_dep.found()
-    gstaasink = library('gstaasink', ['gstaasink.c','gstaatv.c'],
+    gstaasink = library('gstaasink', ['gstaasink.c','gstaatv.c', 'gstaaplugin.c'],
       c_args : gst_plugins_good_args,
       link_args : noseh_link_args,
       include_directories : [configinc],