[Converter] Change external converter param
authorGichan Jang <gichan2.jang@samsung.com>
Wed, 14 Apr 2021 04:57:14 +0000 (13:57 +0900)
committerMyungJoo Ham <myungjoo.ham@samsung.com>
Wed, 28 Apr 2021 05:16:39 +0000 (14:16 +0900)
Change external converter param
 - Remove unnecessary param (frames_in, frame_size)

Signed-off-by: Gichan Jang <gichan2.jang@samsung.com>
ext/nnstreamer/extra/nnstreamer_protobuf.cc
ext/nnstreamer/extra/nnstreamer_protobuf.h
ext/nnstreamer/tensor_converter/tensor_converter_flatbuf.cc
ext/nnstreamer/tensor_converter/tensor_converter_flexbuf.cc
ext/nnstreamer/tensor_converter/tensor_converter_protobuf.cc
gst/nnstreamer/include/nnstreamer_plugin_api_converter.h
gst/nnstreamer/tensor_converter/tensor_converter.c
tests/nnstreamer_converter/unittest_converter.cc
tests/nnstreamer_plugins/unittest_plugins.cc

index 5bb700f..4c08bc3 100644 (file)
@@ -115,8 +115,7 @@ gst_tensor_decoder_protobuf (const GstTensorsConfig *config,
 
 /** @brief tensor converter plugin's NNStreamerExternalConverter callback */
 GstBuffer *
-gst_tensor_converter_protobuf (GstBuffer *in_buf, gsize *frame_size,
-    guint *frames_in, GstTensorsConfig *config)
+gst_tensor_converter_protobuf (GstBuffer *in_buf, GstTensorsConfig *config)
 {
   nnstreamer::protobuf::Tensors tensors;
   nnstreamer::protobuf::Tensors::frame_rate *fr = NULL;
@@ -126,7 +125,7 @@ gst_tensor_converter_protobuf (GstBuffer *in_buf, gsize *frame_size,
   guint mem_size;
   gpointer mem_data;
 
-  if (!in_buf || !frame_size || !frames_in || !config) {
+  if (!in_buf || !config) {
     ml_loge ("NULL parameter is passed to tensor_converter::protobuf");
     return NULL;
   }
@@ -144,8 +143,6 @@ gst_tensor_converter_protobuf (GstBuffer *in_buf, gsize *frame_size,
   fr = tensors.mutable_fr ();
   config->rate_n = fr->rate_n ();
   config->rate_d = fr->rate_d ();
-  *frames_in = 1;
-  *frame_size = 0;
   out_buf = gst_buffer_new ();
 
   for (guint i = 0; i < config->info.num_tensors; i++) {
@@ -158,8 +155,6 @@ gst_tensor_converter_protobuf (GstBuffer *in_buf, gsize *frame_size,
       config->info.info[i].dimension[j] = tensor->dimension (j);
     }
     mem_size = tensor->data ().length ();
-    *frame_size += mem_size;
-
     mem_data = g_memdup (tensor->data ().c_str (), mem_size);
 
     out_mem = gst_memory_new_wrapped (
index 7c75c2c..0218368 100644 (file)
@@ -39,16 +39,13 @@ gst_tensor_decoder_protobuf (const GstTensorsConfig * config,
     const GstTensorMemory * input, GstBuffer * outbuf);
 
 /**
- * @brief tensor converter plugin's NNStreamerExternalConverter callback 
- * @param[in] buf The input stream buffer
- * @param[out] frame_size The size of each frame (output buffer)
- * @param[out] frames_in The number of frames in the given input buffer.
+ * @brief tensor converter plugin's NNStreamerExternalConverter callback
+ * @param[in] in_buf The input stream buffer
  * @param[out] config tensors config structure to be filled
  * @retval Return input buffer(in_buf) if the data is to be kept untouched.
  * @retval Return a new GstBuf if the data is to be modified.
  */
 GstBuffer *
-gst_tensor_converter_protobuf (GstBuffer * in_buf, gsize * frame_size,
-    guint * frames_in, GstTensorsConfig * config);
+gst_tensor_converter_protobuf (GstBuffer * in_buf, GstTensorsConfig * config);
 
 #endif /* __NNS_PROTOBUF_UTIL_H__ */
index a4a3f49..1d16d49 100644 (file)
@@ -90,7 +90,7 @@ fbc_get_out_config (const GstCaps *in_cap, GstTensorsConfig *config)
  *          remove frame size and the number of frames
  */
 static GstBuffer *
-fbc_convert (GstBuffer *in_buf, gsize *frame_size, guint *frames_in, GstTensorsConfig *config)
+fbc_convert (GstBuffer *in_buf, GstTensorsConfig *config)
 {
   const Tensors *tensors;
   const flatbuffers::Vector<flatbuffers::Offset<Tensor>> *tensor;
@@ -101,7 +101,7 @@ fbc_convert (GstBuffer *in_buf, gsize *frame_size, guint *frames_in, GstTensorsC
   GstMapInfo in_info;
   guint mem_size;
 
-  if (!in_buf || !frame_size || !frames_in || !config) {
+  if (!in_buf || !config) {
     ml_loge ("NULL parameter is passed to tensor_converter::flatbuf");
     return NULL;
   }
@@ -125,8 +125,6 @@ fbc_convert (GstBuffer *in_buf, gsize *frame_size, guint *frames_in, GstTensorsC
 
   tensor = tensors->tensor ();
   out_buf = gst_buffer_new ();
-  *frame_size = 0;
-  *frames_in = 1;
 
   for (guint i = 0; i < config->info.num_tensors; i++) {
     gsize offset;
@@ -140,7 +138,6 @@ fbc_convert (GstBuffer *in_buf, gsize *frame_size, guint *frames_in, GstTensorsC
       config->info.info[i].dimension[j] = tensor->Get (i)->dimension ()->Get (j);
     }
     mem_size = VectorLength (tensor_data);
-    *frame_size += mem_size;
 
     offset = tensor_data->data () - in_info.data;
 
index d18fd8d..f6902c9 100644 (file)
@@ -111,14 +111,14 @@ flxc_get_out_config (const GstCaps *in_cap, GstTensorsConfig *config)
 /** @brief tensor converter plugin's NNStreamerExternalConverter callback
  */
 static GstBuffer *
-flxc_convert (GstBuffer *in_buf, gsize *frame_size, guint *frames_in, GstTensorsConfig *config)
+flxc_convert (GstBuffer *in_buf, GstTensorsConfig *config)
 {
   GstBuffer *out_buf = NULL;
   GstMemory *in_mem, *out_mem;
   GstMapInfo in_info;
   guint mem_size;
 
-  if (!in_buf || !frame_size || !frames_in || !config) {
+  if (!in_buf || !config) {
     ml_loge ("NULL parameter is passed to tensor_converter::flexbuf");
     return NULL;
   }
@@ -140,8 +140,6 @@ flxc_convert (GstBuffer *in_buf, gsize *frame_size, guint *frames_in, GstTensors
   config->rate_n = tensors["rate_n"].AsInt32 ();
   config->rate_d = tensors["rate_d"].AsInt32 ();
   out_buf = gst_buffer_new ();
-  *frame_size = 0;
-  *frames_in = 1;
 
   for (guint i = 0; i < config->info.num_tensors; i++) {
     gchar * tensor_key = g_strdup_printf ("tensor_%d", i);
@@ -158,7 +156,6 @@ flxc_convert (GstBuffer *in_buf, gsize *frame_size, guint *frames_in, GstTensors
     }
     flexbuffers::Blob tensor_data = tensor[3].AsBlob ();
     mem_size = tensor_data.size ();
-    *frame_size += mem_size;
 
     offset = tensor_data.data () - in_info.data;
 
index 17a5bce..ed05cf4 100644 (file)
@@ -84,9 +84,9 @@ pbc_get_out_config (const GstCaps *in_cap, GstTensorsConfig *config)
 
 /** @brief tensor converter plugin's NNStreamerExternalConverter callback */
 static GstBuffer *
-pbc_convert (GstBuffer *in_buf, gsize *frame_size, guint *frames_in, GstTensorsConfig *config)
+pbc_convert (GstBuffer *in_buf, GstTensorsConfig *config)
 {
-  return gst_tensor_converter_protobuf (in_buf, frame_size, frames_in, config);
+  return gst_tensor_converter_protobuf (in_buf, config);
 }
 
 static gchar converter_subplugin_protobuf[] = "protobuf";
index c241c38..d17b03e 100644 (file)
@@ -43,13 +43,10 @@ typedef struct _NNStreamerExternalConverter
   const char *name;
 
   /* 1. chain func, data handling. */
-  GstBuffer *(*convert) (GstBuffer * in_buf, gsize * frame_size,
-      guint * frames_in, GstTensorsConfig * config);
+  GstBuffer *(*convert) (GstBuffer * in_buf, GstTensorsConfig * config);
   /**< Convert the given input stream to tensor/tensors stream.
    *
    * @param[in] buf The input stream buffer
-   * @param[out] frame_size The size of each frame (output buffer)
-   * @param[out] frames_in The number of frames in the given input buffer.
    * @param[out] config tensors config structure to be filled
    * @retval Return input buffer(in_buf) if the data is to be kept untouched.
    * @retval Return a new GstBuf if the data is to be modified.
index ffaa9c7..285cf87 100644 (file)
@@ -1057,11 +1057,8 @@ gst_tensor_converter_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
           goto error;
         }
         inbuf = self->custom.func (buf, self->custom.data, &new_config);
-        frames_in = 1;
-        frame_size = gst_buffer_get_size (inbuf);
       } else if (self->externalConverter && self->externalConverter->convert) {
-        inbuf = self->externalConverter->convert (buf, &frame_size, &frames_in,
-            &new_config);
+        inbuf = self->externalConverter->convert (buf, &new_config);
       } else {
         GST_ERROR_OBJECT (self, "Undefined behavior with type %d\n",
             self->in_media_type);
@@ -1073,6 +1070,8 @@ gst_tensor_converter_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
         gst_tensors_info_free (&new_config.info);
         goto error;
       }
+      frames_in = 1;
+      frame_size = gst_buffer_get_size (inbuf);
 
       if (!gst_tensors_config_is_equal (config, &new_config)) {
         gst_tensor_converter_update_caps (self, self->srcpad, &new_config);
index c80c2c4..5ec5dfd 100644 (file)
@@ -202,7 +202,7 @@ conv_get_out_config (const GstCaps *in_cap, GstTensorsConfig *config)
 /** @brief tensor converter plugin's convert callback\r
  */\r
 static GstBuffer *\r
-conv_convert (GstBuffer *in_buf, gsize *frame_size, guint *frames_in, GstTensorsConfig *config)\r
+conv_convert (GstBuffer *in_buf, GstTensorsConfig *config)\r
 {\r
   return NULL;\r
 }\r
index a08da7e..e618019 100644 (file)
@@ -5613,8 +5613,7 @@ TEST (testStreamBuffers, tensorsNormal)
   GstMemory *mem;
   GstTensorMemory input[NNS_TENSOR_SIZE_LIMIT];
   GstMapInfo info;
-  gsize data_size, frame_size = 0;
-  guint mode_idx, frames_in = 0, i, j;
+  guint mode_idx, i, j;
   const GstTensorDecoderDef *fb_dec;
   const NNStreamerExternalConverter *fb_conv;
 
@@ -5638,7 +5637,6 @@ TEST (testStreamBuffers, tensorsNormal)
     config.info.info[1].type = _NNS_INT32;
     gst_tensor_parse_dimension ("3:4:2:2", config.info.info[1].dimension);
 
-    data_size = gst_tensors_info_get_size (&config.info, -1);
     for (i = 0; i < config.info.num_tensors; i++) {
       input[i].size = gst_tensor_info_get_size (&config.info.info[i]);
       input[i].data = g_malloc0 (input[0].size);
@@ -5657,10 +5655,8 @@ TEST (testStreamBuffers, tensorsNormal)
     EXPECT_EQ (gst_buffer_n_memory (dec_out_buf), 1U);
 
     /** Convert flatbuf to tensors */
-    conv_out_buf = fb_conv->convert (dec_out_buf, &frame_size, &frames_in, &check_config);
+    conv_out_buf = fb_conv->convert (dec_out_buf, &check_config);
     EXPECT_EQ (gst_buffer_n_memory (conv_out_buf), 2U);
-    EXPECT_EQ (data_size, frame_size);
-    EXPECT_EQ (1U, frames_in);
 
     /** Check tensors config. */
     EXPECT_TRUE (check_config.info.info[0].name == NULL);
@@ -5750,8 +5746,6 @@ TEST (testConverterSubplugins, flatbufInvalidParam0_n)
   const gchar *mode_name = "flatbuf";
   GstBuffer *conv_out_buf = NULL;
   GstTensorsConfig config;
-  gsize frame_size = 0;
-  guint frames_in = 0;
   const NNStreamerExternalConverter *fb_conv;
 
   /** Find converter subplugins */
@@ -5759,7 +5753,7 @@ TEST (testConverterSubplugins, flatbufInvalidParam0_n)
   ASSERT_TRUE (fb_conv);
 
   gst_tensors_config_init (&config);
-  conv_out_buf = fb_conv->convert (NULL, &frame_size, &frames_in, &config);
+  conv_out_buf = fb_conv->convert (NULL, &config);
 
   EXPECT_TRUE (NULL == conv_out_buf);
   gst_tensors_info_free (&config.info);
@@ -5773,7 +5767,6 @@ TEST (testConverterSubplugins, flatbufInvalidParam1_n)
   const gchar *mode_name = "flatbuf";
   GstBuffer *in_buf = NULL, *conv_out_buf = NULL;
   GstTensorsConfig config;
-  guint frames_in = 0;
   const NNStreamerExternalConverter *fb_conv;
 
   /** Find converter subplugins */
@@ -5783,7 +5776,7 @@ TEST (testConverterSubplugins, flatbufInvalidParam1_n)
   /** Prepare input */
   gst_tensors_config_init (&config);
   in_buf = gst_buffer_new ();
-  conv_out_buf = fb_conv->convert (in_buf, NULL, &frames_in, &config);
+  conv_out_buf = fb_conv->convert (in_buf, NULL);
 
   EXPECT_TRUE (NULL == conv_out_buf);
   gst_tensors_info_free (&config.info);
@@ -5791,52 +5784,6 @@ TEST (testConverterSubplugins, flatbufInvalidParam1_n)
 }
 
 /**
- * @brief Test for converter subplugins with invalid parameter
- */
-TEST (testConverterSubplugins, flatbufInvalidParam2_n)
-{
-  const gchar *mode_name = "flatbuf";
-  GstBuffer *in_buf = NULL, *conv_out_buf = NULL;
-  GstTensorsConfig config;
-  gsize frame_size = 0;
-  const NNStreamerExternalConverter *fb_conv;
-
-  /** Find converter subplugins */
-  fb_conv = nnstreamer_converter_find (mode_name);
-  ASSERT_TRUE (fb_conv);
-
-  gst_tensors_config_init (&config);
-  in_buf = gst_buffer_new ();
-  conv_out_buf = fb_conv->convert (in_buf, &frame_size, NULL, &config);
-
-  EXPECT_TRUE (NULL == conv_out_buf);
-  gst_tensors_info_free (&config.info);
-  gst_buffer_unref (in_buf);
-}
-
-/**
- * @brief Test for converter subplugins with invalid parameter
- */
-TEST (testConverterSubplugins, flatbufInvalidParam3_n)
-{
-  const gchar *mode_name = "flatbuf";
-  GstBuffer *in_buf = NULL, *conv_out_buf = NULL;
-  gsize frame_size = 0;
-  guint frames_in = 0;
-  const NNStreamerExternalConverter *fb_conv;
-
-  /** Find converter subplugins */
-  fb_conv = nnstreamer_converter_find (mode_name);
-  ASSERT_TRUE (fb_conv);
-
-  in_buf = gst_buffer_new ();
-  conv_out_buf = fb_conv->convert (in_buf, &frame_size, &frames_in, NULL);
-
-  EXPECT_TRUE (NULL == conv_out_buf);
-  gst_buffer_unref (in_buf);
-}
-
-/**
  * @brief Test for decoder subplugins with invalid parameter
  */
 TEST (testDecoderSubplugins, protobufInvalidParam0_n)
@@ -5904,8 +5851,6 @@ TEST (testConverterSubplugins, protobufInvalidParam0_n)
   const gchar *mode_name = "protobuf";
   GstBuffer *conv_out_buf = NULL;
   GstTensorsConfig config;
-  gsize frame_size = 0;
-  guint frames_in = 0;
   const NNStreamerExternalConverter *pb_conv;
 
   /** Find converter subplugins */
@@ -5913,7 +5858,7 @@ TEST (testConverterSubplugins, protobufInvalidParam0_n)
   ASSERT_TRUE (pb_conv);
 
   gst_tensors_config_init (&config);
-  conv_out_buf = pb_conv->convert (NULL, &frame_size, &frames_in, &config);
+  conv_out_buf = pb_conv->convert (NULL, &config);
 
   EXPECT_TRUE (NULL == conv_out_buf);
   gst_tensors_info_free (&config.info);
@@ -5927,7 +5872,6 @@ TEST (testConverterSubplugins, protobufInvalidParam1_n)
   const gchar *mode_name = "protobuf";
   GstBuffer *in_buf = NULL, *conv_out_buf = NULL;
   GstTensorsConfig config;
-  guint frames_in = 0;
   const NNStreamerExternalConverter *pb_conv;
 
   /** Find converter subplugins */
@@ -5936,7 +5880,7 @@ TEST (testConverterSubplugins, protobufInvalidParam1_n)
 
   gst_tensors_config_init (&config);
   in_buf = gst_buffer_new ();
-  conv_out_buf = pb_conv->convert (in_buf, NULL, &frames_in, &config);
+  conv_out_buf = pb_conv->convert (in_buf, NULL);
 
   EXPECT_TRUE (NULL == conv_out_buf);
   gst_tensors_info_free (&config.info);
@@ -5944,52 +5888,6 @@ TEST (testConverterSubplugins, protobufInvalidParam1_n)
 }
 
 /**
- * @brief Test for converter subplugins with invalid parameter
- */
-TEST (testConverterSubplugins, protobufInvalidParam2_n)
-{
-  const gchar *mode_name = "protobuf";
-  GstBuffer *in_buf = NULL, *conv_out_buf = NULL;
-  GstTensorsConfig config;
-  gsize frame_size = 0;
-  const NNStreamerExternalConverter *pb_conv;
-
-  /** Find converter subplugins */
-  pb_conv = nnstreamer_converter_find (mode_name);
-  ASSERT_TRUE (pb_conv);
-
-  gst_tensors_config_init (&config);
-  in_buf = gst_buffer_new ();
-  conv_out_buf = pb_conv->convert (in_buf, &frame_size, NULL, &config);
-
-  EXPECT_TRUE (NULL == conv_out_buf);
-  gst_tensors_info_free (&config.info);
-  gst_buffer_unref (in_buf);
-}
-
-/**
- * @brief Test for converter subplugins with invalid parameter
- */
-TEST (testConverterSubplugins, protobufInvalidParam3_n)
-{
-  const gchar *mode_name = "protobuf";
-  GstBuffer *in_buf = NULL, *conv_out_buf = NULL;
-  gsize frame_size = 0;
-  guint frames_in = 0;
-  const NNStreamerExternalConverter *pb_conv;
-
-  /** Find converter subplugins */
-  pb_conv = nnstreamer_converter_find (mode_name);
-  ASSERT_TRUE (pb_conv);
-
-  in_buf = gst_buffer_new ();
-  conv_out_buf = pb_conv->convert (in_buf, &frame_size, &frames_in, NULL);
-
-  EXPECT_TRUE (NULL == conv_out_buf);
-  gst_buffer_unref (in_buf);
-}
-
-/**
  * @brief Test for decoder subplugins with invalid parameter
  */
 TEST (testDecoderSubplugins, flexbufInvalidParam0_n)
@@ -6061,8 +5959,6 @@ TEST (testConverterSubplugins, flexbufInvalidParam0_n)
   const gchar *mode_name = "flexbuf";
   GstBuffer *conv_out_buf = NULL;
   GstTensorsConfig config;
-  gsize frame_size = 0;
-  guint frames_in = 0;
   const NNStreamerExternalConverter *flx_conv;
 
   /** Find converter subplugins */
@@ -6070,7 +5966,7 @@ TEST (testConverterSubplugins, flexbufInvalidParam0_n)
   ASSERT_TRUE (flx_conv);
 
   gst_tensors_config_init (&config);
-  conv_out_buf = flx_conv->convert (NULL, &frame_size, &frames_in, &config);
+  conv_out_buf = flx_conv->convert (NULL, &config);
 
   EXPECT_TRUE (NULL == conv_out_buf);
   gst_tensors_info_free (&config.info);
@@ -6084,31 +5980,6 @@ TEST (testConverterSubplugins, flexbufInvalidParam1_n)
   const gchar *mode_name = "flexbuf";
   GstBuffer *in_buf = NULL, *conv_out_buf = NULL;
   GstTensorsConfig config;
-  guint frames_in = 0;
-  const NNStreamerExternalConverter *flx_conv;
-
-  /** Find converter subplugins */
-  flx_conv = nnstreamer_converter_find (mode_name);
-  ASSERT_TRUE (flx_conv);
-
-  gst_tensors_config_init (&config);
-  in_buf = gst_buffer_new ();
-  conv_out_buf = flx_conv->convert (in_buf, NULL, &frames_in, &config);
-
-  EXPECT_TRUE (NULL == conv_out_buf);
-  gst_tensors_info_free (&config.info);
-  gst_buffer_unref (in_buf);
-}
-
-/**
- * @brief Test for converter subplugins with invalid parameter
- */
-TEST (testConverterSubplugins, flexbufInvalidParam2_n)
-{
-  const gchar *mode_name = "flexbuf";
-  GstBuffer *in_buf = NULL, *conv_out_buf = NULL;
-  GstTensorsConfig config;
-  gsize frame_size = 0;
   const NNStreamerExternalConverter *flx_conv;
 
   /** Find converter subplugins */
@@ -6117,7 +5988,7 @@ TEST (testConverterSubplugins, flexbufInvalidParam2_n)
 
   gst_tensors_config_init (&config);
   in_buf = gst_buffer_new ();
-  conv_out_buf = flx_conv->convert (in_buf, &frame_size, NULL, &config);
+  conv_out_buf = flx_conv->convert (in_buf, NULL);
 
   EXPECT_TRUE (NULL == conv_out_buf);
   gst_tensors_info_free (&config.info);
@@ -6125,28 +5996,6 @@ TEST (testConverterSubplugins, flexbufInvalidParam2_n)
 }
 
 /**
- * @brief Test for converter subplugins with invalid parameter
- */
-TEST (testConverterSubplugins, flexbufInvalidParam3_n)
-{
-  const gchar *mode_name = "flexbuf";
-  GstBuffer *in_buf = NULL, *conv_out_buf = NULL;
-  gsize frame_size = 0;
-  guint frames_in = 0;
-  const NNStreamerExternalConverter *flx_conv;
-
-  /** Find converter subplugins */
-  flx_conv = nnstreamer_converter_find (mode_name);
-  ASSERT_TRUE (flx_conv);
-
-  in_buf = gst_buffer_new ();
-  conv_out_buf = flx_conv->convert (in_buf, &frame_size, &frames_in, NULL);
-
-  EXPECT_TRUE (NULL == conv_out_buf);
-  gst_buffer_unref (in_buf);
-}
-
-/**
  * @brief Main function for unit test.
  */
 int