NVIDIA DeepStream SDK API Reference

9.2 Release
9.2/sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux.h File Reference

Go to the source code of this file.

Data Structures

struct  _GstNvModelMux
 ModelMuxInstance struct. More...
 
struct  _GstNvModelMuxClass
 

Macros

#define GST_TYPE_NVMODELMUX   (gst_modelmux_get_type ())
 SECTION:element-nvmodelmux. More...
 
#define GST_NVMODELMUX(obj)   (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_NVMODELMUX, GstNvModelMux))
 
#define GST_NVMODELMUX_CLASS(klass)   (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_NVMODELMUX, GstNvModelMuxClass))
 
#define GST_IS_NVMODELMUX(obj)   (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_NVMODELMUX))
 
#define GST_IS_NVMODELMUX_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_NVMODELMUX))
 

Typedefs

typedef struct _GstNvModelMux GstNvModelMux
 
typedef struct _GstNvModelMuxClass GstNvModelMuxClass
 
typedef gboolean(* ModelMuxPeerStageFunc) (GstNvModelMux *self, GstNvModelMux *peer, gpointer udata)
 

Enumerations

enum  {
  PROP_0,
  PROP_ENABLE,
  PROP_CONFIG_FILE_PATH,
  PROP_BATCH_SIZE,
  PROP_PER_MODEL_BATCH_SIZE,
  PROP_UNIFIED_BATCH,
  PROP_PRIMARY_MODEL,
  PROP_SHADOW_MODEL,
  PROP_COMPACT_IDLE_MODELS_ACROSS_POOLS,
  PROP_MODEL_SHARDING,
  PROP_PROCESS_MODE,
  PROP_LAST
}
 

Functions

GType gst_modelmux_get_type (void)
 
gboolean gst_modelmux_parse_config_file (GstNvModelMux *self, const gchar *cfg_file)
 
G_GNUC_INTERNAL void modelmux_foreach_peer_stage (GstNvModelMux *self, ModelMuxPeerStageFunc fn, gpointer udata)
 
G_GNUC_INTERNAL gboolean modelmux_stage_ask_peer (GstNvModelMux *peer, GstQuery *q, GstQuery **out)
 
G_GNUC_INTERNAL gboolean modelmux_stage_query_is_delegated (GstQuery *q)
 
void gst_modelmux_control_attach (GstNvModelMux *self)
 
void gst_modelmux_control_detach (GstNvModelMux *self)
 
void gst_modelmux_control_wire_ota_rollback (GstNvModelMux *self, ModelMuxBin *mm)
 
G_GNUC_INTERNAL void modelmux_control_parse_model_metadata (GstNvModelMux *self, const gchar *json, gchar **primary_model_name, gchar **primary_model_version, gint *primary_model_gpu, gchar **shadow_model_name, gchar **shadow_model_version, gint *shadow_model_gpu)
 

Macro Definition Documentation

◆ GST_IS_NVMODELMUX

#define GST_IS_NVMODELMUX (   obj)    (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_NVMODELMUX))

◆ GST_IS_NVMODELMUX_CLASS

#define GST_IS_NVMODELMUX_CLASS (   klass)    (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_NVMODELMUX))

◆ GST_NVMODELMUX

#define GST_NVMODELMUX (   obj)    (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_NVMODELMUX, GstNvModelMux))

◆ GST_NVMODELMUX_CLASS

#define GST_NVMODELMUX_CLASS (   klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_NVMODELMUX, GstNvModelMuxClass))

◆ GST_TYPE_NVMODELMUX

#define GST_TYPE_NVMODELMUX   (gst_modelmux_get_type ())

SECTION:element-nvmodelmux.

nvmodelmux

A self-contained DeepStream GStreamer bin element that runs PER-STREAM, PER-MODEL inference with optional A/B (primary + shadow) serving.

One batched input (e.g. from nvstreammux / nvmultiurisrcbin) enters the element's sink pad; the element fans every source out to its assigned model(s), batches each model independently, runs nvinfer, and re-batches all outputs into a SINGLE batched buffer on the src pad. Each output frame carries InferenceProvenanceMeta so a downstream consumer can attribute detections to the exact (stream, model, role) that produced them.

sink (1 batched) --> [ demux -> per-stream tee -> {Primary, Shadow} model pools (per-model nvstreammux->nvinfer->nvstreamdemux) -> combined nvstreammux ] --> src (1 batched)

ALL routing / pooling / sharding / A/B promote-swap / OTA reload / provenance logic lives inside the bin (see gstnvmodelmux_bin.c); this element is the thin GObject shell that exposes it as a reusable plugin:

  • CONFIGURATION via GObject properties. (The HOST app – e.g. deepstream-app / deepstream-test5 – parses the DeepStream main config and sets these; per-sensor model assignment is driven through the attach-stream signal.)
  • DYNAMIC CONTROL via action signals (load/unload/reload model, attach/detach stream, update routing, query status) so any host app (custom app, deepstream-app, deepstream-test5, gst-launch test rig) can drive it without linking against the bin's private C API.
  • The existing model-status downstream GstQuery is still answered internally, so a native REST front-end (nvmultiurisrcbin) keeps working with zero glue.

The element is a GstBin: when disabled (enable=FALSE) it degrades to a transparent passthrough, exactly like other DeepStream components.

Definition at line 64 of file 9.2/sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux.h.

Typedef Documentation

◆ GstNvModelMux

◆ GstNvModelMuxClass

◆ ModelMuxPeerStageFunc

typedef gboolean(* ModelMuxPeerStageFunc) (GstNvModelMux *self, GstNvModelMux *peer, gpointer udata)

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
PROP_0 
PROP_ENABLE 
PROP_CONFIG_FILE_PATH 
PROP_BATCH_SIZE 
PROP_PER_MODEL_BATCH_SIZE 
PROP_UNIFIED_BATCH 
PROP_PRIMARY_MODEL 
PROP_SHADOW_MODEL 
PROP_COMPACT_IDLE_MODELS_ACROSS_POOLS 
PROP_MODEL_SHARDING 
PROP_PROCESS_MODE 
PROP_LAST 

Definition at line 80 of file 9.2/sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux.h.

Function Documentation

◆ gst_modelmux_control_attach()

void gst_modelmux_control_attach ( GstNvModelMux *  self)

◆ gst_modelmux_control_detach()

void gst_modelmux_control_detach ( GstNvModelMux *  self)

◆ gst_modelmux_control_wire_ota_rollback()

void gst_modelmux_control_wire_ota_rollback ( GstNvModelMux *  self,
ModelMuxBin *  mm 
)

◆ gst_modelmux_get_type()

GType gst_modelmux_get_type ( void  )

◆ gst_modelmux_parse_config_file()

gboolean gst_modelmux_parse_config_file ( GstNvModelMux *  self,
const gchar *  cfg_file 
)

◆ modelmux_control_parse_model_metadata()

G_GNUC_INTERNAL void modelmux_control_parse_model_metadata ( GstNvModelMux *  self,
const gchar *  json,
gchar **  primary_model_name,
gchar **  primary_model_version,
gint *  primary_model_gpu,
gchar **  shadow_model_name,
gchar **  shadow_model_version,
gint *  shadow_model_gpu 
)

◆ modelmux_foreach_peer_stage()

G_GNUC_INTERNAL void modelmux_foreach_peer_stage ( GstNvModelMux *  self,
ModelMuxPeerStageFunc  fn,
gpointer  udata 
)

◆ modelmux_stage_ask_peer()

G_GNUC_INTERNAL gboolean modelmux_stage_ask_peer ( GstNvModelMux *  peer,
GstQuery *  q,
GstQuery **  out 
)

◆ modelmux_stage_query_is_delegated()

G_GNUC_INTERNAL gboolean modelmux_stage_query_is_delegated ( GstQuery *  q)