ipa: ipu3: awb: Make the naming consistent

The variables mix the terms cell, region and zone. It can confuse the
reader, and make the algorithm more difficult to follow. Rename the
local variables to be consistent with their definitions:
- Cells are defined in Pixels
- Zones are defined in Cells
There is no "region" as such, so replace it with the correct term.

Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Jean-Michel Hautbois 2021-09-15 07:55:31 +02:00
parent a90bc0e7b2
commit e7860ce808

View file

@ -224,31 +224,34 @@ void Awb::generateZones(std::vector<RGB> &zones)
void Awb::generateAwbStats(const ipu3_uapi_stats_3a *stats, void Awb::generateAwbStats(const ipu3_uapi_stats_3a *stats,
const ipu3_uapi_grid_config &grid) const ipu3_uapi_grid_config &grid)
{ {
uint32_t regionWidth = round(grid.width / static_cast<double>(kAwbStatsSizeX)); uint32_t cellsPerZoneX = round(grid.width / static_cast<double>(kAwbStatsSizeX));
uint32_t regionHeight = round(grid.height / static_cast<double>(kAwbStatsSizeY)); uint32_t cellsPerZoneY = round(grid.height / static_cast<double>(kAwbStatsSizeY));
/* /*
* Generate a (kAwbStatsSizeX x kAwbStatsSizeY) array from the IPU3 grid which is * Generate a (kAwbStatsSizeX x kAwbStatsSizeY) array from the IPU3 grid which is
* (grid.width x grid.height). * (grid.width x grid.height).
*/ */
for (unsigned int j = 0; j < kAwbStatsSizeY * regionHeight; j++) { for (unsigned int cellY = 0; cellY < kAwbStatsSizeY * cellsPerZoneY; cellY++) {
for (unsigned int i = 0; i < kAwbStatsSizeX * regionWidth; i++) { for (unsigned int cellX = 0; cellX < kAwbStatsSizeX * cellsPerZoneX; cellX++) {
uint32_t cellPosition = j * grid.width + i; uint32_t cellPosition = (cellY * grid.width + cellX)
uint32_t cellX = (cellPosition / regionWidth) % kAwbStatsSizeX; * sizeof(Ipu3AwbCell);
uint32_t cellY = ((cellPosition / grid.width) / regionHeight) % kAwbStatsSizeY; uint32_t zoneX = cellX / cellsPerZoneX;
uint32_t zoneY = cellY / cellsPerZoneY;
uint32_t awbRegionPosition = cellY * kAwbStatsSizeX + cellX; uint32_t awbZonePosition = zoneY * kAwbStatsSizeX + zoneX;
cellPosition *= 8;
/* Cast the initial IPU3 structure to simplify the reading */ /* Cast the initial IPU3 structure to simplify the reading */
Ipu3AwbCell *currentCell = reinterpret_cast<Ipu3AwbCell *>(const_cast<uint8_t *>(&stats->awb_raw_buffer.meta_data[cellPosition])); const Ipu3AwbCell *currentCell =
reinterpret_cast<const Ipu3AwbCell *>(
&stats->awb_raw_buffer.meta_data[cellPosition]
);
if (currentCell->satRatio == 0) { if (currentCell->satRatio == 0) {
/* The cell is not saturated, use the current cell */ /* The cell is not saturated, use the current cell */
awbStats_[awbRegionPosition].counted++; awbStats_[awbZonePosition].counted++;
uint32_t greenValue = currentCell->greenRedAvg + currentCell->greenBlueAvg; uint32_t greenValue = currentCell->greenRedAvg + currentCell->greenBlueAvg;
awbStats_[awbRegionPosition].sum.green += greenValue / 2; awbStats_[awbZonePosition].sum.green += greenValue / 2;
awbStats_[awbRegionPosition].sum.red += currentCell->redAvg; awbStats_[awbZonePosition].sum.red += currentCell->redAvg;
awbStats_[awbRegionPosition].sum.blue += currentCell->blueAvg; awbStats_[awbZonePosition].sum.blue += currentCell->blueAvg;
} }
} }
} }