[libcamera-devel] [PATCH 3/5] ipa: ipu3: agc: Rename currentYGain

Laurent Pinchart laurent.pinchart at ideasonboard.com
Tue Nov 16 17:26:13 CET 2021


The "current" prefix in the currentYGain variable name is confusing:

- In Agc::estimateLuminance(), the variable contains the gain to be
  applied to the image, which is neither a "current" gain nor a "Y"
  gain. Rename it to "gain".

- In Agc::computeExposure(), the variable contains the gain computed by
  the relative luminance method, so rename it to "yGain".

While at it, rename variables to match the libcamera coding style.

Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
 src/ipa/ipu3/algorithms/agc.cpp | 32 ++++++++++++++++----------------
 src/ipa/ipu3/algorithms/agc.h   |  4 ++--
 2 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/src/ipa/ipu3/algorithms/agc.cpp b/src/ipa/ipu3/algorithms/agc.cpp
index d5840fb0aa97..6aab9fd5ebb5 100644
--- a/src/ipa/ipu3/algorithms/agc.cpp
+++ b/src/ipa/ipu3/algorithms/agc.cpp
@@ -173,9 +173,9 @@ void Agc::filterExposure()
 /**
  * \brief Estimate the new exposure and gain values
  * \param[inout] frameContext The shared IPA frame Context
- * \param[in] currentYGain The gain calculated on the current brightness level
+ * \param[in] yGain The gain calculated based on the relative luminance target
  */
-void Agc::computeExposure(IPAFrameContext &frameContext, double currentYGain)
+void Agc::computeExposure(IPAFrameContext &frameContext, double yGain)
 {
 	/* Get the effective exposure and gain applied on the sensor. */
 	uint32_t exposure = frameContext.sensor.exposure;
@@ -189,8 +189,8 @@ void Agc::computeExposure(IPAFrameContext &frameContext, double currentYGain)
 	 */
 	double evGain = kEvGainTarget * knumHistogramBins / iqMean_;
 
-	if (evGain < currentYGain)
-		evGain = currentYGain;
+	if (evGain < yGain)
+		evGain = yGain;
 
 	/* Consider within 1% of the target as correctly exposed */
 	if (std::abs(evGain - 1.0) < 0.01)
@@ -254,7 +254,7 @@ void Agc::computeExposure(IPAFrameContext &frameContext, double currentYGain)
  * \param[in] frameContext The shared IPA frame context
  * \param[in] grid The grid used to store the statistics in the IPU3
  * \param[in] stats The IPU3 statistics and ISP results
- * \param[in] currentYGain The gain calculated on the current brightness level
+ * \param[in] gain The analogue gain to apply to the frame
  * \return The relative luminance
  *
  * Luma is the weighted sum of gamma-compressed R′G′B′ components of a color
@@ -268,7 +268,7 @@ void Agc::computeExposure(IPAFrameContext &frameContext, double currentYGain)
 double Agc::estimateLuminance(IPAFrameContext &frameContext,
 			      const ipu3_uapi_grid_config &grid,
 			      const ipu3_uapi_stats_3a *stats,
-			      double currentYGain)
+			      double gain)
 {
 	double redSum = 0, greenSum = 0, blueSum = 0;
 
@@ -281,9 +281,9 @@ double Agc::estimateLuminance(IPAFrameContext &frameContext,
 					&stats->awb_raw_buffer.meta_data[cellPosition]
 				);
 
-			redSum += cell->R_avg * currentYGain;
-			greenSum += (cell->Gr_avg + cell->Gb_avg) / 2 * currentYGain;
-			blueSum += cell->B_avg * currentYGain;
+			redSum += cell->R_avg * gain;
+			greenSum += (cell->Gr_avg + cell->Gb_avg) / 2 * gain;
+			blueSum += cell->B_avg * gain;
 		}
 	}
 
@@ -310,7 +310,7 @@ void Agc::process(IPAContext &context, const ipu3_uapi_stats_3a *stats)
 {
 	measureBrightness(stats, context.configuration.grid.bdsGrid);
 
-	double currentYGain = 1.0;
+	double yGain = 1.0;
 	double yTarget = kRelativeLuminanceTarget;
 
 	/*
@@ -320,18 +320,18 @@ void Agc::process(IPAContext &context, const ipu3_uapi_stats_3a *stats)
 	for (unsigned int i = 0; i < 8; i++) {
 		double yValue = estimateLuminance(context.frameContext,
 						  context.configuration.grid.bdsGrid,
-						  stats, currentYGain);
-		double extra_gain = std::min(10.0, yTarget / (yValue + .001));
+						  stats, yGain);
+		double extraGain = std::min(10.0, yTarget / (yValue + .001));
 
-		currentYGain *= extra_gain;
+		yGain *= extraGain;
 		LOG(IPU3Agc, Debug) << "Y value: " << yValue
 				    << ", Y target: " << yTarget
-				    << ", gives gain " << currentYGain;
-		if (extra_gain < 1.01)
+				    << ", gives gain " << yGain;
+		if (extraGain < 1.01)
 			break;
 	}
 
-	computeExposure(context.frameContext, currentYGain);
+	computeExposure(context.frameContext, yGain);
 	frameCount_++;
 }
 
diff --git a/src/ipa/ipu3/algorithms/agc.h b/src/ipa/ipu3/algorithms/agc.h
index 943c354a820e..0c868d6737f1 100644
--- a/src/ipa/ipu3/algorithms/agc.h
+++ b/src/ipa/ipu3/algorithms/agc.h
@@ -34,11 +34,11 @@ private:
 	void measureBrightness(const ipu3_uapi_stats_3a *stats,
 			       const ipu3_uapi_grid_config &grid);
 	void filterExposure();
-	void computeExposure(IPAFrameContext &frameContext, double currentYGain);
+	void computeExposure(IPAFrameContext &frameContext, double yGain);
 	double estimateLuminance(IPAFrameContext &frameContext,
 				 const ipu3_uapi_grid_config &grid,
 				 const ipu3_uapi_stats_3a *stats,
-				 double currentYGain);
+				 double gain);
 
 	uint64_t frameCount_;
 
-- 
Regards,

Laurent Pinchart



More information about the libcamera-devel mailing list