#define NNS_TENSOR_SIZE_EXTRA_LIMIT (240)
#define NNS_TENSOR_DIM_NULL ({0, 0, 0, 0})
-/**
- * @brief The maximum rank in meta info (see GstTensorMetaInfo).
- * This RANK is applied to meta info of other/tensors-flexible only and
- * does not affect other/tensors(s)'s NNS_TENSOR_RANK_LIMIT.
- */
-#define NNS_TENSOR_META_RANK_LIMIT (16)
-
#define NNS_MIMETYPE_TENSOR "other/tensor"
#define NNS_MIMETYPE_TENSORS "other/tensors"
uint32_t magic;
uint32_t version;
uint32_t type;
- uint32_t dimension[NNS_TENSOR_META_RANK_LIMIT];
+ tensor_dim dimension;
uint32_t format;
uint32_t media_type;
gboolean
gst_tensor_meta_info_validate (GstTensorMetaInfo * meta)
{
- guint i;
-
g_return_val_if_fail (meta != NULL, FALSE);
if (!GST_TENSOR_META_IS_VALID (meta))
return FALSE;
}
- for (i = 0; i < NNS_TENSOR_META_RANK_LIMIT; i++) {
- if (meta->dimension[i] == 0) {
- if (i == 0) {
- gchar *dim_str = gst_tensor_get_dimension_string (meta->dimension);
- nns_logd ("Failed to validate tensor meta info. Given dimension: %s",
- dim_str);
- g_free (dim_str);
- return FALSE;
- }
- break;
- }
+ if (!gst_tensor_dimension_is_valid (meta->dimension)) {
+ gchar *dim_str = gst_tensor_get_dimension_string (meta->dimension);
+ nns_logd ("Failed to validate tensor meta info. Given dimension: %s",
+ dim_str);
+ g_free (dim_str);
+ return FALSE;
}
if (meta->format >= _NNS_TENSOR_FORMAT_END) {
gsize
gst_tensor_meta_info_get_data_size (GstTensorMetaInfo * meta)
{
- guint i;
gsize dsize;
g_return_val_if_fail (meta != NULL, 0);
return meta->sparse_info.nnz * (dsize + sizeof (guint));
}
- for (i = 0; i < NNS_TENSOR_META_RANK_LIMIT; i++) {
- if (meta->dimension[i] == 0)
- break;
+ dsize *= gst_tensor_get_element_count (meta->dimension);
- dsize *= meta->dimension[i];
- }
-
- return (i > 0) ? dsize : 0;
+ return dsize;
}
/**
meta->magic = val[0];
meta->version = val[1];
meta->type = val[2];
- memcpy (meta->dimension, &val[3],
- sizeof (uint32_t) * NNS_TENSOR_META_RANK_LIMIT);
+ memcpy (meta->dimension, &val[3], sizeof (uint32_t) * NNS_TENSOR_RANK_LIMIT);
meta->format = val[19];
meta->media_type = val[20];
info->type = meta->type;
- for (i = 0; i < NNS_TENSOR_META_RANK_LIMIT; i++) { /* lgtm[cpp/constant-comparison] */
- if (i >= NNS_TENSOR_RANK_LIMIT) {
- if (meta->dimension[i] > 0) {
- nns_loge ("Given meta has invalid dimension (dimension[%u] %u).",
- i, meta->dimension[i]);
- nns_loge ("Failed to set info, max rank should be %u.",
- NNS_TENSOR_RANK_LIMIT);
- return FALSE;
- }
-
- /* tensor-info max rank is NNS_TENSOR_RANK_LIMIT */
- break;
- }
-
+ for (i = 0; i < NNS_TENSOR_RANK_LIMIT; i++)
info->dimension[i] = meta->dimension[i];
- }
return TRUE;
}
EXPECT_EQ (meta.type, _NNS_END);
EXPECT_EQ (meta.format, _NNS_TENSOR_FORMAT_STATIC);
EXPECT_EQ ((media_type) meta.media_type, _NNS_TENSOR);
- for (i = 0; i < NNS_TENSOR_META_RANK_LIMIT; i++)
+ for (i = 0; i < NNS_TENSOR_RANK_LIMIT; i++)
EXPECT_EQ (meta.dimension[i], 0U);
/* current version after init */