[v2,15/32] ipa: rkisp1: Set frameContext.agc in queueRequest for auto mode also
diff mbox series

Message ID 20260325151416.2114564-16-stefan.klug@ideasonboard.com
State New
Headers show
Series
  • rkisp1: pipeline rework for PFC
Related show

Commit Message

Stefan Klug March 25, 2026, 3:13 p.m. UTC
If the agc is in auto mode, exposure time and gain used to be set in the
frame context within prepare(). As exposure time and gain are used by
getSensorControls(0) from within start() that is too late (prepare()
hasn't run yet). Also prepare() is documented as the place to initialize
the params buffer, not the frame context. From the pipeline point of
view, prepare() gets called immediately after queueRequest(). Therefore
we can safely move setting the frame context into queueRequest() to fix
the sensor controls for start().

Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>

---

Changes in v2:
- Collected tag
---
 src/ipa/rkisp1/algorithms/agc.cpp | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Patch
diff mbox series

diff --git a/src/ipa/rkisp1/algorithms/agc.cpp b/src/ipa/rkisp1/algorithms/agc.cpp
index 1ecaff680978..fd227e2129ed 100644
--- a/src/ipa/rkisp1/algorithms/agc.cpp
+++ b/src/ipa/rkisp1/algorithms/agc.cpp
@@ -284,9 +284,13 @@  void Agc::queueRequest(IPAContext &context,
 	frameContext.agc.autoExposureEnabled = agc.autoExposureEnabled;
 	frameContext.agc.autoGainEnabled = agc.autoGainEnabled;
 
-	if (!frameContext.agc.autoExposureEnabled)
+	if (frameContext.agc.autoExposureEnabled)
+		frameContext.agc.exposure = context.activeState.agc.automatic.exposure;
+	else
 		frameContext.agc.exposure = agc.manual.exposure;
-	if (!frameContext.agc.autoGainEnabled)
+	if (frameContext.agc.autoGainEnabled)
+		frameContext.agc.gain = context.activeState.agc.automatic.gain;
+	else
 		frameContext.agc.gain = agc.manual.gain;
 
 	if (!frameContext.agc.autoExposureEnabled &&