@@ -71,8 +71,7 @@ void Agc::updateExposure(IPAContext &context, IPAFrameContext &frameContext, dou
}
if (exposureMSV > kExposureOptimal + kExposureSatisfactory) {
- if (exposure == context.configuration.agc.exposureMax &&
- again > context.configuration.agc.againMin) {
+ if (again > context.configuration.agc.again10) {
next = again * kExpNumeratorDown / kExpDenominator;
if (again - next < context.configuration.agc.againMinStep)
again -= context.configuration.agc.againMinStep;
@@ -28,7 +28,7 @@ struct IPASessionConfiguration {
float gamma;
struct {
int32_t exposureMin, exposureMax;
- double againMin, againMax, againMinStep;
+ double againMin, againMax, again10, againMinStep;
utils::Duration lineDuration;
} agc;
struct {
@@ -216,10 +216,12 @@ int IPASoftSimple::configure(const IPAConfigInfo &configInfo)
int32_t againMin = gainInfo.min().get<int32_t>();
int32_t againMax = gainInfo.max().get<int32_t>();
+ int32_t againDef = gainInfo.def().get<int32_t>();
if (camHelper_) {
context_.configuration.agc.againMin = camHelper_->gain(againMin);
context_.configuration.agc.againMax = camHelper_->gain(againMax);
+ context_.configuration.agc.again10 = camHelper_->gain(1.0);
context_.configuration.agc.againMinStep =
(context_.configuration.agc.againMax -
context_.configuration.agc.againMin) /
@@ -246,6 +248,7 @@ int IPASoftSimple::configure(const IPAConfigInfo &configInfo)
* other) we limit the range of the gain values used.
*/
context_.configuration.agc.againMax = againMax;
+ context_.configuration.agc.again10 = againDef;
if (againMin) {
context_.configuration.agc.againMin = againMin;
} else {