Application Migration to DeepStream 5.0 from DeepStream 4.X

Due to a change in the data type of bounding box coordinates from int to float, applications accessing bounding box coordinates (NvOSD_RectParams) would need to take care of this change in data type. We recommend recompilation of all the Applications to avoid any ABI incompatibility issues.

Major Application Differences with DeepStream 4.X:

1. For better precision, bounding box coordinates (NvOSD_RectParams) data type is now set to float from int. Writing KITTI data output functionality is changed accordingly. In order to read/write bounding box coordinates the user must use float data type.
2. Calculation of NTP timestamps has been moved from reference apps into the SDK components. Refer to NTP section in Gst-nvstreammux in DeepStream 5.0 Plugin Manual.

Running DeepStream 4.x compiled Apps in DeepStream 5.0

To run the old app from DeepStream-4.x in DeepStream 5.0, first we need to 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 any applications of DeepStream 4.X in DeepStream 5.0, modify the Makefiles to 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 entire sources/apps directory from DeepStream-4.X
2. Option2 : Individual Applications in DeepStream SDK have dependency on sources under apps-common directory. Ideally to compile those applications of SDK, you must use the same version of apps-common. But in case you want to use the latest version of apps-common 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 all 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.