• Hardware Platform (Jetson / GPU) dGPU, RTXP2080
• DeepStream Version 6.0.1
• JetPack Version (valid for Jetson only) N/A
• TensorRT Version 8.0.1
• NVIDIA GPU Driver Version (valid for GPU only) 495.29.05
• Issue Type( questions, new requirements, bugs) questions
• How to reproduce the issue ? (This is for bugs. Including which sample app is using, the configuration files content, the command line used and other details for reproducing) describe later
• Requirement details( This is for new requirement. Including the module name-for which plugin or for which sample application, the function description)
Description
For our product, I want to use faeture of NTP timestamp by RTSP Sender Report
I am testing the feature with deepstream-test5 app.
My problem is that ntp_timestamp is gradually shifting in the future direction compared to the real time.
Reproduction procedure
1. prepare rtsp camera using rtsp-simple-server
docker run --rm --name rtspserver -itd --network=host aler9/rtsp-simple-server
ffmpeg -re -stream_loop -1 -i sample_1080p_h264.mp4 -vf fps=20/1 -vcodec libx264 -f rtsp rtsp://localhost:8554/mystream
note that sample_1080p_h264.mp4 is from deepstream container.
2. launch deepstream app
nvidia-docker run -itd --rm --name tmp --net=host nvcr.io/nvidia/deepstream:6.0.1-triton bash
nvidia-docker exec -it tmp bash
3. modify and build test5
cd /opt/nvidia/deepstream/deepstream-6.0/sources/apps/sample_apps
cp -ir deepstream-test5 deepstream-test5.orig
cd deepstream-test5
# change source0 uri to rtsp://127.0.0.1:8554/mystream
# disable source1, tracker, sink0, sink1.
# set attach-sys-ts-as-ntp=0 in [streammux]
vim configs/test5_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt
# modify to print generaeted ntp_timestamp
# at the end of generate_ts_rfc3339_from_ts()
vim deepstream_test5_app_main.c
make
diff …/deepstream-test5.orig/deepstream_test5_app_main.c …/deepstream-test5/deepstream_test5_app_main.c
327a328,331
> // DEBUG
> static int cnt = 0;
> cnt++;
> if (cnt % 100 == 0) { printf("ts=%s\n", buf); }
4. run app and check result
./deepstream-test5-app -c configs/test5_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt
The output log is like below.
“Thu Aug 25 00:33:38 2022 **PERF: 20.36 (19.86)” is a PERF output and the time is system clock, which matches the actual time.
“ts=2022-08-25T00:33:35.304Z” is a ntp_timestamp generated from RTSP report, which gradually shifts into the future comapred to the PERF log.
ts=2022-08-25T00:33:35.304Z
Thu Aug 25 00:33:38 2022
**PERF: 20.36 (19.86)
ts=2022-08-25T00:33:35.784Z
...
ts=2022-08-25T00:34:58.514Z
Thu Aug 25 00:34:18 2022
**PERF: 19.94 (19.99)
ts=2022-08-25T00:34:59.954Z
...
ts=2022-08-25T00:42:12.704Z
Thu Aug 25 00:37:23 2022
**PERF: 19.77 (20.00)
ts=2022-08-25T00:42:13.544Z
I used tcpdump and wireshark and confirmed that
- Sender Report is sent to deepstream-app port
- The Sender Report’s NTP timestamp matches to the actual time, after a lapse of time.
- if I set callback for jitterbuffer’s handle-sync, it receives Sender Report that matches the actual time. (I refered to DeepStream 4.0.2 source code)