Arbitrary large object IDs with libnvds_nvdcf!

**• Hardware Platform--------Jetson nano**
**• DeepStream Version-------5.0**
**• JetPack Version -----------4.4.1**
**• TensorRT Version----------7.1.3-1+cuda10.2**

gst-launch-1.0 uridecodebin3 uri="file:///opt/nvidia/deepstream/deepstream-5.0/samples/streams/sample_720p.mp4" ! videorate drop-only=true max-rate=10 ! mux.sink_0 nvstreammux live-source=0 name=mux batch-size=1 batched-push-timeout=40000 width=1280 height=720 ! queue ! nvinfer config-file-path=/opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-test1/dstest1_pgie_config.txt unique-id=1 ! nvtracker ll-lib-file=/opt/nvidia/deepstream/deepstream/lib/ tracker-width=1280 tracker-height=704 ! nvvideoconvert ! nvdsosd ! nvegltransform ! nveglglessink -v

I am observing very large object IDs with libnvds_nvdcf. With other two default trackers, IDs are normal.

How can this issue be resolved?


Yes, this is a problem of current DCF trackID, only low 32bit are valid for the 64bit parameter. But the value is unique for every tracked object, so it will not impact anything.

Thank you.

Inside osd_sink_pad_buffer_probe,
Can obj_meta->object_id be modified to correct IDs in display?

I tried but display is still showing same problem.

obj_meta = (NvDsObjectMeta *)(l_obj->data);
guint32 *id = (guint32 *)&obj_meta->object_id;
obj_meta->object_id = id[0]; // I have verified id[0] is correct ID

I am trying this in a C++ program, trying to simulate above pipeline.
Reference for me is the ‘deepstream_app.c’

You can try that.

Sorry, I tried this, but it is not working, what is the proper way to modify osd data?

Can you try to set “useUniqueID” in your DCF tracker config file to 0(the default value is 1)?