Application Migration to DeepStream 5.0 from DeepStream 4.X

Note

  1. The data type of bounding box coordinates is changed from int to float in DeepStream 5.0. Applications accessing bounding box coordinates (NvOSD_RectParams) need to take care of this change. We recommend recompilation of all the applications to avoid any ABI incompatibility issues.

  2. The definition of NvDsInferParseDetectionParams structure has changed. Applications using initializer-lists to initialize the structure should instead initialize individual members in the structure.

  3. To run the old apps from DeepStream 4.x with DeepStream 5.1, change directory name from deepstream-5.0 to deepstream-5.1

Major Application Differences with DeepStream 4.X

  1. The data type of bounding box coordinates (NvOSD_RectParams) is now set to float from int, for better precision. Writing KITTI data output functionality is changed accordingly. To read/write bounding box coordinates, use the float data type.

  2. Calculation of NTP timestamps happens within the SDK components instead of reference apps. See NTP Timestamp in DeepStream for more information on NTP timestamps.

Running DeepStream 4.x compiled Apps in DeepStream 5.0

To run the old app from DeepStream 4.x in DeepStream 5.0, create symlinks of the libraries so the old application can find them.:

mkdir /opt/nvidia/deepstream/deepstream-4.0
mkdir /opt/nvidia/deepstream/deepstream-4.0/lib
ln -s /opt/nvidia/deepstream/deepstream-5.0/lib/* /opt/nvidia/deepstream/deepstream-4.0/lib/

Compiling DeepStream 4.X Apps in DeepStream 5.0

Before compiling DeepStream 4.X applications in DeepStream 5.0, modify the Makefiles and set the NVDS_VERSION flag to 5.0. There are two options to compile DeepStream 4.X in DeepStream 5.0:

  1. Option 1: Replace existing sources/apps from DeepStream-5.0 and copy the entire sources/apps directory from DeepStream-4.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.

For example:

  1. parse_sink ()

  2. enable_perf_measurement()

  3. parse_streammux()

  4. Makefile changes as required

  5. Remove references to rtcp_sender_report_callback since the NTP calculation functionality has been moved inside SDK. It is also advisable to remove any NTP calculations from the apps and use NTP timestamps provided by the SDK unless the app has any custom NTP calculation logic.