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>
This commit is contained in:
parent
8d9b39f8ad
commit
6e02f67457
2 changed files with 18 additions and 18 deletions
|
@ -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_++;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue