NVIDIA DeepStream SDK API Reference

9.2 Release
sources/gst-plugins/gst-nvinfereval/nvds_eval_engine.h File Reference

Go to the source code of this file.

Typedefs

typedef struct NvdsEvalEngine NvdsEvalEngine
 Opaque handle; defined as a C++ struct in nvds_eval_engine.cpp. More...
 

Functions

NvdsEvalEngine * nvds_eval_engine_new (void)
 
void nvds_eval_engine_free (NvdsEvalEngine *eng)
 
void nvds_eval_engine_set_gt_file (NvdsEvalEngine *eng, const gchar *path)
 
void nvds_eval_engine_set_eval_interval (NvdsEvalEngine *eng, guint interval)
 
void nvds_eval_engine_set_iou_threshold (NvdsEvalEngine *eng, gfloat thresh)
 
void nvds_eval_engine_set_min_ap_margin (NvdsEvalEngine *eng, gfloat margin)
 
void nvds_eval_engine_set_kpi_ap50 (NvdsEvalEngine *eng, gfloat v)
 
void nvds_eval_engine_set_kpi_precision (NvdsEvalEngine *eng, gfloat v)
 
void nvds_eval_engine_set_kpi_recall (NvdsEvalEngine *eng, gfloat v)
 
void nvds_eval_engine_set_promotion_mode (NvdsEvalEngine *eng, guint v)
 
guint nvds_eval_engine_get_promotion_mode (NvdsEvalEngine *eng)
 
void nvds_eval_engine_set_show_gt_overlay (NvdsEvalEngine *eng, gboolean v)
 
gboolean nvds_eval_engine_get_show_gt_overlay (NvdsEvalEngine *eng)
 
void nvds_eval_engine_set_show_ap_table (NvdsEvalEngine *eng, gboolean v)
 
gboolean nvds_eval_engine_get_show_ap_table (NvdsEvalEngine *eng)
 
void nvds_eval_engine_set_cumulative (NvdsEvalEngine *eng, gboolean v)
 
gboolean nvds_eval_engine_get_cumulative (NvdsEvalEngine *eng)
 
void nvds_eval_engine_set_exclude_undetected (NvdsEvalEngine *eng, gboolean v)
 
gboolean nvds_eval_engine_get_exclude_undetected (NvdsEvalEngine *eng)
 
void nvds_eval_engine_set_exclude_classes (NvdsEvalEngine *eng, const gchar *v)
 
void nvds_eval_engine_set_report_file (NvdsEvalEngine *eng, const gchar *path)
 
void nvds_eval_engine_set_config_file (NvdsEvalEngine *eng, const gchar *path)
 
gboolean nvds_eval_engine_prepare (NvdsEvalEngine *eng, GstElement *self, GstElement *mm_element)
 
void nvds_eval_engine_process_frame (NvdsEvalEngine *eng, GstElement *self, guint source_id, guint frame_num, const gchar *role, const gchar *model_name, const gchar *model_version, const gchar *stream_name, GList *obj_meta_list)
 
void nvds_eval_engine_attach_gt_overlay (NvdsEvalEngine *eng, GstElement *self, NvDsBatchMeta *batch_meta, NvDsFrameMeta *frame_meta, const gchar *stream_name, guint frame_num, const gchar *model_name)
 
void nvds_eval_engine_reset (NvdsEvalEngine *eng)
 
void nvds_eval_engine_flush (NvdsEvalEngine *eng, GstElement *self)
 

Typedef Documentation

◆ NvdsEvalEngine

Opaque handle; defined as a C++ struct in nvds_eval_engine.cpp.

nvds_eval_engine.h

C-compatible API for the C++ evaluation engine.

The engine is fully opaque to the C GObject shell. All evaluation state — per-model-pair contexts, GT indices, accumulators, config — lives inside the C++ NvdsEvalEngine struct. This header exposes only the opaque handle typedef and flat C functions suitable for inclusion from C code.

Design overview

The engine supports any number of simultaneous model pairs. Each unique model_name observed in InferenceProvenanceMeta (Mode B) or the synthetic "Primary"/"" name (Mode A) gets its own isolated context:

  • A dedicated EvalAccumulator (no cross-model contamination)
  • A dedicated GTIndex (per-model GT file)
  • A per-model epoch frame counter (incremented only on Primary frames)
  • A source_id -> camera_id map of the streams carrying that pair (built from per-frame sensor info; scopes the targeted model/routing; liveness-stamped per epoch so removed streams age out of the scope)
  • Per-model KPI thresholds / margins (from [model-<name>] config section)

At each per-model epoch boundary the engine:

  1. Computes metrics for every (role, model_name) in the accumulator.
  2. Pairs Primary vs Shadow by model_name — no cross-model comparison.
  3. Triggers targeted update-routing per source_id if shadow wins.
  4. Posts a GstMessage and optionally appends to the report file.
  5. Resets only that model's accumulator (other models continue unaffected).

Definition at line 62 of file sources/gst-plugins/gst-nvinfereval/nvds_eval_engine.h.

Function Documentation

◆ nvds_eval_engine_attach_gt_overlay()

void nvds_eval_engine_attach_gt_overlay ( NvdsEvalEngine *  eng,
GstElement *  self,
NvDsBatchMeta *  batch_meta,
NvDsFrameMeta *  frame_meta,
const gchar *  stream_name,
guint  frame_num,
const gchar *  model_name 
)

◆ nvds_eval_engine_flush()

void nvds_eval_engine_flush ( NvdsEvalEngine *  eng,
GstElement *  self 
)

◆ nvds_eval_engine_free()

void nvds_eval_engine_free ( NvdsEvalEngine *  eng)

◆ nvds_eval_engine_get_cumulative()

gboolean nvds_eval_engine_get_cumulative ( NvdsEvalEngine *  eng)

◆ nvds_eval_engine_get_exclude_undetected()

gboolean nvds_eval_engine_get_exclude_undetected ( NvdsEvalEngine *  eng)

◆ nvds_eval_engine_get_promotion_mode()

guint nvds_eval_engine_get_promotion_mode ( NvdsEvalEngine *  eng)

◆ nvds_eval_engine_get_show_ap_table()

gboolean nvds_eval_engine_get_show_ap_table ( NvdsEvalEngine *  eng)

◆ nvds_eval_engine_get_show_gt_overlay()

gboolean nvds_eval_engine_get_show_gt_overlay ( NvdsEvalEngine *  eng)

◆ nvds_eval_engine_new()

NvdsEvalEngine* nvds_eval_engine_new ( void  )

◆ nvds_eval_engine_prepare()

gboolean nvds_eval_engine_prepare ( NvdsEvalEngine *  eng,
GstElement *  self,
GstElement *  mm_element 
)

◆ nvds_eval_engine_process_frame()

void nvds_eval_engine_process_frame ( NvdsEvalEngine *  eng,
GstElement *  self,
guint  source_id,
guint  frame_num,
const gchar *  role,
const gchar *  model_name,
const gchar *  model_version,
const gchar *  stream_name,
GList *  obj_meta_list 
)

◆ nvds_eval_engine_reset()

void nvds_eval_engine_reset ( NvdsEvalEngine *  eng)

◆ nvds_eval_engine_set_config_file()

void nvds_eval_engine_set_config_file ( NvdsEvalEngine *  eng,
const gchar *  path 
)

◆ nvds_eval_engine_set_cumulative()

void nvds_eval_engine_set_cumulative ( NvdsEvalEngine *  eng,
gboolean  v 
)

◆ nvds_eval_engine_set_eval_interval()

void nvds_eval_engine_set_eval_interval ( NvdsEvalEngine *  eng,
guint  interval 
)

◆ nvds_eval_engine_set_exclude_classes()

void nvds_eval_engine_set_exclude_classes ( NvdsEvalEngine *  eng,
const gchar *  v 
)

◆ nvds_eval_engine_set_exclude_undetected()

void nvds_eval_engine_set_exclude_undetected ( NvdsEvalEngine *  eng,
gboolean  v 
)

◆ nvds_eval_engine_set_gt_file()

void nvds_eval_engine_set_gt_file ( NvdsEvalEngine *  eng,
const gchar *  path 
)

◆ nvds_eval_engine_set_iou_threshold()

void nvds_eval_engine_set_iou_threshold ( NvdsEvalEngine *  eng,
gfloat  thresh 
)

◆ nvds_eval_engine_set_kpi_ap50()

void nvds_eval_engine_set_kpi_ap50 ( NvdsEvalEngine *  eng,
gfloat  v 
)

◆ nvds_eval_engine_set_kpi_precision()

void nvds_eval_engine_set_kpi_precision ( NvdsEvalEngine *  eng,
gfloat  v 
)

◆ nvds_eval_engine_set_kpi_recall()

void nvds_eval_engine_set_kpi_recall ( NvdsEvalEngine *  eng,
gfloat  v 
)

◆ nvds_eval_engine_set_min_ap_margin()

void nvds_eval_engine_set_min_ap_margin ( NvdsEvalEngine *  eng,
gfloat  margin 
)

◆ nvds_eval_engine_set_promotion_mode()

void nvds_eval_engine_set_promotion_mode ( NvdsEvalEngine *  eng,
guint  v 
)

◆ nvds_eval_engine_set_report_file()

void nvds_eval_engine_set_report_file ( NvdsEvalEngine *  eng,
const gchar *  path 
)

◆ nvds_eval_engine_set_show_ap_table()

void nvds_eval_engine_set_show_ap_table ( NvdsEvalEngine *  eng,
gboolean  v 
)

◆ nvds_eval_engine_set_show_gt_overlay()

void nvds_eval_engine_set_show_gt_overlay ( NvdsEvalEngine *  eng,
gboolean  v 
)