[libcamera-devel] [PATCH 7/7] android: Add CONTROL_MODE_OFF in template and static metadata
Paul Elder
paul.elder at ideasonboard.com
Tue Nov 23 11:40:42 CET 2021
Add CONTROL_MODE_OFF to the available control modes in static metadata,
if both AE off and AWB off are available. Also set CONTROL_MODE_OFF in
the manual template.
Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
---
src/android/camera_capabilities.cpp | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp
index f7397d27..5d90047b 100644
--- a/src/android/camera_capabilities.cpp
+++ b/src/android/camera_capabilities.cpp
@@ -999,7 +999,17 @@ int CameraCapabilities::initializeStaticMetadata()
staticMetadata_->addEntry(ANDROID_CONTROL_AWB_LOCK_AVAILABLE,
awbLockAvailable);
- char availableControlModes = ANDROID_CONTROL_MODE_AUTO;
+ /*
+ * \todo Get this from some combination of the available AE and AWB
+ * modes
+ */
+ std::vector<uint8_t> availableControlModes = { ANDROID_CONTROL_MODE_AUTO };
+ if (staticMetadata_->entryContains<uint8_t>(ANDROID_CONTROL_AE_AVAILABLE_MODES,
+ ANDROID_CONTROL_AE_MODE_OFF) &&
+ staticMetadata_->entryContains<uint8_t>(ANDROID_CONTROL_AWB_AVAILABLE_MODES,
+ ANDROID_CONTROL_AWB_MODE_OFF)) {
+ availableControlModes.push_back(ANDROID_CONTROL_MODE_OFF);
+ }
staticMetadata_->addEntry(ANDROID_CONTROL_AVAILABLE_MODES,
availableControlModes);
@@ -1467,6 +1477,12 @@ std::unique_ptr<CameraMetadata> CameraCapabilities::requestTemplateManual() cons
if (!manualTemplate)
return nullptr;
+ if (staticMetadata_->entryContains<uint8_t>(ANDROID_CONTROL_AVAILABLE_MODES,
+ ANDROID_CONTROL_MODE_OFF)) {
+ uint8_t mode = ANDROID_CONTROL_MODE_OFF;
+ manualTemplate->appendEntry(ANDROID_CONTROL_MODE, mode);
+ }
+
return manualTemplate;
}
--
2.27.0
More information about the libcamera-devel
mailing list