Add default template initialization.
Adds a flow for Metadata to initialize templates.
PartialMetadataInterfaces expose another populate method,
which use a default value getter from ControlOptionsInterfaces.
BUG: 30140438
TEST: unit tests pass
Change-Id: I1c01469dcf4d06f7c4c62ebe2acd3d9b2294a161
diff --git a/modules/camera/3_4/metadata/control.h b/modules/camera/3_4/metadata/control.h
index 7c8c6bf..c0426c1 100644
--- a/modules/camera/3_4/metadata/control.h
+++ b/modules/camera/3_4/metadata/control.h
@@ -45,6 +45,8 @@
android::CameraMetadata* metadata) const override;
virtual int PopulateDynamicFields(
android::CameraMetadata* metadata) const override;
+ virtual int PopulateTemplateRequest(
+ int template_type, android::CameraMetadata* metadata) const override;
virtual bool SupportsRequestValues(
const android::CameraMetadata& metadata) const override;
virtual int SetRequestValues(
@@ -112,6 +114,20 @@
}
template <typename T>
+int Control<T>::PopulateTemplateRequest(
+ int template_type, android::CameraMetadata* metadata) const {
+ HAL_LOG_ENTER();
+
+ // Populate with a default.
+ T value;
+ int res = options_->DefaultValueForTemplate(template_type, &value);
+ if (res) {
+ return res;
+ }
+ return UpdateMetadata(metadata, delegate_->tag(), value);
+}
+
+template <typename T>
bool Control<T>::SupportsRequestValues(
const android::CameraMetadata& metadata) const {
HAL_LOG_ENTER();