[Common] add int64/uint64 type
authorJaeyun <jy1210.jung@samsung.com>
Mon, 20 Aug 2018 09:53:00 +0000 (18:53 +0900)
committer문지중/동작제어Lab(SR)/Principal Engineer/삼성전자 <jijoong.moon@samsung.com>
Thu, 23 Aug 2018 02:38:00 +0000 (11:38 +0900)
1. add type for int64, uint64
2. update unittest for tensor type
3. update comments for changed code

related issue : #304

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
common/tensor_common.c
gst/tensor_filter/tensor_filter_tensorflow_lite_core.cc
gst/tensor_transform/tensor_transform.c
include/tensor_common.h
include/tensor_typedef.h
nnstreamer_example/custom_example_average/nnstreamer_customfilter_example_average.c
tests/common/unittest_common.cpp
tests/nnstreamer_sink/unittest_sink.cpp

index 29f5a30..fb6570a 100644 (file)
@@ -40,6 +40,8 @@ const gchar *tensor_element_typename[] = {
   [_NNS_UINT8] = "uint8",
   [_NNS_FLOAT64] = "float64",
   [_NNS_FLOAT32] = "float32",
+  [_NNS_INT64] = "int64",
+  [_NNS_UINT64] = "uint64",
   [_NNS_END] = NULL,
 };
 
@@ -188,7 +190,7 @@ gst_tensor_video_info_from_config (GstTensorVideoInfo * v_info,
 
   g_return_val_if_fail (config->tensor_media_type == _NNS_VIDEO, FALSE);
 
-  v_info->format = (GstVideoFormat) config->media_format;
+  v_info->format = (GstVideoFormat) config->tensor_media_format;
   v_info->w = config->dimension[1];
   v_info->h = config->dimension[2];
   v_info->fn = config->rate_n;
@@ -214,7 +216,7 @@ gst_tensor_audio_info_from_config (GstTensorAudioInfo * a_info,
 
   g_return_val_if_fail (config->tensor_media_type == _NNS_AUDIO, FALSE);
 
-  a_info->format = (GstAudioFormat) config->media_format;
+  a_info->format = (GstAudioFormat) config->tensor_media_format;
   a_info->ch = config->dimension[0];
   a_info->frames = config->dimension[1];
   a_info->rate = config->rate_n;
@@ -244,7 +246,7 @@ gst_tensor_config_init (GstTensorConfig * config)
   config->rate_d = -1;
   config->frame_size = 0;
   config->tensor_media_type = _NNS_MEDIA_END;
-  config->media_format = 0;
+  config->tensor_media_format = 0;
 }
 
 /**
@@ -273,7 +275,7 @@ gst_tensor_config_validate (GstTensorConfig * config)
     return FALSE;
   }
 
-  if (config->frame_size == 0 || config->media_format == 0) {
+  if (config->frame_size == 0 || config->tensor_media_format == 0) {
     return FALSE;
   }
 
@@ -305,7 +307,7 @@ gst_tensor_config_is_same (const GstTensorConfig * c1,
     return FALSE;
   }
 
-  if (c1->media_format != c2->media_format) {
+  if (c1->tensor_media_format != c2->tensor_media_format) {
     return FALSE;
   }
 
@@ -377,32 +379,32 @@ gst_tensor_config_from_tensor_structure (GstTensorConfig * config,
     if (config->type == _NNS_UINT8) {
       switch (config->dimension[0]) {
         case 3:
-          config->media_format = GST_VIDEO_FORMAT_RGB;
+          config->tensor_media_format = GST_VIDEO_FORMAT_RGB;
           break;
         case 4:
-          config->media_format = GST_VIDEO_FORMAT_BGRx;
+          config->tensor_media_format = GST_VIDEO_FORMAT_BGRx;
           break;
         default:
-          config->media_format = GST_VIDEO_FORMAT_UNKNOWN;
+          config->tensor_media_format = GST_VIDEO_FORMAT_UNKNOWN;
           break;
       }
     }
   } else if (config->tensor_media_type == _NNS_AUDIO) {
     switch (config->type) {
       case _NNS_INT8:
-        config->media_format = GST_AUDIO_FORMAT_S8;
+        config->tensor_media_format = GST_AUDIO_FORMAT_S8;
         break;
       case _NNS_UINT8:
-        config->media_format = GST_AUDIO_FORMAT_U8;
+        config->tensor_media_format = GST_AUDIO_FORMAT_U8;
         break;
       case _NNS_INT16:
-        config->media_format = GST_AUDIO_FORMAT_S16;
+        config->tensor_media_format = GST_AUDIO_FORMAT_S16;
         break;
       case _NNS_UINT16:
-        config->media_format = GST_AUDIO_FORMAT_U16;
+        config->tensor_media_format = GST_AUDIO_FORMAT_U16;
         break;
       default:
-        config->media_format = GST_AUDIO_FORMAT_UNKNOWN;
+        config->tensor_media_format = GST_AUDIO_FORMAT_UNKNOWN;
         break;
     }
   }
@@ -523,7 +525,7 @@ gst_tensor_config_from_video_info (GstTensorConfig * config,
   }
 
   config->tensor_media_type = _NNS_VIDEO;
-  config->media_format = v_info->format;
+  config->tensor_media_format = v_info->format;
   return res;
 }
 
@@ -589,7 +591,7 @@ gst_tensor_config_from_audio_info (GstTensorConfig * config,
   }
 
   config->tensor_media_type = _NNS_AUDIO;
-  config->media_format = a_info->format;
+  config->tensor_media_format = a_info->format;
   return res;
 }
 
@@ -792,6 +794,8 @@ get_tensor_type (const gchar * typestr)
         return _NNS_UINT16;
       else if (typestr[4] == '3' && typestr[5] == '2')
         return _NNS_UINT32;
+      else if (typestr[4] == '6' && typestr[5] == '4')
+        return _NNS_UINT64;
     } else if (len == 5) {      /* uint8 */
       if (typestr[4] == '8')
         return _NNS_UINT8;
@@ -806,6 +810,8 @@ get_tensor_type (const gchar * typestr)
         return _NNS_INT16;
       else if (typestr[3] == '3' && typestr[4] == '2')
         return _NNS_INT32;
+      else if (typestr[3] == '6' && typestr[4] == '4')
+        return _NNS_INT64;
     } else if (len == 4) {      /* int8 */
       if (typestr[3] == '8')
         return _NNS_INT8;
index e036dbd..7c6c3e0 100644 (file)
@@ -122,22 +122,21 @@ _nns_tensor_type TFLiteCore::getTensorType (TfLiteType tfType)
   switch (tfType) {
     case kTfLiteFloat32:
       return _NNS_FLOAT32;
-      break;
     case kTfLiteUInt8:
       return _NNS_UINT8;
-      break;
     case kTfLiteInt32:
       return _NNS_INT32;
-      break;
     case kTfLiteBool:
       return _NNS_INT8;
-      break;
     case kTfLiteInt64:
+      return _NNS_INT64;
     case kTfLiteString:
     default:
-      return _NNS_END;
+      /** @todo Support other types */
       break;
   }
+
+  return _NNS_END;
 }
 
 /**
index e6b26dc..6ff3d2e 100644 (file)
@@ -478,6 +478,8 @@ gst_tensor_transform_dimchg (GstTensor_Transform * filter,
     case _NNS_UINT32: castloop(uint32_t, otype, num); break; \
     case _NNS_FLOAT32: castloop(float, otype, num); break; \
     case _NNS_FLOAT64: castloop(double, otype, num); break; \
+    case _NNS_INT64: castloop(int64_t, otype, num); break; \
+    case _NNS_UINT64: castloop(uint64_t, otype, num); break; \
     default: g_assert(0); \
     }; \
   } while (0)
@@ -520,6 +522,12 @@ gst_tensor_transform_typecast (GstTensor_Transform * filter,
     case _NNS_FLOAT64:
       numotype_castloop_per_itype (double, num);
       break;
+    case _NNS_INT64:
+      numotype_castloop_per_itype (int64_t, num);
+      break;
+    case _NNS_UINT64:
+      numotype_castloop_per_itype (uint64_t, num);
+      break;
     default:
       g_assert (0);
   }
index 95a8cd2..e5d3c72 100644 (file)
@@ -48,7 +48,7 @@ G_BEGIN_DECLS
 #define GST_TENSOR_DIM_RANGE "(int) [ 1, 65535 ]"
 #define GST_TENSOR_RATE_RANGE "(fraction) [ 0/1, 2147483647/1 ]"
 #define GST_TENSOR_TENSORS_RANGE "(int) [ 1, 65535 ]"
-#define GST_TENSOR_TYPE_ALL "{ float32, float64, int32, uint32, int16, uint16, int8, uint8 }"
+#define GST_TENSOR_TYPE_ALL "{ float32, float64, int64, uint64, int32, uint32, int16, uint16, int8, uint8 }"
 
 #define GST_TENSOR_CAP_DEFAULT \
     "other/tensor, " \
@@ -90,7 +90,7 @@ G_BEGIN_DECLS
 typedef enum _nns_media_type
 {
   _NNS_VIDEO = 0, /**< supposedly video/x-raw */
-  _NNS_AUDIO, /**< Not Supported Yet */
+  _NNS_AUDIO, /**< supposedly audio/x-raw */
   _NNS_STRING, /**< Not Supported Yet */
 
   _NNS_MEDIA_END, /**< End Marker */
@@ -131,7 +131,7 @@ typedef struct
   gint rate_d; /**< framerate is in fraction, which is numerator/denominator */
   gsize frame_size; /**< Size of a single tensor frame in # bytes */
   media_type tensor_media_type; /**< Denotes the input media stream type */
-  gint media_format; /**< Denotes the input media stream format */
+  gint tensor_media_format; /**< Denotes the input media stream format */
 } GstTensorConfig;
 
 /**
index e1cc9b3..f1bb452 100644 (file)
@@ -1,7 +1,7 @@
 /**
  * NNStreamer Common Header, Typedef part, for export as devel package.
  * Copyright (C) 2018 MyungJoo Ham <myungjoo.ham@samsung.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
@@ -47,6 +47,8 @@ typedef enum _nns_tensor_type {
   _NNS_UINT8,
   _NNS_FLOAT64,
   _NNS_FLOAT32,
+  _NNS_INT64,
+  _NNS_UINT64,
 
   _NNS_END,
 } tensor_type;
@@ -63,6 +65,8 @@ static const unsigned int tensor_element_size[] = {
         [_NNS_UINT8] = 1,
         [_NNS_FLOAT64] = 8,
         [_NNS_FLOAT32] = 4,
+        [_NNS_INT64] = 8,
+        [_NNS_UINT64] = 8,
 };
 
 /**
index fb77cd8..d78d839 100644 (file)
@@ -153,7 +153,12 @@ pt_invoke (void *private_data, const GstTensor_Filter_Properties * prop,
     case _NNS_FLOAT64:
       do_avg (double, long double);
       break;
-
+    case _NNS_INT64:
+      do_avg (int64_t, int64_t);
+      break;
+    case _NNS_UINT64:
+      do_avg (uint64_t, uint64_t);
+      break;
     default:
       assert (0);               /* Type Mismatch */
   }
index 3cf59dc..e965b58 100644 (file)
@@ -1,11 +1,13 @@
 /**
- *  @file unittest_common.cpp
- *  @date 31 May 2018
- *  @author MyungJoo Ham <myungjoo.ham@samsung.com>
+ * @file unittest_common.cpp
+ * @date 31 May 2018
+ * @author MyungJoo Ham <myungjoo.ham@samsung.com>
+ * @brief Unit test module for NNStreamer common library
+ * @see                https://github.com/nnsuite/nnstreamer
+ * @see                https://github.sec.samsung.net/STAR/nnstreamer
+ * @bug                No known bugs.
  *
- *  @brief Unit test module for NNStreamer common library
- *
- *  Copyright 2018 Samsung Electronics
+ * Copyright (C) 2018 Samsung Electronics Co., Ltd.
  *
  */
 
 #include <unistd.h>
 #include <tensor_common.h>
 
-TEST (common_get_tensor_type, int32_1)
+/**
+ * @brief Test for int32 type string.
+ */
+TEST (common_get_tensor_type, int32)
 {
   EXPECT_EQ (get_tensor_type ("int32"), _NNS_INT32);
-}
-
-TEST (common_get_tensor_type, int32_2)
-{
   EXPECT_EQ (get_tensor_type ("INT32"), _NNS_INT32);
-}
-
-TEST (common_get_tensor_type, int32_3)
-{
   EXPECT_EQ (get_tensor_type ("iNt32"), _NNS_INT32);
-}
-
-TEST (common_get_tensor_type, int32_4)
-{
   EXPECT_EQ (get_tensor_type ("InT32"), _NNS_INT32);
-}
-
-TEST (common_get_tensor_type, int32_5)
-{
   EXPECT_EQ (get_tensor_type ("InT322"), _NNS_END);
-}
-
-TEST (common_get_tensor_type, int32_6)
-{
   EXPECT_EQ (get_tensor_type ("int3"), _NNS_END);
 }
 
-
-TEST (common_get_tensor_type, int16_1)
+/**
+ * @brief Test for int16 type string.
+ */
+TEST (common_get_tensor_type, int16)
 {
   EXPECT_EQ (get_tensor_type ("int16"), _NNS_INT16);
-}
-
-TEST (common_get_tensor_type, int16_2)
-{
   EXPECT_EQ (get_tensor_type ("INT16"), _NNS_INT16);
-}
-
-TEST (common_get_tensor_type, int16_3)
-{
   EXPECT_EQ (get_tensor_type ("iNt16"), _NNS_INT16);
-}
-
-TEST (common_get_tensor_type, int16_4)
-{
   EXPECT_EQ (get_tensor_type ("InT16"), _NNS_INT16);
-}
-
-TEST (common_get_tensor_type, int16_5)
-{
   EXPECT_EQ (get_tensor_type ("InT162"), _NNS_END);
-}
-
-TEST (common_get_tensor_type, int16_6)
-{
   EXPECT_EQ (get_tensor_type ("int1"), _NNS_END);
 }
 
-
-TEST (common_get_tensor_type, int8_1)
+/**
+ * @brief Test for int8 type string.
+ */
+TEST (common_get_tensor_type, int8)
 {
   EXPECT_EQ (get_tensor_type ("int8"), _NNS_INT8);
-}
-
-TEST (common_get_tensor_type, int8_2)
-{
   EXPECT_EQ (get_tensor_type ("INT8"), _NNS_INT8);
-}
-
-TEST (common_get_tensor_type, int8_3)
-{
   EXPECT_EQ (get_tensor_type ("iNt8"), _NNS_INT8);
-}
-
-TEST (common_get_tensor_type, int8_4)
-{
   EXPECT_EQ (get_tensor_type ("InT8"), _NNS_INT8);
-}
-
-TEST (common_get_tensor_type, int8_5)
-{
   EXPECT_EQ (get_tensor_type ("InT82"), _NNS_END);
-}
-
-TEST (common_get_tensor_type, int8_6)
-{
   EXPECT_EQ (get_tensor_type ("int3"), _NNS_END);
 }
 
-
-TEST (common_get_tensor_type, uint32_1)
+/**
+ * @brief Test for uint32 type string.
+ */
+TEST (common_get_tensor_type, uint32)
 {
   EXPECT_EQ (get_tensor_type ("uint32"), _NNS_UINT32);
-}
-
-TEST (common_get_tensor_type, uint32_2)
-{
   EXPECT_EQ (get_tensor_type ("UINT32"), _NNS_UINT32);
-}
-
-TEST (common_get_tensor_type, uint32_3)
-{
   EXPECT_EQ (get_tensor_type ("uiNt32"), _NNS_UINT32);
-}
-
-TEST (common_get_tensor_type, uint32_4)
-{
   EXPECT_EQ (get_tensor_type ("UInT32"), _NNS_UINT32);
-}
-
-TEST (common_get_tensor_type, uint32_5)
-{
   EXPECT_EQ (get_tensor_type ("UInT322"), _NNS_END);
-}
-
-TEST (common_get_tensor_type, uint32_6)
-{
   EXPECT_EQ (get_tensor_type ("uint3"), _NNS_END);
 }
 
-
-TEST (common_get_tensor_type, uint16_1)
+/**
+ * @brief Test for uint16 type string.
+ */
+TEST (common_get_tensor_type, uint16)
 {
   EXPECT_EQ (get_tensor_type ("uint16"), _NNS_UINT16);
-}
-
-TEST (common_get_tensor_type, uint16_2)
-{
   EXPECT_EQ (get_tensor_type ("UINT16"), _NNS_UINT16);
-}
-
-TEST (common_get_tensor_type, uint16_3)
-{
   EXPECT_EQ (get_tensor_type ("uiNt16"), _NNS_UINT16);
-}
-
-TEST (common_get_tensor_type, uint16_4)
-{
   EXPECT_EQ (get_tensor_type ("UInT16"), _NNS_UINT16);
-}
-
-TEST (common_get_tensor_type, uint16_5)
-{
   EXPECT_EQ (get_tensor_type ("UInT162"), _NNS_END);
-}
-
-TEST (common_get_tensor_type, uint16_6)
-{
   EXPECT_EQ (get_tensor_type ("uint1"), _NNS_END);
 }
 
-
-TEST (common_get_tensor_type, uint8_1)
+/**
+ * @brief Test for uint8 type string.
+ */
+TEST (common_get_tensor_type, uint8)
 {
   EXPECT_EQ (get_tensor_type ("uint8"), _NNS_UINT8);
-}
-
-TEST (common_get_tensor_type, uint8_2)
-{
   EXPECT_EQ (get_tensor_type ("UINT8"), _NNS_UINT8);
-}
-
-TEST (common_get_tensor_type, uint8_3)
-{
   EXPECT_EQ (get_tensor_type ("uiNt8"), _NNS_UINT8);
-}
-
-TEST (common_get_tensor_type, uint8_4)
-{
   EXPECT_EQ (get_tensor_type ("UInT8"), _NNS_UINT8);
-}
-
-TEST (common_get_tensor_type, uint8_5)
-{
   EXPECT_EQ (get_tensor_type ("UInT82"), _NNS_END);
-}
-
-TEST (common_get_tensor_type, uint8_6)
-{
   EXPECT_EQ (get_tensor_type ("uint3"), _NNS_END);
 }
 
-
-TEST (common_get_tensor_type, float32_1)
+/**
+ * @brief Test for float32 type string.
+ */
+TEST (common_get_tensor_type, float32)
 {
   EXPECT_EQ (get_tensor_type ("float32"), _NNS_FLOAT32);
-}
-
-TEST (common_get_tensor_type, float32_2)
-{
   EXPECT_EQ (get_tensor_type ("FLOAT32"), _NNS_FLOAT32);
-}
-
-TEST (common_get_tensor_type, float32_3)
-{
   EXPECT_EQ (get_tensor_type ("float32"), _NNS_FLOAT32);
-}
-
-TEST (common_get_tensor_type, float32_4)
-{
   EXPECT_EQ (get_tensor_type ("FloaT32"), _NNS_FLOAT32);
-}
-
-TEST (common_get_tensor_type, float32_5)
-{
   EXPECT_EQ (get_tensor_type ("FloaT322"), _NNS_END);
-}
-
-TEST (common_get_tensor_type, float32_6)
-{
   EXPECT_EQ (get_tensor_type ("float3"), _NNS_END);
 }
 
-
-
-TEST (common_get_tensor_type, float64_1)
+/**
+ * @brief Test for float64 type string.
+ */
+TEST (common_get_tensor_type, float64)
 {
   EXPECT_EQ (get_tensor_type ("float64"), _NNS_FLOAT64);
-}
-
-TEST (common_get_tensor_type, float64_2)
-{
   EXPECT_EQ (get_tensor_type ("FLOAT64"), _NNS_FLOAT64);
-}
-
-TEST (common_get_tensor_type, float64_3)
-{
   EXPECT_EQ (get_tensor_type ("float64"), _NNS_FLOAT64);
-}
-
-TEST (common_get_tensor_type, float64_4)
-{
   EXPECT_EQ (get_tensor_type ("FloaT64"), _NNS_FLOAT64);
-}
-
-TEST (common_get_tensor_type, float64_5)
-{
   EXPECT_EQ (get_tensor_type ("FloaT642"), _NNS_END);
-}
-
-TEST (common_get_tensor_type, float64_6)
-{
   EXPECT_EQ (get_tensor_type ("float6"), _NNS_END);
 }
 
-
-static const gchar *teststrv[] = {
-  "abcde",
-  "ABCDEF",
-  "1234",
-  "abcabc",
-  "tester",
-  NULL
-};
-
-TEST (common_find_key_strv, case1)
+/**
+ * @brief Test for int64 type string.
+ */
+TEST (common_get_tensor_type, int64)
 {
-  EXPECT_EQ (find_key_strv (teststrv, "abcde"), 0);
+  EXPECT_EQ (get_tensor_type ("int64"), _NNS_INT64);
+  EXPECT_EQ (get_tensor_type ("INT64"), _NNS_INT64);
+  EXPECT_EQ (get_tensor_type ("iNt64"), _NNS_INT64);
+  EXPECT_EQ (get_tensor_type ("InT64"), _NNS_INT64);
+  EXPECT_EQ (get_tensor_type ("InT642"), _NNS_END);
+  EXPECT_EQ (get_tensor_type ("int6"), _NNS_END);
 }
 
-TEST (common_find_key_strv, case2)
+/**
+ * @brief Test for uint64 type string.
+ */
+TEST (common_get_tensor_type, uint64)
 {
-  EXPECT_EQ (find_key_strv (teststrv, "ABCDE"), 0);
+  EXPECT_EQ (get_tensor_type ("uint64"), _NNS_UINT64);
+  EXPECT_EQ (get_tensor_type ("UINT64"), _NNS_UINT64);
+  EXPECT_EQ (get_tensor_type ("uiNt64"), _NNS_UINT64);
+  EXPECT_EQ (get_tensor_type ("UInT64"), _NNS_UINT64);
+  EXPECT_EQ (get_tensor_type ("UInT642"), _NNS_END);
+  EXPECT_EQ (get_tensor_type ("uint6"), _NNS_END);
 }
 
-TEST (common_find_key_strv, case3)
+/**
+ * @brief Test to find index of the key.
+ */
+TEST (common_find_key_strv, key_index)
 {
-  EXPECT_EQ (find_key_strv (teststrv, "1234"), 2);
-}
+  const gchar *teststrv[] = {
+    "abcde",
+    "ABCDEF",
+    "1234",
+    "abcabc",
+    "tester",
+    NULL
+  };
 
-TEST (common_find_key_strv, case4)
-{
+  EXPECT_EQ (find_key_strv (teststrv, "abcde"), 0);
+  EXPECT_EQ (find_key_strv (teststrv, "ABCDE"), 0);
+  EXPECT_EQ (find_key_strv (teststrv, "1234"), 2);
   EXPECT_EQ (find_key_strv (teststrv, "tester"), 4);
-}
-
-TEST (common_find_key_strv, case5)
-{
   EXPECT_EQ (find_key_strv (teststrv, "abcabcd"), -1);
 }
 
-
+/**
+ * @brief Test for tensor dimension.
+ */
 TEST (common_get_tensor_dimension, case1)
 {
   uint32_t dim[NNS_TENSOR_RANK_LIMIT];
@@ -308,7 +180,9 @@ TEST (common_get_tensor_dimension, case1)
   EXPECT_EQ (dim[3], 177);
 }
 
-
+/**
+ * @brief Test for tensor dimension.
+ */
 TEST (common_get_tensor_dimension, case2)
 {
   uint32_t dim[NNS_TENSOR_RANK_LIMIT];
@@ -320,6 +194,9 @@ TEST (common_get_tensor_dimension, case2)
   EXPECT_EQ (dim[3], 1);
 }
 
+/**
+ * @brief Test for tensor dimension.
+ */
 TEST (common_get_tensor_dimension, case3)
 {
   uint32_t dim[NNS_TENSOR_RANK_LIMIT];
@@ -331,6 +208,9 @@ TEST (common_get_tensor_dimension, case3)
   EXPECT_EQ (dim[3], 1);
 }
 
+/**
+ * @brief Test for tensor dimension.
+ */
 TEST (common_get_tensor_dimension, case4)
 {
   uint32_t dim[NNS_TENSOR_RANK_LIMIT];
@@ -342,6 +222,9 @@ TEST (common_get_tensor_dimension, case4)
   EXPECT_EQ (dim[3], 1);
 }
 
+/**
+ * @brief Main function for unit test.
+ */
 int
 main (int argc, char **argv)
 {
index 91530a6..a07046f 100644 (file)
@@ -2,7 +2,7 @@
  * @file       unittest_sink.cpp
  * @date       29 June 2018
  * @brief      Unit test for tensor sink plugin
- * @see                http://github.com/nnsuite/nnstreamer
+ * @see                https://github.com/nnsuite/nnstreamer
  * @see                https://github.sec.samsung.net/STAR/nnstreamer
  * @author     Jaeyun Jung <jy1210.jung@samsung.com>
  * @bug                No known bugs.