Hi,
We have a jetson orin nano with 5~6 cameras. And we want to speed up camera start up speed.
The cameras are connected with MIPI and I2C, and we use nvargus lib in C++ to access the cameras. Each camera is accessed from it’s own thread.
During our observations: it seems when we call
iCaptureSession->repeat(requestPtr);
The function returns quickly. But it seems the request is actually queued and the nvargus will send I2C command one camera after another, and it takes 260ms to send all commands.
We investigated the detail of the communication with 1 camera:
We want to manual control the camera so we run the following command before we start the camera: iCaptureSession->repeat
iAutoControlSettings->setIspDigitalGainRange(Argus::Range<float>(1, 1));
//10*1000*1000
iSourceSettings->setExposureTimeRange(Argus::Range<uint64_t>(preSetExposure, preSetExposure));
//1.13
iSourceSettings->setGainRange(Argus::Range<float>(preSetGain, preSetGain));
But it seems in the driver level, the member of tegracam_ctrl_ops, set_gain, set_frame_rate got run multiple times. The gain and framearte was set back and forth multiple times with a 35ms delay.
Is it possible to have nvargus to set everything all at once before turn on the camera?