ipa: rpi: agc: Do not switch to a default if a mode is unavailable
In commit0ee9339331
, a default metering/exposure/constraint mode is used if a control sets a mode that is not listed in the camera tuning file. Setting a default mode may be undesirable in these cases, so instead keep the agc mode unchanged. This also matches the behaviour for other IPA controls where no changes are made in error conditions. Fixes:0ee9339331
("ipa: rpi: agc: Gracefully handle missing agc modes") Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: David Plowman <david.plowman@raspberrypi.com>
This commit is contained in:
parent
9c666075f3
commit
618b9aaa17
1 changed files with 10 additions and 17 deletions
|
@ -541,40 +541,33 @@ void Agc::housekeepConfig()
|
||||||
if (meteringModeName_ != status_.meteringMode) {
|
if (meteringModeName_ != status_.meteringMode) {
|
||||||
auto it = config_.meteringModes.find(meteringModeName_);
|
auto it = config_.meteringModes.find(meteringModeName_);
|
||||||
if (it == config_.meteringModes.end()) {
|
if (it == config_.meteringModes.end()) {
|
||||||
LOG(RPiAgc, Warning) << "No metering mode " << meteringModeName_
|
LOG(RPiAgc, Warning) << "No metering mode " << meteringModeName_;
|
||||||
<< ", defaulting to " << config_.defaultMeteringMode;
|
meteringModeName_ = status_.meteringMode;
|
||||||
meteringModeName_ = config_.defaultMeteringMode;
|
|
||||||
meteringMode_ = &config_.meteringModes[meteringModeName_];
|
|
||||||
} else {
|
} else {
|
||||||
meteringMode_ = &it->second;
|
meteringMode_ = &it->second;
|
||||||
}
|
|
||||||
status_.meteringMode = meteringModeName_;
|
status_.meteringMode = meteringModeName_;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (exposureModeName_ != status_.exposureMode) {
|
if (exposureModeName_ != status_.exposureMode) {
|
||||||
auto it = config_.exposureModes.find(exposureModeName_);
|
auto it = config_.exposureModes.find(exposureModeName_);
|
||||||
if (it == config_.exposureModes.end()) {
|
if (it == config_.exposureModes.end()) {
|
||||||
LOG(RPiAgc, Warning) << "No exposure profile " << exposureModeName_
|
LOG(RPiAgc, Warning) << "No exposure profile " << exposureModeName_;
|
||||||
<< ", defaulting to " << config_.defaultExposureMode;
|
exposureModeName_ = status_.exposureMode;
|
||||||
exposureModeName_ = config_.defaultExposureMode;
|
|
||||||
exposureMode_ = &config_.exposureModes[exposureModeName_];
|
|
||||||
} else {
|
} else {
|
||||||
exposureMode_ = &it->second;
|
exposureMode_ = &it->second;
|
||||||
}
|
|
||||||
status_.exposureMode = exposureModeName_;
|
status_.exposureMode = exposureModeName_;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (constraintModeName_ != status_.constraintMode) {
|
if (constraintModeName_ != status_.constraintMode) {
|
||||||
auto it =
|
auto it = config_.constraintModes.find(constraintModeName_);
|
||||||
config_.constraintModes.find(constraintModeName_);
|
|
||||||
if (it == config_.constraintModes.end()) {
|
if (it == config_.constraintModes.end()) {
|
||||||
LOG(RPiAgc, Warning) << "No constraint list " << constraintModeName_
|
LOG(RPiAgc, Warning) << "No constraint list " << constraintModeName_;
|
||||||
<< ", defaulting to " << config_.defaultConstraintMode;
|
constraintModeName_ = status_.constraintMode;
|
||||||
constraintModeName_ = config_.defaultConstraintMode;
|
|
||||||
constraintMode_ = &config_.constraintModes[constraintModeName_];
|
|
||||||
} else {
|
} else {
|
||||||
constraintMode_ = &it->second;
|
constraintMode_ = &it->second;
|
||||||
}
|
|
||||||
status_.constraintMode = constraintModeName_;
|
status_.constraintMode = constraintModeName_;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
LOG(RPiAgc, Debug) << "exposureMode "
|
LOG(RPiAgc, Debug) << "exposureMode "
|
||||||
<< exposureModeName_ << " constraintMode "
|
<< exposureModeName_ << " constraintMode "
|
||||||
<< constraintModeName_ << " meteringMode "
|
<< constraintModeName_ << " meteringMode "
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue