Only provide templates for supported capabilities

Plugs in the StaticProperties class for ease of accessing the
static metadata.

Expands StaticProperties to handle checking template support.

Test: Unit tests pass, test app runs, fixes 2 failing CTS tests on rpi3
BUG: b/32951283
Change-Id: I3077a3507751c3072b88f7d91902bdaa5b53c30e
diff --git a/modules/camera/3_4/static_properties.h b/modules/camera/3_4/static_properties.h
index a687a80..25c8205 100644
--- a/modules/camera/3_4/static_properties.h
+++ b/modules/camera/3_4/static_properties.h
@@ -51,6 +51,11 @@
   // except that it may return nullptr in case of failure (missing entries).
   static StaticProperties* NewStaticProperties(
       std::unique_ptr<const MetadataReader> metadata_reader);
+  static StaticProperties* NewStaticProperties(
+      std::unique_ptr<android::CameraMetadata> metadata) {
+    return NewStaticProperties(
+        std::make_unique<MetadataReader>(std::move(metadata)));
+  }
   virtual ~StaticProperties(){};
 
   // Simple accessors.
@@ -62,6 +67,8 @@
     return metadata_reader_->raw_metadata();
   };
 
+  // Check if a given template type is supported.
+  bool TemplateSupported(int type);
   // Validators (check that values are consistent with the capabilities
   // this object represents/base requirements of the camera HAL).
   bool StreamConfigurationSupported(
@@ -81,6 +88,7 @@
                    int32_t max_raw_output_streams,
                    int32_t max_non_stalling_output_streams,
                    int32_t max_stalling_output_streams,
+                   std::set<uint8_t> request_capabilities,
                    CapabilitiesMap stream_capabilities,
                    ReprocessFormatMap supported_reprocess_outputs);
 
@@ -101,6 +109,7 @@
   const int32_t max_raw_output_streams_;
   const int32_t max_non_stalling_output_streams_;
   const int32_t max_stalling_output_streams_;
+  const std::set<uint8_t> request_capabilities_;
   const CapabilitiesMap stream_capabilities_;
   const ReprocessFormatMap supported_reprocess_outputs_;