libcamera: pipelines: Draw control delays from CameraSensor properties
Rather than hard coding default delays for control values in the pipeline handlers, pick up the ones defined in the CameraSensor properties. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>
This commit is contained in:
parent
ca64f0514a
commit
5d4b7e4b5b
3 changed files with 12 additions and 16 deletions
|
@ -28,6 +28,7 @@
|
||||||
#include "libcamera/internal/camera.h"
|
#include "libcamera/internal/camera.h"
|
||||||
#include "libcamera/internal/camera_lens.h"
|
#include "libcamera/internal/camera_lens.h"
|
||||||
#include "libcamera/internal/camera_sensor.h"
|
#include "libcamera/internal/camera_sensor.h"
|
||||||
|
#include "libcamera/internal/camera_sensor_properties.h"
|
||||||
#include "libcamera/internal/delayed_controls.h"
|
#include "libcamera/internal/delayed_controls.h"
|
||||||
#include "libcamera/internal/device_enumerator.h"
|
#include "libcamera/internal/device_enumerator.h"
|
||||||
#include "libcamera/internal/framebuffer.h"
|
#include "libcamera/internal/framebuffer.h"
|
||||||
|
@ -1077,14 +1078,10 @@ int PipelineHandlerIPU3::registerCameras()
|
||||||
if (ret)
|
if (ret)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/*
|
const CameraSensorProperties::SensorDelays &delays = cio2->sensor()->sensorDelays();
|
||||||
* \todo Read delay values from the sensor itself or from a
|
|
||||||
* a sensor database. For now use generic values taken from
|
|
||||||
* the Raspberry Pi and listed as 'generic values'.
|
|
||||||
*/
|
|
||||||
std::unordered_map<uint32_t, DelayedControls::ControlParams> params = {
|
std::unordered_map<uint32_t, DelayedControls::ControlParams> params = {
|
||||||
{ V4L2_CID_ANALOGUE_GAIN, { 1, false } },
|
{ V4L2_CID_ANALOGUE_GAIN, { delays.gainDelay, false } },
|
||||||
{ V4L2_CID_EXPOSURE, { 2, false } },
|
{ V4L2_CID_EXPOSURE, { delays.exposureDelay, false } },
|
||||||
};
|
};
|
||||||
|
|
||||||
data->delayedCtrls_ =
|
data->delayedCtrls_ =
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
|
|
||||||
#include "libcamera/internal/camera.h"
|
#include "libcamera/internal/camera.h"
|
||||||
#include "libcamera/internal/camera_sensor.h"
|
#include "libcamera/internal/camera_sensor.h"
|
||||||
|
#include "libcamera/internal/camera_sensor_properties.h"
|
||||||
#include "libcamera/internal/converter/converter_v4l2_m2m.h"
|
#include "libcamera/internal/converter/converter_v4l2_m2m.h"
|
||||||
#include "libcamera/internal/delayed_controls.h"
|
#include "libcamera/internal/delayed_controls.h"
|
||||||
#include "libcamera/internal/device_enumerator.h"
|
#include "libcamera/internal/device_enumerator.h"
|
||||||
|
@ -1239,14 +1240,10 @@ int PipelineHandlerRkISP1::createCamera(MediaEntity *sensor)
|
||||||
/* Initialize the camera properties. */
|
/* Initialize the camera properties. */
|
||||||
data->properties_ = data->sensor_->properties();
|
data->properties_ = data->sensor_->properties();
|
||||||
|
|
||||||
/*
|
const CameraSensorProperties::SensorDelays &delays = data->sensor_->sensorDelays();
|
||||||
* \todo Read delay values from the sensor itself or from a
|
|
||||||
* a sensor database. For now use generic values taken from
|
|
||||||
* the Raspberry Pi and listed as generic values.
|
|
||||||
*/
|
|
||||||
std::unordered_map<uint32_t, DelayedControls::ControlParams> params = {
|
std::unordered_map<uint32_t, DelayedControls::ControlParams> params = {
|
||||||
{ V4L2_CID_ANALOGUE_GAIN, { 1, false } },
|
{ V4L2_CID_ANALOGUE_GAIN, { delays.gainDelay, false } },
|
||||||
{ V4L2_CID_EXPOSURE, { 2, false } },
|
{ V4L2_CID_EXPOSURE, { delays.exposureDelay, false } },
|
||||||
};
|
};
|
||||||
|
|
||||||
data->delayedCtrls_ =
|
data->delayedCtrls_ =
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
|
|
||||||
#include "libcamera/internal/camera.h"
|
#include "libcamera/internal/camera.h"
|
||||||
#include "libcamera/internal/camera_sensor.h"
|
#include "libcamera/internal/camera_sensor.h"
|
||||||
|
#include "libcamera/internal/camera_sensor_properties.h"
|
||||||
#include "libcamera/internal/converter.h"
|
#include "libcamera/internal/converter.h"
|
||||||
#include "libcamera/internal/delayed_controls.h"
|
#include "libcamera/internal/delayed_controls.h"
|
||||||
#include "libcamera/internal/device_enumerator.h"
|
#include "libcamera/internal/device_enumerator.h"
|
||||||
|
@ -1290,9 +1291,10 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c)
|
||||||
if (outputCfgs.empty())
|
if (outputCfgs.empty())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
const CameraSensorProperties::SensorDelays &delays = data->sensor_->sensorDelays();
|
||||||
std::unordered_map<uint32_t, DelayedControls::ControlParams> params = {
|
std::unordered_map<uint32_t, DelayedControls::ControlParams> params = {
|
||||||
{ V4L2_CID_ANALOGUE_GAIN, { 2, false } },
|
{ V4L2_CID_ANALOGUE_GAIN, { delays.gainDelay, false } },
|
||||||
{ V4L2_CID_EXPOSURE, { 2, false } },
|
{ V4L2_CID_EXPOSURE, { delays.exposureDelay, false } },
|
||||||
};
|
};
|
||||||
data->delayedCtrls_ =
|
data->delayedCtrls_ =
|
||||||
std::make_unique<DelayedControls>(data->sensor_->device(),
|
std::make_unique<DelayedControls>(data->sensor_->device(),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue