NVIDIA DeepStream SDK API Reference

9.1 Release
sources/gst-plugins/gst-nvdsmetamux/gstnvdsmetamux.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2022-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3  * SPDX-License-Identifier: Apache-2.0
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 #ifndef __GST_NVDSMETAMUX_H__
19 #define __GST_NVDSMETAMUX_H__
20 
21 #include <gst/gst.h>
22 #include <gst/base/gstaggregator.h>
23 #include "gstnvdsmeta.h"
24 
25 #include <condition_variable>
26 #include <mutex>
27 #include <thread>
28 #include <unordered_map>
29 #include <functional>
30 
31 /* Package and library details required for plugin_init */
32 #define PACKAGE "nvdsmetamux"
33 #define VERSION "1.0"
34 #define LICENSE "Proprietary"
35 #define DESCRIPTION "NVIDIA batch meta mux plugin for integration with DeepStream on DGPU/Jetson"
36 #define BINARY_PACKAGE "NVIDIA DeepStream batch meta mux form different model"
37 #define URL "http://nvidia.com/"
38 
39 #ifdef __cplusplus
40 extern "C" {
41 #endif
42 
43 G_BEGIN_DECLS
44 
45 #define GST_TYPE_NVDSMETAMUX_PAD (gst_nvdsmetamux_pad_get_type())
46 #define GST_NVDSMETAMUX_PAD(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_NVDSMETAMUX_PAD, GstNvDsMetaMuxPad))
47 #define GST_NVDSMETAMUX_PAD_CAST(obj) ((GstNvDsMetaMuxPad *)(obj))
48 #define GST_NVDSMETAMUX_PAD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_NVDSMETAMUX_PAD, GstNvDsMetaMuxPad))
49 #define GST_IS_NVDSMETAMUX_PAD(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_NVDSMETAMUX_PAD))
50 #define GST_IS_NVDSMETAMUX_PAD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_NVDSMETAMUX_PAD))
51 
56 
57 #define GST_TYPE_NVDSMETAMUX \
58  (gst_nvdsmetamux_get_type ())
59 #define GST_NVDSMETAMUX(obj) \
60  (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_NVDSMETAMUX, GstNvDsMetaMux))
61 #define GST_NVDSMETAMUX_CAST(obj) ((GstNvDsMetaMux *)obj)
62 #define GST_NVDSMETAMUX_CLASS(klass) \
63  (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_NVDSMETAMUX, GstNvDsMetaMuxClass))
64 #define GST_IS_NVDSMETAMUX(obj) \
65  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_NVDSMETAMUX))
66 #define GST_IS_NVDSMETAMUX_CLASS(klass) \
67  (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_NVDSMETAMUX))
68 
69 typedef struct
70 {
72  std::vector<gint> source_id_vector;
74 
76 {
77  GstAggregatorPad aggregator_pad;
78 
79  GstBufferList *buf_list;
80  std::vector <gint> source_ids;
81 };
82 
84  GstAggregatorPadClass parent;
85 };
86 
88  GstAggregator aggregator;
89 
90  GstPad *srcpad;
91  gboolean enable;
93  GstClockTimeDiff pts_tolerance;
97  std::unordered_map<gint, GstNvDsMetaMuxModelSource> model_source_map;
98  GHashTable *pts_table;
99 };
100 
102  GstAggregatorClass parent;
103 };
104 
105 GType gst_nvdsmetamux_pad_get_type(void);
106 GType gst_nvdsmetamux_get_type (void);
107 
108 G_END_DECLS
109 
110 #ifdef __cplusplus
111 }
112 #endif
113 
114 #endif
gst_nvdsmetamux_get_type
GType gst_nvdsmetamux_get_type(void)
_GstNvDsMetaMux::srcpad
GstPad * srcpad
Definition: sources/gst-plugins/gst-nvdsmetamux/gstnvdsmetamux.h:90
_GstNvDsMetaMux::model_source_map
std::unordered_map< gint, GstNvDsMetaMuxModelSource > model_source_map
Definition: sources/gst-plugins/gst-nvdsmetamux/gstnvdsmetamux.h:97
_GstNvDsMetaMuxPad::aggregator_pad
GstAggregatorPad aggregator_pad
Definition: sources/gst-plugins/gst-nvdsmetamux/gstnvdsmetamux.h:77
_GstNvDsMetaMuxPad::source_ids
std::vector< gint > source_ids
Definition: sources/gst-plugins/gst-nvdsmetamux/gstnvdsmetamux.h:80
_GstNvDsMetaMuxPad::buf_list
GstBufferList * buf_list
Definition: sources/gst-plugins/gst-nvdsmetamux/gstnvdsmetamux.h:79
gst_nvdsmetamux_pad_get_type
GType gst_nvdsmetamux_pad_get_type(void)
GstNvDsMetaMuxModelSource::source_id_vector
std::vector< gint > source_id_vector
list of source_id vectors per model
Definition: sources/gst-plugins/gst-nvdsmetamux/gstnvdsmetamux.h:72
_GstNvDsMetaMux
Definition: sources/gst-plugins/gst-nvdsmetamux/gstnvdsmetamux.h:87
_GstNvDsMetaMux::config_file_path
gchar * config_file_path
Definition: sources/gst-plugins/gst-nvdsmetamux/gstnvdsmetamux.h:94
_GstNvDsMetaMux::pts_table
GHashTable * pts_table
Definition: sources/gst-plugins/gst-nvdsmetamux/gstnvdsmetamux.h:98
_GstNvDsMetaMux::pts_tolerance
GstClockTimeDiff pts_tolerance
Definition: sources/gst-plugins/gst-nvdsmetamux/gstnvdsmetamux.h:93
_GstNvDsMetaMux::active_pad
GstNvDsMetaMuxPad * active_pad
Definition: sources/gst-plugins/gst-nvdsmetamux/gstnvdsmetamux.h:95
_GstNvDsMetaMuxPad
Definition: sources/gst-plugins/gst-nvdsmetamux/gstnvdsmetamux.h:75
_GstNvDsMetaMux::enable
gboolean enable
Definition: sources/gst-plugins/gst-nvdsmetamux/gstnvdsmetamux.h:91
_GstNvDsMetaMux::active_sink_pad
gchar * active_sink_pad
Definition: sources/gst-plugins/gst-nvdsmetamux/gstnvdsmetamux.h:92
_GstNvDsMetaMuxClass
Definition: sources/gst-plugins/gst-nvdsmetamux/gstnvdsmetamux.h:101
_GstNvDsMetaMux::config_file_parse_successful
gboolean config_file_parse_successful
Definition: sources/gst-plugins/gst-nvdsmetamux/gstnvdsmetamux.h:96
_GstNvDsMetaMuxClass::parent
GstAggregatorClass parent
Definition: sources/gst-plugins/gst-nvdsmetamux/gstnvdsmetamux.h:102
_GstNvDsMetaMuxPadClass
Definition: sources/gst-plugins/gst-nvdsmetamux/gstnvdsmetamux.h:83
GstNvDsMetaMuxModelSource
Definition: sources/gst-plugins/gst-nvdsmetamux/gstnvdsmetamux.h:69
_GstNvDsMetaMuxPadClass::parent
GstAggregatorPadClass parent
Definition: sources/gst-plugins/gst-nvdsmetamux/gstnvdsmetamux.h:84
_GstNvDsMetaMux::aggregator
GstAggregator aggregator
Definition: sources/gst-plugins/gst-nvdsmetamux/gstnvdsmetamux.h:88