I’m attaching a video file here that has a single region of (0, 0, 400, 400, 1.0). I try all four corners to ensure that I’m not confused about the “top left” of the sensor, then I slide the card across the whole frame to show that auto exposure is calculating on the whole image. This is on an IMX377 sensor with the resolution set as 3840 x 2880:
static const Size2D<uint32_t> CAPTURE_SIZE(3840, 2880);
My understanding is that the units of the region are the same as the resolution, so 400 should be roughly 10% of the width of the sensor.
nvargus-daemon doesn’t log anything when I call Argus::Status result = iAutoControlSettings->setAeRegions(regions); and the result of that call is 0.
In case it’s relevant, we have two IMX377 sensors and two RealSense USB depth sensors connected to the system. nvargus-daemon logs some BadParameter errors related to v4l2 devices, which seem similar to the thread with the custom libargus and libnvodm_imager_tx2. We’ve tried those libraries and they don’t change this auto exposure region of interest issue.
We also have another auto exposure issue that may or may not be related – we have a special low light mode that allows long exposures and higher gain, with the fps down to 10 or even slower. This worked great on previous JetPacks/libargus, but argus appears to be freezing (no frames received) on this version and logging this error very fast:
SCF: Error InvalidState: Session has suffered a critical failure (in src/api/Session.cpp, function capture(), line 667)
(Argus) Error InvalidState: (propagating from src/api/ScfCaptureThread.cpp, function run(), line 109)
I’ve tried adjusting the limits of this mode and it seems that I need to lower them so much that the special mode is not much different than our normal mode.
argus-ae-roi.mov (26.1 MB)