[DS 7.1.0] Runtime Exception: NvMOTPerTransformBatchConfig missing 'colorFormat' field required by Library

• Hardware Platform: Jetson Orin Nano
• DeepStream Version: 7.1.0
• JetPack Version: L4T 36.4.7 (JetPack 6.1/6.2 rev)
• TensorRT Version: 10.3.0.30
• Issue Type: Bugs (SDK Header and Library Mismatch)

• How to reproduce the issue?
I am implementing a custom tracking component using the NvMOT low-level API. I encountered a critical contradiction between the tracker library’s runtime validation and the provided SDK header file.

  1. Context: My application processes RGBA video buffers.
  2. Runtime Error: During the call to NvMOT_Process(), the application logs a runtime exception from libnvds_nvmultiobjecttracker.so:

1 !![Exception] [NvMOTContext::processFrame()] motFrame->bufferList[i]->colorFormat != m_Config.perTransformBatchConfig[i].colorFormat
2 An exception occurred. [NvMOTContext::processFrame()] motFrame->bufferList[i]->colorFormat != m_Config.perTransformBatchConfig[i].colorFormat
This indicates that the tracker library expects a colorFormat field within the perTransformBatchConfig structure to match the input buffer’s format.
3. Compilation Failure: To resolve the mismatch, I tried to explicitly set the colorFormat member in my initialization code, but the compilation fails:

1 error: ‘NvMOTPerTransformBatchConfig’ {aka ‘struct _NvMOTPerTransformBatchConfig’} has no member named ‘colorFormat’
4. Header Verification: I checked the SDK header at /opt/nvidia/deepstream/deepstream/sources/includes/nvdstracker.h, and the struct is indeed missing the colorFormat member:

1 typedef struct _NvMOTPerTransformBatchConfig
2 {
3 uint32_t maxWidth;
4 uint32_t maxHeight;
5 uint32_t maxPitch;
6 uint32_t maxSize;
7 NvBufSurfaceMemType bufferType;
8 // colorFormat is missing here!
9 } NvMOTPerTransformBatchConfig;

• Requirement details:
There is a clear mismatch in the DeepStream 7.1.0 SDK where the binary library (libnvds_nvmultiobjecttracker.so) performs a runtime check on a colorFormat field that does not exist in the public nvdstracker.h header.

This prevents developers from correctly using the low-level NvMOT API with specific color formats (like RGBA), as there is no way to inform the tracker of the expected format via the configuration structure.

Questions:

  1. Why is the tracker binary performing a validation check on a struct member that is not exposed in the public SDK headers?
  2. How should we correctly set the expected input colorFormat for a low-level NvMOT tracker in DeepStream 7.1.0?
  3. Can NVIDIA provide an updated nvdstracker.h or a patch to align the header with the library’s requirements?

DeepStream 7.1 is old version. I am not sure if the nvtracker plugin source code open sourced on DeepStream 7.1. If nvtracker plugin source code on DeepStream 7.1. Can you refer here for nvtracker plugin: GitHub - NVIDIA/DeepStream: DeepStream OSS · GitHub? So you can know how nvtracker set the color format.