Line data Source code
1 : /* SPDX-License-Identifier: LGPL-2.1-only */
2 : /**
3 : * Copyright (C) 2021 Junhwan Kim <jejudo.kim@samsung.com>
4 : *
5 : * @file tensor_meta.c
6 : * @date 09 Aug 2021
7 : * @brief Internal tensor meta implementation for nnstreamer
8 : * @author Junhwan Kim <jejudo.kim@samsung.com>
9 : * @see http://github.com/nnstreamer/nnstreamer
10 : * @bug No known bugs
11 : *
12 : */
13 : #ifdef HAVE_CONFIG_H
14 : #include "config.h"
15 : #endif
16 :
17 : #include <nnstreamer_util.h>
18 : #include "tensor_meta.h"
19 :
20 : /**
21 : * @brief Define meta_query type to register
22 : */
23 : GType
24 293 : gst_meta_query_api_get_type (void)
25 : {
26 : static GType type = 0;
27 : static const gchar *tags[] = {
28 : NULL
29 : };
30 :
31 293 : if (g_once_init_enter (&type)) {
32 : GType _type;
33 11 : const GstMetaInfo *meta_info = gst_meta_get_info ("GstMetaQuery");
34 11 : if (meta_info) {
35 0 : _type = meta_info->api;
36 : } else {
37 11 : _type = gst_meta_api_type_register ("GstMetaQueryAPI", tags);
38 : }
39 11 : g_once_init_leave (&type, _type);
40 : }
41 293 : return type;
42 : }
43 :
44 : /**
45 : * @brief meta_query init
46 : */
47 : static gboolean
48 10 : gst_meta_query_init (GstMeta * meta, gpointer params, GstBuffer * buffer)
49 : {
50 10 : GstMetaQuery *emeta = (GstMetaQuery *) meta;
51 : UNUSED (params);
52 : UNUSED (buffer);
53 10 : emeta->client_id = 0;
54 10 : return TRUE;
55 : }
56 :
57 : /**
58 : * @brief free meta_query
59 : */
60 : static void
61 10 : gst_meta_query_free (GstMeta * meta, GstBuffer * buffer)
62 : {
63 : UNUSED (meta);
64 : UNUSED (buffer);
65 10 : }
66 :
67 : /**
68 : * @brief tensor_query meta data transform (source to dest)
69 : */
70 : static gboolean
71 8 : gst_meta_query_transform (GstBuffer * transbuf, GstMeta * meta,
72 : GstBuffer * buffer, GQuark type, gpointer data)
73 : {
74 8 : GstMetaQuery *dest_meta = gst_buffer_add_meta_query (transbuf);
75 8 : GstMetaQuery *src_meta = (GstMetaQuery *) meta;
76 : UNUSED (buffer);
77 : UNUSED (type);
78 : UNUSED (data);
79 8 : dest_meta->client_id = src_meta->client_id;
80 8 : return TRUE;
81 : }
82 :
83 : /**
84 : * @brief Get meta_query info
85 : */
86 : const GstMetaInfo *
87 10 : gst_meta_query_get_info (void)
88 : {
89 : static const GstMetaInfo *meta_query_info = NULL;
90 :
91 10 : if (g_once_init_enter (&meta_query_info)) {
92 1 : const GstMetaInfo *meta = gst_meta_register (GST_META_QUERY_API_TYPE,
93 : "GstMetaQuery", sizeof *meta,
94 : gst_meta_query_init,
95 : gst_meta_query_free,
96 : gst_meta_query_transform);
97 1 : g_once_init_leave (&meta_query_info, meta);
98 : }
99 10 : return meta_query_info;
100 : }
|