@@ -57,11 +57,6 @@ static constexpr utils::Duration kMaxExposureTime = 60ms;
/* Histogram constants */
static constexpr uint32_t knumHistogramBins = 256;
-Agc::Agc()
- : minExposureTime_(0s), maxExposureTime_(0s)
-{
-}
-
/**
* \brief Initialise the AGC algorithm from tuning files
* \param[in] context The shared IPA context
@@ -101,10 +96,6 @@ int Agc::configure(IPAContext &context,
stride_ = configuration.grid.stride;
bdsGrid_ = configuration.grid.bdsGrid;
- minExposureTime_ = configuration.sensor.minExposureTime;
- maxExposureTime_ = std::min(configuration.sensor.maxExposureTime,
- kMaxExposureTime);
-
minAnalogueGain_ = std::max(configuration.sensor.minAnalogueGain, kMinAnalogueGain);
maxAnalogueGain_ = configuration.sensor.maxAnalogueGain;
@@ -117,10 +108,10 @@ int Agc::configure(IPAContext &context,
AgcMeanLuminance::SensorConfiguration sensorConfig;
sensorConfig.lineDuration = context.configuration.sensor.lineDuration;
- sensorConfig.minExposureTime = minExposureTime_;
+ sensorConfig.minExposureTime = configuration.sensor.minExposureTime;
sensorConfig.minFrameDuration = context.configuration.sensor.minFrameDuration;
- sensorConfig.maxFrameDuration = context.configuration.sensor.maxFrameDuration;
- sensorConfig.maxExposureTime = maxExposureTime_;
+ sensorConfig.maxFrameDuration = std::min(context.configuration.sensor.maxFrameDuration,
+ kMaxExposureTime);
sensorConfig.minAnalogueGain = minAnalogueGain_;
sensorConfig.maxAnalogueGain = maxAnalogueGain_;
@@ -27,7 +27,6 @@ namespace ipa::ipu3::algorithms {
class Agc : public Algorithm, public AgcMeanLuminance
{
public:
- Agc();
~Agc() = default;
int init(IPAContext &context, const YamlObject &tuningData) override;
@@ -42,9 +41,6 @@ private:
Histogram parseStatistics(const ipu3_uapi_stats_3a *stats,
const ipu3_uapi_grid_config &grid);
- utils::Duration minExposureTime_;
- utils::Duration maxExposureTime_;
-
double minAnalogueGain_;
double maxAnalogueGain_;
@@ -111,9 +111,6 @@ namespace libcamera::ipa::ipu3 {
* \var IPASessionConfiguration::agc.minExposureTime
* \brief Minimum exposure time supported with the configured sensor
*
- * \var IPASessionConfiguration::agc.maxExposureTime
- * \brief Maximum exposure time supported with the configured sensor
- *
* \var IPASessionConfiguration::agc.minAnalogueGain
* \brief Minimum analogue gain supported with the configured sensor
*
@@ -38,7 +38,6 @@ struct IPASessionConfiguration {
utils::Duration lineDuration;
Size size;
utils::Duration minExposureTime;
- utils::Duration maxExposureTime;
utils::Duration minFrameDuration;
utils::Duration maxFrameDuration;
double minAnalogueGain;
@@ -206,7 +206,6 @@ void IPAIPU3::updateSessionConfiguration(const IPACameraSensorInfo &sensorInfo,
const ControlInfo &v4l2Exposure = sensorControls.find(V4L2_CID_EXPOSURE)->second;
int32_t minExposure = v4l2Exposure.min().get<int32_t>();
- int32_t maxExposure = v4l2Exposure.max().get<int32_t>();
const ControlInfo &v4l2Gain = sensorControls.find(V4L2_CID_ANALOGUE_GAIN)->second;
int32_t minGain = v4l2Gain.min().get<int32_t>();
@@ -226,7 +225,6 @@ void IPAIPU3::updateSessionConfiguration(const IPACameraSensorInfo &sensorInfo,
* \todo take VBLANK into account for maximum exposure time
*/
context_.configuration.sensor.minExposureTime = minExposure * context_.configuration.sensor.lineDuration;
- context_.configuration.sensor.maxExposureTime = maxExposure * context_.configuration.sensor.lineDuration;
context_.configuration.sensor.minFrameDuration = frameHeights[0] *
context_.configuration.sensor.lineDuration;
context_.configuration.sensor.maxFrameDuration = frameHeights[1] *
@@ -115,9 +115,6 @@ static constexpr double kMaxRelativeLuminanceTarget = 0.95;
* \var AgcMeanLuminance::SensorConfiguration::minExposureTime
* \brief The sensor minimum exposure time in microseconds
*
- * \var AgcMeanLuminance::SensorConfiguration::maxExposureTime
- * \brief The sensor maximum exposure time in microseconds
- *
* \var AgcMeanLuminance::SensorConfiguration::minFrameDuration
* \brief The sensor minimum frame duration in microseconds
*
@@ -372,7 +369,6 @@ void AgcMeanLuminance::configure(const SensorConfiguration &config,
ExposureModeHelper::SensorConfiguration sensorConfig;
sensorConfig.lineDuration_ = config.lineDuration;
sensorConfig.minExposureTime_ = config.minExposureTime;
- sensorConfig.maxExposureTime_ = config.maxExposureTime;
sensorConfig.minFrameDuration_ = config.minFrameDuration;
sensorConfig.maxFrameDuration_ = config.maxFrameDuration;
sensorConfig.minGain_ = config.minAnalogueGain;
@@ -45,7 +45,6 @@ public:
struct SensorConfiguration {
utils::Duration lineDuration;
utils::Duration minExposureTime;
- utils::Duration maxExposureTime;
utils::Duration minFrameDuration;
utils::Duration maxFrameDuration;
double minAnalogueGain;
@@ -176,7 +176,6 @@ int Agc::configure(IPAContext &context,
AgcMeanLuminance::SensorConfiguration sensorConfig;
sensorConfig.lineDuration = context.configuration.sensor.lineDuration;
sensorConfig.minExposureTime = context.configuration.sensor.minShutterSpeed;
- sensorConfig.maxExposureTime = context.configuration.sensor.maxShutterSpeed;
sensorConfig.minFrameDuration = context.configuration.sensor.minFrameDuration;
sensorConfig.maxFrameDuration = context.configuration.sensor.maxFrameDuration;
sensorConfig.minAnalogueGain = context.configuration.sensor.minAnalogueGain;
@@ -29,7 +29,6 @@ struct IPASessionConfiguration {
utils::Duration lineDuration;
uint32_t blackLevel;
utils::Duration minShutterSpeed;
- utils::Duration maxShutterSpeed;
utils::Duration minFrameDuration;
utils::Duration maxFrameDuration;
double minAnalogueGain;
@@ -170,7 +170,6 @@ void IPAMaliC55::updateSessionConfiguration(const IPACameraSensorInfo &info,
const ControlInfo &v4l2Exposure = sensorControls.find(V4L2_CID_EXPOSURE)->second;
int32_t minExposure = v4l2Exposure.min().get<int32_t>();
- int32_t maxExposure = v4l2Exposure.max().get<int32_t>();
int32_t defExposure = v4l2Exposure.def().get<int32_t>();
const ControlInfo &v4l2Gain = sensorControls.find(V4L2_CID_ANALOGUE_GAIN)->second;
@@ -191,7 +190,6 @@ void IPAMaliC55::updateSessionConfiguration(const IPACameraSensorInfo &info,
utils::Duration lineDuration = info.minLineLength * 1.0s / info.pixelRate;
context_.configuration.sensor.lineDuration = lineDuration;
context_.configuration.sensor.minShutterSpeed = minExposure * lineDuration;
- context_.configuration.sensor.maxShutterSpeed = maxExposure * lineDuration;
context_.configuration.sensor.minFrameDuration = frameHeights[0] * lineDuration;
context_.configuration.sensor.maxFrameDuration = frameHeights[1] * lineDuration;
context_.configuration.sensor.minAnalogueGain = context_.camHelper->gain(minGain);
@@ -203,8 +203,6 @@ int Agc::configure(IPAContext &context, const IPACameraSensorInfo &configInfo)
AgcMeanLuminance::SensorConfiguration sensorConfig;
sensorConfig.lineDuration = context.configuration.sensor.lineDuration;
sensorConfig.minExposureTime = context.configuration.sensor.minExposureTime;
- sensorConfig.maxExposureTime = context.configuration.sensor.maxExposureTime;
- sensorConfig.minFrameDuration = context.configuration.sensor.minFrameDuration;
sensorConfig.maxFrameDuration = context.configuration.sensor.maxFrameDuration;
sensorConfig.minAnalogueGain = context.configuration.sensor.minAnalogueGain;
sensorConfig.maxAnalogueGain = context.configuration.sensor.maxAnalogueGain;
@@ -89,9 +89,6 @@ namespace libcamera::ipa::rkisp1 {
* \var IPASessionConfiguration::sensor.minExposureTime
* \brief Minimum exposure time supported with the sensor
*
- * \var IPASessionConfiguration::sensor.maxExposureTime
- * \brief Maximum exposure time supported with the sensor
- *
* \var IPASessionConfiguration::sensor.minAnalogueGain
* \brief Minimum analogue gain supported with the sensor
*
@@ -61,7 +61,6 @@ struct IPASessionConfiguration {
struct {
utils::Duration minExposureTime;
- utils::Duration maxExposureTime;
utils::Duration minFrameDuration;
utils::Duration maxFrameDuration;
double minAnalogueGain;
@@ -269,7 +269,6 @@ int IPARkISP1::configure(const IPAConfigInfo &ipaConfig,
* on the sensor, update it with the controls.
*/
context_.configuration.sensor.minExposureTime = minExposure * lineDuration;
- context_.configuration.sensor.maxExposureTime = maxExposure * lineDuration;
context_.configuration.sensor.minFrameDuration = frameHeights[0] * lineDuration;
context_.configuration.sensor.maxFrameDuration = frameHeights[1] * lineDuration;
context_.configuration.sensor.minAnalogueGain = context_.camHelper->gain(minGain);
Now that we have moved the AgcMeanLuminance class and the associated helpers to calculate the maximum achievable shutter time using the frame duration, remove the maxExposureTime parameter from all the IPAs using AgcMeanLuminance. Remove maxExposureTime from all IPA sensor configuration data, as it is now unused and its value depends on the frame duration. Do not remove minExposureTime as this instead effectively represents a sensor parameters which remains stable during a streaming session. Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> --- src/ipa/ipu3/algorithms/agc.cpp | 15 +++------------ src/ipa/ipu3/algorithms/agc.h | 4 ---- src/ipa/ipu3/ipa_context.cpp | 3 --- src/ipa/ipu3/ipa_context.h | 1 - src/ipa/ipu3/ipu3.cpp | 2 -- src/ipa/libipa/agc_mean_luminance.cpp | 4 ---- src/ipa/libipa/agc_mean_luminance.h | 1 - src/ipa/mali-c55/algorithms/agc.cpp | 1 - src/ipa/mali-c55/ipa_context.h | 1 - src/ipa/mali-c55/mali-c55.cpp | 2 -- src/ipa/rkisp1/algorithms/agc.cpp | 2 -- src/ipa/rkisp1/ipa_context.cpp | 3 --- src/ipa/rkisp1/ipa_context.h | 1 - src/ipa/rkisp1/rkisp1.cpp | 1 - 14 files changed, 3 insertions(+), 38 deletions(-)