From: Jaeyun Jung Date: Tue, 29 Aug 2023 06:52:02 +0000 (+0900) Subject: [Converter] incoming data format X-Git-Tag: accepted/tizen/unified/20230907.175333~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9ad183c94a8514e472855ec48e1c430291ef0bdb;p=platform%2Fupstream%2Fnnstreamer.git [Converter] incoming data format Update tensor dimension of incoming data, 0-init. - video : [ch][w][h][frames] - audio : [ch][samples] - text : [size][samples] - octet/tensor : [size] Signed-off-by: Jaeyun Jung --- diff --git a/gst/nnstreamer/elements/gsttensor_converter.c b/gst/nnstreamer/elements/gsttensor_converter.c index 79d51d6..c142cfc 100644 --- a/gst/nnstreamer/elements/gsttensor_converter.c +++ b/gst/nnstreamer/elements/gsttensor_converter.c @@ -1497,9 +1497,9 @@ gst_tensor_converter_parse_video (GstTensorConverter * self, config->info.info[0].dimension[2] = height; /* Supposed 1 frame in tensor, change dimension[3] if tensor contains N frames. */ - for (i = 3; i < NNS_TENSOR_RANK_LIMIT; i++) { - config->info.info[0].dimension[i] = 1; - } + config->info.info[0].dimension[3] = 1; + for (i = 4; i < NNS_TENSOR_RANK_LIMIT; i++) + config->info.info[0].dimension[i] = 0; config->rate_n = GST_VIDEO_INFO_FPS_N (&vinfo); config->rate_d = GST_VIDEO_INFO_FPS_D (&vinfo); @@ -1600,9 +1600,9 @@ gst_tensor_converter_parse_audio (GstTensorConverter * self, config->info.info[0].dimension[0] = channels; /* Supposed 1 frame in tensor, change dimension[1] if tensor contains N frames. */ - for (i = 1; i < NNS_TENSOR_RANK_LIMIT; i++) { - config->info.info[0].dimension[i] = 1; - } + config->info.info[0].dimension[1] = 1; + for (i = 2; i < NNS_TENSOR_RANK_LIMIT; i++) + config->info.info[0].dimension[i] = 0; config->rate_n = GST_AUDIO_INFO_RATE (&ainfo); config->rate_d = 1; @@ -1665,9 +1665,9 @@ gst_tensor_converter_parse_text (GstTensorConverter * self, config->info.info[0].dimension[0] = text_size; /* Supposed 1 frame in tensor, change dimension[1] if tensor contains N frames. */ - for (i = 1; i < NNS_TENSOR_RANK_LIMIT; i++) { - config->info.info[0].dimension[i] = 1; - } + config->info.info[0].dimension[1] = 1; + for (i = 2; i < NNS_TENSOR_RANK_LIMIT; i++) + config->info.info[0].dimension[i] = 0; if (gst_structure_has_field (structure, "framerate")) { gst_structure_get_fraction (structure, "framerate", &config->rate_n, @@ -1757,14 +1757,16 @@ gst_tensor_converter_parse_octet (GstTensorConverter * self, * We cannot get the exact tensors info from caps. * All tensors info should be updated. * If output is flexible, dimension should be updated in chain function with buffer size. + * (data format for tensor: [size]) */ if (flexible) { config->info.format = _NNS_TENSOR_FORMAT_FLEXIBLE; config->info.num_tensors = 1; config->info.info[0].type = _NNS_UINT8; - for (i = 0; i < NNS_TENSOR_RANK_LIMIT; i++) - config->info.info[0].dimension[i] = 1; + config->info.info[0].dimension[0] = 1; + for (i = 1; i < NNS_TENSOR_RANK_LIMIT; i++) + config->info.info[0].dimension[i] = 0; } else { gst_tensors_info_copy (&config->info, _info); self->frame_size = gst_tensors_info_get_size (&config->info, -1); @@ -1808,11 +1810,13 @@ gst_tensor_converter_parse_tensor (GstTensorConverter * self, /** * We cannot get the exact tensors info from caps. * All tensors info should be updated in chain function. + * (data format for tensor: [size]) */ config->info.num_tensors = 1; config->info.info[0].type = _NNS_UINT8; - for (i = 0; i < NNS_TENSOR_RANK_LIMIT; i++) - config->info.info[0].dimension[i] = 1; + config->info.info[0].dimension[0] = 1; + for (i = 1; i < NNS_TENSOR_RANK_LIMIT; i++) + config->info.info[0].dimension[i] = 0; } if (gst_structure_has_field (structure, "framerate")) { diff --git a/tests/nnstreamer_plugins/unittest_plugins.cc b/tests/nnstreamer_plugins/unittest_plugins.cc index f68423c..04ad0dd 100644 --- a/tests/nnstreamer_plugins/unittest_plugins.cc +++ b/tests/nnstreamer_plugins/unittest_plugins.cc @@ -3422,7 +3422,7 @@ TEST (testTensorConverter, bytesToFlex) EXPECT_EQ (meta.type, _NNS_UINT8); EXPECT_EQ (meta.dimension[0], data_size); - EXPECT_EQ (meta.dimension[1], 1U); + EXPECT_LE (meta.dimension[1], 1U); EXPECT_EQ ((media_type) meta.media_type, _NNS_OCTET); data_size = gst_tensor_meta_info_get_header_size (&meta); diff --git a/tests/nnstreamer_sink/unittest_sink.cc b/tests/nnstreamer_sink/unittest_sink.cc index 25ba240..94a77a3 100644 --- a/tests/nnstreamer_sink/unittest_sink.cc +++ b/tests/nnstreamer_sink/unittest_sink.cc @@ -2575,7 +2575,6 @@ TEST (tensorStreamTest, videoGray83fPadding) _free_test_data (option); } - /** * @brief Test for video format GRAY16_BE. */ @@ -2690,8 +2689,8 @@ TEST (tensorStreamTest, audioS8) EXPECT_EQ (g_test_data.tensors_config.info.info[0].type, _NNS_INT8); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[0], 1U); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[1], 500U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[2], 1U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[3], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[2], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[3], 1U); EXPECT_EQ (g_test_data.tensors_config.rate_n, 16000); EXPECT_EQ (g_test_data.tensors_config.rate_d, 1); @@ -2731,8 +2730,8 @@ TEST (tensorStreamTest, audioU8100f) EXPECT_EQ (g_test_data.tensors_config.info.info[0].type, _NNS_UINT8); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[0], 1U); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[1], 100U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[2], 1U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[3], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[2], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[3], 1U); EXPECT_EQ (g_test_data.tensors_config.rate_n, 16000); EXPECT_EQ (g_test_data.tensors_config.rate_d, 1); @@ -2772,8 +2771,8 @@ TEST (tensorStreamTest, audioS16) EXPECT_EQ (g_test_data.tensors_config.info.info[0].type, _NNS_INT16); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[0], 1U); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[1], 500U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[2], 1U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[3], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[2], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[3], 1U); EXPECT_EQ (g_test_data.tensors_config.rate_n, 16000); EXPECT_EQ (g_test_data.tensors_config.rate_d, 1); @@ -2813,8 +2812,8 @@ TEST (tensorStreamTest, audioU161000f) EXPECT_EQ (g_test_data.tensors_config.info.info[0].type, _NNS_UINT16); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[0], 1U); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[1], 1000U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[2], 1U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[3], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[2], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[3], 1U); EXPECT_EQ (g_test_data.tensors_config.rate_n, 16000); EXPECT_EQ (g_test_data.tensors_config.rate_d, 1); @@ -2854,8 +2853,8 @@ TEST (tensorStreamTest, audioS32) EXPECT_EQ (g_test_data.tensors_config.info.info[0].type, _NNS_INT32); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[0], 1U); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[1], 500U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[2], 1U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[3], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[2], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[3], 1U); EXPECT_EQ (g_test_data.tensors_config.rate_n, 44100); EXPECT_EQ (g_test_data.tensors_config.rate_d, 1); @@ -2895,8 +2894,8 @@ TEST (tensorStreamTest, audioU32) EXPECT_EQ (g_test_data.tensors_config.info.info[0].type, _NNS_UINT32); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[0], 1U); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[1], 500U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[2], 1U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[3], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[2], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[3], 1U); EXPECT_EQ (g_test_data.tensors_config.rate_n, 44100); EXPECT_EQ (g_test_data.tensors_config.rate_d, 1); @@ -2936,8 +2935,8 @@ TEST (tensorStreamTest, audioF32) EXPECT_EQ (g_test_data.tensors_config.info.info[0].type, _NNS_FLOAT32); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[0], 1U); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[1], 500U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[2], 1U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[3], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[2], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[3], 1U); EXPECT_EQ (g_test_data.tensors_config.rate_n, 44100); EXPECT_EQ (g_test_data.tensors_config.rate_d, 1); @@ -2977,8 +2976,8 @@ TEST (tensorStreamTest, audioF64) EXPECT_EQ (g_test_data.tensors_config.info.info[0].type, _NNS_FLOAT64); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[0], 1U); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[1], 500U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[2], 1U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[3], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[2], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[3], 1U); EXPECT_EQ (g_test_data.tensors_config.rate_n, 44100); EXPECT_EQ (g_test_data.tensors_config.rate_d, 1); @@ -3024,8 +3023,8 @@ TEST (tensorStreamTest, textUtf8) EXPECT_EQ (g_test_data.tensors_config.info.info[0].type, _NNS_UINT8); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[0], 20U); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[1], 1U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[2], 1U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[3], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[2], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[3], 1U); EXPECT_EQ (g_test_data.tensors_config.rate_n, 0); EXPECT_EQ (g_test_data.tensors_config.rate_d, 1); @@ -3098,8 +3097,8 @@ TEST (tensorStreamTest, textUtf83f) EXPECT_EQ (g_test_data.tensors_config.info.info[0].type, _NNS_UINT8); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[0], 30U); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[1], 3U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[2], 1U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[3], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[2], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[3], 1U); EXPECT_EQ (g_test_data.tensors_config.rate_n, 10); EXPECT_EQ (g_test_data.tensors_config.rate_d, 1); @@ -4268,8 +4267,8 @@ TEST (tensorStreamTest, customFilterDropBuffer) EXPECT_EQ (g_test_data.tensors_config.info.info[0].type, _NNS_INT16); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[0], 1U); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[1], 200U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[2], 1U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[3], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[2], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[3], 1U); EXPECT_EQ (g_test_data.tensors_config.rate_n, 16000); EXPECT_EQ (g_test_data.tensors_config.rate_d, 1); @@ -4763,8 +4762,8 @@ TEST (tensorStreamTest, tensorsMix) EXPECT_EQ (g_test_data.tensors_config.info.info[0].type, _NNS_INT16); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[0], 1U); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[1], 500U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[2], 1U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[3], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[2], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[3], 1U); EXPECT_EQ (g_test_data.tensors_config.rate_n, 30); /** 30 fps from video stream */ EXPECT_EQ (g_test_data.tensors_config.rate_d, 1); @@ -4905,8 +4904,8 @@ TEST (tensorStreamTest, demuxProperties2) EXPECT_EQ (g_test_data.tensors_config.info.info[0].type, _NNS_INT16); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[0], 1U); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[1], 500U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[2], 1U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[3], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[2], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[3], 1U); EXPECT_EQ (g_test_data.tensors_config.rate_n, 30); EXPECT_EQ (g_test_data.tensors_config.rate_d, 1); @@ -4979,8 +4978,8 @@ _test_transform_typecast (TestType test, tensor_type type, guint buffers) EXPECT_EQ (g_test_data.tensors_config.info.info[0].type, type); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[0], 10U); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[1], 1U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[2], 1U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[3], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[2], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[3], 1U); EXPECT_EQ (g_test_data.tensors_config.rate_n, 0); EXPECT_EQ (g_test_data.tensors_config.rate_d, 1); @@ -5443,8 +5442,8 @@ TEST (tensorStreamTest, audioAggregateS16) EXPECT_EQ (g_test_data.tensors_config.info.info[0].type, _NNS_INT16); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[0], 1U); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[1], 2000U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[2], 1U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[3], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[2], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[3], 1U); EXPECT_EQ (g_test_data.tensors_config.rate_n, 16000); EXPECT_EQ (g_test_data.tensors_config.rate_d, 1); @@ -5484,8 +5483,8 @@ TEST (tensorStreamTest, audioAggregateU16) EXPECT_EQ (g_test_data.tensors_config.info.info[0].type, _NNS_UINT16); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[0], 1U); EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[1], 100U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[2], 1U); - EXPECT_EQ (g_test_data.tensors_config.info.info[0].dimension[3], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[2], 1U); + EXPECT_LE (g_test_data.tensors_config.info.info[0].dimension[3], 1U); EXPECT_EQ (g_test_data.tensors_config.rate_n, 16000); EXPECT_EQ (g_test_data.tensors_config.rate_d, 1);