summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>2021-10-12 07:50:02 +0200
committerJean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>2021-10-22 07:29:53 +0200
commit02686a052a0c46741592079bc403b25ee716c356 (patch)
tree285a7130c08e07e4d553b2f5fc2ac3d17b5abdbc
parentfac6734a4f1de85a58963d984300f45143508b3a (diff)
ipa: ipu3: agc: Rename exposure values properly
The exposure value is filtered in filterExposure() using the currentExposure_ and setting a prevExposure_ variable. This is misnamed as it is not the previous exposure, but a filtered value. Rename it accordingly. 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>
-rw-r--r--src/ipa/ipu3/algorithms/agc.cpp28
-rw-r--r--src/ipa/ipu3/algorithms/agc.h4
2 files changed, 16 insertions, 16 deletions
diff --git a/src/ipa/ipu3/algorithms/agc.cpp b/src/ipa/ipu3/algorithms/agc.cpp
index 828e822c..62ea0916 100644
--- a/src/ipa/ipu3/algorithms/agc.cpp
+++ b/src/ipa/ipu3/algorithms/agc.cpp
@@ -49,7 +49,7 @@ static constexpr double kEvGainTarget = 0.5;
Agc::Agc()
: frameCount_(0), lastFrame_(0), iqMean_(0.0), lineDuration_(0s),
- maxExposureTime_(0s), prevExposure_(0s), prevExposureNoDg_(0s),
+ maxExposureTime_(0s), filteredExposure_(0s), filteredExposureNoDg_(0s),
currentExposure_(0s), currentExposureNoDg_(0s)
{
}
@@ -100,24 +100,24 @@ void Agc::processBrightness(const ipu3_uapi_stats_3a *stats,
void Agc::filterExposure()
{
double speed = 0.2;
- if (prevExposure_ == 0s) {
+ if (filteredExposure_ == 0s) {
/* DG stands for digital gain.*/
- prevExposure_ = currentExposure_;
- prevExposureNoDg_ = currentExposureNoDg_;
+ filteredExposure_ = currentExposure_;
+ filteredExposureNoDg_ = currentExposureNoDg_;
} else {
/*
* If we are close to the desired result, go faster to avoid making
* multiple micro-adjustments.
* \ todo: Make this customisable?
*/
- if (prevExposure_ < 1.2 * currentExposure_ &&
- prevExposure_ > 0.8 * currentExposure_)
+ if (filteredExposure_ < 1.2 * currentExposure_ &&
+ filteredExposure_ > 0.8 * currentExposure_)
speed = sqrt(speed);
- prevExposure_ = speed * currentExposure_ +
- prevExposure_ * (1.0 - speed);
- prevExposureNoDg_ = speed * currentExposureNoDg_ +
- prevExposureNoDg_ * (1.0 - speed);
+ filteredExposure_ = speed * currentExposure_ +
+ filteredExposure_ * (1.0 - speed);
+ filteredExposureNoDg_ = speed * currentExposureNoDg_ +
+ filteredExposureNoDg_ * (1.0 - speed);
}
/*
* We can't let the no_dg exposure deviate too far below the
@@ -125,10 +125,10 @@ void Agc::filterExposure()
* in the ISP to hide it (which will cause nasty oscillation).
*/
double fastReduceThreshold = 0.4;
- if (prevExposureNoDg_ <
- prevExposure_ * fastReduceThreshold)
- prevExposureNoDg_ = prevExposure_ * fastReduceThreshold;
- LOG(IPU3Agc, Debug) << "After filtering, total_exposure " << prevExposure_;
+ if (filteredExposureNoDg_ <
+ filteredExposure_ * fastReduceThreshol std::is_enum_v<T>> * = nullptr> bool setEntry(uint32_t tag, const T &data) { if (hasEntry(tag)) return updateEntry(tag, &data, 1, sizeof(T)); else return addEntry(tag, &data, 1, sizeof(T)); } template<typename T, std::enable_if_t<std