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

Kieran Bingham kieran.bingham at ideasonboard.com
Mon Nov 22 15:48:40 CET 2021


Quoting Laurent Pinchart (2021-11-19 21:02:37)
> 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.

clang-tidy seems to have extra methods to be able to validate variable
name 'style's. Including the ability to ensure things like a postfix on
private member variables.

clang-tidy requires going through the compiler though, so needs a build
- and might not be so easy to integrate to checkstyle. (It's also a lot
slower, so more appropriate for some integration time, or server side
checks).

anyway,

Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

> 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 9cd2ded501ed..2d196fd63c7e 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 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