basler / gst-plugin-pylon

The official GStreamer plug-in for Basler cameras
BSD 3-Clause "New" or "Revised" License
42 stars 10 forks source link

GStreamer command fails to capture(green area) #65

Open savchart opened 1 year ago

savchart commented 1 year ago

Describe the bug

The following GStreamer command encounters an issue where it fails to capture half of the frame and displays a green color instead: gst-launch-1.0 pylonsrc ! "video/x-raw(memory:NVMM), width=1920, height=1080" ! nvvidconv ! nvegltransform ! nveglglessink sync=0 Additionally, setting nvsurface-layout=0 results in a different fragmentation of the green area.

The problem can be temporarily resolved by using the following command: gst-launch-1.0 pylonsrc ! "video/x-raw, width=1920, height=1080" ! nvvidconv ! "video/x-raw(memory:NVMM)" ! nvegltransform ! nveglglessink sync=0 However, this workaround requires additional resources.

To Reproduce

To reproduce the issue, use the following GStreamer command: gst-launch-1.0 "video/x-raw(memory:NVMM)" ! nvvidconv ! nvegltransform ! nveglglessink sync=0

Expected behavior

The expected behavior is that the output frame should consist of the whole frame without any green areas.

Environment

Camera: daA1920-30uc Plugin Version Info: Description: Basler/Pylon plugin for pylon SDK 7.3.0(19429) Version: 0.7.0 Platform: Jetson Orin AGX OS: Distributor ID: Ubuntu Description: Ubuntu 20.04.6 LTS Release: 20.04 Codename: focal Please let me know if any additional information or steps are required to reproduce or diagnose this issue.

thiesmoeller commented 1 year ago

Hi @savchart,

as one overall optimization please add

... pylonsrc stream::MaxTransferSize=4194304 ! ...

to your pipeline. This will switch to larger DMA transfers. Just to reduce the system load for receiving the data.

Do you use YUV pixel format in the camera? Green is typically a good sign, of some memory that is '0' or never written to-> which results in green in yuv.

We have to use some special handling in the case of NVMM memory, because NVIDIA has alignment restrictions.

Can you test with width=1024,height=1024

To check if our alignment adjustment code has some error.

savchart commented 1 year ago

Hi @thiesmoeller,

thanks for answer.

The next pipeline doesn't solve the problem, half of the output frame is still green: gst-launch-1.0 pylonsrc stream::MaxTransferSize=4194304 ! "video/x-raw(memory:NVMM), width=1024, height=1024, format=YUY2" ! nvvidconv ! nv3dsink

Pipeline also does not work with other formats (RGB, GRAY8, UYVY).