Error in application migration from Deepstream 5.1 to Deepstream 6.1.1

I am trying to migrate from Jetpack 4.5.1 Deepstream 5.1 to Jetpack 5.0.2 Deepstream 6.1.1. Below are the environment details.

• Hardware Platform (Jetson / GPU) : Jetson Xavier NX Dev kit
• Hardware Camera : Basler USB3 camera. I used “acA1300-200uc”
• DeepStream Version : 6.1.1
• JetPack Version (valid for Jetson only) : 5.0.2
• TensorRT Version : 8.4
• Issue Type( questions, new requirements, bugs) : Bug
• How to reproduce the issue ?
gst-launch-1.0 pylonsrc imageformat=rgb8 camera=0 ! videoconvert ! nvvideoconvert nvbuf-memory-type=0 ! ‘video/x-raw(memory:NVMM)’ ! m.sink_0 nvstreammux name=m batch-size=1 width=1280 height=720 live-source=1 ! nvvideoconvert ! videoconvert ! xvimagesink

After installing Jetpack 5.0.2 and Deepstream 6.1.1 using SDK Manager, I tried building and then running our application on the new environment. Unfortunately, the application throws error. Below is the detailed explanation of steps to reproduce the issue:
camera-basler.zip (32.0 MB)

  1. Install Pylon plugin for Basler Camera.
    a. Unzip attached camera_basler.zip
    b. Install pylon using this command :
    “sudo apt install pylon_5.0.12.11829-deb0_arm64.deb”
    c. Install pylonsrc plugin for gstreamer using these commands:
    “sudo cp libgstpylonsrc.la /usr/lib/aarch64-linux-gnu/gstreamer-1.0/”
    “sudo cp libgstpylonsrc.so /usr/lib/aarch64-linux-gnu/gstreamer-1.0/”
  2. Connect a Basler USB3 camera to one of the usb ports of Xavier NX Dev kit.
  3. Run the below command:
    gst-launch-1.0 pylonsrc imageformat=rgb8 camera=0 ! videoconvert ! nvvideoconvert nvbuf-memory-type=0 ! ‘video/x-raw(memory:NVMM)’ ! m.sink_0 nvstreammux name=m batch-size=1 width=1280 height=720 live-source=1 ! nvvideoconvert ! videoconvert ! xvimagesink

I get this error after following these steps:
Setting pipeline to PAUSED …
0:00:00.636032557 39277 0xaaaadf5dd350 pylonsrc gstpylonsrc.c:984:gst_pylonsrc_start: Camera id was set, but was ignored as only one camera was found.
0:00:00.814777661 39277 0xaaaadf5dd350 pylonsrc gstpylonsrc.c:2269:pylonc_print_camera_info: Status: Using camera “acA1300-200uc” (serial number: 22718385, id: 0). Custom ID: None
0:00:00.822829785 39277 0xaaaadf5dd350 pylonsrc gstpylonsrc.c:1129:gst_pylonsrc_start: Setting resolution to 1280x1024.
0:00:00.829285188 39277 0xaaaadf5dd350 pylonsrc gstpylonsrc.c:1253:gst_pylonsrc_start: Using RGB8 image format.
0:00:01.022458042 39277 0xaaaadf5dd350 pylonsrc gstpylonsrc.c:2076:gst_pylonsrc_start: Initialised successfully.
Pipeline is live and does not need PREROLL …
Setting pipeline to PLAYING …
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstPylonsrc:pylonsrc0: Internal data stream error.
Additional debug info:
gstbasesrc.c(3072): gst_base_src_loop (): /GstPipeline:pipeline0/GstPylonsrc:pylonsrc0:
streaming stopped, reason error (-5)
Execution ended after 0:00:00.077071930
Setting pipeline to PAUSED …
Setting pipeline to READY …
Setting pipeline to NULL …
Freeing pipeline …

Please note this is not a pylonsrc error. Below are the reasons why:

  1. The below command works fine :
    gst-launch-1.0 pylonsrc camera=0 imageformat=rgb8 ! videoconvert ! xvimagesink

  2. I see the below logs in my application when the above error happens:

Module_id 56 Severity 2 : failed to validate surface, color format not supported
Module_id 56 Severity 2 : failed to parse compose parameters, src surface invalid
Module_id 56 Severity 2 : failed to submit NvVIC compose operation 2

  1. The same command runs on Deepstream 5.1

These logs from pylonsrc, right?

How about run this pipeline?

gst-launch-1.0 pylonsrc imageformat=rgb8 camera=0 ! videoconvert ! nvvideoconvert nvbuf-memory-type=0 ! ‘video/x-raw(memory:NVMM)’ ! fakesink

The below pipeline works without any issues.

gst-launch-1.0 pylonsrc imageformat=rgb8 camera=0 ! videoconvert ! nvvideoconvert nvbuf-memory-type=0 ! ‘video/x-raw(memory:NVMM)’ ! fakesink

We run our pipeline as a system service. Below is a sample error log

As you can see in the logs, nvvideoconvert throws error after the Module_id error. I guess it uses VIC . There is some error in NvVIC component, I guess.

We need nvstreammux as we use multiple cameras and also need nvinfer after nvstreammux. Below pipeline is a simple and reproducible version of the issue. It runs fine in DS 5.1. But, throws error in DS 6.1.1.

gst-launch-1.0 pylonsrc imageformat=rgb8 camera=0 ! videoconvert ! nvvideoconvert nvbuf-memory-type=0 ! ‘video/x-raw(memory:NVMM)’ ! m.sink_0 nvstreammux name=m batch-size=1 width=1280 height=720 live-source=1 ! nvvideoconvert ! videoconvert ! xvimagesink

I need to update the pipeline command:
gst-launch-1.0 pylonsrc imageformat=rgb8 camera=0 ! videoconvert ! nvvideoconvert ! ‘video/x-raw(memory:NVMM),format=(string)NV12’ ! m.sink_0 nvstreammux name=m width=1024 height = 1200 batch-size=1 ! nvvideoconvert ! videoconvert ! xvimagesink

Error is:
Setting pipeline to PAUSED …
0:00:00.602296176 10244 0xaaaadede8aa0 pylonsrc gstpylonsrc.c:984:gst_pylonsrc_start: Camera id was set, but was ignored as only one camera was found.
0:00:01.057149495 10244 0xaaaadede8aa0 pylonsrc gstpylonsrc.c:2269:pylonc_print_camera_info: Status: Using camera “acA1300-200uc” (serial number: 23629123, id: 0). Custom ID: None
0:00:01.065242225 10244 0xaaaadede8aa0 pylonsrc gstpylonsrc.c:1129:gst_pylonsrc_start: Setting resolution to 1280x1024.
0:00:01.071668824 10244 0xaaaadede8aa0 pylonsrc gstpylonsrc.c:1253:gst_pylonsrc_start: Using RGB8 image format.
0:00:01.215897854 10244 0xaaaadede8aa0 pylonsrc gstpylonsrc.c:2076:gst_pylonsrc_start: Initialised successfully.
Pipeline is live and does not need PREROLL …
Setting pipeline to PLAYING …
New clock: GstSystemClock
0:00:01.270218426 10244 0xaaaadede9c60 ERROR nvvideoconvert gstnvvideoconvert.c:3750:gst_nvvideoconvert_transform: buffer transform failed
ERROR: from element /GstPipeline:pipeline0/GstPylonsrc:pylonsrc0: Internal data stream error.
Additional debug info:
gstbasesrc.c(3072): gst_base_src_loop (): /GstPipeline:pipeline0/GstPylonsrc:pylonsrc0:
streaming stopped, reason error (-5)
Execution ended after 0:00:00.051039320
Setting pipeline to PAUSED …
Setting pipeline to READY …
Setting pipeline to NULL …

You can see the nvvideoconvert error here. This runs without issues on deepstream 5.1.

I was able to make the above code work by adding another converter. Below is the updated pipeline:
gst-launch-1.0 pylonsrc imageformat=rgb8 ! videoconvert ! ‘video/x-raw,format=(string)YUY2’ ! nvvideoconvert ! ‘video/x-raw(memory:NVMM),format=(string)NV12’ ! m.sink_0 nvstreammux name=m width=1024 height = 1200 batch-size=1 ! nvvideoconvert ! videoconvert ! xvimagesink

This change was not required in DS 5.1. Can you please explain what should I use to optimize this pipeline? As I understand, videoconvert can convert a rgb8 video stream to compatible stream for nvvideoconvert.

Please use “-v” option to get the negotiation information for analysis. Please post the whole log you got with the following command.

gst-launch-1.0 -v pylonsrc imageformat=rgb8 camera=0 ! videoconvert ! nvvideoconvert nvbuf-memory-type=0 ! ‘video/x-raw(memory:NVMM)’ ! m.sink_0 nvstreammux name=m batch-size=1 width=1280 height=720 live-source=1 ! nvvideoconvert ! videoconvert ! xvimagesink

Hi @Fiona.Chen,
I tested below two commands on Deepstream 6.1.1 and Deepstream 5.1. Difference between them is highlighted in bold:
We use command 2.

  1. gst-launch-1.0 -v pylonsrc imageformat=rgb8 camera=0 ! videoconvert ! nvvideoconvert nvbuf-memory-type=0 ! ‘video/x-raw(memory:NVMM)’ ! m.sink_0 nvstreammux name=m batch-size=1 width=1280 height=720 live-source=1 ! nvvideoconvert ! videoconvert ! xvimagesink

  2. gst-launch-1.0 -v pylonsrc imageformat=rgb8 camera=0 ! videoconvert ! nvvideoconvert nvbuf-memory-type=0 ! ‘video/x-raw(memory:NVMM),format=(string)NV12’ ! m.sink_0 nvstreammux name=m batch-size=1 width=1280 height=720 live-source=1 ! nvvideoconvert ! videoconvert ! xvimagesink

Below is the output after testing command 1 on Deepstream 5.1:
$ gst-launch-1.0 -v pylonsrc imageformat=rgb8 camera=0 ! videoconvert ! nvvideoconvert nvbuf-memory-type=0 ! ‘video/x-raw(memory:NVMM)’ ! m.sink_0 nvstreammux name=m batch-size=1 width=1280 height=720 live-source=1 ! nvvideoconvert ! videoconvert ! xvimagesink
Setting pipeline to PAUSED …
0:00:00.736287279 2385 0x55b43e4430 pylonsrc gstpylonsrc.c:2269:pylonc_print_camera_info: Status: Using camera “acA1300-200uc” (serial number: 22718385, id: 0). Custom ID: None
0:00:00.743068763 2385 0x55b43e4430 pylonsrc gstpylonsrc.c:1129:gst_pylonsrc_start: Setting resolution to 1280x1024.
0:00:00.751089280 2385 0x55b43e4430 pylonsrc gstpylonsrc.c:1253:gst_pylonsrc_start: Using RGB8 image format.
0:00:00.796298660 2385 0x55b43e4430 pylonsrc gstpylonsrc.c:2076:gst_pylonsrc_start: Initialised successfully.
Pipeline is live and does not need PREROLL …
Setting pipeline to PLAYING …
New clock: GstSystemClock
/GstPipeline:pipeline0/GstPylonsrc:pylonsrc0.GstPad:src: caps = video/x-raw, format=(string)RGB, width=(int)1280, height=(int)1024, framerate=(fraction)0/1
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = video/x-raw, width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)BGRx
/GstPipeline:pipeline0/Gstnvvideoconvert:nvvideoconvert0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)BGRx
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)BGRx
/GstPipeline:pipeline0/GstNvStreamMux:m.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)1280, height=(int)720, framerate=(fraction)0/1, format=(string)BGRx, batch-size=(int)1, num-surfaces-per-frame=(int)1
/GstPipeline:pipeline0/Gstnvvideoconvert:nvvideoconvert1.GstPad:src: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)0/1, batch-size=(int)1, num-surfaces-per-frame=(int)1, format=(string)BGRx
/GstPipeline:pipeline0/GstVideoConvert:videoconvert1.GstPad:src: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)0/1, batch-size=(int)1, num-surfaces-per-frame=(int)1, format=(string)YUY2
/GstPipeline:pipeline0/GstXvImageSink:xvimagesink0.GstPad:sink: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)0/1, batch-size=(int)1, num-surfaces-per-frame=(int)1, format=(string)YUY2
/GstPipeline:pipeline0/GstVideoConvert:videoconvert1.GstPad:sink: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)0/1, batch-size=(int)1, num-surfaces-per-frame=(int)1, format=(string)BGRx
/GstPipeline:pipeline0/Gstnvvideoconvert:nvvideoconvert1.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)1280, height=(int)720, framerate=(fraction)0/1, format=(string)BGRx, batch-size=(int)1, num-surfaces-per-frame=(int)1
/GstPipeline:pipeline0/GstNvStreamMux:m.GstNvStreamPad:sink_0: caps = video/x-raw(memory:NVMM), width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)BGRx
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)BGRx
/GstPipeline:pipeline0/Gstnvvideoconvert:nvvideoconvert0.GstPad:sink: caps = video/x-raw, width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)BGRx
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = video/x-raw, format=(string)RGB, width=(int)1280, height=(int)1024, framerate=(fraction)0/1
ERROR: from element /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0: Output window was closed
Additional debug info:
xvimagesink.c(555): gst_xv_image_sink_handle_xevents (): /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0
Execution ended after 0:00:05.977571638
Setting pipeline to PAUSED …
Setting pipeline to READY …
Setting pipeline to NULL …
Freeing pipeline …

Below is the output after testing command 2 on Deepstream 5.1:
$ gst-launch-1.0 -v pylonsrc imageformat=rgb8 camera=0 ! videoconvert ! nvvideoconvert nvbuf-memory-type=0 ! ‘video/x-raw(memory:NVMM),format=(string)NV12’ ! m.sink_0 nvstreammux name=m batch-size=1 width=1280 height=720 live-source=1 ! nvvideoconvert ! videoconvert ! xvimagesink
2022-10-27 10:57:41.219324: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.2
Setting pipeline to PAUSED …
0:00:07.122328859 30472 0x557eff9640 pylonsrc gstpylonsrc.c:2269:pylonc_print_camera_info: Status: Using camera “acA1300-200uc” (serial number: 22718385, id: 0). Custom ID: None
0:00:07.128717563 30472 0x557eff9640 pylonsrc gstpylonsrc.c:1129:gst_pylonsrc_start: Setting resolution to 1280x1024.
0:00:07.134291086 30472 0x557eff9640 pylonsrc gstpylonsrc.c:1253:gst_pylonsrc_start: Using RGB8 image format.
0:00:07.181063017 30472 0x557eff9640 pylonsrc gstpylonsrc.c:2076:gst_pylonsrc_start: Initialised successfully.
Pipeline is live and does not need PREROLL …
Setting pipeline to PLAYING …
/GstPipeline:pipeline0/GstPylonsrc:pylonsrc0.GstPad:src: caps = video/x-raw, format=(string)RGB, width=(int)1280, height=(int)1024, framerate=(fraction)0/1
New clock: GstSystemClock
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = video/x-raw, width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)BGRx
/GstPipeline:pipeline0/Gstnvvideoconvert:nvvideoconvert0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)NV12
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)NV12
/GstPipeline:pipeline0/GstNvStreamMux:m.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)1280, height=(int)720, framerate=(fraction)0/1, format=(string)NV12, batch-size=(int)1, num-surfaces-per-frame=(int)1
/GstPipeline:pipeline0/Gstnvvideoconvert:nvvideoconvert1.GstPad:src: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)0/1, batch-size=(int)1, num-surfaces-per-frame=(int)1, format=(string)NV12
/GstPipeline:pipeline0/GstVideoConvert:videoconvert1.GstPad:src: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)0/1, batch-size=(int)1, num-surfaces-per-frame=(int)1, format=(string)YV12
/GstPipeline:pipeline0/GstXvImageSink:xvimagesink0.GstPad:sink: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)0/1, batch-size=(int)1, num-surfaces-per-frame=(int)1, format=(string)YV12
/GstPipeline:pipeline0/GstVideoConvert:videoconvert1.GstPad:sink: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)0/1, batch-size=(int)1, num-surfaces-per-frame=(int)1, format=(string)NV12
/GstPipeline:pipeline0/Gstnvvideoconvert:nvvideoconvert1.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)1280, height=(int)720, framerate=(fraction)0/1, format=(string)NV12, batch-size=(int)1, num-surfaces-per-frame=(int)1
/GstPipeline:pipeline0/GstNvStreamMux:m.GstNvStreamPad:sink_0: caps = video/x-raw(memory:NVMM), width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)NV12
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)NV12
/GstPipeline:pipeline0/Gstnvvideoconvert:nvvideoconvert0.GstPad:sink: caps = video/x-raw, width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)BGRx
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = video/x-raw, format=(string)RGB, width=(int)1280, height=(int)1024, framerate=(fraction)0/1
ERROR: from element /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0: Output window was closed
Additional debug info:
xvimagesink.c(555): gst_xv_image_sink_handle_xevents (): /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0
Execution ended after 0:00:16.249841291
Setting pipeline to PAUSED …
Setting pipeline to READY …
Setting pipeline to NULL …
Freeing pipeline …

Below is the output after testing command 1 on Deepstream 6.1.1:
$ gst-launch-1.0 -v pylonsrc imageformat=rgb8 camera=0 ! videoconvert ! nvvideoconvert nvbuf-memory-type=0 ! ‘video/x-raw(memory:NVMM)’ ! m.sink_0 nvstreammux name=m batch-size=1 width=1280 height=720 live-source=1 ! nvvideoconvert ! videoconvert ! xvimagesink
Setting pipeline to PAUSED …
0:00:00.640387298 1113275 0xaaaaefdb7550 pylonsrc gstpylonsrc.c:984:gst_pylonsrc_start: Camera id was set, but was ignored as only one camera was found.
0:00:00.859361260 1113275 0xaaaaefdb7550 pylonsrc gstpylonsrc.c:2269:pylonc_print_camera_info: Status: Using camera “acA1300-200uc” (serial number: 22718385, id: 0). Custom ID: None
0:00:00.867429209 1113275 0xaaaaefdb7550 pylonsrc gstpylonsrc.c:1129:gst_pylonsrc_start: Setting resolution to 1280x1024.
0:00:00.873976658 1113275 0xaaaaefdb7550 pylonsrc gstpylonsrc.c:1253:gst_pylonsrc_start: Using RGB8 image format.
0:00:00.932686762 1113275 0xaaaaefdb7550 pylonsrc gstpylonsrc.c:2076:gst_pylonsrc_start: Initialised successfully.
Pipeline is live and does not need PREROLL …
Setting pipeline to PLAYING …
New clock: GstSystemClock
/GstPipeline:pipeline0/GstPylonsrc:pylonsrc0.GstPad:src: caps = video/x-raw, width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)RGB
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = video/x-raw, width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)RGB
/GstPipeline:pipeline0/Gstnvvideoconvert:nvvideoconvert0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)RGB, block-linear=(boolean)false
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)RGB, block-linear=(boolean)false
/GstPipeline:pipeline0/GstNvStreamMux:m.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)1280, height=(int)720, framerate=(fraction)0/1, format=(string)RGB, block-linear=(boolean)false, batch-size=(int)1, num-surfaces-per-frame=(int)1
/GstPipeline:pipeline0/Gstnvvideoconvert:nvvideoconvert1.GstPad:src: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)0/1, batch-size=(int)1, num-surfaces-per-frame=(int)1, format=(string)RGB, block-linear=(boolean)false
/GstPipeline:pipeline0/GstVideoConvert:videoconvert1.GstPad:src: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)0/1, batch-size=(int)1, num-surfaces-per-frame=(int)1, block-linear=(boolean)false, format=(string)YUY2
/GstPipeline:pipeline0/GstXvImageSink:xvimagesink0.GstPad:sink: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)0/1, batch-size=(int)1, num-surfaces-per-frame=(int)1, block-linear=(boolean)false, format=(string)YUY2
/GstPipeline:pipeline0/GstVideoConvert:videoconvert1.GstPad:sink: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)0/1, batch-size=(int)1, num-surfaces-per-frame=(int)1, format=(string)RGB, block-linear=(boolean)false
/GstPipeline:pipeline0/Gstnvvideoconvert:nvvideoconvert1.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)1280, height=(int)720, framerate=(fraction)0/1, format=(string)RGB, block-linear=(boolean)false, batch-size=(int)1, num-surfaces-per-frame=(int)1
/GstPipeline:pipeline0/GstNvStreamMux:m.GstNvStreamPad:sink_0: caps = video/x-raw(memory:NVMM), width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)RGB, block-linear=(boolean)false
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)RGB, block-linear=(boolean)false
/GstPipeline:pipeline0/Gstnvvideoconvert:nvvideoconvert0.GstPad:sink: caps = video/x-raw, width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)RGB
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = video/x-raw, width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)RGB
ERROR: from element /GstPipeline:pipeline0/GstPylonsrc:pylonsrc0: Internal data stream error.
Additional debug info:
gstbasesrc.c(3072): gst_base_src_loop (): /GstPipeline:pipeline0/GstPylonsrc:pylonsrc0:
streaming stopped, reason error (-5)
Execution ended after 0:00:00.075014453
Setting pipeline to PAUSED …
Setting pipeline to READY …
Setting pipeline to NULL …
Freeing pipeline …

Below is the output after testing command 2 on Deepstream 6.1.1:
$ gst-launch-1.0 -v pylonsrc imageformat=rgb8 camera=0 ! videoconvert ! nvvideoconvert nvbuf-memory-type=0 ! ‘video/x-raw(memory:NVMM),format=(string)NV12’ ! m.sink_0 nvstreammux name=m batch-size=1 width=1280 height=720 live-source=1 ! nvvideoconvert ! videoconvert ! xvimagesink
Setting pipeline to PAUSED …
0:00:00.628218486 1113297 0xaaaacfa530a0 pylonsrc gstpylonsrc.c:984:gst_pylonsrc_start: Camera id was set, but was ignored as only one camera was found.
0:00:00.831860006 1113297 0xaaaacfa530a0 pylonsrc gstpylonsrc.c:2269:pylonc_print_camera_info: Status: Using camera “acA1300-200uc” (serial number: 22718385, id: 0). Custom ID: None
0:00:00.839680815 1113297 0xaaaacfa530a0 pylonsrc gstpylonsrc.c:1129:gst_pylonsrc_start: Setting resolution to 1280x1024.
0:00:00.846145413 1113297 0xaaaacfa530a0 pylonsrc gstpylonsrc.c:1253:gst_pylonsrc_start: Using RGB8 image format.
0:00:01.014256471 1113297 0xaaaacfa530a0 pylonsrc gstpylonsrc.c:2076:gst_pylonsrc_start: Initialised successfully.
Pipeline is live and does not need PREROLL …
Setting pipeline to PLAYING …
New clock: GstSystemClock
/GstPipeline:pipeline0/GstPylonsrc:pylonsrc0.GstPad:src: caps = video/x-raw, width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)RGB
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = video/x-raw, width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)RGB
/GstPipeline:pipeline0/Gstnvvideoconvert:nvvideoconvert0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)NV12, block-linear=(boolean)false
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)NV12, block-linear=(boolean)false
/GstPipeline:pipeline0/GstNvStreamMux:m.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)1280, height=(int)720, framerate=(fraction)0/1, format=(string)NV12, block-linear=(boolean)false, batch-size=(int)1, num-surfaces-per-frame=(int)1
/GstPipeline:pipeline0/Gstnvvideoconvert:nvvideoconvert1.GstPad:src: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)0/1, batch-size=(int)1, num-surfaces-per-frame=(int)1, format=(string)NV12, block-linear=(boolean)false
/GstPipeline:pipeline0/GstVideoConvert:videoconvert1.GstPad:src: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)0/1, batch-size=(int)1, num-surfaces-per-frame=(int)1, block-linear=(boolean)false, format=(string)YV12
/GstPipeline:pipeline0/GstXvImageSink:xvimagesink0.GstPad:sink: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)0/1, batch-size=(int)1, num-surfaces-per-frame=(int)1, block-linear=(boolean)false, format=(string)YV12
/GstPipeline:pipeline0/GstVideoConvert:videoconvert1.GstPad:sink: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)0/1, batch-size=(int)1, num-surfaces-per-frame=(int)1, format=(string)NV12, block-linear=(boolean)false
/GstPipeline:pipeline0/Gstnvvideoconvert:nvvideoconvert1.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)1280, height=(int)720, framerate=(fraction)0/1, format=(string)NV12, block-linear=(boolean)false, batch-size=(int)1, num-surfaces-per-frame=(int)1
/GstPipeline:pipeline0/GstNvStreamMux:m.GstNvStreamPad:sink_0: caps = video/x-raw(memory:NVMM), width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)NV12, block-linear=(boolean)false
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)NV12, block-linear=(boolean)false
/GstPipeline:pipeline0/Gstnvvideoconvert:nvvideoconvert0.GstPad:sink: caps = video/x-raw, width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)RGB
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = video/x-raw, width=(int)1280, height=(int)1024, framerate=(fraction)0/1, format=(string)RGB
0:00:01.083583867 1113297 0xaaaacfa54860 ERROR nvvideoconvert gstnvvideoconvert.c:3750:gst_nvvideoconvert_transform: buffer transform failed
ERROR: from element /GstPipeline:pipeline0/GstPylonsrc:pylonsrc0: Internal data stream error.
Additional debug info:
gstbasesrc.c(3072): gst_base_src_loop (): /GstPipeline:pipeline0/GstPylonsrc:pylonsrc0:
streaming stopped, reason error (-5)
Execution ended after 0:00:00.067359337
Setting pipeline to PAUSED …
Setting pipeline to READY …
Setting pipeline to NULL …
Freeing pipeline …

As you can see from the outputs, both the commands work on Deepstream 5.1 and do not work on Deepstream 6.1.1

From the log attached, we can only find the difference of the format in nvvideoconvert plugin, one is GRB, the other is BGRX.
Cause we don’t have this camera, could you help to narrow dowm the issue?
1.There are 2 nvvideoconverts in your pipeline, could you help to location which report the ERROR by debugging.
2.You can add --gst-debug=xxx(one of your plugin):5 to open more log in any plugin of your pipeline, like --gst-debug=nvvideoconvert:5

nvds_error_logs.txt (40.4 KB)
I have attached the logs. I used below command
gst-launch-1.0 -v pylonsrc imageformat=rgb8 camera=0 ! videoconvert ! nvvideoconvert nvbuf-memory-type=0 name=converter1 ! ‘video/x-raw(memory:NVMM),format=(string)NV12’ ! m.sink_0 nvstreammux name=m batch-size=1 width=1280 height=720 live-source=1 ! nvvideoconvert name=converter2 ! videoconvert ! xvimagesink --gst-debug=nvvideoconvert:5

The error is in converter1 : NvDsBatchMeta not found for output buffer

Hi @rbhushan , please set the compute-hw=1 para to nvvideoconvert with DS6.1.1 when you change the RGB format to YUV format.

! nvvideoconvert compute-hw=1 !

Hi @yuweiw, appreciate your help in providing the solution. This solves the problem.

May I know the reason behind this issue and what changed in between DS5.1 and DS6.1.1 which caused this ?

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