[libcamera-devel] [PATCH v6 5/5] ipa: ipu3: awb: Make the naming consistent

Kieran Bingham kieran.bingham at ideasonboard.com
Thu Sep 9 16:33:16 CEST 2021


On 09/09/2021 15:19, Kieran Bingham wrote:
> On 09/09/2021 14:54, Jean-Michel Hautbois wrote:
>> 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 consistent with their definitions:
>> - Cells are defined in Pixels
>> - Zones are defined in Cells
>>
>> Their is no "region" as such, so replace it with the correct term.
> 
> s/Their/There/
> 
> Can be fixed before merging. No need for a resend only on that.
> 
> 
> 
>> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois at ideasonboard.com>
>> ---
>>  src/ipa/ipu3/algorithms/awb.cpp | 22 +++++++++++-----------
>>  1 file changed, 11 insertions(+), 11 deletions(-)
>>
>> diff --git a/src/ipa/ipu3/algorithms/awb.cpp b/src/ipa/ipu3/algorithms/awb.cpp
>> index cf97208f..fd68b359 100644
>> --- a/src/ipa/ipu3/algorithms/awb.cpp
>> +++ b/src/ipa/ipu3/algorithms/awb.cpp
>> @@ -222,30 +222,30 @@ void Awb::generateZones(std::vector<RGB> &zones)
> 
> Locally I have a comment here:
> 
> /* Translate the IPU3 statistics into the default statistics region array */
> 
> Does that need updating? (only because I searched for "region".
> 
> It still seems to make sense in that context, so I don't think it needs
> to change unless you think it's now inaccurate.

Never mind, I now see that's done in this series already.

--
Kieran


> 
> Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> 
> 
>>  void Awb::generateAwbStats(const ipu3_uapi_stats_3a *stats,
>>  			   const ipu3_uapi_grid_config &grid)
>>  {
>> -	uint32_t regionWidth = round(grid.width / static_cast<double>(kAwbStatsSizeX));
>> -	uint32_t regionHeight = round(grid.height / static_cast<double>(kAwbStatsSizeY));
>> +	uint32_t cellWidth = round(grid.width / static_cast<double>(kAwbStatsSizeX));
>> +	uint32_t cellHeight = round(grid.height / static_cast<double>(kAwbStatsSizeY));
>>  
>>  	/*
>>  	 * Generate a (kAwbStatsSizeX x kAwbStatsSizeY) array from the IPU3 grid which is
>>  	 * (grid.width x grid.height).
>>  	 */
>> -	for (unsigned int j = 0; j < kAwbStatsSizeY * regionHeight; j++) {
>> -		for (unsigned int i = 0; i < kAwbStatsSizeX * regionWidth; i++) {
>> +	for (unsigned int j = 0; j < kAwbStatsSizeY * cellHeight; j++) {
>> +		for (unsigned int i = 0; i < kAwbStatsSizeX * cellWidth; i++) {
>>  			uint32_t cellPosition = j * grid.width + i;
>> -			uint32_t cellX = (cellPosition / regionWidth) % kAwbStatsSizeX;
>> -			uint32_t cellY = ((cellPosition / grid.width) / regionHeight) % kAwbStatsSizeY;
>> +			uint32_t cellX = (cellPosition / cellWidth) % kAwbStatsSizeX;
>> +			uint32_t cellY = ((cellPosition / grid.width) / cellHeight) % kAwbStatsSizeY;
>>  
>> -			uint32_t awbRegionPosition = cellY * kAwbStatsSizeX + cellX;
>> +			uint32_t awbZonePosition = cellY * kAwbStatsSizeX + cellX;
>>  
>>  			/* Cast the initial IPU3 structure to simplify the reading */
>>  			const ipu3_uapi_awb_set_item *currentCell = &stats->awb_raw_buffer.meta_data[cellPosition];
>>  			if (currentCell->sat_ratio == 0) {
>>  				/* The cell is not saturated, use the current cell */
>> -				awbStats_[awbRegionPosition].counted++;
>> +				awbStats_[awbZonePosition].counted++;
>>  				uint32_t greenValue = currentCell->Gr_avg + currentCell->Gb_avg;
>> -				awbStats_[awbRegionPosition].sum.green += greenValue / 2;
>> -				awbStats_[awbRegionPosition].sum.red += currentCell->R_avg;
>> -				awbStats_[awbRegionPosition].sum.blue += currentCell->B_avg;
>> +				awbStats_[awbZonePosition].sum.green += greenValue / 2;
>> +				awbStats_[awbZonePosition].sum.red += currentCell->R_avg;
>> +				awbStats_[awbZonePosition].sum.blue += currentCell->B_avg;
>>  			}
>>  		}
>>  	}
>>

-- 
Regards
--
Kieran


More information about the libcamera-devel mailing list