libcamera: pipeline: raspberrypi: Pass the drop frame count in start, not configure
The number of frames to drop (not display) is passed back now from the start method, not configure. This means applications have a chance to set fixed exposure/gain before starting the camera and this can affect the frame drop count that is returned. Note how we need to be able to tell the very first time we start the camera from subsequent restarts, hence addition of the "firstStart_" flag. Both the IPA implementation file and the pipeline handler need matching modifications. Signed-off-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
committed by
Laurent Pinchart
parent
a93775cab6
commit
10bcc51ca3
@@ -745,13 +745,6 @@ int PipelineHandlerRPi::start(Camera *camera, [[maybe_unused]] ControlList *cont
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = queueAllBuffers(camera);
|
||||
if (ret) {
|
||||
LOG(RPI, Error) << "Failed to queue buffers";
|
||||
stop(camera);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Check if a ScalerCrop control was specified. */
|
||||
if (controls)
|
||||
data->applyScalerCrop(*controls);
|
||||
@@ -779,6 +772,19 @@ int PipelineHandlerRPi::start(Camera *camera, [[maybe_unused]] ControlList *cont
|
||||
LOG(RPI, Error) << "V4L2 staggered set failed";
|
||||
}
|
||||
|
||||
if (result.operation & RPi::IPA_CONFIG_DROP_FRAMES) {
|
||||
/* Configure the number of dropped frames required on startup. */
|
||||
data->dropFrameCount_ = result.data[0];
|
||||
}
|
||||
|
||||
/* We need to set the dropFrameCount_ before queueing buffers. */
|
||||
ret = queueAllBuffers(camera);
|
||||
if (ret) {
|
||||
LOG(RPI, Error) << "Failed to queue buffers";
|
||||
stop(camera);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* IPA configure may have changed the sensor flips - hence the bayer
|
||||
* order. Get the sensor format and set the ISP input now.
|
||||
@@ -1237,11 +1243,6 @@ int RPiCameraData::configureIPA(const CameraConfiguration *config)
|
||||
LOG(RPI, Error) << "V4L2 staggered set failed";
|
||||
}
|
||||
|
||||
if (result.operation & RPi::IPA_CONFIG_DROP_FRAMES) {
|
||||
/* Configure the number of dropped frames required on startup. */
|
||||
dropFrameCount_ = result.data[resultIdx++];
|
||||
}
|
||||
|
||||
/*
|
||||
* Configure the H/V flip controls based on the combination of
|
||||
* the sensor and user transform.
|
||||
|
||||
Reference in New Issue
Block a user