diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2021-11-16 16:29:23 +0200 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2021-11-23 10:29:28 +0200 |
commit | 6e02f674578e3c40ab3f140b25422ed195e4fc28 (patch) | |
tree | 34191e6693466fb89f0b7d7c599dbd7b8c40feba /src | |
parent | 8d9b39f8ad30c9649096bd3829f220ab90f6054d (diff) |
ipa: ipu3: agc: Rename currentYGain
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@ideasonboard.com>
Reviewed-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/ipa/ipu3/algorithms/agc.cpp | 32 | ||||
-rw-r--r-- | 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 9cd2ded5..2d196fd6 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 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 943c354a..0c868d67 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_; |