[nnfw] Check NNFW_MAX_RANK in nnfw filter
authorYelin Jeong <yelini.jeong@samsung.com>
Tue, 19 Dec 2023 07:58:31 +0000 (16:58 +0900)
committerjaeyun-jung <39614140+jaeyun-jung@users.noreply.github.com>
Wed, 20 Dec 2023 04:41:59 +0000 (13:41 +0900)
This patch adds to check NNFW_MAX_RANK in nnfw filter.
If tensor info's rank is larger than NNFW_MAX_RANK and min_rank is smaller, use min_rank instead.

Signed-off-by: Yelin Jeong <yelini.jeong@samsung.com>
ext/nnstreamer/tensor_filter/tensor_filter_nnfw.c

index 120eb4f..f56bd8d 100644 (file)
@@ -462,11 +462,19 @@ nnfw_tensor_info_set (const nnfw_pdata * pdata,
   if (nnfw_info.rank < pdata->in_info.info[tensor_idx].rank)
     nnfw_info.rank = pdata->in_info.info[tensor_idx].rank;
 
+  /** @note Maximum rank expressible with nnfw is 6 (NNFW_MAX_RANK) */
+  if (nnfw_info.rank > NNFW_MAX_RANK) {
+    guint min_rank = gst_tensor_dimension_get_min_rank (info->dimension);
+    if (min_rank < NNFW_MAX_RANK)
+      nnfw_info.rank = NNFW_MAX_RANK;
+    else
+      return -EINVAL;
+  }
+
   /** reverse the order of dimension */
   for (idx = nnfw_info.rank - 1; idx >= 0; idx--)
     nnfw_info.dims[nnfw_info.rank - idx - 1] = info->dimension[idx];
 
-  /** @note Maximum rank expressible with nnfw is 6 (NNFW_MAX_RANK) */
   for (idx = NNFW_MAX_RANK - 1; idx >= nnfw_info.rank; idx--)
     nnfw_info.dims[idx] = 0;