NVIDIA DeepStream SDK API Reference

9.2 Release
ModelBin Struct Reference

Detailed Description

Collaboration diagram for ModelBin:

Data Fields

gchar * name
 
gchar * role
 Modelbin name. More...
 
ModelType type
 Primary/Shadow. More...
 
gboolean perf_on
 nvinfer vs nvinferserver More...
 
ModelMuxPerf * perf
 
gchar * config_file
 
guint unique_id
 
guint max_streams
 nvinfer gie-unique-id (for provenance)
More...
 
guint mux_width
 per-model nvstreammux properties (from [muxer]; captured at create so the drain-recovery recreate path reuses the same values). More...
 
guint mux_height
 
guint mux_push_timeout
 
gint process_mode
 
gboolean mux_live_source
 1 = pgie, 2 = sgie (from the element) More...
 
gint mux_gpu
 
GstElement * bin
 PIPELINE device ([multimodel] gpu-id): the model mux batches decoder buffers, which live on that device – its own allocations must land there too. More...
 
GstElement * mux
 the GstBin
More...
 
GstElement * conv_in
 nvstreammux (legacy)
More...
 
GstElement * infer
 xfer-in (nvdsxfer) mux->infer: migrates the batch to THIS shard's device – nvinfer rejects input surfaces on another GPU. More...
 
GstElement * conv_out
 nvinfer
More...
 
GstElement * demux
 xfer-out (nvdsxfer) infer->demux: brings the batch back to the PIPELINE device ([multimodel] gpu-id) so demux/display aggregate same-device buffers. More...
 
GstPad * zero_stream_drop_pad
 nvstreamdemux
More...
 
gulong zero_stream_drop_probe
 infer.src ref while drained to zero
More...
 
GQueue * free_idx
 drops stale late nvinfer output
More...
 
GHashTable * idx_to_stream
 available pad indices (GINT)
More...
 
gint * slot_stream
 idx(GINT) -> stream_id(GINT)
More...
 
guint num_streams
 lock-free mirror of idx_to_stream: idx -> stream_id (-1 = free), max_streams entries. More...
 
gboolean served
 
gint status
 TRUE once a stream has ever attached. More...
 
GThread * load_thread
 ModelStatus, accessed atomically
More...
 
const GHashTable * stream_names
 background engine warm-up
More...
 
gpointer pool
 
gchar * engine
 owning ModelPool* (back-ptr; for the slot-derived role lookup in the overlay)
More...
 
gchar * version
 cached engine path (provenance); set when the bin warms to READY
More...
 
gchar * key
 model checkpoint version (provenance/status); NULL => fall back to the engine basename
More...
 
guint inst
 canonical instance id "name@version" – the hash key in the pool's models map + the limbo map, so multiple versions of one name coexist. More...
 
gint gpu
 shard instance index (0 = base; 1+ = overflow shards auto-created when a shard fills). More...
 
gboolean conv_cross
 PER-SHARD placement recorded at creation (-1 = the config's device). More...
 
gint conv_gpu
 placement was CROSS-device at creation: the bin carries a migration pair. More...
 
gint cfg_gpu
 the migration pair's current TARGET device
More...
 
gboolean pinned
 device the model's own CONFIG FILE pins (nvinfer gpu-id / inferserver gpu_ids), parsed ONCE at creation; -1 = no key (backend default 0). More...
 
gpointer next_shard
 deliberate gpus[] placement: this shard is DESIRED STATE (not overflow) – never auto scaled-in or compacted away; freed only by an explicit unload. More...
 
GMutex prov_lock
 next ModelBin* of the SAME model (shard chain; NULL = last). More...
 
gchar * ota_old_version
 guards retired[] + the ota_* rollback stash: the nvinfer 'model-updated' confirm callback runs on nvinfer's own thread, concurrent with main-loop reloads
More...
 
gchar * ota_old_engine
 rollback COPIES while an OTA awaits nvinfer's confirm; committed (freed) on success, swapped back on a failed reload
More...
 
gchar * ota_old_config
 
gchar * ota_old_key
 rollback COPY of config_file for a BY-CONFIG OTA (NULL when the OTA was engine-only): a failed/rejected config reload must restore config_file + cfg_gpu, or later grows/effective- gpu reads clone/report the rejected config. More...
 
gchar * ota_new_key
 identity-rename rollback COPIES (API_DESIGN.md 5.3): the pre-update ("name@FROM") and post-update ("name@TO") keys while the OTA awaits confirm – a failed reload renames the live identity BACK (marshalled to the main loop; see modelmux_ota_rename_rollback_main). More...
 
gpointer ota_ib
 
gboolean ota_await
 owning ModelMuxBin* for the deferred rollback rename (a limbo bin has pool==NULL, so the confirm callback can't derive it)
More...
 
gpointer ota_group
 an OTA reload is in flight (set at trigger)
More...
 
gboolean ota_ok
 owning ModelMuxOtaGroup* (bin-internal) while a GROUPED model/update awaits per-shard confirms: the whole multi-shard/multi-twin update commits or rolls back as ONE transaction once the LAST confirm lands. More...
 
gboolean ota_compensating
 this shard's confirm outcome, recorded for the group resolution (prov_lock)
More...
 
GPtrArray * retired
 the in-flight reload is a group-rollback COMPENSATING re-trigger of the PREVIOUS engine: its confirm must NOT re-enter the group logic (log-only; see modelmux_ota_group_resolve_main)
More...
 

Field Documentation

◆ bin

GstElement * ModelBin::bin

PIPELINE device ([multimodel] gpu-id): the model mux batches decoder buffers, which live on that device – its own allocations must land there too.


Definition at line 491 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ cfg_gpu

gint ModelBin::cfg_gpu

the migration pair's current TARGET device

Definition at line 549 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ config_file

gchar * ModelBin::config_file

◆ conv_cross

gboolean ModelBin::conv_cross

PER-SHARD placement recorded at creation (-1 = the config's device).

gpus[] groups place one shard per listed GPU, each with its own gpu-derived config.

Definition at line 543 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ conv_gpu

gint ModelBin::conv_gpu

placement was CROSS-device at creation: the bin carries a migration pair.

Same-device bins carry NO migration elements (mux links directly to the inference element) – a later cross-device re-pin is refused (model_bin_set_gpu).

Definition at line 548 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ conv_in

GstElement * ModelBin::conv_in

nvstreammux (legacy)

Definition at line 493 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ conv_out

GstElement * ModelBin::conv_out

nvinfer

Definition at line 501 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ demux

GstElement * ModelBin::demux

xfer-out (nvdsxfer) infer->demux: brings the batch back to the PIPELINE device ([multimodel] gpu-id) so demux/display aggregate same-device buffers.

Paired with conv_in; NULL on same-device bins.

Definition at line 505 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ engine

gchar * ModelBin::engine

owning ModelPool* (back-ptr; for the slot-derived role lookup in the overlay)

Definition at line 528 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ free_idx

GQueue * ModelBin::free_idx

drops stale late nvinfer output

Definition at line 509 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ gpu

gint ModelBin::gpu

shard instance index (0 = base; 1+ = overflow shards auto-created when a shard fills).

Only for unique element names; shards SHARE gie-id.

Definition at line 539 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ idx_to_stream

GHashTable * ModelBin::idx_to_stream

available pad indices (GINT)

Definition at line 510 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ infer

GstElement * ModelBin::infer

xfer-in (nvdsxfer) mux->infer: migrates the batch to THIS shard's device – nvinfer rejects input surfaces on another GPU.

Present ONLY on a cross-device bin; NULL on a same-device bin (mux links straight to infer, zero overhead). Cross-device creation REJECTS when P2P or the nvdsxfer factory is unavailable.

Definition at line 500 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ inst

guint ModelBin::inst

canonical instance id "name@version" – the hash key in the pool's models map + the limbo map, so multiple versions of one name coexist.

Distinct from name (bare, for display/provenance).

Definition at line 536 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ key

gchar * ModelBin::key

model checkpoint version (provenance/status); NULL => fall back to the engine basename

Definition at line 532 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ load_thread

GThread * ModelBin::load_thread

ModelStatus, accessed atomically

Definition at line 524 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ max_streams

guint ModelBin::max_streams

nvinfer gie-unique-id (for provenance)

Definition at line 478 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ mux

GstElement * ModelBin::mux

the GstBin

Definition at line 492 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ mux_gpu

gint ModelBin::mux_gpu

◆ mux_height

guint ModelBin::mux_height

◆ mux_live_source

gboolean ModelBin::mux_live_source

1 = pgie, 2 = sgie (from the element)

Definition at line 486 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ mux_push_timeout

guint ModelBin::mux_push_timeout

◆ mux_width

guint ModelBin::mux_width

per-model nvstreammux properties (from [muxer]; captured at create so the drain-recovery recreate path reuses the same values).

Definition at line 482 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ name

gchar * ModelBin::name

◆ next_shard

gpointer ModelBin::next_shard

deliberate gpus[] placement: this shard is DESIRED STATE (not overflow) – never auto scaled-in or compacted away; freed only by an explicit unload.


Definition at line 557 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ num_streams

guint ModelBin::num_streams

lock-free mirror of idx_to_stream: idx -> stream_id (-1 = free), max_streams entries.

Written with g_atomic under ib->lock; read lock-free by the per-frame provenance probe (GHashTable is NOT safe for unlocked reads concurrent with insert/remove).

Definition at line 517 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ ota_await

gboolean ModelBin::ota_await

owning ModelMuxBin* for the deferred rollback rename (a limbo bin has pool==NULL, so the confirm callback can't derive it)

Definition at line 585 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ ota_compensating

gboolean ModelBin::ota_compensating

this shard's confirm outcome, recorded for the group resolution (prov_lock)

Definition at line 593 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ ota_group

gpointer ModelBin::ota_group

an OTA reload is in flight (set at trigger)

Definition at line 586 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ ota_ib

gpointer ModelBin::ota_ib

◆ ota_new_key

gchar * ModelBin::ota_new_key

identity-rename rollback COPIES (API_DESIGN.md 5.3): the pre-update ("name@FROM") and post-update ("name@TO") keys while the OTA awaits confirm – a failed reload renames the live identity BACK (marshalled to the main loop; see modelmux_ota_rename_rollback_main).

NULL when no rename rides this reload.

Definition at line 581 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ ota_ok

gboolean ModelBin::ota_ok

owning ModelMuxOtaGroup* (bin-internal) while a GROUPED model/update awaits per-shard confirms: the whole multi-shard/multi-twin update commits or rolls back as ONE transaction once the LAST confirm lands.

Guarded by prov_lock (like the ota_* stash).

Definition at line 591 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ ota_old_config

gchar * ModelBin::ota_old_config

◆ ota_old_engine

gchar * ModelBin::ota_old_engine

rollback COPIES while an OTA awaits nvinfer's confirm; committed (freed) on success, swapped back on a failed reload

Definition at line 568 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ ota_old_key

gchar * ModelBin::ota_old_key

rollback COPY of config_file for a BY-CONFIG OTA (NULL when the OTA was engine-only): a failed/rejected config reload must restore config_file + cfg_gpu, or later grows/effective- gpu reads clone/report the rejected config.


Definition at line 574 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ ota_old_version

gchar * ModelBin::ota_old_version

guards retired[] + the ota_* rollback stash: the nvinfer 'model-updated' confirm callback runs on nvinfer's own thread, concurrent with main-loop reloads

Definition at line 565 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ perf

ModelMuxPerf * ModelBin::perf

◆ perf_on

gboolean ModelBin::perf_on

nvinfer vs nvinferserver

perf metrics (NULL unless [multimodel] attach-perf-metric is on). perf_on is the cached hot-path gate so the provenance probe only does a single bool test when disabled.

Definition at line 473 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ pinned

gboolean ModelBin::pinned

device the model's own CONFIG FILE pins (nvinfer gpu-id / inferserver gpu_ids), parsed ONCE at creation; -1 = no key (backend default 0).

Last fallback of the effective-placement resolution.

Definition at line 553 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ pool

gpointer ModelBin::pool

◆ process_mode

gint ModelBin::process_mode

◆ prov_lock

GMutex ModelBin::prov_lock

next ModelBin* of the SAME model (shard chain; NULL = last).

Same name/engine/gie-id (an instance-group shard carries its own per-GPU derived config).

Definition at line 561 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ retired

GPtrArray * ModelBin::retired

the in-flight reload is a group-rollback COMPENSATING re-trigger of the PREVIOUS engine: its confirm must NOT re-enter the group logic (log-only; see modelmux_ota_group_resolve_main)

Definition at line 597 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ role

gchar * ModelBin::role

Modelbin name.

Definition at line 468 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ served

gboolean ModelBin::served

◆ slot_stream

gint * ModelBin::slot_stream

idx(GINT) -> stream_id(GINT)

Definition at line 511 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ status

gint ModelBin::status

TRUE once a stream has ever attached.

A bin that SERVED then drained to 0 streams must NOT be reused in place (legacy nvstreammux does not resume after a mid-pipeline drain-to-zero) – the reroute refreshes it to a fresh bin instead.

Definition at line 523 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ stream_names

const GHashTable * ModelBin::stream_names

background engine warm-up

borrowed: stream_id(GINT) -> name (overlay)

Definition at line 525 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ type

ModelType ModelBin::type

Primary/Shadow.

Definition at line 469 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ unique_id

guint ModelBin::unique_id

◆ version

gchar * ModelBin::version

cached engine path (provenance); set when the bin warms to READY

Definition at line 530 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ zero_stream_drop_pad

GstPad * ModelBin::zero_stream_drop_pad

nvstreamdemux

Definition at line 506 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.

◆ zero_stream_drop_probe

gulong ModelBin::zero_stream_drop_probe

infer.src ref while drained to zero

Definition at line 507 of file sources/gst-plugins/gst-nvmodelmux/gstnvmodelmux_priv.h.


The documentation for this struct was generated from the following file: