1. Get the length of dimension, not constant.
2. Init dim as 0 in some testcase.
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
* @bug No known bugs
*/
#include "cppfilter_test.hh"
+#include <nnstreamer_plugin_api_util.h>
#include <nnstreamer_util.h>
/** @brief API method */
int
filter_basic::getInputDim (GstTensorsInfo *info)
{
+ gst_tensors_info_init (info);
+
info->num_tensors = 1;
info->info[0].type = _NNS_UINT8;
info->info[0].dimension[0] = 3;
info->info[0].dimension[1] = 4;
info->info[0].dimension[2] = 4;
- for (int i = 3; i < NNS_TENSOR_RANK_LIMIT; i++)
- info->info[0].dimension[i] = 1;
+ info->info[0].dimension[3] = 1;
return 0;
}
int
filter_basic::getOutputDim (GstTensorsInfo *info)
{
+ gst_tensors_info_init (info);
+
info->num_tensors = 1;
info->info[0].type = _NNS_UINT8;
info->info[0].dimension[0] = 3;
info->info[0].dimension[1] = 4;
info->info[0].dimension[2] = 4;
info->info[0].dimension[3] = 2;
- for (int i = 4; i < NNS_TENSOR_RANK_LIMIT; i++)
- info->info[0].dimension[i] = 1;
return 0;
}
int
filter_basic2::getInputDim (GstTensorsInfo *info)
{
+ gst_tensors_info_init (info);
+
info->num_tensors = 1;
info->info[0].type = _NNS_UINT8;
info->info[0].dimension[0] = 3;
info->info[0].dimension[1] = 16;
info->info[0].dimension[2] = 16;
- for (int i = 3; i < NNS_TENSOR_RANK_LIMIT; i++)
- info->info[0].dimension[i] = 1;
+ info->info[0].dimension[3] = 1;
return 0;
}
int
filter_basic2::getOutputDim (GstTensorsInfo *info)
{
+ gst_tensors_info_init (info);
+
info->num_tensors = 1;
info->info[0].type = _NNS_UINT8;
info->info[0].dimension[0] = 3;
info->info[0].dimension[1] = 16;
info->info[0].dimension[2] = 16;
info->info[0].dimension[3] = 2;
- for (int i = 4; i < NNS_TENSOR_RANK_LIMIT; i++)
- info->info[0].dimension[i] = 1;
return 0;
}
#include <errno.h>
#include <math.h>
#include <tensor_filter_custom.h>
+#include <nnstreamer_plugin_api_util.h>
#include <nnstreamer_util.h>
#include <glib.h>
pt_init (const GstTensorFilterProperties * prop)
{
pt_data *data = (pt_data *) malloc (sizeof (pt_data));
- int i;
UNUSED (prop);
assert (data);
data->id = 0;
data->counter = 0;
+ gst_tensor_info_init (&data->info[0]);
data->info[0].dimension[0] = TSIZE;
data->info[0].dimension[1] = TSIZE;
data->info[0].dimension[2] = TSIZE;
- for (i = 3; i < NNS_TENSOR_RANK_LIMIT; i++)
- data->info[0].dimension[i] = 1;
+ data->info[0].dimension[3] = 1;
data->info[0].type = _NNS_FLOAT32;
data->info[1] = data->info[0];
data->info[2] = data->info[0];
#include <string.h>
#include <errno.h>
#include <tensor_filter_custom.h>
+#include <nnstreamer_plugin_api_util.h>
#include <nnstreamer_util.h>
#define TSIZE (4)
pt_init (const GstTensorFilterProperties * prop)
{
pt_data *data = (pt_data *) malloc (sizeof (pt_data));
- int i;
UNUSED (prop);
assert (data);
data->id = 0;
data->counter = 0;
+ gst_tensor_info_init (&data->info[0]);
data->info[0].dimension[0] = TSIZE;
data->info[0].dimension[1] = TSIZE;
data->info[0].dimension[2] = TSIZE;
- for (i = 3; i < NNS_TENSOR_RANK_LIMIT; i++)
- data->info[0].dimension[i] = 1;
+ data->info[0].dimension[3] = 1;
data->info[0].type = _NNS_UINT8;
data->info[1] = data->info[0];
#define D2 (280)
#define D3 (40)
#define D4 (1)
-#define D5 (1)
-#define D6 (1)
-#define D7 (1)
-#define D8 (1)
/**
* @brief _pt_data
memset (data, 0, sizeof (pt_data));
data->id = 0;
+ gst_tensor_info_init (&data->info);
data->info.dimension[0] = D1;
data->info.dimension[1] = D2;
data->info.dimension[2] = D3;
data->info.dimension[3] = D4;
- data->info.dimension[4] = D5;
- data->info.dimension[5] = D6;
- data->info.dimension[6] = D7;
- data->info.dimension[7] = D8;
data->info.type = _NNS_UINT8;
return data;
UNUSED (prop);
assert (data);
- assert (NNS_TENSOR_RANK_LIMIT >= 7);
+ assert (NNS_TENSOR_RANK_LIMIT >= 3);
info->num_tensors = 1;
gst_tensor_info_copy (&info->info[0], &data->info);
UNUSED (prop);
assert (data);
- assert (NNS_TENSOR_RANK_LIMIT >= 7);
+ assert (NNS_TENSOR_RANK_LIMIT >= 3);
info->num_tensors = 1;
gst_tensor_info_copy (&info->info[0], &data->info);
# custom_example_RNN
library('dummyRNN',
join_paths('custom_example_RNN', 'dummy_RNN.c'),
+ dependencies: [glib_dep, nnstreamer_dep],
include_directories: nnstreamer_inc,
install: get_option('install-test'),
install_dir: customfilter_install_dir
# custom_example_LSTM
library('dummyLSTM',
join_paths('custom_example_LSTM', 'dummy_LSTM.c'),
- dependencies: [libm_dep, glib_dep],
+ dependencies: [libm_dep, glib_dep, nnstreamer_dep],
include_directories: nnstreamer_inc,
install: get_option('install-test'),
install_dir: customfilter_install_dir
pipeline = g_strdup_printf (
"videotestsrc num-buffers=1 pattern=13 ! videoconvert ! videoscale ! "
"video/x-raw,format=RGB,width=160,height=120 ! tensor_converter ! "
- "tensor_if name=tif compared-value=A_VALUE compared-value-option=0:2:1:1,0 "
+ "tensor_if name=tif compared-value=A_VALUE compared-value-option=1:2:1:1,1 "
"supplied-value=100 operator=GE then=PASSTHROUGH else=SKIP ! tensor_sink");
gstpipe = gst_parse_launch (pipeline, NULL);
EXPECT_NE (pipeline, nullptr);
EXPECT_EQ (TIFCV_A_VALUE, int_val);
g_object_get (tif_handle, "compared-value-option", &str_val, NULL);
- EXPECT_STREQ ("0:2:1:1:0:0:0:0,0", str_val);
+ EXPECT_TRUE (gst_tensor_dimension_string_is_equal ("1:2:1:1,1", str_val));
g_free (str_val);
g_object_get (tif_handle, "supplied-value", &str_val, NULL);
ttype = convert_to_numpy_type(tensor[1].AsInt)
tdim = tensor[2].AsTypedVector
dim = []
- for j in range(4):
- dim.append(tdim[j].AsInt)
+ for d in tdim:
+ dim.append(d.AsInt)
tensors_info.append(nns.TensorShape(dim, ttype))
raw_data.append(np.frombuffer(tensor[3].AsBlob, dtype=np.uint8))
fbb.String("")
fbb.Int(ttype)
with fbb.TypedVector():
- for j in range(8):
- fbb.Int(dims[j])
+ for d in dims:
+ fbb.Int(d)
fbb.Blob(raw_data[i])
data = bytes(fbb.Finish())
int i;
assert (data);
+ gst_tensors_info_init (in_info);
in_info->num_tensors = 1; /** @todo MODIFY THIS! */
in_info->info[0].name = NULL; /** Optional, default is null. Set new memory for tensor name string. */
in_info->info[0].type = _NNS_UINT8; /** @todo MODIFY THIS! */
in_info->info[0].dimension[0] = 3; /** @todo MODIFY THIS! */
in_info->info[0].dimension[1] = 224; /** @todo MODIFY THIS! */
in_info->info[0].dimension[2] = 224; /** @todo MODIFY THIS! */
-
- /**
- * Check max dimension (NNS_TENSOR_RANK_LIMIT) and
- * fill 1 to uninitialized dimension values.
- */
- for (i = 3; i < NNS_TENSOR_RANK_LIMIT; i++)
- in_info->info[0].dimension[i] = 1;
+ in_info->info[0].dimension[3] = 1; /** @todo MODIFY THIS! */
return 0;
}}
int i;
assert (data);
+ gst_tensors_info_init (out_info);
out_info->num_tensors = 1; /** @todo MODIFY THIS! */
out_info->info[0].name = NULL; /** Optional, default is null. Set new memory for tensor name string. */
out_info->info[0].type = _NNS_UINT8; /** @todo MODIFY THIS! */
out_info->info[0].dimension[0] = 3; /** @todo MODIFY THIS! */
out_info->info[0].dimension[1] = 224; /** @todo MODIFY THIS! */
out_info->info[0].dimension[2] = 224; /** @todo MODIFY THIS! */
-
- /**
- * Check max dimension (NNS_TENSOR_RANK_LIMIT) and
- * fill 1 to uninitialized dimension values.
- */
- for (i = 3; i < NNS_TENSOR_RANK_LIMIT; i++)
- out_info->info[0].dimension[i] = 1;
+ out_info->info[0].dimension[3] = 1; /** @todo MODIFY THIS! */
return 0;
}}
assert (in_info);
assert (out_info);
+ gst_tensors_info_init (out_info);
out_info->num_tensors = in_info->num_tensors; /** @todo Configure the number of tensors in a output frame */
/** @todo Configure the name/type/dimension of tensors in a output frame. */
int i;
/** If you want to look at input dimension/type, refer to prop->input_meta */
- const GstTensorsInfo * in_info __attribute__((unused)) = &prop->input_meta;
+ const GstTensorsInfo *in_info __attribute__((unused)) = &prop->input_meta;
/** If you want to look at output dimension/type, refer to prop->output_meta */
- const GstTensorsInfo * out_info = &prop->output_meta;
+ const GstTensorsInfo *out_info = &prop->output_meta;
/** Allocate output buffer */
for (i = 0; i < out_info->num_tensors; i++)
int i;
/** If you want to look at input dimension/type, refer to prop->input_meta */
- const GstTensorsInfo * in_info __attribute__((unused)) = &prop->input_meta;
+ const GstTensorsInfo *in_info __attribute__((unused)) = &prop->input_meta;
/** If you want to look at output dimension/type, refer to prop->output_meta */
- const GstTensorsInfo * out_info __attribute__((unused)) = &prop->output_meta;
+ const GstTensorsInfo *out_info __attribute__((unused)) = &prop->output_meta;
/** @note Caller will allocate output buffer accornding to out_info. */