Application Migration to DeepStream 5.0 from DeepStream 4.X ============================================================= .. note:: 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. 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 has been moved from reference apps into the SDK components. See :doc:`\DS_NTP_Timestamp` 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, 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 DeepStream 4.X applications 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. **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`. But 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 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.