ISP does not retrieve the correct frame format from the device tree

Hello all,

I have an IMX296C sensor driver for Jetson Nano in Jetpack 4.6.1. It is able to dequeue buffers correctly with v4l2-ctl, but when I try to launch a GStreamer pipeline it does not capture and throws this error that does not provide too much information:

gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! nvvidconv ! fakesink silent=false
GST_ARGUS: Running with following settings:
   Camera index = 0 
   Camera mode  = 0 
   Output Stream W = 1440 H = 1080 
   seconds to Run    = 0 
   Frame Rate = 1000.000000 
GST_ARGUS: Setup Complete, Starting captures for 0 seconds
GST_ARGUS: Starting repeat capture requests.
CONSUMER: Producer has connected; continuing.
nvbuf_utils: dmabuf_fd -1 mapped entry NOT found
nvbuf_utils: Can not get HW buffer from FD... Exiting...
CONSUMER: Done Success
Got EOS from element "pipeline0".
Execution ended after 0:00:04.001977549

So, to collect more information, I enabled the SCF and PCL Argus daemon logs with:

sudo su
service nvargus-daemon stop
export enableCamPclLogs=1
export enableCamScfLogs=1

I ran the same pipeline and got this error message:

SCF: Error NotSupported: Output buffer format not supported: 1920x1080 BL V16U16_2020_PQ_ER 420SP
	NOTE: This format is not supported by the ISP hardware. Supported ISP output formats include:
          + BufferCompatibility
              + Color Formats
                  | U8_V8
                  | V8_U8
                  | Y8
                  | U8_V8_ER
                  | V8_U8_ER
                  | Y8_ER
              + Surface Layouts
                  | Blocklinear
                  | Pitch
              + YUV Formats
                  | 420
              | Exposure Count: 1
	 (in src/components/GraphHelper.cpp, function findBlitSource(), line 1449)

It says that the frame format is not supported by the ISP, however, the reported format does not match the one specified in the device tree:

active_w                 = "1440";
active_h                 = "1080";
line_length              = "1440";
pixel_t                  = "bayer_rggb";
mode_type                = "bayer";
pixel_phase              = "rggb";
csi_pixel_bit_depth      = "10";

Also, raw frames have been captured with v4l2-ctl and have been inspected using software like Vooya and it was confirmed that the frames are RAW10 format, 1440x1080. Something else is telling the ISP that the frames have a different format.


Where else could the ISP be getting this format (1920x1080 BL V16U16_2020_PQ_ER 420SP) that was not specified in the device tree?

Have a try this command.

gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! 'video/x-raw(memory:NVMM),width=1920,height=1080,format=NV12' ! nvvidconv ! fakesink silent=false

Hello ShaneCCC,

Forcing the caps as you suggested works, even when setting width=1440 to match the device tree.

gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! 'video/x-raw(memory:NVMM),width=1440,height=1080,format=NV12' ! nvvidconv ! fakesink silent=false -v

Thank you

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