mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-15 16:35:06 +03:00
ipa: raspberrypi: Add sensitivity field to camera mode
We use the CamHelper class to initialise it to the usual value of 1. The CamHelper's GetModeSensitivity method can be redefined to implement a different behaviour for sensors that require it. Signed-off-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
2288550f7d
commit
d0c429c34c
4 changed files with 22 additions and 0 deletions
|
@ -129,6 +129,17 @@ bool CamHelper::SensorEmbeddedDataPresent() const
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double CamHelper::GetModeSensitivity([[maybe_unused]] const CameraMode &mode) const
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Most sensors have the same sensitivity in every mode, but this
|
||||||
|
* method can be overridden for those that do not. Note that it is
|
||||||
|
* called before mode_ is set, so it must return the sensitivity
|
||||||
|
* of the mode that is passed in.
|
||||||
|
*/
|
||||||
|
return 1.0;
|
||||||
|
}
|
||||||
|
|
||||||
unsigned int CamHelper::HideFramesStartup() const
|
unsigned int CamHelper::HideFramesStartup() const
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -41,6 +41,8 @@ namespace RPiController {
|
||||||
//
|
//
|
||||||
// A method to query if the sensor outputs embedded data that can be parsed.
|
// A method to query if the sensor outputs embedded data that can be parsed.
|
||||||
//
|
//
|
||||||
|
// A method to return the sensitivity of a given camera mode.
|
||||||
|
//
|
||||||
// A parser to parse the embedded data buffers provided by some sensors (for
|
// A parser to parse the embedded data buffers provided by some sensors (for
|
||||||
// example, the imx219 does; the ov5647 doesn't). This allows us to know for
|
// example, the imx219 does; the ov5647 doesn't). This allows us to know for
|
||||||
// sure the exposure and gain of the frame we're looking at. CamHelper
|
// sure the exposure and gain of the frame we're looking at. CamHelper
|
||||||
|
@ -84,6 +86,7 @@ public:
|
||||||
virtual void GetDelays(int &exposure_delay, int &gain_delay,
|
virtual void GetDelays(int &exposure_delay, int &gain_delay,
|
||||||
int &vblank_delay) const;
|
int &vblank_delay) const;
|
||||||
virtual bool SensorEmbeddedDataPresent() const;
|
virtual bool SensorEmbeddedDataPresent() const;
|
||||||
|
virtual double GetModeSensitivity(const CameraMode &mode) const;
|
||||||
virtual unsigned int HideFramesStartup() const;
|
virtual unsigned int HideFramesStartup() const;
|
||||||
virtual unsigned int HideFramesModeSwitch() const;
|
virtual unsigned int HideFramesModeSwitch() const;
|
||||||
virtual unsigned int MistrustFramesStartup() const;
|
virtual unsigned int MistrustFramesStartup() const;
|
||||||
|
|
|
@ -41,6 +41,8 @@ struct CameraMode {
|
||||||
libcamera::Transform transform;
|
libcamera::Transform transform;
|
||||||
// minimum and maximum fame lengths in units of lines
|
// minimum and maximum fame lengths in units of lines
|
||||||
uint32_t min_frame_length, max_frame_length;
|
uint32_t min_frame_length, max_frame_length;
|
||||||
|
// sensitivity of this mode
|
||||||
|
double sensitivity;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
@ -325,6 +325,12 @@ void IPARPi::setMode(const IPACameraSensorInfo &sensorInfo)
|
||||||
*/
|
*/
|
||||||
mode_.min_frame_length = sensorInfo.minFrameLength;
|
mode_.min_frame_length = sensorInfo.minFrameLength;
|
||||||
mode_.max_frame_length = sensorInfo.maxFrameLength;
|
mode_.max_frame_length = sensorInfo.maxFrameLength;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Some sensors may have different sensitivities in different modes;
|
||||||
|
* the CamHelper will know the correct value.
|
||||||
|
*/
|
||||||
|
mode_.sensitivity = helper_->GetModeSensitivity(mode_);
|
||||||
}
|
}
|
||||||
|
|
||||||
int IPARPi::configure(const IPACameraSensorInfo &sensorInfo,
|
int IPARPi::configure(const IPACameraSensorInfo &sensorInfo,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue