DeepStream 7.1: Using nvmsgconv msg2p-newapi=1 with full NvDsFrameMeta access — how to include NvDsAnalyticsFrameMeta in payload?

Environment

TensorRT Version:10.3.26
GPU Type:NVIDIA RTX A4000
Nvidia Driver Version:
CUDA Version:12.6

Operating System + Version: docker image nvcr.io/nvidia/deepstream:7.1-gc-triton-devel

Description

Looking for a supported way to access complete frame-level metadata (including frame_user_meta_list) and NvDsAnalyticsFrameMeta inside nvmsgconv when msg2p-newapi=1 is enabled. The objective is to serialize per-frame analytics (ROI counts, line crossing, overcrowding) into the payload directly from the new API path, without creating NvDsEventMsgMeta in probes.
Pipeline

rtsp → decode → nvstreammux → pgie → nvtracker → nvdsanalytics → nvmsgconv(msg2p-newapi=1) → nvmsgbroker
Problems

  • frame_meta->frame_num prints 0 in generate_dsmeta_message_custom, so frame-based keys aren’t reliable without synthesizing counters locally, which can drift from upstream numbering across sources.

Iterating frame_meta->frame_user_meta_list and checking for analytics meta type never hits in new API context, so NvDsAnalyticsFrameMeta isn’t visible inside the generator to serialize per-frame analytics directly, forcing a probe-side cache workaround that defeats the point of the new API simplification.