[Build/Plugin] common plugin registration
authorJaeyun <jy1210.jung@samsung.com>
Wed, 24 Apr 2019 12:51:27 +0000 (21:51 +0900)
committerMyungJoo Ham <myungjoo.ham@samsung.com>
Wed, 8 May 2019 08:14:28 +0000 (17:14 +0900)
Move all element registration to common file. (warning about function prototype)

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
15 files changed:
gst/nnstreamer/nnstreamer.c
gst/nnstreamer/tensor_aggregator/tensor_aggregator.c
gst/nnstreamer/tensor_common.h
gst/nnstreamer/tensor_converter/tensor_converter.c
gst/nnstreamer/tensor_decoder/tensordec.c
gst/nnstreamer/tensor_demux/gsttensordemux.c
gst/nnstreamer/tensor_filter/tensor_filter.c
gst/nnstreamer/tensor_merge/gsttensormerge.c
gst/nnstreamer/tensor_mux/gsttensormux.c
gst/nnstreamer/tensor_reposink/tensor_reposink.c
gst/nnstreamer/tensor_reposrc/tensor_reposrc.c
gst/nnstreamer/tensor_sink/tensor_sink.c
gst/nnstreamer/tensor_source/tensor_src_iio.c
gst/nnstreamer/tensor_split/gsttensorsplit.c
gst/nnstreamer/tensor_transform/tensor_transform.c

index c10cc45..6ebf7ca 100644 (file)
 #endif
 
 #include <gst/gst.h>
-#include <gst/gstplugin.h>
 
-#define NNSTREAMER_PLUGIN(name) \
-  extern gboolean G_PASTE(nnstreamer_export_, name) (GstPlugin *plugin)
+#include "tensor_aggregator/tensor_aggregator.h"
+#include "tensor_converter/tensor_converter.h"
+#include "tensor_decoder/tensordec.h"
+#include "tensor_demux/gsttensordemux.h"
+#include "tensor_filter/tensor_filter.h"
+#include "tensor_merge/gsttensormerge.h"
+#include "tensor_mux/gsttensormux.h"
+#include "tensor_reposink/tensor_reposink.h"
+#include "tensor_reposrc/tensor_reposrc.h"
+#include "tensor_sink/tensor_sink.h"
+#include "tensor_source/tensor_src_iio.h"
+#include "tensor_split/gsttensorsplit.h"
+#include "tensor_transform/tensor_transform.h"
 
-NNSTREAMER_PLUGIN (tensor_converter);
-NNSTREAMER_PLUGIN (tensor_aggregator);
-NNSTREAMER_PLUGIN (tensor_decoder);
-NNSTREAMER_PLUGIN (tensor_demux);
-NNSTREAMER_PLUGIN (tensor_merge);
-NNSTREAMER_PLUGIN (tensor_mux);
-NNSTREAMER_PLUGIN (tensor_sink);
-NNSTREAMER_PLUGIN (tensor_src_iio);
-NNSTREAMER_PLUGIN (tensor_split);
-NNSTREAMER_PLUGIN (tensor_transform);
-NNSTREAMER_PLUGIN (tensor_filter);
-NNSTREAMER_PLUGIN (tensor_reposink);
-NNSTREAMER_PLUGIN (tensor_reposrc);
-
-#define NNSTREAMER_INIT(name, plugin) \
+#define NNSTREAMER_INIT(plugin,name,type) \
   do { \
-    if (!G_PASTE(nnstreamer_export_, name)(plugin)) \
+    if (!gst_element_register (plugin, "tensor_" # name, GST_RANK_NONE, GST_TYPE_TENSOR_ ## type)) { \
+      GST_ERROR ("Failed to register nnstreamer plugin : tensor_" # name); \
       return FALSE; \
-  } while (0);
+    } \
+  } while (0)
 
 /**
  * @brief Function to initialize all nnstreamer elements
@@ -77,20 +75,19 @@ NNSTREAMER_PLUGIN (tensor_reposrc);
 static gboolean
 gst_nnstreamer_init (GstPlugin * plugin)
 {
-  NNSTREAMER_INIT (tensor_converter, plugin);
-  NNSTREAMER_INIT (tensor_aggregator, plugin);
-  NNSTREAMER_INIT (tensor_decoder, plugin);
-  NNSTREAMER_INIT (tensor_demux, plugin);
-  NNSTREAMER_INIT (tensor_merge, plugin);
-  NNSTREAMER_INIT (tensor_mux, plugin);
-  NNSTREAMER_INIT (tensor_sink, plugin);
-  NNSTREAMER_INIT (tensor_src_iio, plugin);
-  NNSTREAMER_INIT (tensor_split, plugin);
-  NNSTREAMER_INIT (tensor_transform, plugin);
-  NNSTREAMER_INIT (tensor_filter, plugin);
-  NNSTREAMER_INIT (tensor_reposink, plugin);
-  NNSTREAMER_INIT (tensor_reposrc, plugin);
-
+  NNSTREAMER_INIT (plugin, aggregator, AGGREGATOR);
+  NNSTREAMER_INIT (plugin, converter, CONVERTER);
+  NNSTREAMER_INIT (plugin, decoder, DECODER);
+  NNSTREAMER_INIT (plugin, demux, DEMUX);
+  NNSTREAMER_INIT (plugin, filter, FILTER);
+  NNSTREAMER_INIT (plugin, merge, MERGE);
+  NNSTREAMER_INIT (plugin, mux, MUX);
+  NNSTREAMER_INIT (plugin, reposink, REPOSINK);
+  NNSTREAMER_INIT (plugin, reposrc, REPOSRC);
+  NNSTREAMER_INIT (plugin, sink, SINK);
+  NNSTREAMER_INIT (plugin, src_iio, SRC_IIO);
+  NNSTREAMER_INIT (plugin, split, SPLIT);
+  NNSTREAMER_INIT (plugin, transform, TRANSFORM);
   return TRUE;
 }
 
index fb33a36..bb0f96b 100644 (file)
@@ -170,6 +170,9 @@ gst_tensor_aggregator_class_init (GstTensorAggregatorClass * klass)
   GObjectClass *object_class;
   GstElementClass *element_class;
 
+  GST_DEBUG_CATEGORY_INIT (gst_tensor_aggregator_debug, "tensor_aggregator", 0,
+      "Element to aggregate tensor stream");
+
   object_class = (GObjectClass *) klass;
   element_class = (GstElementClass *) klass;
 
@@ -1051,17 +1054,3 @@ gst_tensor_aggregator_parse_caps (GstTensorAggregator * self,
   silent_debug_config (&self->out_config, "out-tensor");
   return TRUE;
 }
-
-/**
- * @brief Function to initialize the plugin.
- *
- * See GstPluginInitFunc() for more details.
- */
-NNSTREAMER_PLUGIN_INIT (tensor_aggregator)
-{
-  GST_DEBUG_CATEGORY_INIT (gst_tensor_aggregator_debug, "tensor_aggregator",
-      0, "tensor_aggregator element");
-
-  return gst_element_register (plugin, "tensor_aggregator",
-      GST_RANK_NONE, GST_TYPE_TENSOR_AGGREGATOR);
-}
index fa9f598..f00ca1e 100644 (file)
@@ -119,10 +119,6 @@ extern void gst_tensors_typefind_function (GstTypeFind * tf, gpointer pdata);
         gst_caps_new_simple ("other/tensorsave", NULL, NULL), NULL, NULL); \
     } while (0)
 
-#define NNSTREAMER_PLUGIN_INIT(name)   \
-  gboolean G_PASTE(nnstreamer_export_, name) (GstPlugin * plugin)
-
-
 /**
  * @brief A function call to decide current timestamp among collected pads based on PTS.
  * It will decide current timestamp according to sync option.
index 450e7dd..fdaf874 100644 (file)
@@ -156,6 +156,9 @@ gst_tensor_converter_class_init (GstTensorConverterClass * klass)
   GstPadTemplate *pad_template;
   GstCaps *pad_caps;
 
+  GST_DEBUG_CATEGORY_INIT (gst_tensor_converter_debug, "tensor_converter", 0,
+      "Element to convert media stream to tensor stream");
+
   object_class = (GObjectClass *) klass;
   element_class = (GstElementClass *) klass;
 
@@ -1490,17 +1493,3 @@ gst_tensor_converter_parse_caps (GstTensorConverter * self,
   self->tensor_config = config;
   return TRUE;
 }
-
-/**
- * @brief Function to initialize the plugin.
- *
- * See GstPluginInitFunc() for more details.
- */
-NNSTREAMER_PLUGIN_INIT (tensor_converter)
-{
-  GST_DEBUG_CATEGORY_INIT (gst_tensor_converter_debug, "tensor_converter",
-      0, "tensor_converter element");
-
-  return gst_element_register (plugin, "tensor_converter",
-      GST_RANK_NONE, GST_TYPE_TENSOR_CONVERTER);
-}
index 2b4044e..4d38bf6 100644 (file)
@@ -262,6 +262,9 @@ gst_tensordec_class_init (GstTensorDecClass * klass)
   GstElementClass *gstelement_class;
   GstBaseTransformClass *trans_class;
 
+  GST_DEBUG_CATEGORY_INIT (gst_tensordec_debug, "tensor_decoder", 0,
+      "Element to convert tensor to media stream");
+
   trans_class = (GstBaseTransformClass *) klass;
   gstelement_class = (GstElementClass *) trans_class;
   gobject_class = (GObjectClass *) gstelement_class;
@@ -892,20 +895,3 @@ gst_tensordec_transform_size (GstBaseTransform * trans,
   GST_ERROR_OBJECT (self, "Decoder plugin not yet configured.");
   return FALSE;
 }
-
-/**
- * @brief entry point to initialize the plug-in
- * initialize the plug-in itself
- * register the element factories and other features
- */
-NNSTREAMER_PLUGIN_INIT (tensor_decoder)
-{
-  /**
-   * debug category for fltering log messages
-   */
-  GST_DEBUG_CATEGORY_INIT (gst_tensordec_debug, "tensor_decoder",
-      0, "Element to convert tensor to media stream");
-
-  return gst_element_register (plugin, "tensor_decoder", GST_RANK_NONE,
-      GST_TYPE_TENSOR_DECODER);
-}
index 9f7c784..8eb8be9 100644 (file)
@@ -118,6 +118,9 @@ gst_tensor_demux_class_init (GstTensorDemuxClass * klass)
   GObjectClass *gobject_class;
   GstElementClass *gstelement_class;
 
+  GST_DEBUG_CATEGORY_INIT (gst_tensor_demux_debug, "tensor_demux", 0,
+      "Element to demux tensors to tensor stream");
+
   gobject_class = (GObjectClass *) klass;
   gstelement_class = (GstElementClass *) klass;
 
@@ -590,19 +593,3 @@ gst_tensor_demux_get_property (GObject * object, guint prop_id,
       break;
   }
 }
-
-/**
- * @brief entry point to initialize the plug-in
- * initialize the plug-in itself
- * register the element factories and other features
- */
-NNSTREAMER_PLUGIN_INIT (tensor_demux)
-{
-  /** debug category for fltering log messages
-   * exchange the string 'Template tensor_demux' with your description
-   */
-  GST_DEBUG_CATEGORY_INIT (gst_tensor_demux_debug, "tensor_demux", 0,
-      "Tensor Demuxer");
-  return gst_element_register (plugin, "tensor_demux",
-      GST_RANK_NONE, GST_TYPE_TENSOR_DEMUX);
-}
index 225e9b5..462ec9d 100644 (file)
@@ -288,6 +288,9 @@ gst_tensor_filter_class_init (GstTensorFilterClass * klass)
   GstElementClass *gstelement_class;
   GstBaseTransformClass *trans_class;
 
+  GST_DEBUG_CATEGORY_INIT (gst_tensor_filter_debug, "tensor_filter", 0,
+      "Tensor filter to invoke neural network model");
+
   trans_class = (GstBaseTransformClass *) klass;
   gstelement_class = (GstElementClass *) trans_class;
   gobject_class = (GObjectClass *) gstelement_class;
@@ -1428,20 +1431,3 @@ gst_tensor_filter_stop (GstBaseTransform * trans)
   gst_tensor_filter_close_fw (self);
   return TRUE;
 }
-
-/**
- * @brief entry point to initialize the plug-in
- * initialize the plug-in itself
- * register the element factories and other features
- */
-NNSTREAMER_PLUGIN_INIT (tensor_filter)
-{
-  /**
-   * debug category for filtering log messages
-   */
-  GST_DEBUG_CATEGORY_INIT (gst_tensor_filter_debug, "tensor_filter",
-      0, "tensor_filter element");
-
-  return gst_element_register (plugin, "tensor_filter", GST_RANK_NONE,
-      GST_TYPE_TENSOR_FILTER);
-}
index f4f83fc..cca7d21 100644 (file)
@@ -143,6 +143,9 @@ gst_tensor_merge_class_init (GstTensorMergeClass * klass)
   GObjectClass *gobject_class;
   GstElementClass *gstelement_class;
 
+  GST_DEBUG_CATEGORY_INIT (gst_tensor_merge_debug, "tensor_merge", 0,
+      "Element to merge multiple tensor stream to tensor stream");
+
   gobject_class = (GObjectClass *) klass;
   gstelement_class = (GstElementClass *) klass;
 
@@ -902,20 +905,3 @@ gst_tensor_merge_get_property (GObject * object, guint prop_id,
       break;
   }
 }
-
-
-/**
- * @brief entry point to initialize the plug-in
- * initialize the plug-in itself
- * register the element factories and other features
- */
-NNSTREAMER_PLUGIN_INIT (tensor_merge)
-{
-  /** debug category for fltering log messages
-   * exchange the string 'Template tensor_merge' with your description
-   */
-  GST_DEBUG_CATEGORY_INIT (gst_tensor_merge_debug, "tensor_merge", 0,
-      "Tensor Merger");
-  return gst_element_register (plugin, "tensor_merge",
-      GST_RANK_NONE, GST_TYPE_TENSOR_MERGE);
-}
index f7ddcdd..0a687ee 100644 (file)
@@ -146,6 +146,9 @@ gst_tensor_mux_class_init (GstTensorMuxClass * klass)
   GObjectClass *gobject_class;
   GstElementClass *gstelement_class;
 
+  GST_DEBUG_CATEGORY_INIT (gst_tensor_mux_debug, "tensor_mux", 0,
+      "Element to merge tensor stream to tensors stream");
+
   gobject_class = (GObjectClass *) klass;
   gstelement_class = (GstElementClass *) klass;
 
@@ -609,20 +612,3 @@ gst_tensor_mux_get_property (GObject * object, guint prop_id,
       break;
   }
 }
-
-
-/**
- * @brief entry point to initialize the plug-in
- * initialize the plug-in itself
- * register the element factories and other features
- */
-NNSTREAMER_PLUGIN_INIT (tensor_mux)
-{
-  /** debug category for fltering log messages
-   * exchange the string 'Template tensor_mux' with your description
-   */
-  GST_DEBUG_CATEGORY_INIT (gst_tensor_mux_debug, "tensor_mux", 0,
-      "Tensor Muxer");
-  return gst_element_register (plugin, "tensor_mux",
-      GST_RANK_NONE, GST_TYPE_TENSOR_MUX);
-}
index 8b0dce9..1177cd5 100644 (file)
@@ -96,6 +96,10 @@ gst_tensor_reposink_class_init (GstTensorRepoSinkClass * klass)
   GObjectClass *gobject_class;
   GstElementClass *element_class;
   GstBaseSinkClass *basesink_class;
+
+  GST_DEBUG_CATEGORY_INIT (gst_tensor_reposink_debug, "tensor_reposink", 0,
+      "Sink element to handle tensor repository");
+
   gobject_class = G_OBJECT_CLASS (klass);
   element_class = GST_ELEMENT_CLASS (klass);
   basesink_class = GST_BASE_SINK_CLASS (klass);
@@ -437,18 +441,3 @@ gst_tensor_reposink_get_caps (GstBaseSink * sink, GstCaps * filter)
 
   return caps;
 }
-
-
-/**
- * @brief Function to initialize the plugin.
- *
- * See GstPluginInitFunc() for more details.
- */
-NNSTREAMER_PLUGIN_INIT (tensor_reposink)
-{
-  GST_DEBUG_CATEGORY_INIT (gst_tensor_reposink_debug, "tensor_reposink",
-      0, "tensor_reposink element");
-
-  return gst_element_register (plugin, "tensor_reposink",
-      GST_RANK_NONE, GST_TYPE_TENSOR_REPOSINK);
-}
index e016b7a..26ff0ca 100644 (file)
@@ -85,6 +85,9 @@ gst_tensor_reposrc_class_init (GstTensorRepoSrcClass * klass)
   GstPushSrcClass *pushsrc_class = GST_PUSH_SRC_CLASS (klass);
   GstBaseSrcClass *basesrc_class = GST_BASE_SRC_CLASS (klass);
 
+  GST_DEBUG_CATEGORY_INIT (gst_tensor_reposrc_debug, "tensor_reposrc", 0,
+      "Source element to handle tensor repository");
+
   gobject_class->set_property = gst_tensor_reposrc_set_property;
   gobject_class->get_property = gst_tensor_reposrc_get_property;
 
@@ -359,17 +362,3 @@ gst_tensor_reposrc_create (GstPushSrc * src, GstBuffer ** buffer)
 
   return GST_FLOW_OK;
 }
-
-/**
- * @brief Function to initialize the plugin.
- *
- * See GstPluginInitFunc() for more details.
- */
-NNSTREAMER_PLUGIN_INIT (tensor_reposrc)
-{
-  GST_DEBUG_CATEGORY_INIT (gst_tensor_reposrc_debug, "tensor_reposrc",
-      0, "tensor_reposrc element");
-
-  return gst_element_register (plugin, "tensor_reposrc",
-      GST_RANK_NONE, GST_TYPE_TENSOR_REPOSRC);
-}
index 1d3832b..739c5b0 100644 (file)
@@ -157,6 +157,9 @@ gst_tensor_sink_class_init (GstTensorSinkClass * klass)
   GstElementClass *element_class;
   GstBaseSinkClass *bsink_class;
 
+  GST_DEBUG_CATEGORY_INIT (gst_tensor_sink_debug, "tensor_sink", 0,
+      "Sink element to handle tensor stream");
+
   gobject_class = G_OBJECT_CLASS (klass);
   element_class = GST_ELEMENT_CLASS (klass);
   bsink_class = GST_BASE_SINK_CLASS (klass);
@@ -744,17 +747,3 @@ gst_tensor_sink_get_silent (GstTensorSink * self)
 
   return self->silent;
 }
-
-/**
- * @brief Function to initialize the plugin.
- *
- * See GstPluginInitFunc() for more details.
- */
-NNSTREAMER_PLUGIN_INIT (tensor_sink)
-{
-  GST_DEBUG_CATEGORY_INIT (gst_tensor_sink_debug, "tensor_sink",
-      0, "tensor_sink element");
-
-  return gst_element_register (plugin, "tensor_sink",
-      GST_RANK_NONE, GST_TYPE_TENSOR_SINK);
-}
index a4075f9..369bbd9 100644 (file)
@@ -314,6 +314,9 @@ gst_tensor_src_iio_class_init (GstTensorSrcIIOClass * klass)
   GstElementClass *gstelement_class;
   GstBaseSrcClass *bsrc_class;
 
+  GST_DEBUG_CATEGORY_INIT (gst_tensor_src_iio_debug, "tensor_src_iio", 0,
+      "Source element to handle Linux Industrial I/O sensors as input");
+
   gobject_class = G_OBJECT_CLASS (klass);
   gstelement_class = GST_ELEMENT_CLASS (klass);
   bsrc_class = GST_BASE_SRC_CLASS (klass);
@@ -2485,20 +2488,3 @@ error_data_free:
 
   return GST_FLOW_ERROR;
 }
-
-/**
- * @brief entry point to initialize the plug-in
- * initialize the plug-in itself
- * register the element factories and other features
- */
-NNSTREAMER_PLUGIN_INIT (tensor_src_iio)
-{
-  /**
-   * debug category for filtering log messages
-   */
-  GST_DEBUG_CATEGORY_INIT (gst_tensor_src_iio_debug, "tensor_src_iio",
-      0, "tensor_src_iio element");
-
-  return gst_element_register (plugin, "tensor_src_iio", GST_RANK_NONE,
-      GST_TYPE_TENSOR_SRC_IIO);
-}
index 6d54229..b23ec87 100644 (file)
@@ -107,6 +107,9 @@ gst_tensor_split_class_init (GstTensorSplitClass * klass)
   GObjectClass *gobject_class;
   GstElementClass *gstelement_class;
 
+  GST_DEBUG_CATEGORY_INIT (gst_tensor_split_debug, "tensor_split", 0,
+      "Element to split tensors stream to tensor stream");
+
   gobject_class = (GObjectClass *) klass;
   gstelement_class = (GstElementClass *) klass;
 
@@ -679,19 +682,3 @@ gst_tensor_split_get_property (GObject * object, guint prop_id,
       break;
   }
 }
-
-/**
- * @brief entry point to initialize the plug-in
- * initialize the plug-in itself
- * register the element factories and other features
- */
-NNSTREAMER_PLUGIN_INIT (tensor_split)
-{
-  /** debug category for fltering log messages
-   * exchange the string 'Template tensor_split' with your description
-   */
-  GST_DEBUG_CATEGORY_INIT (gst_tensor_split_debug, "tensor_split", 0,
-      "Tensor Spliter");
-  return gst_element_register (plugin, "tensor_split",
-      GST_RANK_NONE, GST_TYPE_TENSOR_SPLIT);
-}
index ba70bde..c8d79e2 100644 (file)
@@ -220,6 +220,9 @@ gst_tensor_transform_class_init (GstTensorTransformClass * klass)
   GstElementClass *gstelement_class;
   GstBaseTransformClass *trans_class;
 
+  GST_DEBUG_CATEGORY_INIT (gst_tensor_transform_debug, "tensor_transform", 0,
+      "Element to transforms tensor dimension or type");
+
   trans_class = (GstBaseTransformClass *) klass;
   gstelement_class = (GstElementClass *) trans_class;
   gobject_class = (GObjectClass *) gstelement_class;
@@ -1750,20 +1753,3 @@ gst_tensor_transform_transform_size (GstBaseTransform * trans,
   *othersize = gst_tensor_info_get_size (&filter->out_config.info);
   return TRUE;
 }
-
-/**
- * @brief entry point to initialize the plug-in
- * initialize the plug-in itself
- * register the element factories and other features
- */
-NNSTREAMER_PLUGIN_INIT (tensor_transform)
-{
-  /**
-   * debug category for fltering log messages
-   */
-  GST_DEBUG_CATEGORY_INIT (gst_tensor_transform_debug, "tensor_transform",
-      0, "tensor_transform element");
-
-  return gst_element_register (plugin, "tensor_transform",
-      GST_RANK_NONE, GST_TYPE_TENSOR_TRANSFORM);
-}