|
|
NVIDIA DeepStream SDK API Reference
|
9.2 Release
|
Go to the documentation of this file.
43 #ifndef __DEEPSTREAM_MULTIMODEL_APP_H__
44 #define __DEEPSTREAM_MULTIMODEL_APP_H__
49 #include "nvdsmeta_schema.h"
57 #define MM_MAX_STREAMS_DEFAULT 16
58 #define MM_MAX_BATCH 1024
59 #define MM_MAX_MODELS 32
60 #define MM_DEFAULT_REST_PORT 9000
61 #define MM_DEFAULT_REST_IP "0.0.0.0"
68 #define MM_MODEL_VERSION_DEFAULT "1"
69 #define MM_MODEL_KEY_SEP '@'
77 #define MM_PROCESS_MODE_PGIE 1
78 #define MM_PROCESS_MODE_SGIE 2
84 #define MM_SHADOW_GIE_OFFSET 100
86 #define MM_MUX_WIDTH 1920
87 #define MM_MUX_HEIGHT 1080
88 #define MM_MUX_PUSH_TIMEOUT 33333
112 #define MODELMUX_CONTEXT_TYPE_ROUTING "nvidia.deepstream.modelmux.routing"
114 #define MODELMUX_CONTEXT_FIELD_REV "revision"
121 #define MODELMUX_TYPE_REV_SHARED (modelmux_rev_shared_get_type ())
163 #define MM_BACKEND_AT_PGIE (1u << 0)
164 #define MM_BACKEND_AT_SGIE (1u << 1)
171 const gchar *element;
174 const gchar *
const *markers;
179 gboolean engine_file;
183 gboolean version_artifact;
185 gboolean inplace_reload;
188 gboolean owns_placement;
191 gboolean multi_gpu_scale;
195 gboolean gpu_ids_list;
199 const gchar *config_prop;
203 const gchar *config_group;
207 const gchar *engine_prop;
216 const gchar *cfg_section;
218 const gchar *gpu_key;
228 const gchar * config_file,
229 const gchar * group);
281 gchar *primary_version;
283 gchar *shadow_version;
292 guint per_model_max_streams;
293 gboolean unified_batch;
302 gboolean gie_ids_from_config;
305 gboolean shard_compact;
309 gboolean compact_idle_models_across_pools;
318 gboolean model_sharding;
334 gboolean mux_live_source;
335 guint model_mux_push_timeout;
336 guint combined_mux_push_timeout;
341 gboolean attach_perf_metric;
342 guint perf_metric_interval_sec;
350 gboolean copy_primary_buffer;
351 gboolean copy_shadow_buffer;
352 guint copy_buffer_pool_size;
377 gint placement_policy;
388 gboolean auto_gpu_scale;
415 GMutex versions_lock;
416 gchar *default_primary;
417 gchar *default_primary_version;
418 gchar *default_shadow;
419 gchar *default_shadow_version;
420 gint default_primary_gpu;
424 gint default_shadow_gpu;
484 guint mux_push_timeout;
486 gboolean mux_live_source;
501 GstElement *conv_out;
506 GstPad *zero_stream_drop_pad;
507 gulong zero_stream_drop_probe;
510 GHashTable *idx_to_stream;
524 GThread *load_thread;
525 const GHashTable *stream_names;
565 gchar *ota_old_version;
568 gchar *ota_old_engine;
569 gchar *ota_old_config;
593 gboolean ota_compensating;
650 GstElement *parent_pipeline;
651 GstElement *container;
663 const GHashTable *stream_names;
696 #define MM_GPU_ANY (-1)
745 GstPad *out_mux_sink;
749 GstPad *verify_head_pad;
750 gulong verify_head_probe_id;
751 GstPad *verify_queue_pad;
752 gulong verify_queue_probe_id;
758 gchar *pending_model;
767 gboolean via_default;
792 GstPad *branch_tap_pad;
793 gulong branch_tap_probe_id;
797 gpointer promote_ctx;
822 #define MM_ACCT_MAX 256
823 #define MM_ROLE_PRIMARY 0
824 #define MM_ROLE_SHADOW 1
825 #define MM_ROLE_SLOTS 2
883 gboolean clear_shadow;
886 gboolean p_via_default;
887 gboolean s_via_default;
904 GstElement *parent_pipeline;
914 GHashTable *stream_names;
929 GHashTable *stream_cam_ids;
930 GHashTable *stream_wiring;
931 GPtrArray *retired_names;
932 GHashTable *streams_pending;
934 GHashTable *streams_cancelled;
942 gboolean log_enabled;
943 guint debug_interval;
946 GstElement *in_demux;
950 GQueue *col_free_idx;
959 GHashTable *limbo_models;
962 guint next_limbo_gie;
973 GList *pending_frees;
976 GList *pending_sources;
978 guint compact_poll_id;
979 guint dump_source_id;
981 guint64 routing_revision;
990 GPtrArray *pending_routes;
999 void (*ota_rollback_cb) (gpointer owner,
const gchar * from_key,
1000 const gchar * to_key);
1001 gpointer ota_rollback_owner;
1003 gboolean ever_attached;
1037 void model_key_split (
const gchar * key, gchar ** name_out, gchar ** version_out);
1060 const gchar * model_name,
const gchar *
version);
1066 const gchar *
version,
const gchar * engine,
1067 const gchar * config_file, gint gpu, guint batch);
1082 const gchar * name,
const gchar *
version);
1092 gboolean * derive_failed);
1113 const gchar * config_file,
1114 const gchar * engine_file,
1121 const gchar * config_file,
1122 const gchar * engine_file,
1131 const gchar * camera_id,
1132 const gchar ** primary,
const gchar ** shadow,
1133 const gchar ** primary_version,
1134 const gchar ** shadow_version,
1135 gboolean * primary_is_default,
1136 gboolean * shadow_is_default);
1140 const gchar * config_file,
const gchar * engine_file,
1141 const gchar *
version, guint unique_id, guint max_streams,
1143 GstElement * parent_pipeline, GstElement * container,
1144 const GHashTable * stream_names, guint inst);
1163 GstElement * parent_pipeline, GstElement * container,
1166 const gchar * model_name, gint gpu, GstPad * in_pad,
1167 guint branch_serial,
1168 GstElement ** in_q_out, GstElement ** out_q_out,
1169 GstElement ** conv_out, gboolean * cap_overflow,
1175 const gchar * cfg_override, guint batch);
1193 guint delay_seconds);
1214 const gchar * f_model,
const gchar * f_version);
1236 const gchar ** name,
const gchar **
version,
1237 const gchar ** backend, guint * gie, gint * gpu,
1238 guint * streams,
const gchar ** state,
1239 gboolean * serving, gchar ** engine);
1245 const gchar * from_version,
const gchar *
version,
1246 const gchar * config_file,
const gchar * engine_file,
1247 gint * http,
const gchar ** err_code,
1248 const gchar ** reason,
const gchar ** hint);
1254 const gchar *
version,
const gchar * config_file,
1255 const gchar * engine_file, gint * http,
1256 const gchar ** err_code,
const gchar ** reason,
1257 const gchar ** hint);
1265 const gchar *
version, gint * http,
1266 const gchar ** err_code,
const gchar ** reason,
1267 const gchar ** hint);
1273 const gchar *
version, gint * http,
1274 const gchar ** err_code,
const gchar ** reason,
1275 const gchar ** hint);
1289 guint x_offset, guint y_offset,
const gchar * text,
1290 const gchar * role);
1305 const gchar * name,
const gchar * cam_id,
1306 const gchar * primary,
const gchar * shadow,
1307 gint p_gpu, gint s_gpu,
1308 gboolean p_via_default, gboolean s_via_default);
1315 const gchar * primary,
const gchar * shadow,
1316 gint p_gpu, gint s_gpu,
1317 gboolean p_via_default, gboolean s_via_default);
1335 const gchar * cfg_override, gint gpu,
1347 const gchar *
const cfgs[],
1348 const gint gpus[], guint n,
1359 gint * out, guint cap);
1367 const gchar * key,
const gchar * cfg_override);
1376 const gchar * name,
const gchar *
version,
1389 const gchar * name,
const gchar * cam_id);
1411 const gchar * key, guint * out, guint cap,
1412 gboolean default_only);
1419 const gchar * config,
const gchar * engine,
1426 const gchar * name,
const gint gpus[],
1427 const gchar *
const engines[], guint n,
1440 gboolean shadow,
const gchar * name);
1446 gboolean shadow,
const gchar * name);
1455 const gchar * f_version,
const gchar * f_stream,
1484 GstPadProbeInfo * info,
1490 GstPadProbeInfo * info,
1496 const gchar * event,
const gchar * name,
const gchar *
version,
1497 gint gpu, gboolean ok,
const gchar * detail);
1505 guint * streams, gchar ** streams_csv);
1512 guint n,
const gchar * primary,
const gchar * shadow,
1513 gint p_gpu, gint s_gpu,
1514 gboolean p_via_default, gboolean s_via_default);
1520 const gchar * model,
const gchar * shadow, gint p_gpu, gint s_gpu,
1521 gboolean p_via_default, gboolean s_via_default);
1526 const gchar * model, gint gpu, gboolean via_default);
1536 const guint * src_ids, guint n, guint ** out);
1547 guint n,
const gchar * primary,
const gchar * shadow);
1568 const gchar * key,
const gint * gpus, guint n_gpus,
1569 gint * serving_gpu, guint * serving_streams, gchar ** serving_csv);
ModelBin * model_bin_new(const gchar *name, const gchar *role, const gchar *config_file, const gchar *engine_file, const gchar *version, guint unique_id, guint max_streams, const ModelMuxConfig *config, GstElement *parent_pipeline, GstElement *container, const GHashTable *stream_names, guint inst)
G_GNUC_INTERNAL GstPadProbeReturn modelmux_control_query_probe(GstPad *pad, GstPadProbeInfo *info, gpointer udata)
const G_GNUC_INTERNAL gchar * modelmux_bin_source_name(ModelMuxBin *ib, guint sid)
guint modelmux_bin_model_gpus(ModelMuxBin *ib, const gchar *key, gint *out, guint cap)
gint modelmux_config_file_gie_id(const gchar *config_file)
ModelPool: the live INVENTORY of one role's (Primary or Shadow) instantiated models,...
ModelStatus modelmux_bin_load_model(ModelMuxBin *ib, const gchar *key, const gchar *cfg_override, gint gpu, guint batch)
A model definition from the [model-*] config groups.
void modelmux_config_resolve_models(const ModelMuxConfig *config, const DefaultModelRef *def_primary, const DefaultModelRef *def_shadow, const gchar *camera_id, const gchar **primary, const gchar **shadow, const gchar **primary_version, const gchar **shadow_version, gboolean *primary_is_default, gboolean *shadow_is_default)
ModelMuxBin * modelmux_bin_new(GstElement *pipeline, const gchar *name, guint max_streams, const ModelMuxConfig *config)
A config-time per-sensor model binding, parsed from a [stream-model-<sensor_id>] group.
gboolean modelmux_bin_key_serving(ModelMuxBin *ib, const gchar *key, guint *streams, gchar **streams_csv)
void modelmux_bin_clear_default(ModelMuxBin *ib, gboolean shadow)
gboolean modelmux_version_is_int(const gchar *v)
One role branch (Primary or Shadow) attached for a stream: the model this role is currently routed to...
GstElement * modelmux_sgie_get_infer(ModelMuxSgieBin *sgie_bin)
gboolean modelmux_bin_unload_model(ModelMuxBin *ib, const gchar *key)
gboolean modelmux_sgie_route(ModelMuxSgieBin *sgie_bin, const gchar *name, const gchar *version, gint *http, const gchar **err_code, const gchar **reason, const gchar **hint)
#define MM_MAX_STREAMS_DEFAULT
G_GNUC_INTERNAL void modelmux_fmt_route_cell(gchar *buf, gsize n, const ModelMuxRoleAttach *ra)
One row of the backend registry.
const gchar * modelmux_sgie_model_version(ModelMuxSgieBin *sgie_bin)
GstPad * modelmux_sgie_get_sink(ModelMuxSgieBin *sgie_bin)
gboolean modelmux_backend_at_position(ModelType type, gint process_mode)
TRUE iff @type may run at @process_mode (MM_PROCESS_MODE_PGIE / _SGIE).
G_GNUC_INTERNAL ModelBin * modelmux_perf_find_bin_for_source(ModelPool *pool, guint source_id)
gboolean model_pool_unload_model(ModelPool *rb, const gchar *model_name)
gboolean modelmux_bin_try_inplace(ModelMuxBin *ib, const guint *src_ids, guint n, const gchar *primary, const gchar *shadow)
void modelmux_bin_set_rev_shared(ModelMuxBin *ib, ModelMuxRevShared *rev)
guint64 modelmux_bin_routing_revision(ModelMuxBin *ib)
const ModelCatalogEntry * modelmux_config_register_model(ModelMuxConfig *config, const gchar *name, const gchar *config_file, const gchar *engine_file, const gchar *version, guint max_streams)
ModelStatus
ModelBin lifecycle (applies to EVERY ModelBin, any role).
guint64 modelmux_rev_shared_get(ModelMuxRevShared *rev)
Current value; 0 for a NULL @rev, which is the same answer a stage that has not negotiated the contex...
gboolean model_pool_load_model(ModelPool *rb, const gchar *model_name, const gchar *cfg_override, guint batch)
gboolean modelmux_sgie_update(ModelMuxSgieBin *sgie_bin, const gchar *name, const gchar *from_version, const gchar *version, const gchar *config_file, const gchar *engine_file, gint *http, const gchar **err_code, const gchar **reason, const gchar **hint)
G_GNUC_INTERNAL gchar * get_infer_engine_str(ModelBin *model_bin)
void modelmux_sgie_set_rev_shared(ModelMuxSgieBin *sgie_bin, ModelMuxRevShared *rev)
const gchar * model_status_str(ModelStatus s)
gboolean modelmux_bin_update_in_flight(ModelMuxBin *ib, const gchar *name)
ModelStatus model_bin_status(ModelBin *model_bin)
gchar * modelmux_bin_route_json(ModelMuxBin *ib, const gchar *f_camera)
gboolean modelmux_sgie_get_info(ModelMuxSgieBin *sgie_bin, guint idx, const gchar **name, const gchar **version, const gchar **backend, guint *gie, gint *gpu, guint *streams, const gchar **state, gboolean *serving, gchar **engine)
struct _ModelMuxSgieBin ModelMuxSgieBin
guint modelmux_bin_passthru_streams(ModelMuxBin *ib, const guint *src_ids, guint n, guint **out)
gchar * modelmux_sgie_status_json(ModelMuxSgieBin *sgie_bin, const gchar *f_model, const gchar *f_version)
ModelMuxSgieBin * modelmux_sgie_new(GstElement *parent, const gchar *name, const ModelMuxConfig *config)
const G_GNUC_INTERNAL gchar * modelmux_resolve_role(ModelBin *model_bin, guint source_id)
const DefaultModelRef * modelmux_bin_get_default(ModelMuxBin *ib, gboolean shadow)
G_GNUC_INTERNAL void modelmux_schedule_dump(ModelMuxBin *ib, guint delay_seconds)
GstPad * modelmux_sgie_get_src(ModelMuxSgieBin *sgie_bin)
gchar * modelmux_bin_status_json(ModelMuxBin *ib, const gchar *f_model, const gchar *f_version, const gchar *f_stream, gint f_sid)
half floor(half arg)
Nearest integer not greater than half value.
void modelmux_bin_bump_routing_revision(ModelMuxBin *ib)
void modelmux_pending_route_note_free(gpointer note)
ModelPool * model_pool_new(const gchar *role, guint base_uid, guint max_streams, GstElement *parent_pipeline, GstElement *container, const ModelMuxConfig *config, const GHashTable *stream_names)
gboolean modelmux_bin_attach_stream(ModelMuxBin *ib, guint stream_id, const gchar *name, const gchar *cam_id, const gchar *primary, const gchar *shadow, gint p_gpu, gint s_gpu, gboolean p_via_default, gboolean s_via_default)
guint model_bin_num_streams(ModelBin *model_bin)
void modelmux_bin_clear_pending_model(ModelMuxBin *ib, guint stream_id)
guint modelmux_config_version_batch(const ModelMuxConfig *config, const gchar *name, const gchar *version)
void modelmux_config_clear(ModelMuxConfig *config)
gboolean modelmux_sgie_unload(ModelMuxSgieBin *sgie_bin, const gchar *name, const gchar *version, gint *http, const gchar **err_code, const gchar **reason, const gchar **hint)
gboolean modelmux_bin_model_loaded(ModelMuxBin *ib, const gchar *name)
ModelType modelmux_detect_model_type(const gchar *config_file)
gboolean model_pool_detach(ModelPool *rb, guint stream_id, const gchar *model_name)
@ MODEL_VISION_ENCODER
nvinferserver (Triton backend)
@ MODEL_FAILED
engine loaded, >=1 stream attached
ModelStatus modelmux_bin_prepare_model(ModelMuxBin *ib, gboolean shadow, const gchar *name)
One ACCEPTED-but-not-yet-applied model/routing, mirrored down from the control layer so the status vi...
ModelType
Inference backend element used inside a ModelBin.
void modelmux_bin_set_default(ModelMuxBin *ib, gboolean shadow, const gchar *name, const gchar *version, gint gpu)
void model_key_split(const gchar *key, gchar **name_out, gchar **version_out)
gint modelmux_config_version_gie(const ModelMuxConfig *config, const gchar *name, const gchar *version)
G_GNUC_INTERNAL void modelmux_role_set(ModelBin *model_bin, const gchar *role)
@ MODEL_BACKEND_N
nvdsvisionencoder (object embeddings)
G_GNUC_INTERNAL void modelmux_debug_configure(ModelMuxBin *ib)
const gchar * modelmux_infer_plugin_str(ModelType type)
@ MODEL_SERVING
engine loaded, idle (0 streams); ready to take streams
G_GNUC_INTERNAL gint modelmux_role_idx(const gchar *role)
void modelmux_config_register_version(ModelMuxConfig *config, const gchar *name, const gchar *version, const gchar *engine, const gchar *config_file, gint gpu, guint batch)
void modelmux_bin_set_stream_identity(ModelMuxBin *ib, guint stream_id, const gchar *name, const gchar *cam_id)
void modelmux_sgie_bump_routing_revision(ModelMuxSgieBin *sgie_bin)
gint modelmux_config_version_gpu(const ModelMuxConfig *config, const gchar *name, const gchar *version)
GstPad * modelmux_bin_get_sink(ModelMuxBin *ib)
gchar * modelmux_config_resolve_version_cfg(const ModelMuxConfig *config, const gchar *name, const gchar *version, gboolean *derive_failed)
const G_GNUC_INTERNAL gchar * modelmux_role_get(ModelBin *model_bin)
gchar * modelmux_config_derive(const gchar *base_cfg, const gchar *engine, gint gpu, gint gie, const gchar *model_name, const gchar *version)
gboolean modelmux_bin_load_defaults(ModelMuxBin *ib)
void modelmux_bin_set_pending_routes(ModelMuxBin *ib, GPtrArray *notes)
void modelmux_bin_set_pending_model(ModelMuxBin *ib, guint stream_id, const gchar *model, gint gpu, gboolean via_default)
void modelmux_bin_promote_passthru(ModelMuxBin *ib, guint stream_id, const gchar *model, const gchar *shadow, gint p_gpu, gint s_gpu, gboolean p_via_default, gboolean s_via_default)
void modelmux_bin_free(ModelMuxBin *ib)
void modelmux_sgie_set_overlay_slot(ModelMuxSgieBin *sgie_bin, guint slot)
gboolean modelmux_config_has_other_version(const ModelMuxConfig *config, const gchar *name, const gchar *version)
guint modelmux_bin_active_stream_ids(ModelMuxBin *ib, guint **out)
ModelStatus modelmux_bin_load_into_pool(ModelMuxBin *ib, gboolean shadow, const gchar *key, const gchar *cfg_override)
void model_pool_free(ModelPool *rb)
G_GNUC_INTERNAL gboolean modelmux_debug_enabled(void)
const ModelCatalogEntry * modelmux_config_find_model(const ModelMuxConfig *config, const gchar *name)
gint modelmux_config_file_process_mode(const gchar *config_file)
gint modelmux_bin_model_status(ModelMuxBin *ib, gboolean shadow, const gchar *name)
gboolean modelmux_bin_reload_model_multi(ModelMuxBin *ib, const gchar *name, const gint gpus[], const gchar *const engines[], guint n, const gchar *version)
void modelmux_sgie_free(ModelMuxSgieBin *sgie_bin)
gboolean modelmux_bin_model_on_gpu(ModelMuxBin *ib, const gchar *key, gint gpu)
GstPad * modelmux_bin_get_src(ModelMuxBin *ib)
ModelStatus
ModelBin lifecycle (applies to EVERY ModelBin, any role).
gint modelmux_config_file_gpu(const gchar *config_file)
@ MODEL_INFERSERVER
nvinfer (TensorRT; default)
@ MODEL_WARMED
engine still building/loading; cannot attach yet
gboolean modelmux_config_apply_properties(GstElement *element, const gchar *config_file, const gchar *group)
Apply every key of @group in @config_file to @element as the property of the same name,...
guint modelmux_bin_streams_on_model(ModelMuxBin *ib, gboolean shadow, const gchar *key, guint *out, guint cap, gboolean default_only)
GstPad * model_pool_attach(ModelPool *rb, guint stream_id, const gchar *model_name, gint gpu, GstPad *in_pad, guint branch_serial, GstElement **in_q_out, GstElement **out_q_out, GstElement **conv_out, gboolean *cap_overflow, ModelBin **attached_bin_out)
guint modelmux_bin_model_batch(ModelMuxBin *ib, const gchar *key)
guint modelmux_bin_update_routing_scoped(ModelMuxBin *ib, const guint *src_ids, guint n, const gchar *primary, const gchar *shadow, gint p_gpu, gint s_gpu, gboolean p_via_default, gboolean s_via_default)
gint modelmux_config_file_operate_on_gie(const gchar *config_file)
guint modelmux_bin_unload_versions(ModelMuxBin *ib, const gchar *name, guint *present)
gboolean model_bin_has_capacity(ModelBin *model_bin)
gchar * model_key(const gchar *name, const gchar *version)
gboolean modelmux_bin_detach_stream(ModelMuxBin *ib, guint stream_id)
A per-version artifact override from a [model-<name>-<version>] config group: the engine/checkpoint a...
gboolean modelmux_bin_is_configured_default(ModelMuxBin *ib, const gchar *name, const gchar *version)
G_GNUC_INTERNAL void modelmux_post_model_event(GstElement *src, const gchar *event, const gchar *name, const gchar *version, gint gpu, gboolean ok, const gchar *detail)
ModelMuxRevShared * modelmux_rev_shared_ref(ModelMuxRevShared *rev)
gboolean modelmux_sgie_load(ModelMuxSgieBin *sgie_bin, const gchar *name, const gchar *version, const gchar *config_file, const gchar *engine_file, gint *http, const gchar **err_code, const gchar **reason, const gchar **hint)
G_GNUC_INTERNAL GstPadProbeReturn modelmux_status_query_probe(GstPad *pad, GstPadProbeInfo *info, gpointer udata)
gboolean model_bin_detach(ModelBin *model_bin, guint stream_id)
ModelMuxRevShared * modelmux_rev_shared_new(void)
A new counter at revision 0, refcount 1.
gboolean modelmux_bin_update_routing(ModelMuxBin *ib, guint stream_id, const gchar *primary, const gchar *shadow, gint p_gpu, gint s_gpu, gboolean p_via_default, gboolean s_via_default)
gchar * modelmux_sgie_route_json(ModelMuxSgieBin *sgie_bin)
const G_GNUC_INTERNAL gchar * model_version_str(ModelBin *model_bin)
const ModelBackendInfo * modelmux_backend(ModelType type)
The registry row for @type.
guint modelmux_bin_num_streams(ModelMuxBin *ib)
gboolean modelmux_bin_reload_model(ModelMuxBin *ib, const gchar *name, const gchar *config, const gchar *engine, const gchar *version)
#define MM_ACCT_MAX
max source_id tracked (flat, lock-free)
ModelType
Inference backend element used inside a ModelBin.
ModelMuxUnloadGpuResult modelmux_bin_unload_model_gpus(ModelMuxBin *ib, const gchar *key, const gint *gpus, guint n_gpus, gint *serving_gpu, guint *serving_streams, gchar **serving_csv)
struct _ModelMuxRevShared ModelMuxRevShared
The counter itself: refcounted (each stage holds one ref) and self-locking, so it can be read while a...
const ModelCatalogEntry * modelmux_config_update_model(ModelMuxConfig *config, const gchar *name, const gchar *config_file, const gchar *engine_file, const gchar *version)
ModelPlacementPolicy
Stream placement policy across a multi-GPU instance group ([multimodel] placement-policy) – applies o...
gboolean modelmux_overlay_enabled(void)
GType modelmux_rev_shared_get_type(void)
gchar * modelmux_bin_name_serving_streams(ModelMuxBin *ib, const gchar *name)
void modelmux_rev_shared_unref(ModelMuxRevShared *rev)
void modelmux_draw_label(struct _NvDsBatchMeta *bmeta, struct _NvDsFrameMeta *fm, guint x_offset, guint y_offset, const gchar *text, const gchar *role)
void model_bin_free(ModelBin *model_bin)
DefaultModelRef: a role's RUNTIME default model DESIGNATION – embedded in that role's ModelPool ("thi...
Per-stream bookkeeping inside the ModelMuxBin: ONE record per attached stream (the routing-table row)...
void model_bin_load(ModelBin *model_bin)
GstPad * model_bin_attach(ModelBin *model_bin, guint stream_id)
guint64 modelmux_rev_shared_bump(ModelMuxRevShared *rev)
Increment and return the new value.
const gchar * modelmux_sgie_model_name(ModelMuxSgieBin *sgie_bin)
ModelStatus modelmux_bin_load_model_instances(ModelMuxBin *ib, const gchar *key, const gchar *const cfgs[], const gint gpus[], guint n, guint batch)