Missing Argus support for low frame resolution cameras

We are using Jetson TX2 SoM with L4T r32.4.3 kernel and developed a camera driver for CSI-2 camera which sends raw data (grayscale values, not bayer).
Some camera parameters:

MIPI CSI-2, 2 lanes, Virtual Channel 0
224x173 frame resolution, 20 FPS
12-bit Raw grayscale output (as MIPI CSI-2 RAW12 generic data)
Connected via DS90UB954-Q1 FPD-Link III deserializer to CSI-A/CSI-B ports,
using 4 data lanes and one clock lane

Capturing camera data already works reliably when using V4L2 interface, i.e.:

# v4l2-ctl -d 1 -V
Format Video Capture:
        Width/Height      : 224/173
        Pixel Format      : 'BG12' (12-bit Bayer BGBG/GRGR)
        Field             : None
        Bytes per Line    : 512
        Size Image        : 88576
        Colorspace        : sRGB
        Transfer Function : Default (maps to sRGB)
        YCbCr/HSV Encoding: Default (maps to ITU-R 601)
        Quantization      : Default (maps to Full Range)
        Flags             :

# v4l2-ctl -d 1 -c bypass_mode=0 --stream-mmap --stream-count=50
<<<<<<<<<<<<<<<<<<<<< 19.93 fps
<<<<<<<<<<<<<<<<<<<< 19.93 fps
<<<<<<<<<

This camera is already detected in Argus, i.e. “argus_oneshot” example lists it as first
camera device:

# argus_oneshot -l
Executing Argus Sample: argus_oneshot
2 Available CameraDevices:

  ==== CameraDevice 0: =========================================
    UUID:                      adca2c00,0f01,11e5,0000,00,00,00,00,00,00
    MaxAeRegions:              64
    MaxAwbRegions:             64
    FocusPositionRange:        [0, 0]
    LensApertureRange:         [2.970000, 2.970000]
    IspDigitalGainRange:       [1.000000, 256.000000]
    ExposureCompensationRange: [-2.000000, 2.000000]
    NumSensorModes:            1
    SensorMode 0:
        Resolution:         224x173
        ExposureTimeRange:  [34000, 550385000]
        FrameDurationRange: [33333334, 550486208]
                            (1.82 to 30.00 fps)
        AnalogGainRange:    [1.000000, 16.000000]
        InputBitDepth:      12
        OutputBitDepth:     12
        SensorModeType:     SENSOR_MODE_TYPE_BAYER
        IS WDR Mode: No

  ==== CameraDevice 1: =========================================
    UUID:                      adca2c00,0f01,11e5,0001,00,00,00,00,00,00
    MaxAeRegions:              64
    MaxAwbRegions:             64
    FocusPositionRange:        [0, 0]
    LensApertureRange:         [2.970000, 2.970000]
    IspDigitalGainRange:       [1.000000, 256.000000]
    ExposureCompensationRange: [-2.000000, 2.000000]
    NumSensorModes:            2
    SensorMode 0:
        Resolution:         1280x800
        ExposureTimeRange:  [9000, 10000000]
        FrameDurationRange: [50000000, 1000001024]
                            (1.00 to 20.00 fps)
        AnalogGainRange:    [1.000000, 15.937500]
        InputBitDepth:      10
        OutputBitDepth:     10
        SensorModeType:     SENSOR_MODE_TYPE_BAYER
        IS WDR Mode: No
    SensorMode 1:
        Resolution:         1280x800
        ExposureTimeRange:  [68000, 20000000]
        FrameDurationRange: [20000000, 1000001024]
                            (1.00 to 50.00 fps)
        AnalogGainRange:    [1.000000, 255.000000]
        InputBitDepth:      10
        OutputBitDepth:     10
        SensorModeType:     SENSOR_MODE_TYPE_BAYER
        IS WDR Mode: No

When we try to capture the camera data via argus_oneshot or GStreamer, this does not work:

# argus_oneshot -d 0
Executing Argus Sample: argus_oneshot
Argus Version: 0.97.3 (multi-process)
Capturing from device 0 using sensor mode 0 (224x173)
Failed to create EGLOutputStream


# gst-launch-1.0 -v nvarguscamerasrc num-buffers=1 sensor-id=0 ! "video/x-raw(memory:NVMM),width=224,height=173,format=NV12,framerate=20/1" ! fakesink silent=0
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = event   ******* (fakesink0:sink) E (type: stream-start (10254), GstEventStreamStart, stream-id=(string)862914daf18d9a0312c9a38942ed748f, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)1;) 0x55ad700ce0
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstNvArgusCameraSrc:nvarguscamerasrc0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)224, height=(int)173, format=(string)NV12, framerate=(fraction)20/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)224, height=(int)173, format=(string)NV12, framerate=(fraction)20/1
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = event   ******* (fakesink0:sink) E (type: caps (12814), GstEventCaps, caps=(GstCaps)"video/x-raw\(memory:NVMM\)\,\ width\=\(int\)224\,\ height\=\(int\)173\,\ format\=\(string\)NV12\,\ framerate\=\(fraction\)20/1";) 0x55ad700dc0
/GstPipeline:pipeline0/GstFakeSink:fakesink0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)224, height=(int)173, format=(string)NV12, framerate=(fraction)20/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)224, height=(int)173, format=(string)NV12, framerate=(fraction)20/1
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = event   ******* (fakesink0:sink) E (type: eos (28174), ) 0x55ad700e30
Got EOS from element "pipeline0".
Execution ended after 0:00:00.242772545
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Caught SIGSEGV
exec gdb failed: No such file or directory
Spinning.  Please run 'gdb gst-launch-1.0 8911' to continue debugging, Ctrl-C to quit, or Ctrl-\ to dump core.
^C

The reason seems to be that the camera frame resolutions lower than 640x400 are not supported in Argus. In nvargus-daemon logs we see following errors:

Worker thread CaptureDispatcher start
(Argus) Error BadParameter: Odd stream width or height not supported, requested 224x173 (in src/api/CaptureSessionImpl.cpp, function createEGLOutputStream(), line 699)
(Argus) Error BadParameter: (propagating from src/api/CaptureSessionImpl.cpp, function createOutputStreamInternal(), line 643)
NvPHSSendThroughputHints: sensorId=0, m_usecase=4, m_type=2, m_value=4294967295, m_timeout_ms=1000

Below is a full log from nvargus-daemon:

# nvargus-daemon
=== NVIDIA Libargus Camera Service (0.97.3)=== Listening for connections...=== argus_oneshot[7962]: Connection established (7F7DA001C0)Thread 1 getting next capture
Thread 1 is waiting
Thread 2 getting next capture
Thread 2 is waiting
Thread 3 getting next capture
Thread 3 is waiting
Thread 4 getting next capture
Thread 4 is waiting
Thread 5 getting next capture
Thread 5 is waiting
Thread 6 getting next capture
Thread 6 is waiting
Thread 7 getting next capture
Thread 7 is waiting
Thread 8 getting next capture
Thread 8 is waiting
Thread 9 getting next capture
Thread 9 is waiting
Thread 10 getting next capture
Thread 10 is waiting
Thread 11 getting next capture
Thread 11 is waiting
Thread 12 getting next capture
Thread 12 is waiting
Starting services...
Worker thread IspHw statsComplete start
Worker thread IspHw frameComplete start
Worker thread CaptureScheduler checkFramePending start
Worker thread CaptureScheduler frameStart start
Worker thread V4L2CaptureScheduler checkCaptureComplete start
Worker thread V4L2CaptureScheduler issueCaptures start
Worker thread PS handleRequests start
getInstance: s_instance(0x7f78838660)
getInstance: s_instance(0x7f78838660)
subscribe: SensorType(gyroscope)
subscribe: create SensorType(gyroscope) sensor(0x7f7883ac60)
subscribe: SensorType(accelerometer)
subscribe: create SensorType(accelerometer) sensor(0x7f788401c0)
AC plugin not present: dlopen "acplugin.so", acplugin.so: cannot open shared object file: No such file or directory
Services are started
NvPclSetHotplugCallback: ++++++++++++++++++++++
---- Imager: Calibration blob file handling supported in this build ----
NvPclHwGetModuleList: OFParserListModules Succeeded
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwPrintModuleDefinition -- Name: irs2381c_rear_m03957
NvPclHwPrintModuleDefinition -- Position: 0
NvPclHwPrintModuleDefinition -- CalibrationData Found: 1
NvPclHwPrintCameraSubModule -- HwCamSubModule[0].Name: v4l2_sensor
NvPclHwPrintCameraSubModule -- HwCamSubModule[0].DevName: irs10x0c 9-003d
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwPrintModuleDefinition -- Name: ov9782d3_front_m03957
NvPclHwPrintModuleDefinition -- Position: 1
NvPclHwPrintModuleDefinition -- CalibrationData Found: 1
NvPclHwPrintCameraSubModule -- HwCamSubModule[0].Name: v4l2_sensor
NvPclHwPrintCameraSubModule -- HwCamSubModule[0].DevName: ov9782d3 10-0060
NvPclHwGetModuleList: OFParserListModules Succeeded
NvPclModuleListInitialize: NvPclModule list[0]: irs2381c_rear_m03957 position0
NvPclModuleListInitialize: NvPclModule list[1]: ov9782d3_front_m03957 position1
NvPclHwScanExternalCameras -- adding video1 to discover list
NvPclHwScanExternalCameras -- adding video0 to discover list
NvPclHwScanExternalCameras -- adding video1 to discover list
NvPclHwScanExternalCameras -- adding video0 to discover list
NvPclHwScanExternalCameras -- adding video1 to discover list
NvPclHwScanExternalCameras -- adding video0 to discover list
getHotplugMonitor: Getting hotplug monitor instance
 initializeHotplug++
 hotPlugfunc ++
 addWatch: Watch added wd='1'
CheckProcDTExists: INFO: accessing /proc/device-tree/tegra-virtual-camera-platform/modules/module0/drivernode1; No such file or directory
OFParserGetVirtualDevice: virtual device driver node not found in proc device-tree: /proc/device-tree/tegra-virtual-camera-platform/modules/module0/drivernode1
CheckProcDTExists: INFO: accessing /proc/device-tree/tegra-virtual-camera-platform/modules/module1/drivernode0; No such file or directory
OFParserGetVirtualDevice: virtual device driver node not found in proc device-tree: /proc/device-tree/tegra-virtual-camera-platform/modules/module1/drivernode0
setHotplugCallback: Registered new callback client
NvPclSetHotplugCallback: ----------------------
 hotPlugfunc: reading from inotify FD, Thread waiting
NvPclOpen: ++++++++++++++++++++++
NvPclStateControllerOpen: Found GUID 0 match at index[0]
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f787554e0
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f787afe50
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f78768140
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f78436a20
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f7875a020
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f78759f90
LoadOverridesFile: looking for override file [/Calib/camera_override.isp] 1/16
CheckOverridesPermissions: stat(/Calib/camera_override.isp) call failed
LoadOverridesFile: looking for override file [/data/vendor/nvcam/settings/camera_overrides.isp] 2/16
CheckOverridesPermissions: stat(/data/vendor/nvcam/settings/camera_overrides.isp) call failed
LoadOverridesFile: looking for override file [/opt/nvidia/nvcam/settings/camera_overrides.isp] 3/16
CheckOverridesPermissions: stat(/opt/nvidia/nvcam/settings/camera_overrides.isp) call failed
LoadOverridesFile: looking for override file [/var/nvidia/nvcam/settings/camera_overrides.isp] 4/16
CheckOverridesPermissions: stat(/var/nvidia/nvcam/settings/camera_overrides.isp) call failed
LoadOverridesFile: looking for override file [/data/vendor/nvcam/camera_overrides.isp] 5/16
CheckOverridesPermissions: stat(/data/vendor/nvcam/camera_overrides.isp) call failed
LoadOverridesFile: looking for override file [/data/vendor/nvcam/settings/irs2381c_rear_m03957.isp] 6/16
CheckOverridesPermissions: stat(/data/vendor/nvcam/settings/irs2381c_rear_m03957.isp) call failed
LoadOverridesFile: looking for override file [/opt/nvidia/nvcam/settings/irs2381c_rear_m03957.isp] 7/16
CheckOverridesPermissions: stat(/opt/nvidia/nvcam/settings/irs2381c_rear_m03957.isp) call failed
LoadOverridesFile: looking for override file [/var/nvidia/nvcam/settings/irs2381c_rear_m03957.isp] 8/16
CheckOverridesPermissions: stat(/var/nvidia/nvcam/settings/irs2381c_rear_m03957.isp) call failed
---- imager: No override file found. ----
Imager: looking for override file [/mnt/factory/camera/factory.bin] 1/16
Imager: looking for override file [/Calib/factory.bin] 2/16
Imager: looking for override file [/Calib/calibration.bin] 3/16
Imager: looking for override file [(null)] 4/16
Imager: looking for override file [(null)] 5/16
Imager: looking for override file [(null)] 6/16
Imager: looking for override file [(null)] 7/16
Imager: looking for override file [(null)] 8/16
Imager: looking for override file [(null)] 9/16
Imager: looking for override file [(null)] 10/16
Imager: looking for override file [(null)] 11/16
Imager: looking for override file [(null)] 12/16
Imager: looking for override file [(null)] 13/16
Imager: looking for override file [(null)] 14/16
Imager: looking for override file [(null)] 15/16
Imager: looking for override file [(null)] 16/16
Imager: looking for override file [/data/vendor/nvcam/settings/factory.bin] 1/16
Imager: looking for override file [/data/vendor/nvcam/settings/irs2381c_rear_m03957.bin] 2/16
Imager: looking for override file [/opt/nvidia/nvcam/settings/irs2381c_rear_m03957.bin] 3/16
Imager: looking for override file [/var/nvidia/nvcam/settings/irs2381c_rear_m03957.bin] 4/16
Imager: looking for override file [(null)] 5/16
Imager: looking for override file [(null)] 6/16
Imager: looking for override file [(null)] 7/16
Imager: looking for override file [(null)] 8/16
Imager: looking for override file [(null)] 9/16
Imager: looking for override file [(null)] 10/16
Imager: looking for override file [(null)] 11/16
Imager: looking for override file [(null)] 12/16
Imager: looking for override file [(null)] 13/16
Imager: looking for override file [(null)] 14/16
Imager: looking for override file [(null)] 15/16
Imager: looking for override file [(null)] 16/16
NvPclCreateDriver: Found NvPcl Driver Hal dev_name match (v4l2_sensor)
NvPclCreateDriver: Found a Driver name match (v4l2_sensor)
NvPclConnectDrivers: hImager was NULL, creating new imager
NvPclInitializeDrivers: v4l2_sensor ++++++++++++++++++
OFDPropertyGetString: could not read property [devnode-bus]
OFDPropertyGetString: could not read property [use_decibel_gain]
OFDPropertyGetString: could not read property [use_sensor_mode_id]
OFDPropertyGetString: could not read property [delayed_gain]
OFDPropertyCopyToLong: could not read property [has-eeprom]
OFDPropertyGetString: could not read property [type]
loadSubType: Sensor type missing in DT, 206
OFDPropertyCopyToLong: could not read property [mode0.dynamic_pixel_bit_depth]
OFDPropertyCopyToLongLong: could not read property [mode0.serdes_pix_clk_hz]
OFDPropertyCopyToLongLong: could not read property [mode0.exp_time_1h]
OFDPropertyCopyToFloat: could not read property [mode0.gain_step_pitch]
OFDPropertyCopyToLong: could not read property [mode0.embedded_metadata_width]
OFDPropertyGetString: could not read property [mode0.x_start]
OFDPropertyGetString: could not read property [mode0.y_start]
OFDPropertyGetString: could not read property [mode0.x_end]
OFDPropertyGetString: could not read property [mode0.y_end]
OFDPropertyGetString: could not read property [mode0.h_scaling]
OFDPropertyGetString: could not read property [mode0.v_scaling]
OFDPropertyGetString: could not read property [sensor_model]
initialize: Loaded Driver: 1 Modes Available--------------
NvPclInitializeDrivers: v4l2_sensor ------------------
NvPclOpen: ----------------------
LSC: LSC surface is not based on full res!
NvPclOpen: ++++++++++++++++++++++
NvPclStateControllerOpen: Found GUID 1 match at index[1]
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f78c3b8c0
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f788837b0
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f78896300
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f78883ad0
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f78895fb0
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f78885d90
LoadOverridesFile: looking for override file [/Calib/camera_override.isp] 1/16
CheckOverridesPermissions: stat(/Calib/camera_override.isp) call failed
LoadOverridesFile: looking for override file [/data/vendor/nvcam/settings/camera_overrides.isp] 2/16
CheckOverridesPermissions: stat(/data/vendor/nvcam/settings/camera_overrides.isp) call failed
LoadOverridesFile: looking for override file [/opt/nvidia/nvcam/settings/camera_overrides.isp] 3/16
CheckOverridesPermissions: stat(/opt/nvidia/nvcam/settings/camera_overrides.isp) call failed
LoadOverridesFile: looking for override file [/var/nvidia/nvcam/settings/camera_overrides.isp] 4/16
CheckOverridesPermissions: stat(/var/nvidia/nvcam/settings/camera_overrides.isp) call failed
LoadOverridesFile: looking for override file [/data/vendor/nvcam/camera_overrides.isp] 5/16
CheckOverridesPermissions: stat(/data/vendor/nvcam/camera_overrides.isp) call failed
LoadOverridesFile: looking for override file [/data/vendor/nvcam/settings/ov9782d3_front_m03957.isp] 6/16
CheckOverridesPermissions: stat(/data/vendor/nvcam/settings/ov9782d3_front_m03957.isp) call failed
LoadOverridesFile: looking for override file [/opt/nvidia/nvcam/settings/ov9782d3_front_m03957.isp] 7/16
CheckOverridesPermissions: stat(/opt/nvidia/nvcam/settings/ov9782d3_front_m03957.isp) call failed
LoadOverridesFile: looking for override file [/var/nvidia/nvcam/settings/ov9782d3_front_m03957.isp] 8/16
CheckOverridesPermissions: stat(/var/nvidia/nvcam/settings/ov9782d3_front_m03957.isp) call failed
---- imager: No override file found. ----
Imager: looking for override file [/mnt/factory/camera/factory.bin] 1/16
Imager: looking for override file [/Calib/factory.bin] 2/16
Imager: looking for override file [/Calib/calibration.bin] 3/16
Imager: looking for override file [(null)] 4/16
Imager: looking for override file [(null)] 5/16
Imager: looking for override file [(null)] 6/16
Imager: looking for override file [(null)] 7/16
Imager: looking for override file [(null)] 8/16
Imager: looking for override file [(null)] 9/16
Imager: looking for override file [(null)] 10/16
Imager: looking for override file [(null)] 11/16
Imager: looking for override file [(null)] 12/16
Imager: looking for override file [(null)] 13/16
Imager: looking for override file [(null)] 14/16
Imager: looking for override file [(null)] 15/16
Imager: looking for override file [(null)] 16/16
Imager: looking for override file [/data/vendor/nvcam/settings/factory.bin] 1/16
Imager: looking for override file [/data/vendor/nvcam/settings/ov9782d3_front_m03957.bin] 2/16
Imager: looking for override file [/opt/nvidia/nvcam/settings/ov9782d3_front_m03957.bin] 3/16
Imager: looking for override file [/var/nvidia/nvcam/settings/ov9782d3_front_m03957.bin] 4/16
Imager: looking for override file [(null)] 5/16
Imager: looking for override file [(null)] 6/16
Imager: looking for override file [(null)] 7/16
Imager: looking for override file [(null)] 8/16
Imager: looking for override file [(null)] 9/16
Imager: looking for override file [(null)] 10/16
Imager: looking for override file [(null)] 11/16
Imager: looking for override file [(null)] 12/16
Imager: looking for override file [(null)] 13/16
Imager: looking for override file [(null)] 14/16
Imager: looking for override file [(null)] 15/16
Imager: looking for override file [(null)] 16/16
NvPclCreateDriver: Found NvPcl Driver Hal dev_name match (v4l2_sensor)
NvPclCreateDriver: Found a Driver name match (v4l2_sensor)
NvPclConnectDrivers: hImager was NULL, creating new imager
NvPclInitializeDrivers: v4l2_sensor ++++++++++++++++++
OFDPropertyGetString: could not read property [devnode-bus]
OFDPropertyGetString: could not read property [delayed_gain]
OFDPropertyCopyToLong: could not read property [has-eeprom]
OFDPropertyGetString: could not read property [type]
loadSubType: Sensor type missing in DT, 206
OFDPropertyCopyToLong: could not read property [mode0.gain_factor]
OFDPropertyCopyToLongLong: could not read property [mode0.exp_time_1h]
OFDPropertyCopyToFloat: could not read property [mode0.gain_step_pitch]
OFDPropertyCopyToLong: could not read property [mode0.embedded_metadata_width]
OFDPropertyGetString: could not read property [mode0.x_start]
OFDPropertyGetString: could not read property [mode0.y_start]
OFDPropertyGetString: could not read property [mode0.x_end]
OFDPropertyGetString: could not read property [mode0.y_end]
OFDPropertyGetString: could not read property [mode0.h_scaling]
OFDPropertyGetString: could not read property [mode0.v_scaling]
OFDPropertyCopyToLong: could not read property [mode1.gain_factor]
OFDPropertyCopyToLongLong: could not read property [mode1.exp_time_1h]
OFDPropertyCopyToFloat: could not read property [mode1.gain_step_pitch]
OFDPropertyCopyToLong: could not read property [mode1.embedded_metadata_width]
OFDPropertyGetString: could not read property [mode1.x_start]
OFDPropertyGetString: could not read property [mode1.y_start]
OFDPropertyGetString: could not read property [mode1.x_end]
OFDPropertyGetString: could not read property [mode1.y_end]
OFDPropertyGetString: could not read property [mode1.h_scaling]
OFDPropertyGetString: could not read property [mode1.v_scaling]
initialize: Loaded Driver: 2 Modes Available--------------
NvPclInitializeDrivers: v4l2_sensor ------------------
NvPclOpen: ----------------------
LSC: LSC surface is not based on full res!
=== argus_oneshot[7962]: CameraProvider initialized (0x7f78c3b950)sourceRegistry[0] assigned

ispRegistry[0] assigned

Using Source GUID 0
Worker thread ViCsiHw frameComplete start
Worker thread ViCsiHw frameStart start
NvPclPowerOn: +++++++++++
NvPclPowerOn: -----------
Using ISP A
NvPHSSendThroughputHints: sensorId=0, m_usecase=4, m_type=2, m_value=4294967295, m_timeout_ms=1000

LSC: LSC surface is not based on full res!
AC plugin not present: dlopen "acplugin.so", acplugin.so: cannot open shared object file: No such file or directory
No library found, disabling AC plugin.
Worker thread CaptureDispatcher start
(Argus) Error BadParameter: Odd stream width or height not supported, requested 224x173 (in src/api/CaptureSessionImpl.cpp, function createEGLOutputStream(), line 699)
(Argus) Error BadParameter:  (propagating from src/api/CaptureSessionImpl.cpp, function createOutputStreamInternal(), line 643)
NvPHSSendThroughputHints: sensorId=0, m_usecase=4, m_type=2, m_value=4294967295, m_timeout_ms=1000

Worker thread CaptureDispatcher stop
ViCsi capture path not initialized

Worker thread ViCsiHw frameComplete stop
Worker thread ViCsiHw frameStart stop
NvPclPowerOff: +++++++++++
NvPclPowerOff: -----------
=== argus_oneshot[7962]: CameraProvider destroyed (0x7f78c3b950)Stopping services...
Worker thread CaptureScheduler frameStart stop
Worker thread CaptureScheduler checkFramePending stop
Worker thread IspHw statsComplete stop
Worker thread IspHw frameComplete stop
Worker thread V4L2CaptureScheduler issueCaptures stop
Worker thread V4L2CaptureScheduler checkCaptureComplete stop
NvPclClose: ++++++++++++++++++++++
NvPclCloseModuleDrivers: deallocate/free overrides pathname @ 0x7f78436a20
NvPclCloseModuleDrivers: deallocate/free overrides pathname @ 0x7f7875a020
NvPclCloseModuleDrivers: deallocate/free overrides pathname @ 0x7f78759f90
NvPclCloseModuleDrivers: deallocate/free overrides pathname @ 0x7f787554e0
NvPclCloseModuleDrivers: deallocate/free overrides pathname @ 0x7f787afe50
NvPclCloseModuleDrivers: deallocate/free overrides pathname @ 0x7f78768140
NvPclStateControllerClose: Module irs2381c_rear_m03957 closed
NvPclClose: ----------------------
NvPclClose: ++++++++++++++++++++++
NvPclCloseModuleDrivers: deallocate/free overrides pathname @ 0x7f78883ad0
NvPclCloseModuleDrivers: deallocate/free overrides pathname @ 0x7f78895fb0
NvPclCloseModuleDrivers: deallocate/free overrides pathname @ 0x7f78885d90
NvPclCloseModuleDrivers: deallocate/free overrides pathname @ 0x7f78c3b8c0
NvPclCloseModuleDrivers: deallocate/free overrides pathname @ 0x7f788837b0
NvPclCloseModuleDrivers: deallocate/free overrides pathname @ 0x7f78896300
NvPclStateControllerClose: Module ov9782d3_front_m03957 closed
NvPclClose: ----------------------
NvPclShutdown: ++++++++++++++++++++++
NvPclModuleListShutdown: Client still conntected, skipping shutdown
NvPclShutdown: ----------------------
Worker thread PS handleRequests stop
unsubscribe: SensorType(gyroscope)
unsubscribe: gyroscope sensor(0x7f7883ac60)
unsubscribe: SensorType(accelerometer)
unsubscribe: accelerometer sensor(0x7f788401c0)
Services are stopped
closeInstance: ms_instance((nil))
NvPclRemoveHotplugCallback: ++++++++++++++++++++++
getHotplugMonitor: Getting hotplug monitor instance
 shutdownHotplug: Requesting thread exit
 hotPlugfunc: Read 16 bytes from inotify FD
 hotPlugfunc: A File was Modified 00008000 NAME :  CREATE : 00000100, DELETE : 00000200 IGNORED : 00008000 CLOSE_WRITE : 00000008
 hotPlugfunc: Exit thread
 hotPlugfunc: close failure error: 'Bad file descriptor' (9)
 hotPlugfunc --
 shutdownHotplug -- : shutdown of hotplug is complete
Removed callback client
NvPclRemoveHotplugCallback: ----------------------
FiberScheduler: shutting down; 0 fibers still in map

FiberScheduler: thread 5 exiting
FiberScheduler: thread 6 exiting
FiberScheduler: thread 4 exiting
FiberScheduler: thread 7 exiting
FiberScheduler: thread 3 exiting
FiberScheduler: thread 8 exiting
FiberScheduler: thread 9 exiting
FiberScheduler: thread 10 exiting
FiberScheduler: thread 11 exiting
FiberScheduler: thread 12 exiting
FiberScheduler: thread 2 exiting
FiberScheduler: thread 1 exiting
FiberScheduler: thread 12 has been joined
FiberScheduler: thread 11 has been joined
FiberScheduler: thread 10 has been joined
FiberScheduler: thread 9 has been joined
FiberScheduler: thread 8 has been joined
FiberScheduler: thread 6 has been joined
FiberScheduler: thread 5 has been joined
FiberScheduler: thread 4 has been joined
FiberScheduler: thread 3 has been joined
FiberScheduler: thread 7 has been joined
FiberScheduler: thread 2 has been joined
FiberScheduler: thread 1 has been joined
=== argus_oneshot[7962]: Connection closed (7F7DA001C0)=== argus_oneshot[7962]: Connection cleaned up (7F7DA001C0)

Can NVidia modify nvargus-daemon/libargus to accept lower frame resolutions?
We only need raw data and do not need any post-processing in ISP.
But we can not use V4L2 interface for capturing raw data directly due to other reasons.

My camera sensor allows to increase the vertical resolution, so I’ve now tested with 224x692.
First, verified that capturing via v4l2-ctl works:

# v4l2-ctl -d 0 -V 
Format Video Capture:
	Width/Height      : 224/692
	Pixel Format      : 'BG12' (12-bit Bayer BGBG/GRGR)
	Field             : None
	Bytes per Line    : 512
	Size Image        : 354304
	Colorspace        : sRGB
	Transfer Function : Default (maps to sRGB)
	YCbCr/HSV Encoding: Default (maps to ITU-R 601)
	Quantization      : Default (maps to Full Range)
	Flags             :

# v4l2-ctl -d /dev/video0 -c bypass_mode=0 --stream-mmap --stream-count=40
<<<<<<<<<<<<<<<<<<<<<< 20.01 fps
<<<<<<<<<<<<<<<<<<

When testing via Argus, it hangs:

# argus_oneshot -d 0
Executing Argus Sample: argus_oneshot
Argus Version: 0.97.3 (multi-process)
Capturing from device 0 using sensor mode 0 (224x692)

In nvargus-daemon log I see errors like:

...
NV AE and AfApply algorithms are active.
(Autocontrol) Error BadParameter: NvIspAeSetUpLac1Settings: effective image region [224x692] is too small (in src/algorithms/ae/ae_metering.cpp, function NvIspAeSetUpLac1Settings(), line 732)
(Autocontrol) Error BadParameter: AE failed to grab PCL metadata
 (in src/algorithms/ae/ae_main.cpp, function run(), line 846)
...
SCF: Error InvalidSize:  (propagating from src/services/capture/NvIspHw.cpp, function startCapture(), line 323)
SCF: Error InvalidSize:  (propagating from src/services/capture/CaptureRecord.cpp, function doMEMtoISPCapture(), line 613)
SCF: Error InvalidSize:  (propagating from src/services/capture/CaptureRecord.cpp, function issueCapture(), line 466)
SCF: Error InvalidSize:  (propagating from src/services/capture/CaptureServiceDevice.cpp, function issueCaptures(), line 1293)
SCF: Error InvalidSize:  (propagating from src/services/capture/CaptureServiceDevice.cpp, function issueCaptures(), line 1124)
FiberScheduler: cc 101, session 0, fiber 0x7f3c000b60 aborted in async operation

SCF: Error Timeout:  (propagating from src/api/Buffer.cpp, function waitForUnlock(), line 637)
SCF: Error Timeout:  (propagating from src/components/CaptureContainerImpl.cpp, function returnBuffer(), line 358)
FiberScheduler: fiber 0x7f3c000b60 exiting
Thread 5 is waiting
SCF: Error InvalidSize:  (propagating from src/common/Utils.cpp, function workerThread(), line 116)
SCF: Error InvalidSize: Worker thread CaptureScheduler frameStart failed (in src/common/Utils.cpp, function workerThread(), line 133)

Full nvargus-daemon log is below:

# export enableCamPclLogs=5 && export enableCamScfLogs=5
# nvargus-daemon
=== NVIDIA Libargus Camera Service (0.97.3)=== Listening for connections...
=== argus_oneshot[5275]: Connection established (7F95F0C1C0)Thread 1 getting next capture
Thread 1 is waiting
Thread 2 getting next capture
Thread 2 is waiting
Thread 3 getting next capture
Thread 3 is waiting
Thread 4 getting next capture
Thread 4 is waiting
Thread 5 getting next capture
Thread 5 is waiting
Thread 6 getting next capture
Thread 6 is waiting
Thread 7 getting next capture
Thread 7 is waiting
Thread 8 getting next capture
Thread 8 is waiting
Thread 9 getting next capture
Thread 9 is waiting
Thread 10 getting next capture
Thread 10 is waiting
Thread 11 getting next capture
Thread 11 is waiting
Thread 12 getting next capture
Thread 12 is waiting
Starting services...
Worker thread IspHw statsComplete start
Worker thread IspHw frameComplete start
Worker thread CaptureScheduler checkFramePending start
Worker thread CaptureScheduler frameStart start
Worker thread V4L2CaptureScheduler checkCaptureComplete start
Worker thread V4L2CaptureScheduler issueCaptures start
Worker thread PS handleRequests start
getInstance: s_instance(0x7f908383c0)
getInstance: s_instance(0x7f908383c0)
subscribe: SensorType(gyroscope)
subscribe: create SensorType(gyroscope) sensor(0x7f9083a9c0)
subscribe: SensorType(accelerometer)
subscribe: create SensorType(accelerometer) sensor(0x7f9083ff20)
AC plugin not present: dlopen "acplugin.so", acplugin.so: cannot open shared object file: No such file or directory
Services are started
NvPclSetHotplugCallback: ++++++++++++++++++++++
---- Imager: Calibration blob file handling supported in this build ----
NvPclHwGetModuleList: OFParserListModules Succeeded
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwPrintModuleDefinition -- Name: irs2381c_rear_m03957
NvPclHwPrintModuleDefinition -- Position: 0
NvPclHwPrintModuleDefinition -- CalibrationData Found: 1
NvPclHwPrintCameraSubModule -- HwCamSubModule[0].Name: v4l2_sensor
NvPclHwPrintCameraSubModule -- HwCamSubModule[0].DevName: irs10x0c 9-003d
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwPrintModuleDefinition -- Name: ov9782d3_front_m03957
NvPclHwPrintModuleDefinition -- Position: 1
NvPclHwPrintModuleDefinition -- CalibrationData Found: 1
NvPclHwPrintCameraSubModule -- HwCamSubModule[0].Name: v4l2_sensor
NvPclHwPrintCameraSubModule -- HwCamSubModule[0].DevName: ov9782d3 10-0060
NvPclHwGetModuleList: OFParserListModules Succeeded
NvPclModuleListInitialize: NvPclModule list[0]: irs2381c_rear_m03957 position0
NvPclModuleListInitialize: NvPclModule list[1]: ov9782d3_front_m03957 position1
NvPclHwScanExternalCameras -- adding video1 to discover list
NvPclHwScanExternalCameras -- adding video0 to discover list
NvPclHwScanExternalCameras -- adding video1 to discover list
NvPclHwScanExternalCameras -- adding video0 to discover list
NvPclHwScanExternalCameras -- adding video1 to discover list
NvPclHwScanExternalCameras -- adding video0 to discover list
getHotplugMonitor: Getting hotplug monitor instance
 initializeHotplug++
 hotPlugfunc ++ 
 addWatch: Watch added wd='1'
CheckProcDTExists: INFO: accessing /proc/device-tree/tegra-virtual-camera-platform/modules/module0/drivernode1; No such file or directory
OFParserGetVirtualDevice: virtual device driver node not found in proc device-tree: /proc/device-tree/tegra-virtual-camera-platform/modules/module0/drivernode1
CheckProcDTExists: INFO: accessing /proc/device-tree/tegra-virtual-camera-platform/modules/module1/drivernode0; No such file or directory
OFParserGetVirtualDevice: virtual device driver node not found in proc device-tree: /proc/device-tree/tegra-virtual-camera-platform/modules/module1/drivernode0
setHotplugCallback: Registered new callback client
NvPclSetHotplugCallback: ----------------------
 hotPlugfunc: reading from inotify FD, Thread waiting 
NvPclOpen: ++++++++++++++++++++++
NvPclStateControllerOpen: Found GUID 0 match at index[0]
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f907554e0
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f90783580
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f90436a20
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f907834f0
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f908827e0
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f908825a0
LoadOverridesFile: looking for override file [/Calib/camera_override.isp] 1/16
CheckOverridesPermissions: stat(/Calib/camera_override.isp) call failed
LoadOverridesFile: looking for override file [/data/vendor/nvcam/settings/camera_overrides.isp] 2/16
CheckOverridesPermissions: stat(/data/vendor/nvcam/settings/camera_overrides.isp) call failed
LoadOverridesFile: looking for override file [/opt/nvidia/nvcam/settings/camera_overrides.isp] 3/16
CheckOverridesPermissions: stat(/opt/nvidia/nvcam/settings/camera_overrides.isp) call failed
LoadOverridesFile: looking for override file [/var/nvidia/nvcam/settings/camera_overrides.isp] 4/16
CheckOverridesPermissions: stat(/var/nvidia/nvcam/settings/camera_overrides.isp) call failed
LoadOverridesFile: looking for override file [/data/vendor/nvcam/camera_overrides.isp] 5/16
CheckOverridesPermissions: stat(/data/vendor/nvcam/camera_overrides.isp) call failed
LoadOverridesFile: looking for override file [/data/vendor/nvcam/settings/irs2381c_rear_m03957.isp] 6/16
CheckOverridesPermissions: stat(/data/vendor/nvcam/settings/irs2381c_rear_m03957.isp) call failed
LoadOverridesFile: looking for override file [/opt/nvidia/nvcam/settings/irs2381c_rear_m03957.isp] 7/16
CheckOverridesPermissions: stat(/opt/nvidia/nvcam/settings/irs2381c_rear_m03957.isp) call failed
LoadOverridesFile: looking for override file [/var/nvidia/nvcam/settings/irs2381c_rear_m03957.isp] 8/16
CheckOverridesPermissions: stat(/var/nvidia/nvcam/settings/irs2381c_rear_m03957.isp) call failed
---- imager: No override file found. ----
Imager: looking for override file [/mnt/factory/camera/factory.bin] 1/16
Imager: looking for override file [/Calib/factory.bin] 2/16
Imager: looking for override file [/Calib/calibration.bin] 3/16
Imager: looking for override file [(null)] 4/16
Imager: looking for override file [(null)] 5/16
Imager: looking for override file [(null)] 6/16
Imager: looking for override file [(null)] 7/16
Imager: looking for override file [(null)] 8/16
Imager: looking for override file [(null)] 9/16
Imager: looking for override file [(null)] 10/16
Imager: looking for override file [(null)] 11/16
Imager: looking for override file [(null)] 12/16
Imager: looking for override file [(null)] 13/16
Imager: looking for override file [(null)] 14/16
Imager: looking for override file [(null)] 15/16
Imager: looking for override file [(null)] 16/16
Imager: looking for override file [/data/vendor/nvcam/settings/factory.bin] 1/16
Imager: looking for override file [/data/vendor/nvcam/settings/irs2381c_rear_m03957.bin] 2/16
Imager: looking for override file [/opt/nvidia/nvcam/settings/irs2381c_rear_m03957.bin] 3/16
Imager: looking for override file [/var/nvidia/nvcam/settings/irs2381c_rear_m03957.bin] 4/16
Imager: looking for override file [(null)] 5/16
Imager: looking for override file [(null)] 6/16
Imager: looking for override file [(null)] 7/16
Imager: looking for override file [(null)] 8/16
Imager: looking for override file [(null)] 9/16
Imager: looking for override file [(null)] 10/16
Imager: looking for override file [(null)] 11/16
Imager: looking for override file [(null)] 12/16
Imager: looking for override file [(null)] 13/16
Imager: looking for override file [(null)] 14/16
Imager: looking for override file [(null)] 15/16
Imager: looking for override file [(null)] 16/16
NvPclCreateDriver: Found NvPcl Driver Hal dev_name match (v4l2_sensor)
NvPclCreateDriver: Found a Driver name match (v4l2_sensor)
NvPclConnectDrivers: hImager was NULL, creating new imager
NvPclInitializeDrivers: v4l2_sensor ++++++++++++++++++
OFDPropertyGetString: could not read property [devnode-bus]
OFDPropertyGetString: could not read property [use_decibel_gain]
OFDPropertyGetString: could not read property [use_sensor_mode_id]
OFDPropertyGetString: could not read property [delayed_gain]
OFDPropertyCopyToLong: could not read property [has-eeprom]
OFDPropertyGetString: could not read property [type]
loadSubType: Sensor type missing in DT, 206
OFDPropertyCopyToLong: could not read property [mode0.dynamic_pixel_bit_depth]
OFDPropertyCopyToLongLong: could not read property [mode0.serdes_pix_clk_hz]
OFDPropertyCopyToLongLong: could not read property [mode0.exp_time_1h]
OFDPropertyCopyToFloat: could not read property [mode0.gain_step_pitch]
OFDPropertyCopyToLong: could not read property [mode0.embedded_metadata_width]
OFDPropertyGetString: could not read property [mode0.x_start]
OFDPropertyGetString: could not read property [mode0.y_start]
OFDPropertyGetString: could not read property [mode0.x_end]
OFDPropertyGetString: could not read property [mode0.y_end]
OFDPropertyGetString: could not read property [mode0.h_scaling]
OFDPropertyGetString: could not read property [mode0.v_scaling]
OFDPropertyGetString: could not read property [sensor_model]
initialize: Loaded Driver: 1 Modes Available--------------
NvPclInitializeDrivers: v4l2_sensor ------------------
NvPclOpen: ----------------------
LSC: LSC surface is not based on full res!
NvPclOpen: ++++++++++++++++++++++
NvPclStateControllerOpen: Found GUID 1 match at index[1]
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f90c3b6b0
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f90c15350
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f90882360
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f90895a10
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f90885410
NvPclHwInitializeModule: allocate overrides pathname @ 0x7f908843c0
LoadOverridesFile: looking for override file [/Calib/camera_override.isp] 1/16
CheckOverridesPermissions: stat(/Calib/camera_override.isp) call failed
LoadOverridesFile: looking for override file [/data/vendor/nvcam/settings/camera_overrides.isp] 2/16
CheckOverridesPermissions: stat(/data/vendor/nvcam/settings/camera_overrides.isp) call failed
LoadOverridesFile: looking for override file [/opt/nvidia/nvcam/settings/camera_overrides.isp] 3/16
CheckOverridesPermissions: stat(/opt/nvidia/nvcam/settings/camera_overrides.isp) call failed
LoadOverridesFile: looking for override file [/var/nvidia/nvcam/settings/camera_overrides.isp] 4/16
CheckOverridesPermissions: stat(/var/nvidia/nvcam/settings/camera_overrides.isp) call failed
LoadOverridesFile: looking for override file [/data/vendor/nvcam/camera_overrides.isp] 5/16
CheckOverridesPermissions: stat(/data/vendor/nvcam/camera_overrides.isp) call failed
LoadOverridesFile: looking for override file [/data/vendor/nvcam/settings/ov9782d3_front_m03957.isp] 6/16
CheckOverridesPermissions: stat(/data/vendor/nvcam/settings/ov9782d3_front_m03957.isp) call failed
LoadOverridesFile: looking for override file [/opt/nvidia/nvcam/settings/ov9782d3_front_m03957.isp] 7/16
CheckOverridesPermissions: stat(/opt/nvidia/nvcam/settings/ov9782d3_front_m03957.isp) call failed
LoadOverridesFile: looking for override file [/var/nvidia/nvcam/settings/ov9782d3_front_m03957.isp] 8/16
CheckOverridesPermissions: stat(/var/nvidia/nvcam/settings/ov9782d3_front_m03957.isp) call failed
---- imager: No override file found. ----
Imager: looking for override file [/mnt/factory/camera/factory.bin] 1/16
Imager: looking for override file [/Calib/factory.bin] 2/16
Imager: looking for override file [/Calib/calibration.bin] 3/16
Imager: looking for override file [(null)] 4/16
Imager: looking for override file [(null)] 5/16
Imager: looking for override file [(null)] 6/16
Imager: looking for override file [(null)] 7/16
Imager: looking for override file [(null)] 8/16
Imager: looking for override file [(null)] 9/16
Imager: looking for override file [(null)] 10/16
Imager: looking for override file [(null)] 11/16
Imager: looking for override file [(null)] 12/16
Imager: looking for override file [(null)] 13/16
Imager: looking for override file [(null)] 14/16
Imager: looking for override file [(null)] 15/16
Imager: looking for override file [(null)] 16/16
Imager: looking for override file [/data/vendor/nvcam/settings/factory.bin] 1/16
Imager: looking for override file [/data/vendor/nvcam/settings/ov9782d3_front_m03957.bin] 2/16
Imager: looking for override file [/opt/nvidia/nvcam/settings/ov9782d3_front_m03957.bin] 3/16
Imager: looking for override file [/var/nvidia/nvcam/settings/ov9782d3_front_m03957.bin] 4/16
Imager: looking for override file [(null)] 5/16
Imager: looking for override file [(null)] 6/16
Imager: looking for override file [(null)] 7/16
Imager: looking for override file [(null)] 8/16
Imager: looking for override file [(null)] 9/16
Imager: looking for override file [(null)] 10/16
Imager: looking for override file [(null)] 11/16
Imager: looking for override file [(null)] 12/16
Imager: looking for override file [(null)] 13/16
Imager: looking for override file [(null)] 14/16
Imager: looking for override file [(null)] 15/16
Imager: looking for override file [(null)] 16/16
NvPclCreateDriver: Found NvPcl Driver Hal dev_name match (v4l2_sensor)
NvPclCreateDriver: Found a Driver name match (v4l2_sensor)
NvPclConnectDrivers: hImager was NULL, creating new imager
NvPclInitializeDrivers: v4l2_sensor ++++++++++++++++++
OFDPropertyGetString: could not read property [devnode-bus]
OFDPropertyGetString: could not read property [delayed_gain]
OFDPropertyCopyToLong: could not read property [has-eeprom]
OFDPropertyGetString: could not read property [type]
loadSubType: Sensor type missing in DT, 206
OFDPropertyCopyToLong: could not read property [mode0.gain_factor]
OFDPropertyCopyToLongLong: could not read property [mode0.exp_time_1h]
OFDPropertyCopyToFloat: could not read property [mode0.gain_step_pitch]
OFDPropertyCopyToLong: could not read property [mode0.embedded_metadata_width]
OFDPropertyGetString: could not read property [mode0.x_start]
OFDPropertyGetString: could not read property [mode0.y_start]
OFDPropertyGetString: could not read property [mode0.x_end]
OFDPropertyGetString: could not read property [mode0.y_end]
OFDPropertyGetString: could not read property [mode0.h_scaling]
OFDPropertyGetString: could not read property [mode0.v_scaling]
OFDPropertyCopyToLong: could not read property [mode1.gain_factor]
OFDPropertyCopyToLongLong: could not read property [mode1.exp_time_1h]
OFDPropertyCopyToFloat: could not read property [mode1.gain_step_pitch]
OFDPropertyCopyToLong: could not read property [mode1.embedded_metadata_width]
OFDPropertyGetString: could not read property [mode1.x_start]
OFDPropertyGetString: could not read property [mode1.y_start]
OFDPropertyGetString: could not read property [mode1.x_end]
OFDPropertyGetString: could not read property [mode1.y_end]
OFDPropertyGetString: could not read property [mode1.h_scaling]
OFDPropertyGetString: could not read property [mode1.v_scaling]
initialize: Loaded Driver: 2 Modes Available--------------
NvPclInitializeDrivers: v4l2_sensor ------------------
NvPclOpen: ----------------------
LSC: LSC surface is not based on full res!
=== argus_oneshot[5275]: CameraProvider initialized (0x7f90c3b740)sourceRegistry[0] assigned

ispRegistry[0] assigned

Using Source GUID 0
Worker thread ViCsiHw frameComplete start
Worker thread ViCsiHw frameStart start
NvPclPowerOn: +++++++++++
NvPclPowerOn: -----------
Using ISP A
NvPHSSendThroughputHints: sensorId=0, m_usecase=4, m_type=2, m_value=4294967295, m_timeout_ms=1000

LSC: LSC surface is not based on full res!
AC plugin not present: dlopen "acplugin.so", acplugin.so: cannot open shared object file: No such file or directory
No library found, disabling AC plugin.
Worker thread CaptureDispatcher start
Session::updatePerfHints()
updatePerfHints(): guid=0ll, CaptureIntent=1
updatePerfHints(): NvCameraCoreUseCase_Preview
NvPHSSendThroughputHints: sensorId=0, m_usecase=4, m_type=1, m_value=30, m_timeout_ms=1000

NvPHSSendThroughputHints: sensorId=0, m_usecase=4, m_type=15, m_value=0, m_timeout_ms=1000

No output buffers for 0
No output buffers for 2
No output buffers for 1
InstructionList:
  + GraphSettings
      | SensorMode: 224x692 BayerS16BGGR 30.0fps
      | output 0: 224x692 Pitch BayerS16BGGR
      | inputClipRect 0: (0.00,0.00, 1.00,1.00)

  + Instruction List
      | id: 0
      +  0: CCDataSetupStage
          | EstimatedIspOutLatencyFrames: 6
          | NumConcurrentCaptures: 1
          | UnprocessedYuvBufferMask: 0
      +  1: ACSynchronizeStage
      +  2: AeAfApplyStage
      +  3: AcPluginStage
          | operation: opApply
      +  4: AcMergeStage
          | IspIn: [224, 692]
          | IspOut0: [224, 692]
          | IspOut1: [0, 0]
          | IspOut2: [640, 1978]
      +  5: TempBufferAcquireStage
          | Buffer Index: 4
          | BufferRequirements: 224x1 Pitch NonColor8
      +  6: SensorCaptureStage
          | Master: 1
          | Source GUID: 0
          | Output Buffer: 0
          | SensorMetadata Buffer: 4
      +  7: TempBufferAcquireStage
          | Buffer Index: 2
          | BufferRequirements: 224x692 BL Y8_ER 420
      +  8: StatsBufferAcquireStage
          | Buffer Index: 1
          | BufferRequirements: 640x1978 Pitch Y8_ER 420
      +  9: TempBufferAcquireStage
          | Buffer Index: 3
          | BufferRequirements: 524288x1 Pitch NonColor8
      + 10: MemoryToISPCaptureStage
          | Master: 1
          | Input Buffer: 0
          | Output A Buffer: 2
          | Output Thumb Buffer: 1
          | Output IspStats Buffer: 3
          | Source GUID: 0
      + 11: StatsUpdateStage
          | Output Meta Buffer: 4
          | Output IspStats Buffer: 3
      + 12: BufferReturnStage
          | Output A Buffer: 4
      + 13: BufferReturnStage
          | Output A Buffer: 3
      + 14: AcPluginStage
          | operation: opAnalyze
      + 15: AfAnalysisStage
      + 16: MonitorStage
      + 17: ExifStage
      + 18: MakerNoteStage
      + 19: BufferReturnStage
          | Output A Buffer: 2
      + 20: BufferReturnStage
          | Output A Buffer: 0
      + 21: MetadataReturnStage
      + 22: PerfStatsStage

Created fiber 0x7f3c000b60 for CC 101 globalID 101 session 0
Thread 1 is working on CC 101 session 0 globalID 101 step 0
CC 101 session 0 completed step 0 in fiber 0x7f3c000b60
cc 101(1) session 0 runCount=0 runIspOut=0, latest ccId=0
CC 101 session 0 completed step 1 in fiber 0x7f3c000b60
NV AE and AfApply algorithms are active.
(Autocontrol) Error BadParameter: NvIspAeSetUpLac1Settings: effective image region [224x692] is too small (in src/algorithms/ae/ae_metering.cpp, function NvIspAeSetUpLac1Settings(), line 732)
(Autocontrol) Error BadParameter: AE failed to grab PCL metadata
 (in src/algorithms/ae/ae_main.cpp, function run(), line 846)
CC 101 session 0 completed step 2 in fiber 0x7f3c000b60
CC 101 session 0 completed step 3 in fiber 0x7f3c000b60
CC 101 session 0 completed step 4 in fiber 0x7f3c000b60
CC 101 session 0 completed step 5 in fiber 0x7f3c000b60
CC 101 session 0 processing step 6 in fiber 0x7f3c000b60
FiberScheduler: cc 101, session 0, fiber 0x7f3c000b60 in progress...

Thread 1 getting next capture
Thread 2 is waiting
Thread 1 is waiting
NvPclSettingsUpdate: Sending Updated Settings through PCL
NvPclSettingsApply: Applying last settings through PCL
apply:+++++++++++++++++++++++
writeMode: Target mode Id(0): Resolution 224x692
writeFrameRate:	INPUT frameRate:30.000000
writeGain:	INPUT gainCtrl:a analogGain:1.000000
updateOutputSettings:	OUTPUT frameRate:30.000000
updateOutputSettings:	OUTPUT analogGain:1.000000
apply:-----------------------
NvPclSettingsApply: Reading PCL settings
NvPclSettingsUpdate: Sending Updated Settings through PCL
NvPclSettingsApply: Applying last settings through PCL
apply:+++++++++++++++++++++++
writeFrameRate:	INPUT frameRate:1.816576
writeExposure:	INPUT expTime:0.000034
updateOutputSettings:	OUTPUT frameRate:1.816576
updateOutputSettings:	OUTPUT expTime:0.000034
apply:-----------------------
NvPclSettingsApply: Reading PCL settings
NvPclSettingsUpdate: Sending Updated Settings through PCL
NvPclSettingsApply: Applying last settings through PCL
apply:+++++++++++++++++++++++
PowerServiceHw:addRequest: table size: before: 0, after:1
writeFrameRate:	INPUT frameRate:30.000000
	request table for ISP 0:
	req[0]: output1 width=0, output1 height=0, output1 Bpp=0
	req[0]: output2 width=0, output2 height=0, output2 Bpp=0
	req[0]: input width=224, input height=692, input Bpp=12
	req[0]: output width=224, output height=692, output Bpp=16
	req[0]: input fps=30
	req[0]: guID=0, stage type=MemIspCapture
updateOutputSettings:	OUTPUT frameRate:30.000000
apply:-----------------------
	req[0]: clock=0 Hz, iso bw=0 KB/s, non-iso bw=33525 KB/s
	req[450]: timeout=0
NvPclSettingsApply: Reading PCL settings
PowerServiceHwIsp:setLaBw: m_bwVal_Iso=0 and m_bwVal_NonIso=33525 KBpS

NvPclSettingsUpdate: Sending Updated Settings through PCL
NvPclSettingsApply: Applying last settings through PCL
apply:+++++++++++++++++++++++
apply:-----------------------
PowerServiceCore:setCameraBw: totalNonIsoBw=33525
NvPclSettingsApply: Reading PCL settings
NvPclSettingsUpdate: Sending Updated Settings through PCL
NvPclSettingsApply: Applying last settings through PCL
apply:+++++++++++++++++++++++
writeFrameRate:	INPUT frameRate:1.816576
updateOutputSettings:	OUTPUT frameRate:1.816576
apply:-----------------------
NvPclSettingsApply: Reading PCL settings
NvPclSettingsUpdate: Sending Updated Settings through PCL
NvPclSettingsApply: Applying last settings through PCL
apply:+++++++++++++++++++++++
apply:-----------------------
NvPclSettingsApply: Reading PCL settings
Issue bubble captures 
NvPclSettingsUpdate: Sending Updated Settings through PCL
NvPclSettingsApply: Applying last settings through PCL
apply:+++++++++++++++++++++++
apply:-----------------------
NvPclSettingsApply: Reading PCL settings
Issue bubble captures 
NvPclSettingsUpdate: Sending Updated Settings through PCL
NvPclSettingsApply: Applying last settings through PCL
apply:+++++++++++++++++++++++
apply:-----------------------
NvPclSettingsApply: Reading PCL settings
FiberScheduler: cc 101, session 0, fiber 0x7f3c000b60 succeeded async operation

Thread 3 is working on CC 101 session 0 globalID 101 step 7
CC 101 session 0 completed step 7 in fiber 0x7f3c000b60
CC 101 session 0 completed step 8 in fiber 0x7f3c000b60
CC 101 session 0 completed step 9 in fiber 0x7f3c000b60
CC 101 session 0 processing step 10 in fiber 0x7f3c000b60
FiberScheduler: cc 101, session 0, fiber 0x7f3c000b60 in progress...

Thread 3 getting next capture
Thread 4 is waiting
Thread 3 is waiting
PowerServiceHw:addRequest: table size: before: 1, after:2
	request table for ISP 0:
	req[0]: output1 width=0, output1 height=0, output1 Bpp=0
	req[0]: output2 width=0, output2 height=0, output2 Bpp=0
	req[0]: input width=224, input height=692, input Bpp=12
	req[0]: output width=224, output height=692, output Bpp=16
	req[0]: input fps=30
	req[0]: guID=0, stage type=MemIspCapture
	req[0]: clock=0 Hz, iso bw=0 KB/s, non-iso bw=33525 KB/s
	req[400]: timeout=0
	req[1]: output1 width=224, output1 height=692, output1 Bpp=16
	req[1]: output2 width=640, output2 height=1978, output2 Bpp=13
	req[1]: input width=224, input height=692, input Bpp=16
	req[1]: output width=224, output height=692, output Bpp=12
	req[1]: input fps=30
	req[1]: guID=0, stage type=MemIspCapture
	req[1]: clock=0 Hz, iso bw=0 KB/s, non-iso bw=116782 KB/s
	req[450]: timeout=0
PowerServiceHw:updateRequests: table size: before: 2, after:2
	request table for ISP 0:
	req[0]: output1 width=0, output1 height=0, output1 Bpp=0
	req[0]: output2 width=0, output2 height=0, output2 Bpp=0
	req[0]: input width=224, input height=692, input Bpp=12
	req[0]: output width=224, output height=692, output Bpp=16
	req[0]: input fps=30
	req[0]: guID=0, stage type=MemIspCapture
	req[0]: clock=0 Hz, iso bw=0 KB/s, non-iso bw=33525 KB/s
	req[394]: timeout=0
	req[1]: output1 width=224, output1 height=692, output1 Bpp=16
	req[1]: output2 width=640, output2 height=1978, output2 Bpp=13
	req[1]: input width=224, input height=692, input Bpp=16
	req[1]: output width=224, output height=692, output Bpp=12
	req[1]: input fps=30
	req[1]: guID=0, stage type=MemIspCapture
	req[1]: clock=0 Hz, iso bw=0 KB/s, non-iso bw=116782 KB/s
	req[444]: timeout=0
PowerServiceHwIsp:setLaBw: m_bwVal_Iso=0 and m_bwVal_NonIso=116782 KBpS

PowerServiceCore:setCameraBw: totalNonIsoBw=116782
SCF: Error InvalidSize:  (propagating from src/services/capture/NvIspHw.cpp, function startCapture(), line 323)
SCF: Error InvalidSize:  (propagating from src/services/capture/CaptureRecord.cpp, function doMEMtoISPCapture(), line 613)
SCF: Error InvalidSize:  (propagating from src/services/capture/CaptureRecord.cpp, function issueCapture(), line 466)
SCF: Error InvalidSize:  (propagating from src/services/capture/CaptureServiceDevice.cpp, function issueCaptures(), line 1293)
SCF: Error InvalidSize:  (propagating from src/services/capture/CaptureServiceDevice.cpp, function issueCaptures(), line 1124)
FiberScheduler: cc 101, session 0, fiber 0x7f3c000b60 aborted in async operation

SCF: Error Timeout:  (propagating from src/api/Buffer.cpp, function waitForUnlock(), line 637)
SCF: Error Timeout:  (propagating from src/components/CaptureContainerImpl.cpp, function returnBuffer(), line 358)
FiberScheduler: fiber 0x7f3c000b60 exiting
Thread 5 is waiting
SCF: Error InvalidSize:  (propagating from src/common/Utils.cpp, function workerThread(), line 116)
SCF: Error InvalidSize: Worker thread CaptureScheduler frameStart failed (in src/common/Utils.cpp, function workerThread(), line 133)
=== argus_oneshot[5275]: Connection closed (7F95F0C1C0)=== argus_oneshot[5275]: WARNING: CameraProvider was not destroyed before client connection terminated.=== argus_oneshot[5275]:          The client may have abnormally terminated. Destroying CameraProvider...=== argus_oneshot[5275]: CameraProvider destroyed (0x7f90c3b740)=== argus_oneshot[5275]: WARNING: Cleaning up 1 outstanding requests...=== argus_oneshot[5275]: WARNING: Cleaning up 1 outstanding streams...=== argus_oneshot[5275]: WARNING: Cleaning up 1 outstanding stream settings...=== argus_oneshot[5275]: WARNING: Cleaning up 1 outstanding sessions...NvPHSSendThroughputHints: sensorId=0, m_usecase=4, m_type=2, m_value=4294967295, m_timeout_ms=1000

Now this must be the horizontal camera resolution 224 which is too small for Argus.
What can be done to fix this?

The AE ROI need min 256x256.
Please increase to 256 to check.

Hi ShaneCCC, please can you confirm that you want to say that the minimum camera resolution is 256x256 pixel?
What can be done, if the sensor is not capable to provide a horizontal resolution bigger than 224? The vertical resolution seem to not the issue here.

Many thanks,
Dieter

Not sure, but you may try to disable auto-exposure and provide a fixed exposure.

Hi Dieter, hi ShaneCCC,

for more testing I’ve connected another monochrome camera which has 640 horizontal resolution and supports configuring ROIs, i.e. 640x120, 640x240 or 640x241.

Capturing with 640x120 or 640x240 resolutions via Argus work, I get correct frame data.
But capturing 640x241 does not work, I get below errors in nvargus-daemon logs:

...
Worker thread CaptureDispatcher start
(Argus) Error BadParameter: Odd stream width or height not supported, requested 640x121 (in src/api/CaptureSessionImpl.cpp, function createEGLOutputStream(), line 699)
(Argus) Error BadParameter:  (propagating from src/api/CaptureSessionImpl.cpp, function createOutputStreamInternal(), line 643)
NvPHSSendThroughputHints: sensorId=0, m_usecase=4, m_type=2, m_value=4294967295, m_timeout_ms=1000

Worker thread CaptureDispatcher stop
ViCsi capture path not initialized

Worker thread ViCsiHw frameComplete stop
Worker thread ViCsiHw frameStart stop
NvPclPowerOff: +++++++++++
NvPclPowerOff: -----------
=== argus_oneshot[11162]: CameraProvider destroyed (0x7fa0c3b910)Stopping services...
...

That means, horizontal resolutions below 640 or odd vertical resolutions are currently not supported in Argus.

Not support odd resolution too.

Hi ShaneCCC,
are you aware if there is a way to override this limitation or do we have to engage with a camera partner to overcome this roadblock?
Many thanks,
Dieter

Why insist support odd resolution?

Hi Shane, because the sensor is already existing and this sensor is providing this odd resolution.
dieter

Sorry due to ISP limitation can’t support it. Looks like this sensor have others mode to use.

Hi Shane,
For our monochrome sensor we do not need any camera data processing in ISP, we only need raw data for our custom processing. I’ve modified the argus_oneshot to set PIXEL_FMT_RAW16 format instead of PIXEL_FMT_YCbCr_420_888, i.e.:

Argus::UniqueObj<Argus::OutputStreamSettings> streamSettings(
        iSession->createOutputStreamSettings(Argus::STREAM_TYPE_EGL));

  Argus::IEGLOutputStreamSettings *iEGLStreamSettings =
        Argus::interface_cast<Argus::IEGLOutputStreamSettings>(streamSettings);
  EXIT_IF_NULL(iEGLStreamSettings, "Cannot get IEGLOutputStreamSettings Interface");
  iEGLStreamSettings->setPixelFormat(Argus::PIXEL_FMT_RAW16);
  iEGLStreamSettings->setMetadataEnable(false);

With this, capturing with 640x120 camera already works, we get correct raw data here.
But with 224x172 camera capturing does not work due to too low horizontal resolution.
Could you please inform libargus/nvargus-daemon developers, so that they can modify Argus
to accept lower horizontal resolutions, at least when working with PIXEL_FMT_RAW16 format.
Thanks!

This sensor does not have other mode, since it has 224 physical horizontal resolution.

Can use v4l2(VI mode without ISP) to capture RAW data as solution?

No, unfortunately not in our case. The reason is explained below:
In our case the 224x172 (or alternatively 224x173) camera is on MIPI CSI2 virtual channel 0 (VC0).
We have another 1280x800 camera on virtual channel 1 (VC1). When we start a stream from VC1 using nvarguscamerasrc as below

gst-launch-1.0 -e nvarguscamerasrc sensor-id=1 "video/x-raw(memory:NVMM),width=1280,height=800,format=NV12,framerate=20/1" ! nvv4l2h264enc bitrate=8000000 profile=2 ! h264parse ! rtph264pay mtu=1400 ! udpsink host=192.168.10.40 port=5000 sync=false async=false

it works as expected, but if we then use VI mode for capturing from 224x172 camera on VC0 by:

v4l2-ctl -d 1 -c bypass_mode=0 --stream-mmap --stream-count=50

then the ISP stream on VC1 stops immediately and the kernel outputs huge amount of error messages.
v4l2-ctl stream just hangs, no data is received. If I interrupt v4l2-ctl, the VC1 stream via nvarguscamerasrc is still not working. It can sometimes be restarted after nvargus-daemon restart, but not always. VI mode does not work in parallel with ISP mode when using virtual channels.

Does VC0 and VC1 have individual video node to control it?

Yes, VC1 is on /dev/video0 and VC0 is on /dev/video1:

# v4l2-ctl -d /dev/video0 -V
Format Video Capture:
	Width/Height      : 1280/800
	Pixel Format      : 'BG10' (10-bit Bayer BGBG/GRGR)
	Field             : None
	Bytes per Line    : 2560
	Size Image        : 2048000
	Colorspace        : sRGB
	Transfer Function : Default (maps to sRGB)
	YCbCr/HSV Encoding: Default (maps to ITU-R 601)
	Quantization      : Default (maps to Full Range)
	Flags             : 

# v4l2-ctl -d /dev/video1 -V
Format Video Capture:
        Width/Height      : 224/173
        Pixel Format      : 'BG12' (12-bit Bayer BGBG/GRGR)
        Field             : None
        Bytes per Line    : 512
        Size Image        : 88576
        Colorspace        : sRGB
        Transfer Function : Default (maps to sRGB)
        YCbCr/HSV Encoding: Default (maps to ITU-R 601)
        Quantization      : Default (maps to Full Range)
        Flags             :

Streaming both virtual channels at the same time works:

# v4l2-ctl -d /dev/video0  -c bypass_mode=0 --stream-mmap --stream-count=1000
<<<<<<<<<<<<<<<<<<<<<< 20.12 fps
<<<<<<<<<<<<<<<<<<<< 20.12 fps
<<<<<<<<<<<<<<<<<<<< 20.12 fps
<<<<<<<<<<<<<<<<<<<< 20.12 fps
...

# v4l2-ctl -d /dev/video1  -c bypass_mode=0 --stream-mmap --stream-count=1000
<<<<<<<<<<<<<<<<<<<<<< 20.01 fps
<<<<<<<<<<<<<<<<<<<< 20.01 fps
<<<<<<<<<<<<<<<<<<<< 20.01 fps
<<<<<<<<<<<<<<<<<<<< 20.01 fps
<<<<<<<<<<<<<<<<<<<< 20.01 fps
...

But we want to stream VC1 (1280x800 camera) via ISP to do debayering, etc.

Can you get the trace log to check if can get clue for the failed.

I can create trace logs. Should I attach it here or should I better open a separate discussion thread (because this is actually another topic. This thread is about low frame resolution support in Argus)?

It’s fine to attach here for checking first.