[v4,26/49] ipa: libipa: agc: Store digital gain
diff mbox series

Message ID 20260810103846.1075936-27-barnabas.pocze@ideasonboard.com
State New
Headers show
Series
  • ipa: libipa: agc rework
Related show

Commit Message

Barnabás Pőcze Aug. 10, 2026, 10:38 a.m. UTC
While digital gain support is not implemented yet, start by storing
the suggested digital gain in the active state.

Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
---
 src/ipa/libipa/agc.cpp | 7 ++++++-
 src/ipa/libipa/agc.h   | 1 +
 2 files changed, 7 insertions(+), 1 deletion(-)

Patch
diff mbox series

diff --git a/src/ipa/libipa/agc.cpp b/src/ipa/libipa/agc.cpp
index 3994d1c5e4..5fcfc6a9ba 100644
--- a/src/ipa/libipa/agc.cpp
+++ b/src/ipa/libipa/agc.cpp
@@ -100,6 +100,9 @@  LOG_DEFINE_CATEGORY(Agc)
  * \var agc::ActiveState::automatic.quantizationGain
  * \brief Automatic quantization gain multiplier
  *
+ * \var agc::ActiveState::automatic.digitalGain
+ * \brief Automatic digital gain multiplier
+ *
  * \var agc::ActiveState::automatic.yTarget
  * \brief Automatically determined luminance target
  *
@@ -322,6 +325,7 @@  int AgcAlgorithm::configure(agc::Session &session, agc::ActiveState &state,
 	state.automatic.gain = session.minAnalogueGain;
 	state.automatic.exposure = defExposure;
 	state.automatic.quantizationGain = 1;
+	state.automatic.digitalGain = 1;
 	state.automatic.yTarget = impl_.effectiveYTarget(0, 1);
 	state.manual.gain = state.automatic.gain;
 	state.manual.exposure = state.automatic.exposure;
@@ -600,6 +604,7 @@  void AgcAlgorithm::process(const agc::Session &session, agc::ActiveState &state,
 		state.automatic.exposure = newEv.exposureTime / lineDuration;
 		state.automatic.gain = newEv.analogueGain;
 		state.automatic.quantizationGain = newEv.quantizationGain;
+		state.automatic.digitalGain = newEv.digitalGain;
 		state.automatic.yTarget = newEv.yTarget;
 
 		newExposureTime = newEv.exposureTime;
@@ -608,7 +613,7 @@  void AgcAlgorithm::process(const agc::Session &session, agc::ActiveState &state,
 			<< "exposure-time:" << utils::Duration(state.automatic.exposure * lineDuration)
 			<< " analogue-gain:" << state.automatic.gain
 			<< " quantization-gain:" << state.automatic.quantizationGain
-			<< " digital-gain:" << newEv.digitalGain;
+			<< " digital-gain:" << state.automatic.digitalGain;
 	}
 
 	/*
diff --git a/src/ipa/libipa/agc.h b/src/ipa/libipa/agc.h
index 679d7bffce..728f25911c 100644
--- a/src/ipa/libipa/agc.h
+++ b/src/ipa/libipa/agc.h
@@ -77,6 +77,7 @@  struct ActiveState {
 		uint32_t exposure;
 		double gain;
 		double quantizationGain;
+		double digitalGain;
 		double yTarget;
 	} automatic;