summaryrefslogtreecommitdiff
path: root/src/ipa/rkisp1
diff options
context:
space:
mode:
Diffstat (limited to 'src/ipa/rkisp1')
-rw-r--r--src/ipa/rkisp1/algorithms/agc.cpp11
-rw-r--r--src/ipa/rkisp1/ipa_context.cpp28
-rw-r--r--src/ipa/rkisp1/ipa_context.h9
-rw-r--r--src/ipa/rkisp1/rkisp1.cpp10
4 files changed, 32 insertions, 26 deletions
diff --git a/src/ipa/rkisp1/algorithms/agc.cpp b/src/ipa/rkisp1/algorithms/agc.cpp
index 11613d1c..dba58c90 100644
--- a/src/ipa/rkisp1/algorithms/agc.cpp
+++ b/src/ipa/rkisp1/algorithms/agc.cpp
@@ -74,7 +74,8 @@ Agc::Agc()
int Agc::configure(IPAContext &context, const IPACameraSensorInfo &configInfo)
{
/* Configure the default exposure and gain. */
- context.activeState.agc.gain = std::max(context.configuration.agc.minAnalogueGain, kMinAnalogueGain);
+ context.activeState.agc.gain = std::max(context.configuration.sensor.minAnalogueGain,
+ kMinAnalogueGain);
context.activeState.agc.exposure = 10ms / context.configuration.sensor.lineDuration;
/*
@@ -202,13 +203,13 @@ void Agc::computeExposure(IPAContext &context, IPAFrameContext &frameContext,
/* Use the highest of the two gain estimates. */
double evGain = std::max(yGain, iqMeanGain);
- utils::Duration minShutterSpeed = configuration.agc.minShutterSpeed;
- utils::Duration maxShutterSpeed = std::min(configuration.agc.maxShutterSpeed,
+ utils::Duration minShutterSpeed = configuration.sensor.minShutterSpeed;
+ utils::Duration maxShutterSpeed = std::min(configuration.sensor.maxShutterSpeed,
kMaxShutterSpeed);
- double minAnalogueGain = std::max(configuration.agc.minAnalogueGain,
+ double minAnalogueGain = std::max(configuration.sensor.minAnalogueGain,
kMinAnalogueGain);
- double maxAnalogueGain = std::min(configuration.agc.maxAnalogueGain,
+ double maxAnalogueGain = std::min(configuration.sensor.maxAnalogueGain,
kMaxAnalogueGain);
/* Consider within 1% of the target as correctly exposed. */
diff --git a/src/ipa/rkisp1/ipa_context.cpp b/src/ipa/rkisp1/ipa_context.cpp
index 3c14cf34..7a987497 100644
--- a/src/ipa/rkisp1/ipa_context.cpp
+++ b/src/ipa/rkisp1/ipa_context.cpp
@@ -28,21 +28,11 @@ namespace libcamera::ipa::rkisp1 {
* \var IPASessionConfiguration::agc
* \brief AGC parameters configuration of the IPA
*
- * \var IPASessionConfiguration::agc.minShutterSpeed
- * \brief Minimum shutter speed supported with the configured sensor
- *
- * \var IPASessionConfiguration::agc.maxShutterSpeed
- * \brief Maximum shutter speed supported with the configured sensor
- *
- * \var IPASessionConfiguration::agc.minAnalogueGain
- * \brief Minimum analogue gain supported with the configured sensor
- *
- * \var IPASessionConfiguration::agc.maxAnalogueGain
- * \brief Maximum analogue gain supported with the configured sensor
- *
* \var IPASessionConfiguration::agc.measureWindow
* \brief AGC measure window
- *
+ */
+
+/**
* \var IPASessionConfiguration::hw
* \brief RkISP1-specific hardware information
*
@@ -77,6 +67,18 @@ namespace libcamera::ipa::rkisp1 {
* \var IPASessionConfiguration::sensor
* \brief Sensor-specific configuration of the IPA
*
+ * \var IPASessionConfiguration::sensor.minShutterSpeed
+ * \brief Minimum shutter speed supported with the sensor
+ *
+ * \var IPASessionConfiguration::sensor.maxShutterSpeed
+ * \brief Maximum shutter speed supported with the sensor
+ *
+ * \var IPASessionConfiguration::sensor.minAnalogueGain
+ * \brief Minimum analogue gain supported with the sensor
+ *
+ * \var IPASessionConfiguration::sensor.maxAnalogueGain
+ * \brief Maximum analogue gain supported with the sensor
+ *
* \var IPASessionConfiguration::sensor.defVBlank
* \brief The default vblank value of the sensor
*
diff --git a/src/ipa/rkisp1/ipa_context.h b/src/ipa/rkisp1/ipa_context.h
index 60e8a7e1..bb60ab9e 100644
--- a/src/ipa/rkisp1/ipa_context.h
+++ b/src/ipa/rkisp1/ipa_context.h
@@ -22,10 +22,6 @@ namespace ipa::rkisp1 {
struct IPASessionConfiguration {
struct {
- utils::Duration minShutterSpeed;
- utils::Duration maxShutterSpeed;
- double minAnalogueGain;
- double maxAnalogueGain;
struct rkisp1_cif_isp_window measureWindow;
} agc;
@@ -39,6 +35,11 @@ struct IPASessionConfiguration {
} lsc;
struct {
+ utils::Duration minShutterSpeed;
+ utils::Duration maxShutterSpeed;
+ double minAnalogueGain;
+ double maxAnalogueGain;
+
int32_t defVBlank;
utils::Duration lineDuration;
Size size;
diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp
index 069c901b..d61b73e1 100644
--- a/src/ipa/rkisp1/rkisp1.cpp
+++ b/src/ipa/rkisp1/rkisp1.cpp
@@ -256,10 +256,12 @@ int IPARkISP1::configure([[maybe_unused]] const IPACameraSensorInfo &info,
*
* \todo take VBLANK into account for maximum shutter speed
*/
- context_.configuration.agc.minShutterSpeed = minExposure * context_.configuration.sensor.lineDuration;
- context_.configuration.agc.maxShutterSpeed = maxExposure * context_.configuration.sensor.lineDuration;
- context_.configuration.agc.minAnalogueGain = camHelper_->gain(minGain);
- context_.configuration.agc.maxAnalogueGain = camHelper_->gain(maxGain);
+ context_.configuration.sensor.minShutterSpeed =
+ minExposure * context_.configuration.sensor.lineDuration;
+ context_.configuration.sensor.maxShutterSpeed =
+ maxExposure * context_.configuration.sensor.lineDuration;
+ context_.configuration.sensor.minAnalogueGain = camHelper_->gain(minGain);
+ context_.configuration.sensor.maxAnalogueGain = camHelper_->gain(maxGain);
for (auto const &algo : algorithms()) {
int ret = algo->configure(context_, info);