Changing the placement of the nvvideoconvert ends in a frozen image

• Hardware Platform (Jetson / GPU) Jetson Xavier AGX
• DeepStream Version 6.0
• JetPack Version (valid for Jetson only)
• TensorRT Version
• NVIDIA GPU Driver Version (valid for GPU only) 10.2
• Issue Type( questions, new requirements, bugs)
• 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)
• Requirement details( This is for new requirement. Including the module name-for which plugin or for which sample application, the function description)

Hi everyone
I’m working on an gstreamer pipeline which until now worked just fine. You can see a snippet of it below:

gst-launch-1.0 -e \
filesrc location=/opt/nvidia/deepstream/deepstream/samples/streams/sample_push.mov ! \
qtdemux ! h264parse ! nvv4l2decoder !  muxraw.sink_0 \
filesrc location=/opt/nvidia/deepstream/deepstream/samples/streams/sample_push.mov ! \
qtdemux ! h264parse ! nvv4l2decoder !  muxraw.sink_1 \
\
nvstreammux name=muxraw width=1920 height=1080 batch-size=2 batched-push-timeout=20000 buffer-pool-size=4 ! \
queue ! nvinfer config-file-path=/opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_infer_primary.txt batch-size=1 unique-id=1 ! \
nvtracker ll-lib-file=/opt/nvidia/deepstream/deepstream-6.0/lib/libnvds_nvmultiobjecttracker.so \
ll-config-file=/opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_tracker_NvDCF_accuracy.yml \
enable-batch-process=1 enable-past-frame = 1 display-tracking-id=1 ! \
nvstreamdemux name=demux \
\
demux.src_0 ! nvvideoconvert ! "video/x-raw(memory:NVMM), format=(string)RGBA" ! nvdsosd ! \
nvvideoconvert ! 'video/x-raw(memory:NVMM), format=(string)I420' ! \
nvv4l2h265enc preset-level=1 control-rate=1 bitrate=10000000 ! \
h265parse ! rtph265pay mtu=1400 config-interval=1 pt=96 ! queue ! decodebin ! videoconvert ! autovideosink \
\
demux.src_1 ! "video/x-raw(memory:NVMM), format=(string)NV12" ! queue ! fakesink

Normally I’m using a stereo camera as source but for reproduction I used a sample video.

Now I need to add a probe right after the nvtracker in which an RGBA stream is required. Therefore I thought that I just place the nvvideoconvert and the capsfilter after the nvtracker so that I can place the probe there.
Unfortunately when I do so, the stream gets stuck.

The new Pipeline can be seen below:

gst-launch-1.0 -e \
filesrc location=/opt/nvidia/deepstream/deepstream/samples/streams/sample_push.mov ! \
qtdemux ! h264parse ! nvv4l2decoder !  muxraw.sink_0 \
filesrc location=/opt/nvidia/deepstream/deepstream/samples/streams/sample_push.mov ! \
qtdemux ! h264parse ! nvv4l2decoder !  muxraw.sink_1 \
\
nvstreammux name=muxraw width=1920 height=1080 batch-size=2 batched-push-timeout=20000 buffer-pool-size=4 ! \
queue ! nvinfer config-file-path=/opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_infer_primary.txt batch-size=1 unique-id=1 ! \
nvtracker ll-lib-file=/opt/nvidia/deepstream/deepstream-6.0/lib/libnvds_nvmultiobjecttracker.so \
ll-config-file=/opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_tracker_NvDCF_accuracy.yml \
enable-batch-process=1 enable-past-frame = 1 display-tracking-id=1 ! \
nvvideoconvert ! "video/x-raw(memory:NVMM), format=(string)RGBA" ! \
nvstreamdemux name=demux \
\
demux.src_0 ! nvdsosd ! \
nvvideoconvert ! 'video/x-raw(memory:NVMM), format=(string)I420' ! \
nvv4l2h265enc preset-level=1 control-rate=1 bitrate=10000000 ! \
h265parse ! rtph265pay mtu=1400 config-interval=1 pt=96 ! queue ! decodebin ! videoconvert ! autovideosink \
\
demux.src_1 ! "video/x-raw(memory:NVMM), format=(string)NV12" ! queue ! fakesink

Does anybody have any idea why this won’t run as I expect it to run?

The new pipeline works on my board.

Currently I’m using GStreamer 1.14.5. Could there be a problem with the version I’m using?

No. DS 6.0 GA is based on GStreamer 1.14.5

I only managed the pipeline to work properly if I didn’t use the demuxers src pad 1 like this:

gst-launch-1.0 -e \
filesrc location=/opt/nvidia/deepstream/deepstream/samples/streams/sample_push.mov ! \
qtdemux ! h264parse ! nvv4l2decoder !  muxraw.sink_0 \
filesrc location=/opt/nvidia/deepstream/deepstream/samples/streams/sample_push.mov ! \
qtdemux ! h264parse ! nvv4l2decoder !  muxraw.sink_1 \
\
nvstreammux name=muxraw width=1920 height=1080 batch-size=2 batched-push-timeout=20000 buffer-pool-size=4 ! \
queue ! nvinfer config-file-path=/opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_infer_primary.txt batch-size=1 unique-id=1 ! \
nvtracker ll-lib-file=/opt/nvidia/deepstream/deepstream-6.0/lib/libnvds_nvmultiobjecttracker.so \
ll-config-file=/opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_tracker_NvDCF_accuracy.yml \
enable-batch-process=1 enable-past-frame = 1 display-tracking-id=1 ! \
nvvideoconvert ! "video/x-raw(memory:NVMM), format=(string)RGBA" ! \
nvstreamdemux name=demux \
\
demux.src_0 ! nvvideoconvert ! "video/x-raw(memory:NVMM), format=(string)RGBA" ! nvdsosd ! \
nvvideoconvert ! 'video/x-raw(memory:NVMM), format=(string)I420' ! \
nvv4l2h265enc preset-level=1 control-rate=1 bitrate=10000000 ! \
h265parse ! rtph265pay mtu=1400 config-interval=1 pt=96 ! queue ! decodebin ! videoconvert ! autovideosink

Now there is a new problem, I don’t see the object description boxes anymore. Do you experience the same behavior with this pipeline?

kind regards,
Mike

Please add nvvideoconvert before capsfilter.

You have pack the h265 data into rtp payload. You can not display the rtp payload directly. Please remove rtph265pay plugin.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.