[v2,06/16] libipa: exposure_mode_helper: Remove unnecessary clamp calls
diff mbox series

Message ID 20250808141315.413839-7-stefan.klug@ideasonboard.com
State Superseded
Headers show
Series
  • Implement WDR algorithm
Related show

Commit Message

Stefan Klug Aug. 8, 2025, 2:12 p.m. UTC
Except for the first iteration of the loop and in the case of an empty
gains_ vector, the values were run through clamp two times which is
unnecessary. Remove that by clamping the initial value.

Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>
---
 src/ipa/libipa/exposure_mode_helper.cpp | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

Comments

Dan Scally Aug. 11, 2025, 3:05 p.m. UTC | #1
Hi Stefan

On 08/08/2025 15:12, Stefan Klug wrote:
> Except for the first iteration of the loop and in the case of an empty
> gains_ vector, the values were run through clamp two times which is
> unnecessary. Remove that by clamping the initial value.
> 
> Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>
> ---

Not sure why I got so clamp-happy...as far as I can see this is fine:

Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com>

>   src/ipa/libipa/exposure_mode_helper.cpp | 10 +++++-----
>   1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/src/ipa/libipa/exposure_mode_helper.cpp b/src/ipa/libipa/exposure_mode_helper.cpp
> index 3c758851679f..7d470ebe487c 100644
> --- a/src/ipa/libipa/exposure_mode_helper.cpp
> +++ b/src/ipa/libipa/exposure_mode_helper.cpp
> @@ -197,8 +197,8 @@ ExposureModeHelper::splitExposure(utils::Duration exposure) const
>   		return { minExposureTime_, minGain_, exposure / (minExposureTime_ * minGain_) };
>   
>   	utils::Duration exposureTime;
> -	double stageGain = 1.0;
> -	double lastStageGain = 1.0;
> +	double stageGain = clampGain(1.0);
> +	double lastStageGain = stageGain;
>   	double gain;
>   
>   	for (unsigned int stage = 0; stage < gains_.size(); stage++) {
> @@ -215,7 +215,7 @@ ExposureModeHelper::splitExposure(utils::Duration exposure) const
>   
>   		/* Clamp the gain to lastStageGain and regulate exposureTime. */
>   		if (stageExposureTime * lastStageGain >= exposure) {
> -			exposureTime = clampExposureTime(exposure / clampGain(lastStageGain));
> +			exposureTime = clampExposureTime(exposure / lastStageGain);
>   			gain = clampGain(exposure / exposureTime);
>   
>   			return { exposureTime, gain, exposure / (exposureTime * gain) };
> @@ -223,7 +223,7 @@ ExposureModeHelper::splitExposure(utils::Duration exposure) const
>   
>   		/* Clamp the exposureTime to stageExposureTime and regulate gain. */
>   		if (stageExposureTime * stageGain >= exposure) {
> -			exposureTime = clampExposureTime(stageExposureTime);
> +			exposureTime = stageExposureTime;
>   			gain = clampGain(exposure / exposureTime);
>   
>   			return { exposureTime, gain, exposure / (exposureTime * gain) };
> @@ -239,7 +239,7 @@ ExposureModeHelper::splitExposure(utils::Duration exposure) const
>   	 * stages to use then the default stageGain of 1.0 is used so that
>   	 * exposure time is maxed before gain is touched at all.
>   	 */
> -	exposureTime = clampExposureTime(exposure / clampGain(stageGain));
> +	exposureTime = clampExposureTime(exposure / stageGain);
>   	gain = clampGain(exposure / exposureTime);
>   
>   	return { exposureTime, gain, exposure / (exposureTime * gain) };

Patch
diff mbox series

diff --git a/src/ipa/libipa/exposure_mode_helper.cpp b/src/ipa/libipa/exposure_mode_helper.cpp
index 3c758851679f..7d470ebe487c 100644
--- a/src/ipa/libipa/exposure_mode_helper.cpp
+++ b/src/ipa/libipa/exposure_mode_helper.cpp
@@ -197,8 +197,8 @@  ExposureModeHelper::splitExposure(utils::Duration exposure) const
 		return { minExposureTime_, minGain_, exposure / (minExposureTime_ * minGain_) };
 
 	utils::Duration exposureTime;
-	double stageGain = 1.0;
-	double lastStageGain = 1.0;
+	double stageGain = clampGain(1.0);
+	double lastStageGain = stageGain;
 	double gain;
 
 	for (unsigned int stage = 0; stage < gains_.size(); stage++) {
@@ -215,7 +215,7 @@  ExposureModeHelper::splitExposure(utils::Duration exposure) const
 
 		/* Clamp the gain to lastStageGain and regulate exposureTime. */
 		if (stageExposureTime * lastStageGain >= exposure) {
-			exposureTime = clampExposureTime(exposure / clampGain(lastStageGain));
+			exposureTime = clampExposureTime(exposure / lastStageGain);
 			gain = clampGain(exposure / exposureTime);
 
 			return { exposureTime, gain, exposure / (exposureTime * gain) };
@@ -223,7 +223,7 @@  ExposureModeHelper::splitExposure(utils::Duration exposure) const
 
 		/* Clamp the exposureTime to stageExposureTime and regulate gain. */
 		if (stageExposureTime * stageGain >= exposure) {
-			exposureTime = clampExposureTime(stageExposureTime);
+			exposureTime = stageExposureTime;
 			gain = clampGain(exposure / exposureTime);
 
 			return { exposureTime, gain, exposure / (exposureTime * gain) };
@@ -239,7 +239,7 @@  ExposureModeHelper::splitExposure(utils::Duration exposure) const
 	 * stages to use then the default stageGain of 1.0 is used so that
 	 * exposure time is maxed before gain is touched at all.
 	 */
-	exposureTime = clampExposureTime(exposure / clampGain(stageGain));
+	exposureTime = clampExposureTime(exposure / stageGain);
 	gain = clampGain(exposure / exposureTime);
 
 	return { exposureTime, gain, exposure / (exposureTime * gain) };