GStreamer Video Analytics (GVA) Plugin
gva_tensor_meta.h
Go to the documentation of this file.
1 /*******************************************************************************
2  * Copyright (C) 2018-2020 Intel Corporation
3  *
4  * SPDX-License-Identifier: MIT
5  ******************************************************************************/
6 
12 #ifndef __GVA_TENSOR_META_H__
13 #define __GVA_TENSOR_META_H__
14 
15 #include <gst/gst.h>
16 
17 #define GVA_TENSOR_META_API_NAME "GstGVATensorMetaAPI"
18 #define GVA_TENSOR_META_IMPL_NAME "GstGVATensorMeta"
19 #define GVA_TENSOR_META_TAG "gva_tensor_meta"
20 
21 #define GVA_TENSOR_MAX_RANK 8
22 
23 G_BEGIN_DECLS
24 
28 typedef enum {
32 } GVAPrecision;
33 
37 typedef enum {
42 } GVALayout;
43 
50 inline const void *gva_get_tensor_data(GstStructure *s, gsize *nbytes) {
51  const GValue *f = gst_structure_get_value(s, "data_buffer");
52  if (!f)
53  return NULL;
54  GVariant *v = g_value_get_variant(f);
55  return g_variant_get_fixed_array(v, nbytes, 1);
56 }
57 
58 typedef struct _GstGVATensorMeta GstGVATensorMeta;
59 
65  GstMeta meta;
66  GstStructure *data;
68 };
69 
74 const GstMetaInfo *gst_gva_tensor_meta_get_info(void);
75 
82 
88 #define GST_GVA_TENSOR_META_INFO (gst_gva_tensor_meta_get_info())
89 
96 #define GST_GVA_TENSOR_META_GET(buf) ((GstGVATensorMeta *)gst_buffer_get_meta(buf, gst_gva_tensor_meta_api_get_type()))
97 
106 #define GST_GVA_TENSOR_META_ITERATE(buf, state) \
107  ((GstGVATensorMeta *)gst_buffer_iterate_meta_filtered(buf, state, gst_gva_tensor_meta_api_get_type()))
108 
115 #define GST_GVA_TENSOR_META_ADD(buf) \
116  ((GstGVATensorMeta *)gst_buffer_add_meta(buf, gst_gva_tensor_meta_get_info(), NULL))
117 
124 #define GST_GVA_TENSOR_META_COUNT(buf) (gst_buffer_get_n_meta(buf, gst_gva_tensor_meta_api_get_type()))
125 
133 GstGVATensorMeta *find_tensor_meta(GstBuffer *buffer, const char *model_name, const char *output_layer);
134 
143 GstGVATensorMeta *find_tensor_meta_ext(GstBuffer *buffer, const char *model_name, const char *output_layer,
144  const char *element_id);
145 
146 G_END_DECLS
147 
148 #endif /* __GVA_TENSOR_META_H__ */
GVA_LAYOUT_ANY
@ GVA_LAYOUT_ANY
Definition: gva_tensor_meta.h:38
GVA_PRECISION_U8
@ GVA_PRECISION_U8
Definition: gva_tensor_meta.h:31
GVALayout
GVALayout
This enum describes model layer layout.
Definition: gva_tensor_meta.h:37
find_tensor_meta
GstGVATensorMeta * find_tensor_meta(GstBuffer *buffer, const char *model_name, const char *output_layer)
This function searches for first _GstGVATensorMeta instance that satisfies passed parameters.
Definition: gva_tensor_meta.c:107
GVA_LAYOUT_NHWC
@ GVA_LAYOUT_NHWC
Definition: gva_tensor_meta.h:40
find_tensor_meta_ext
GstGVATensorMeta * find_tensor_meta_ext(GstBuffer *buffer, const char *model_name, const char *output_layer, const char *element_id)
This function searches for first _GstGVATensorMeta instance that satisfies passed parameters.
Definition: gva_tensor_meta.c:74
_GstGVATensorMeta::meta
GstMeta meta
Definition: gva_tensor_meta.h:65
GVA_PRECISION_FP32
@ GVA_PRECISION_FP32
Definition: gva_tensor_meta.h:30
GVA_LAYOUT_NC
@ GVA_LAYOUT_NC
Definition: gva_tensor_meta.h:41
GVAPrecision
GVAPrecision
This enum describes model layer precision.
Definition: gva_tensor_meta.h:28
_GstGVATensorMeta
This struct represents raw tensor metadata and contains instance of parent GstMeta and fields describ...
Definition: gva_tensor_meta.h:64
gva_get_tensor_data
const void * gva_get_tensor_data(GstStructure *s, gsize *nbytes)
This function returns a pointer to the fixed array of tensor bytes.
Definition: gva_tensor_meta.h:50
gst_gva_tensor_meta_get_info
const GstMetaInfo * gst_gva_tensor_meta_get_info(void)
This function registers, if needed, and returns GstMetaInfo for _GstGVATensorMeta.
Definition: gva_tensor_meta.c:61
GVA_PRECISION_UNSPECIFIED
@ GVA_PRECISION_UNSPECIFIED
Definition: gva_tensor_meta.h:29
_GstGVATensorMeta::data
GstStructure * data
Definition: gva_tensor_meta.h:66
gst_gva_tensor_meta_api_get_type
GType gst_gva_tensor_meta_api_get_type(void)
This function registers, if needed, and returns a GType for api "GstGVATensorMetaAPI" and associate i...
Definition: gva_tensor_meta.c:13
GVA_LAYOUT_NCHW
@ GVA_LAYOUT_NCHW
Definition: gva_tensor_meta.h:39