[v3,05/19] libipa: exposure_mode_helper: Remove double calculation of lastStageGain
diff mbox series

Message ID 20250815102945.1602071-6-stefan.klug@ideasonboard.com
State New
Headers show
Series
  • Implement WDR algorithm
Related show

Commit Message

Stefan Klug Aug. 15, 2025, 10:29 a.m. UTC
lastStageGain gets recalculated unconditionally even though it is the
stageGain of the last stage. Refactor for increased simplicity and
efficiency.

Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com>

---

Changes in v3:
- Collected tags
---
 src/ipa/libipa/exposure_mode_helper.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Paul Elder Sept. 5, 2025, 10:42 a.m. UTC | #1
Quoting Stefan Klug (2025-08-15 19:29:25)
> lastStageGain gets recalculated unconditionally even though it is the
> stageGain of the last stage. Refactor for increased simplicity and
> efficiency.
> 
> Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>
> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
> Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com>

Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>

> 
> ---
> 
> Changes in v3:
> - Collected tags
> ---
>  src/ipa/libipa/exposure_mode_helper.cpp | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/src/ipa/libipa/exposure_mode_helper.cpp b/src/ipa/libipa/exposure_mode_helper.cpp
> index b18c30a6291c..cd81503e07d6 100644
> --- a/src/ipa/libipa/exposure_mode_helper.cpp
> +++ b/src/ipa/libipa/exposure_mode_helper.cpp
> @@ -198,10 +198,10 @@ ExposureModeHelper::splitExposure(utils::Duration exposure) const
>  
>         utils::Duration exposureTime;
>         double stageGain = 1.0;
> +       double lastStageGain = 1.0;
>         double gain;
>  
>         for (unsigned int stage = 0; stage < gains_.size(); stage++) {
> -               double lastStageGain = stage == 0 ? 1.0 : clampGain(gains_[stage - 1]);
>                 utils::Duration stageExposureTime = clampExposureTime(exposureTimes_[stage]);
>                 stageGain = clampGain(gains_[stage]);
>  
> @@ -228,6 +228,8 @@ ExposureModeHelper::splitExposure(utils::Duration exposure) const
>  
>                         return { exposureTime, gain, exposure / (exposureTime * gain) };
>                 }
> +
> +               lastStageGain = stageGain;
>         }
>  
>         /*
> -- 
> 2.48.1
>

Patch
diff mbox series

diff --git a/src/ipa/libipa/exposure_mode_helper.cpp b/src/ipa/libipa/exposure_mode_helper.cpp
index b18c30a6291c..cd81503e07d6 100644
--- a/src/ipa/libipa/exposure_mode_helper.cpp
+++ b/src/ipa/libipa/exposure_mode_helper.cpp
@@ -198,10 +198,10 @@  ExposureModeHelper::splitExposure(utils::Duration exposure) const
 
 	utils::Duration exposureTime;
 	double stageGain = 1.0;
+	double lastStageGain = 1.0;
 	double gain;
 
 	for (unsigned int stage = 0; stage < gains_.size(); stage++) {
-		double lastStageGain = stage == 0 ? 1.0 : clampGain(gains_[stage - 1]);
 		utils::Duration stageExposureTime = clampExposureTime(exposureTimes_[stage]);
 		stageGain = clampGain(gains_[stage]);
 
@@ -228,6 +228,8 @@  ExposureModeHelper::splitExposure(utils::Duration exposure) const
 
 			return { exposureTime, gain, exposure / (exposureTime * gain) };
 		}
+
+		lastStageGain = stageGain;
 	}
 
 	/*