Application Migration to DeepStream 6.0.1 from DeepStream 5.X

Major Application Differences with DeepStream 5.X

  • The NvBufAudio structure has been updated. Applications using this structure need to be recompiled.

  • When measuring frame latency using DeepStream latency APIs if you observe large frame latency numbers in the order of 10^12 or 1e12, modify the latency measurement code (call to nvds_measure_buffer_latency API) to

    ...
     guint num_sources_in_batch = nvds_measure_buffer_latency(buf, latency_info);
    
     if (num_sources_in_batch > 0 && latency_info[0].latency > 1e6) {
      NvDsBatchMeta *batch_meta = gst_buffer_get_nvds_batch_meta (buf);
      batch_meta->batch_user_meta_list = g_list_reverse (batch_meta->batch_user_meta_list);
      num_sources_in_batch = nvds_measure_buffer_latency(buf, latency_info);
     }
    ...
    

Running DeepStream 5.X compiled Apps in DeepStream 6.0.1

To run the old app from DeepStream 5.X in DeepStream 6.0.1, create symlinks of the libraries so the old application can find them.:

mkdir /opt/nvidia/deepstream/deepstream-5.1
mkdir /opt/nvidia/deepstream/deepstream-5.1/lib
ln -s /opt/nvidia/deepstream/deepstream-6.0/lib/* /opt/nvidia/deepstream/deepstream-5.1/lib/

Compiling DeepStream 5.1 Apps in DeepStream 6.0.1

Before compiling DeepStream 5.1 applications in DeepStream 6.0.1, modify the Makefiles and set the NVDS_VERSION flag to 6.0. There are two options to compile DeepStream 5.1 in DeepStream 6.0.1:

  1. Option 1: Replace existing sources/apps from DeepStream-6.0.1 and copy the entire sources/apps directory from DeepStream-5.X.

  2. Option 2 : Individual applications in DeepStream SDK have dependency on sources under apps-common directory. Ideally, to compile those applications, you must use the same version of apps-common. In case you want to use the latest version, you may need to adjust some application function calls because of a change in application function definitions.

Note

By default, OpenCV is deprecated in DeepStream 6.0. However, you can enable OpenCV in plugins such as nvinfer (nvdsinfer) and dsexample (gst-dsexample) by setting WITH_OPENCV=1 in the Makefile of these components. Please refer component README for more instructions.

Low-level Object Tracker Library Migration from DeepStream 5.1 Apps to DeepStream 6.0.1

DeepStream 5.1 included three low-level tracker libraries:

  • libnvds_mot_iou.so

  • libnvds_mot_klt.so

  • libnvds_nvdcf.so


All of these three low-level tracker libraries are deprecated in DeepStream 6.0.1, and a unified low-level tracker library is introduced, which is libnvds_nvmultiobjecttracker.so.

You’ll need to replace the tracker configuration depending on your tracker choice of IOU, NvDCF (w/ perf-oriented setting), NvDCF (w/ accuracy-oriented setting), or DeepSORT. Replace the following:

#ll-lib-file=/opt/nvidia/deepstream/deepstream/lib/libnvds_mot_iou.so
ll-lib-file=/opt/nvidia/deepstream/deepstream/lib/libnvds_mot_klt.so
#ll-lib-file=/opt/nvidia/deepstream/deepstream/lib/libnvds_nvdcf.so
#ll-config-file=tracker_config.yml

with:

ll-lib-file=/opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so
#ll-config-file=config_tracker_IOU.yml
ll-config-file=config_tracker_NvDCF_perf.yml
#ll-config-file=config_tracker_NvDCF_accuracy.yml
#ll-config-file=config_tracker_DeepSORT.yml