<div dir="ltr"><div>Hi Paul, thank you for this patch,</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, May 12, 2021 at 7:25 PM Paul Elder <<a href="mailto:paul.elder@ideasonboard.com">paul.elder@ideasonboard.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Now that CameraMetadata supports more convenient functions, use those<br>
instead.<br>
<br>
Signed-off-by: Paul Elder <<a href="mailto:paul.elder@ideasonboard.com" target="_blank">paul.elder@ideasonboard.com</a>><br>
<br>
---<br>
New in v3<br>
---<br>
 src/android/camera_device.cpp | 241 +++++++++++++++-------------------<br>
 1 file changed, 105 insertions(+), 136 deletions(-)<br>
<br>
diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp<br>
index 74f6915c..1bafb339 100644<br>
--- a/src/android/camera_device.cpp<br>
+++ b/src/android/camera_device.cpp<br>
@@ -803,7 +803,7 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  data.push_back(ANDROID_COLOR_CORRECTION_ABERRATION_MODE_OFF);<br>
  Â  Â  Â  Â  Â  Â  Â  }<br>
  Â  Â  Â  Â  Â  Â  Â  staticMetadata_->addEntry(ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â data.data(), data.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â data);<br>
  Â  Â  Â  }<br>
<br>
  Â  Â  Â  /* Control static metadata. */<br>
@@ -814,15 +814,13 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()<br>
  Â  Â  Â  Â  Â  Â  Â  ANDROID_CONTROL_AE_ANTIBANDING_MODE_AUTO,<br>
  Â  Â  Â  };<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â aeAvailableAntiBandingModes.data(),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â aeAvailableAntiBandingModes.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â aeAvailableAntiBandingModes);<br>
<br>
  Â  Â  Â  std::vector<uint8_t> aeAvailableModes = {<br>
  Â  Â  Â  Â  Â  Â  Â  ANDROID_CONTROL_AE_MODE_ON,<br>
  Â  Â  Â  };<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_CONTROL_AE_AVAILABLE_MODES,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â aeAvailableModes.data(),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â aeAvailableModes.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â aeAvailableModes);<br>
<br>
  Â  Â  Â  int64_t minFrameDurationNsec = -1;<br>
  Â  Â  Â  int64_t maxFrameDurationNsec = -1;<br>
@@ -871,8 +869,7 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()<br>
  Â  Â  Â  Â  Â  Â  Â  0, 0,<br>
  Â  Â  Â  };<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_CONTROL_AE_COMPENSATION_RANGE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â aeCompensationRange.data(),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â aeCompensationRange.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â aeCompensationRange);<br>
<br>
  Â  Â  Â  const camera_metadata_rational_t aeCompensationStep[] = {<br>
  Â  Â  Â  Â  Â  Â  Â  { 0, 1 }<br>
@@ -884,29 +881,25 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()<br>
  Â  Â  Â  Â  Â  Â  Â  ANDROID_CONTROL_AF_MODE_OFF,<br>
  Â  Â  Â  };<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_CONTROL_AF_AVAILABLE_MODES,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableAfModes.data(),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableAfModes.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableAfModes);<br>
<br>
  Â  Â  Â  std::vector<uint8_t> availableEffects = {<br>
  Â  Â  Â  Â  Â  Â  Â  ANDROID_CONTROL_EFFECT_MODE_OFF,<br>
  Â  Â  Â  };<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_CONTROL_AVAILABLE_EFFECTS,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableEffects.data(),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableEffects.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableEffects);<br>
<br>
  Â  Â  Â  std::vector<uint8_t> availableSceneModes = {<br>
  Â  Â  Â  Â  Â  Â  Â  ANDROID_CONTROL_SCENE_MODE_DISABLED,<br>
  Â  Â  Â  };<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_CONTROL_AVAILABLE_SCENE_MODES,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableSceneModes.data(),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableSceneModes.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableSceneModes);<br>
<br>
  Â  Â  Â  std::vector<uint8_t> availableStabilizationModes = {<br>
  Â  Â  Â  Â  Â  Â  Â  ANDROID_CONTROL_VIDEO_STABILIZATION_MODE_OFF,<br>
  Â  Â  Â  };<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableStabilizationModes.data(),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableStabilizationModes.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableStabilizationModes);<br>
<br>
  Â  Â  Â  /*<br>
  Â  Â  Â  Â * \todo Inspect the Camera capabilities to report the available<br>
@@ -916,15 +909,13 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()<br>
  Â  Â  Â  Â  Â  Â  Â  ANDROID_CONTROL_AWB_MODE_AUTO,<br>
  Â  Â  Â  };<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_CONTROL_AWB_AVAILABLE_MODES,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableAwbModes.data(),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableAwbModes.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableAwbModes);<br>
<br>
  Â  Â  Â  std::vector<int32_t> availableMaxRegions = {<br>
  Â  Â  Â  Â  Â  Â  Â  0, 0, 0,<br>
  Â  Â  Â  };<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_CONTROL_MAX_REGIONS,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableMaxRegions.data(),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableMaxRegions.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableMaxRegions);<br>
<br>
  Â  Â  Â  std::vector<uint8_t> sceneModesOverride = {<br>
  Â  Â  Â  Â  Â  Â  Â  ANDROID_CONTROL_AE_MODE_ON,<br>
@@ -932,20 +923,19 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()<br>
  Â  Â  Â  Â  Â  Â  Â  ANDROID_CONTROL_AF_MODE_OFF,<br>
  Â  Â  Â  };<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_CONTROL_SCENE_MODE_OVERRIDES,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â sceneModesOverride.data(),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â sceneModesOverride.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â sceneModesOverride);<br>
<br>
  Â  Â  Â  uint8_t aeLockAvailable = ANDROID_CONTROL_AE_LOCK_AVAILABLE_FALSE;<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_CONTROL_AE_LOCK_AVAILABLE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &aeLockAvailable, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â aeLockAvailable);<br>
<br>
  Â  Â  Â  uint8_t awbLockAvailable = ANDROID_CONTROL_AWB_LOCK_AVAILABLE_FALSE;<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_CONTROL_AWB_LOCK_AVAILABLE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &awbLockAvailable, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â awbLockAvailable);<br>
<br>
  Â  Â  Â  char availableControlModes = ANDROID_CONTROL_MODE_AUTO;<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_CONTROL_AVAILABLE_MODES,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &availableControlModes, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableControlModes);<br>
<br>
  Â  Â  Â  /* JPEG static metadata. */<br>
<br>
@@ -983,9 +973,9 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()<br>
  Â  Â  Â  Â  Â  Â  Â  thumbnailEntries.push_back(size.height);<br>
  Â  Â  Â  }<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â thumbnailEntries.data(), thumbnailEntries.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â thumbnailEntries);<br>
<br>
-  Â  Â  Â staticMetadata_->addEntry(ANDROID_JPEG_MAX_SIZE, &maxJpegBufferSize_, 1);<br>
+  Â  Â  Â staticMetadata_->addEntry(ANDROID_JPEG_MAX_SIZE, maxJpegBufferSize_);<br>
<br>
  Â  Â  Â  /* Sensor static metadata. */<br>
  Â  Â  Â  std::array<int32_t, 2> pixelArraySize;<br>
@@ -994,7 +984,7 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()<br>
  Â  Â  Â  Â  Â  Â  Â  pixelArraySize[0] = size.width;<br>
  Â  Â  Â  Â  Â  Â  Â  pixelArraySize[1] = size.height;<br>
  Â  Â  Â  Â  Â  Â  Â  staticMetadata_->addEntry(ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â pixelArraySize.data(), pixelArraySize.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â pixelArraySize.data(), 2);<br>
  Â  Â  Â  }<br>
<br>
  Â  Â  Â  if (properties.contains(properties::UnitCellSize)) {<br>
@@ -1004,7 +994,7 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  cellSize.height * pixelArraySize[1] / 1e6f<br>
  Â  Â  Â  Â  Â  Â  Â  };<br>
  Â  Â  Â  Â  Â  Â  Â  staticMetadata_->addEntry(ANDROID_SENSOR_INFO_PHYSICAL_SIZE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â physicalSize.data(), physicalSize.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â physicalSize.data(), 2);<br>
  Â  Â  Â  }<br>
<br>
  Â  Â  Â  {<br>
@@ -1017,20 +1007,20 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  static_cast<int32_t>(rects[0].height),<br>
  Â  Â  Â  Â  Â  Â  Â  };<br>
  Â  Â  Â  Â  Â  Â  Â  staticMetadata_->addEntry(ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â data.data(), data.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â data);<br>
  Â  Â  Â  }<br>
<br>
  Â  Â  Â  int32_t sensitivityRange[] = {<br>
  Â  Â  Â  Â  Â  Â  Â  32, 2400,<br>
  Â  Â  Â  };<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_SENSOR_INFO_SENSITIVITY_RANGE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &sensitivityRange, 2);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â sensitivityRange, 2);<br>
<br>
  Â  Â  Â  /* Report the color filter arrangement if the camera reports it. */<br>
  Â  Â  Â  if (properties.contains(properties::draft::ColorFilterArrangement)) {<br>
  Â  Â  Â  Â  Â  Â  Â  uint8_t filterArr = properties.get(properties::draft::ColorFilterArrangement);<br>
  Â  Â  Â  Â  Â  Â  Â  staticMetadata_->addEntry(ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &filterArr, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â filterArr);<br>
  Â  Â  Â  }<br>
<br>
  Â  Â  Â  const auto &exposureInfo = controlsInfo.find(&controls::ExposureTime);<br>
@@ -1040,25 +1030,24 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  exposureInfo->second.max().get<int32_t>() * 1000LL,<br>
  Â  Â  Â  Â  Â  Â  Â  };<br>
  Â  Â  Â  Â  Â  Â  Â  staticMetadata_->addEntry(ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &exposureTimeRange, 2);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â exposureTimeRange, 2);<br>
  Â  Â  Â  }<br>
<br>
-  Â  Â  Â staticMetadata_->addEntry(ANDROID_SENSOR_ORIENTATION, &orientation_, 1);<br>
+  Â  Â  Â staticMetadata_->addEntry(ANDROID_SENSOR_ORIENTATION, orientation_);<br>
<br>
  Â  Â  Â  std::vector<int32_t> testPatterModes = {<br>
  Â  Â  Â  Â  Â  Â  Â  ANDROID_SENSOR_TEST_PATTERN_MODE_OFF,<br>
  Â  Â  Â  };<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_SENSOR_AVAILABLE_TEST_PATTERN_MODES,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â testPatterModes.data(),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â testPatterModes.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â testPatterModes);<br>
<br>
  Â  Â  Â  uint8_t timestampSource = ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE_UNKNOWN;<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &timestampSource, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â timestampSource);<br>
<br>
  Â  Â  Â  if (maxFrameDurationNsec > 0)<br>
  Â  Â  Â  Â  Â  Â  Â  staticMetadata_->addEntry(ANDROID_SENSOR_INFO_MAX_FRAME_DURATION,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &maxFrameDurationNsec, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â maxFrameDurationNsec);<br>
<br>
  Â  Â  Â  /* Statistics static metadata. */<br>
  Â  Â  Â  uint8_t faceDetectMode = ANDROID_STATISTICS_FACE_DETECT_MODE_OFF;<br>
@@ -1067,7 +1056,7 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()<br>
<br>
  Â  Â  Â  int32_t maxFaceCount = 0;<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_STATISTICS_INFO_MAX_FACE_COUNT,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &maxFaceCount, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â maxFaceCount);<br>
<br>
  Â  Â  Â  {<br>
  Â  Â  Â  Â  Â  Â  Â  std::vector<uint8_t> data;<br>
@@ -1080,25 +1069,24 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  data.push_back(ANDROID_STATISTICS_LENS_SHADING_MAP_MODE_OFF);<br>
  Â  Â  Â  Â  Â  Â  Â  }<br>
  Â  Â  Â  Â  Â  Â  Â  staticMetadata_->addEntry(ANDROID_STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â data.data(), data.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â data);<br>
  Â  Â  Â  }<br>
<br>
  Â  Â  Â  /* Sync static metadata. */<br>
  Â  Â  Â  int32_t maxLatency = ANDROID_SYNC_MAX_LATENCY_UNKNOWN;<br>
-  Â  Â  Â staticMetadata_->addEntry(ANDROID_SYNC_MAX_LATENCY, &maxLatency, 1);<br>
+  Â  Â  Â staticMetadata_->addEntry(ANDROID_SYNC_MAX_LATENCY, maxLatency);<br>
<br>
  Â  Â  Â  /* Flash static metadata. */<br>
  Â  Â  Â  char flashAvailable = ANDROID_FLASH_INFO_AVAILABLE_FALSE;<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_FLASH_INFO_AVAILABLE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &flashAvailable, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â flashAvailable);<br>
<br>
  Â  Â  Â  /* Lens static metadata. */<br>
  Â  Â  Â  std::vector<float> lensApertures = {<br>
  Â  Â  Â  Â  Â  Â  Â  2.53 / 100,<br>
  Â  Â  Â  };<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_LENS_INFO_AVAILABLE_APERTURES,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â lensApertures.data(),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â lensApertures.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â lensApertures);<br>
<br>
  Â  Â  Â  uint8_t lensFacing;<br>
  Â  Â  Â  switch (facing_) {<br>
@@ -1113,29 +1101,27 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()<br>
  Â  Â  Â  Â  Â  Â  Â  lensFacing = ANDROID_LENS_FACING_EXTERNAL;<br>
  Â  Â  Â  Â  Â  Â  Â  break;<br>
  Â  Â  Â  }<br>
-  Â  Â  Â staticMetadata_->addEntry(ANDROID_LENS_FACING, &lensFacing, 1);<br>
+  Â  Â  Â staticMetadata_->addEntry(ANDROID_LENS_FACING, lensFacing);<br>
<br>
-  Â  Â  Â std::vector<float> lensFocalLenghts = {<br>
+  Â  Â  Â std::vector<float> lensFocalLengths = {<br>
  Â  Â  Â  Â  Â  Â  Â  1,<br>
  Â  Â  Â  };<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_LENS_INFO_AVAILABLE_FOCAL_LENGTHS,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â lensFocalLenghts.data(),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â lensFocalLenghts.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â lensFocalLengths);<br>
<br>
  Â  Â  Â  std::vector<uint8_t> opticalStabilizations = {<br>
  Â  Â  Â  Â  Â  Â  Â  ANDROID_LENS_OPTICAL_STABILIZATION_MODE_OFF,<br>
  Â  Â  Â  };<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â opticalStabilizations.data(),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â opticalStabilizations.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â opticalStabilizations);<br>
<br>
  Â  Â  Â  float hypeFocalDistance = 0;<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &hypeFocalDistance, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â hypeFocalDistance);<br>
<br>
  Â  Â  Â  float minFocusDistance = 0;<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &minFocusDistance, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â minFocusDistance);<br>
<br>
  Â  Â  Â  /* Noise reduction modes. */<br>
  Â  Â  Â  {<br>
@@ -1149,7 +1135,7 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  data.push_back(ANDROID_NOISE_REDUCTION_MODE_OFF);<br>
  Â  Â  Â  Â  Â  Â  Â  }<br>
  Â  Â  Â  Â  Â  Â  Â  staticMetadata_->addEntry(ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â data.data(), data.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â data);<br>
  Â  Â  Â  }<br>
<br>
  Â  Â  Â  /* Scaler static metadata. */<br>
@@ -1174,7 +1160,7 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â 1.0f * max.height / min.height);<br>
  Â  Â  Â  }<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &maxZoom, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â maxZoom);<br>
<br>
  Â  Â  Â  std::vector<uint32_t> availableStreamConfigurations;<br>
  Â  Â  Â  availableStreamConfigurations.reserve(streamConfigurations_.size() * 4);<br>
@@ -1193,8 +1179,7 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()<br>
  Â  Â  Â  Â  Â  Â  Â  ANDROID_SCALER_AVAILABLE_FORMATS_BLOB, 2560, 1920, 33333333,<br>
  Â  Â  Â  };<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_SCALER_AVAILABLE_STALL_DURATIONS,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableStallDurations.data(),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableStallDurations.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableStallDurations);<br>
<br>
  Â  Â  Â  /* Use the minimum frame duration for all the YUV/RGB formats. */<br>
  Â  Â  Â  if (minFrameDurationNsec > 0) {<br>
@@ -1207,22 +1192,21 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  minFrameDurations.push_back(minFrameDurationNsec);<br>
  Â  Â  Â  Â  Â  Â  Â  }<br>
  Â  Â  Â  Â  Â  Â  Â  staticMetadata_->addEntry(ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â minFrameDurations.data(),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â minFrameDurations.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â minFrameDurations);<br>
  Â  Â  Â  }<br>
<br>
  Â  Â  Â  uint8_t croppingType = ANDROID_SCALER_CROPPING_TYPE_CENTER_ONLY;<br>
-  Â  Â  Â staticMetadata_->addEntry(ANDROID_SCALER_CROPPING_TYPE, &croppingType, 1);<br>
+  Â  Â  Â staticMetadata_->addEntry(ANDROID_SCALER_CROPPING_TYPE, croppingType);<br>
<br>
  Â  Â  Â  /* Info static metadata. */<br>
  Â  Â  Â  uint8_t supportedHWLevel = ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED;<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &supportedHWLevel, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â supportedHWLevel);<br>
<br>
  Â  Â  Â  /* Request static metadata. */<br>
  Â  Â  Â  int32_t partialResultCount = 1;<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_REQUEST_PARTIAL_RESULT_COUNT,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &partialResultCount, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â partialResultCount);<br>
<br>
  Â  Â  Â  {<br>
  Â  Â  Â  Â  Â  Â  Â  /* Default the value to 2 if not reported by the camera. */<br>
@@ -1231,13 +1215,13 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()<br>
  Â  Â  Â  Â  Â  Â  Â  if (infoMap != controlsInfo.end())<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  maxPipelineDepth = infoMap->second.max().get<int32_t>();<br>
  Â  Â  Â  Â  Â  Â  Â  staticMetadata_->addEntry(ANDROID_REQUEST_PIPELINE_MAX_DEPTH,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &maxPipelineDepth, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â maxPipelineDepth);<br>
  Â  Â  Â  }<br>
<br>
  Â  Â  Â  /* LIMITED does not support reprocessing. */<br>
  Â  Â  Â  uint32_t maxNumInputStreams = 0;<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_REQUEST_MAX_NUM_INPUT_STREAMS,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &maxNumInputStreams, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â maxNumInputStreams);<br>
<br>
  Â  Â  Â  std::vector<uint8_t> availableCapabilities = {<br>
  Â  Â  Â  Â  Â  Â  Â  ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE,<br>
@@ -1261,11 +1245,10 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()<br>
  Â  Â  Â  /* Number of { RAW, YUV, JPEG } supported output streams */<br>
  Â  Â  Â  int32_t numOutStreams[] = { rawStreamAvailable, 2, 1 };<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &numOutStreams, 3);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â numOutStreams, 3);<br></blockquote><div><br></div><div>You can remove 3 if you use Span as I suggested.</div><div>ditto to others.</div><div><br></div><div>-Hiro</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_REQUEST_AVAILABLE_CAPABILITIES,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableCapabilities.data(),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableCapabilities.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableCapabilities);<br>
<br>
  Â  Â  Â  std::vector<int32_t> availableCharacteristicsKeys = {<br>
  Â  Â  Â  Â  Â  Â  Â  ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES,<br>
@@ -1320,8 +1303,7 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()<br>
  Â  Â  Â  Â  Â  Â  Â  ANDROID_SYNC_MAX_LATENCY,<br>
  Â  Â  Â  };<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_REQUEST_AVAILABLE_CHARACTERISTICS_KEYS,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableCharacteristicsKeys.data(),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableCharacteristicsKeys.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableCharacteristicsKeys);<br>
<br>
  Â  Â  Â  std::vector<int32_t> availableRequestKeys = {<br>
  Â  Â  Â  Â  Â  Â  Â  ANDROID_COLOR_CORRECTION_ABERRATION_MODE,<br>
@@ -1352,8 +1334,7 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()<br>
  Â  Â  Â  Â  Â  Â  Â  ANDROID_STATISTICS_FACE_DETECT_MODE<br>
  Â  Â  Â  };<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableRequestKeys.data(),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableRequestKeys.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableRequestKeys);<br>
<br>
  Â  Â  Â  std::vector<int32_t> availableResultKeys = {<br>
  Â  Â  Â  Â  Â  Â  Â  ANDROID_COLOR_CORRECTION_ABERRATION_MODE,<br>
@@ -1402,8 +1383,7 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()<br>
  Â  Â  Â  Â  Â  Â  Â  ANDROID_STATISTICS_SCENE_FLICKER,<br>
  Â  Â  Â  };<br>
  Â  Â  Â  staticMetadata_->addEntry(ANDROID_REQUEST_AVAILABLE_RESULT_KEYS,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableResultKeys.data(),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableResultKeys.size());<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â availableResultKeys);<br>
<br>
  Â  Â  Â  if (!staticMetadata_->isValid()) {<br>
  Â  Â  Â  Â  Â  Â  Â  LOG(HAL, Error) << "Failed to construct static metadata";<br>
@@ -1442,69 +1422,63 @@ std::unique_ptr<CameraMetadata> CameraDevice::requestTemplatePreview()<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  entry.data.i32, 2);<br>
<br>
  Â  Â  Â  uint8_t aeMode = ANDROID_CONTROL_AE_MODE_ON;<br>
-  Â  Â  Â requestTemplate->addEntry(ANDROID_CONTROL_AE_MODE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &aeMode, 1);<br>
+  Â  Â  Â requestTemplate->addEntry(ANDROID_CONTROL_AE_MODE, aeMode);<br>
<br>
  Â  Â  Â  int32_t aeExposureCompensation = 0;<br>
  Â  Â  Â  requestTemplate->addEntry(ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &aeExposureCompensation, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â aeExposureCompensation);<br>
<br>
  Â  Â  Â  uint8_t aePrecaptureTrigger = ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE;<br>
  Â  Â  Â  requestTemplate->addEntry(ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &aePrecaptureTrigger, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â aePrecaptureTrigger);<br>
<br>
  Â  Â  Â  uint8_t aeLock = ANDROID_CONTROL_AE_LOCK_OFF;<br>
-  Â  Â  Â requestTemplate->addEntry(ANDROID_CONTROL_AE_LOCK,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &aeLock, 1);<br>
+  Â  Â  Â requestTemplate->addEntry(ANDROID_CONTROL_AE_LOCK, aeLock);<br>
<br>
  Â  Â  Â  uint8_t aeAntibandingMode = ANDROID_CONTROL_AE_ANTIBANDING_MODE_AUTO;<br>
  Â  Â  Â  requestTemplate->addEntry(ANDROID_CONTROL_AE_ANTIBANDING_MODE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &aeAntibandingMode, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â aeAntibandingMode);<br>
<br>
  Â  Â  Â  uint8_t afMode = ANDROID_CONTROL_AF_MODE_OFF;<br>
-  Â  Â  Â requestTemplate->addEntry(ANDROID_CONTROL_AF_MODE, &afMode, 1);<br>
+  Â  Â  Â requestTemplate->addEntry(ANDROID_CONTROL_AF_MODE, afMode);<br>
<br>
  Â  Â  Â  uint8_t afTrigger = ANDROID_CONTROL_AF_TRIGGER_IDLE;<br>
-  Â  Â  Â requestTemplate->addEntry(ANDROID_CONTROL_AF_TRIGGER,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &afTrigger, 1);<br>
+  Â  Â  Â requestTemplate->addEntry(ANDROID_CONTROL_AF_TRIGGER, afTrigger);<br>
<br>
  Â  Â  Â  uint8_t awbMode = ANDROID_CONTROL_AWB_MODE_AUTO;<br>
-  Â  Â  Â requestTemplate->addEntry(ANDROID_CONTROL_AWB_MODE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &awbMode, 1);<br>
+  Â  Â  Â requestTemplate->addEntry(ANDROID_CONTROL_AWB_MODE, awbMode);<br>
<br>
  Â  Â  Â  uint8_t awbLock = ANDROID_CONTROL_AWB_LOCK_OFF;<br>
-  Â  Â  Â requestTemplate->addEntry(ANDROID_CONTROL_AWB_LOCK,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &awbLock, 1);<br>
+  Â  Â  Â requestTemplate->addEntry(ANDROID_CONTROL_AWB_LOCK, awbLock);<br>
<br>
  Â  Â  Â  uint8_t flashMode = ANDROID_FLASH_MODE_OFF;<br>
-  Â  Â  Â requestTemplate->addEntry(ANDROID_FLASH_MODE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &flashMode, 1);<br>
+  Â  Â  Â requestTemplate->addEntry(ANDROID_FLASH_MODE, flashMode);<br>
<br>
  Â  Â  Â  uint8_t faceDetectMode = ANDROID_STATISTICS_FACE_DETECT_MODE_OFF;<br>
  Â  Â  Â  requestTemplate->addEntry(ANDROID_STATISTICS_FACE_DETECT_MODE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &faceDetectMode, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â faceDetectMode);<br>
<br>
  Â  Â  Â  uint8_t noiseReduction = ANDROID_NOISE_REDUCTION_MODE_OFF;<br>
  Â  Â  Â  requestTemplate->addEntry(ANDROID_NOISE_REDUCTION_MODE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &noiseReduction, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â noiseReduction);<br>
<br>
  Â  Â  Â  uint8_t aberrationMode = ANDROID_COLOR_CORRECTION_ABERRATION_MODE_OFF;<br>
  Â  Â  Â  requestTemplate->addEntry(ANDROID_COLOR_CORRECTION_ABERRATION_MODE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &aberrationMode, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â aberrationMode);<br>
<br>
  Â  Â  Â  uint8_t controlMode = ANDROID_CONTROL_MODE_AUTO;<br>
-  Â  Â  Â requestTemplate->addEntry(ANDROID_CONTROL_MODE, &controlMode, 1);<br>
+  Â  Â  Â requestTemplate->addEntry(ANDROID_CONTROL_MODE, controlMode);<br>
<br>
  Â  Â  Â  float lensAperture = 2.53 / 100;<br>
-  Â  Â  Â requestTemplate->addEntry(ANDROID_LENS_APERTURE, &lensAperture, 1);<br>
+  Â  Â  Â requestTemplate->addEntry(ANDROID_LENS_APERTURE, lensAperture);<br>
<br>
  Â  Â  Â  uint8_t opticalStabilization = ANDROID_LENS_OPTICAL_STABILIZATION_MODE_OFF;<br>
  Â  Â  Â  requestTemplate->addEntry(ANDROID_LENS_OPTICAL_STABILIZATION_MODE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &opticalStabilization, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â opticalStabilization);<br>
<br>
  Â  Â  Â  uint8_t captureIntent = ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW;<br>
  Â  Â  Â  requestTemplate->addEntry(ANDROID_CONTROL_CAPTURE_INTENT,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â &captureIntent, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â captureIntent);<br>
<br>
  Â  Â  Â  return requestTemplate;<br>
 }<br>
@@ -1580,7 +1554,7 @@ const camera_metadata_t *CameraDevice::constructDefaultRequestSettings(int type)<br>
  Â  Â  Â  }<br>
<br>
  Â  Â  Â  requestTemplate->updateEntry(ANDROID_CONTROL_CAPTURE_INTENT,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  &captureIntent, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  captureIntent);<br>
<br>
  Â  Â  Â  requestTemplates_[type] = std::move(requestTemplate);<br>
  Â  Â  Â  return requestTemplates_[type]->get();<br>
@@ -2154,20 +2128,20 @@ CameraDevice::getResultMetadata(const Camera3RequestDescriptor &descriptor) cons<br>
<br>
  Â  Â  Â  uint8_t value = ANDROID_COLOR_CORRECTION_ABERRATION_MODE_OFF;<br>
  Â  Â  Â  resultMetadata->addEntry(ANDROID_COLOR_CORRECTION_ABERRATION_MODE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  &value, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  value);<br>
<br>
  Â  Â  Â  value = ANDROID_CONTROL_AE_ANTIBANDING_MODE_OFF;<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_AE_ANTIBANDING_MODE, &value, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_AE_ANTIBANDING_MODE, value);<br>
<br>
  Â  Â  Â  int32_t value32 = 0;<br>
  Â  Â  Â  resultMetadata->addEntry(ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  &value32, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  value32);<br>
<br>
  Â  Â  Â  value = ANDROID_CONTROL_AE_LOCK_OFF;<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_AE_LOCK, &value, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_AE_LOCK, value);<br>
<br>
  Â  Â  Â  value = ANDROID_CONTROL_AE_MODE_ON;<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_AE_MODE, &value, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_AE_MODE, value);<br>
<br>
  Â  Â  Â  if (settings.getEntry(ANDROID_CONTROL_AE_TARGET_FPS_RANGE, &entry))<br>
  Â  Â  Â  Â  Â  Â  Â  /*<br>
@@ -2178,109 +2152,104 @@ CameraDevice::getResultMetadata(const Camera3RequestDescriptor &descriptor) cons<br>
  Â  Â  Â  Â  Â  Â  Â  resultMetadata->addEntry(ANDROID_CONTROL_AE_TARGET_FPS_RANGE,<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â entry.data.i32, 2);<br>
<br>
-  Â  Â  Â value = ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE;<br>
  Â  Â  Â  found = settings.getEntry(ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER, &entry);<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  found ? entry.data.u8 : &value, 1);<br>
+  Â  Â  Â value = found ? *entry.data.u8 :<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â (uint8_t)ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE;<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER, value);<br>
<br>
  Â  Â  Â  value = ANDROID_CONTROL_AE_STATE_CONVERGED;<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_AE_STATE, &value, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_AE_STATE, value);<br>
<br>
  Â  Â  Â  value = ANDROID_CONTROL_AF_MODE_OFF;<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_AF_MODE, &value, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_AF_MODE, value);<br>
<br>
  Â  Â  Â  value = ANDROID_CONTROL_AF_STATE_INACTIVE;<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_AF_STATE, &value, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_AF_STATE, value);<br>
<br>
  Â  Â  Â  value = ANDROID_CONTROL_AF_TRIGGER_IDLE;<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_AF_TRIGGER, &value, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_AF_TRIGGER, value);<br>
<br>
  Â  Â  Â  value = ANDROID_CONTROL_AWB_MODE_AUTO;<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_AWB_MODE, &value, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_AWB_MODE, value);<br>
<br>
  Â  Â  Â  value = ANDROID_CONTROL_AWB_LOCK_OFF;<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_AWB_LOCK, &value, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_AWB_LOCK, value);<br>
<br>
  Â  Â  Â  value = ANDROID_CONTROL_AWB_STATE_CONVERGED;<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_AWB_STATE, &value, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_AWB_STATE, value);<br>
<br>
  Â  Â  Â  value = ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW;<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_CAPTURE_INTENT, &value, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_CAPTURE_INTENT, value);<br>
<br>
  Â  Â  Â  value = ANDROID_CONTROL_EFFECT_MODE_OFF;<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_EFFECT_MODE, &value, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_EFFECT_MODE, value);<br>
<br>
  Â  Â  Â  value = ANDROID_CONTROL_MODE_AUTO;<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_MODE, &value, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_MODE, value);<br>
<br>
  Â  Â  Â  value = ANDROID_CONTROL_SCENE_MODE_DISABLED;<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_SCENE_MODE, &value, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_SCENE_MODE, value);<br>
<br>
  Â  Â  Â  value = ANDROID_CONTROL_VIDEO_STABILIZATION_MODE_OFF;<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_VIDEO_STABILIZATION_MODE, &value, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_CONTROL_VIDEO_STABILIZATION_MODE, value);<br>
<br>
  Â  Â  Â  value = ANDROID_FLASH_MODE_OFF;<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_FLASH_MODE, &value, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_FLASH_MODE, value);<br>
<br>
  Â  Â  Â  value = ANDROID_FLASH_STATE_UNAVAILABLE;<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_FLASH_STATE, &value, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_FLASH_STATE, value);<br>
<br>
  Â  Â  Â  if (settings.getEntry(ANDROID_LENS_APERTURE, &entry))<br>
  Â  Â  Â  Â  Â  Â  Â  resultMetadata->addEntry(ANDROID_LENS_APERTURE, entry.data.f, 1);<br>
<br>
  Â  Â  Â  float focal_length = 1.0;<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_LENS_FOCAL_LENGTH, &focal_length, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_LENS_FOCAL_LENGTH, focal_length);<br>
<br>
  Â  Â  Â  value = ANDROID_LENS_STATE_STATIONARY;<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_LENS_STATE, &value, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_LENS_STATE, value);<br>
<br>
  Â  Â  Â  value = ANDROID_LENS_OPTICAL_STABILIZATION_MODE_OFF;<br>
  Â  Â  Â  resultMetadata->addEntry(ANDROID_LENS_OPTICAL_STABILIZATION_MODE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  &value, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  value);<br>
<br>
  Â  Â  Â  value32 = ANDROID_SENSOR_TEST_PATTERN_MODE_OFF;<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_SENSOR_TEST_PATTERN_MODE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  &value32, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_SENSOR_TEST_PATTERN_MODE, value32);<br>
<br>
  Â  Â  Â  value = ANDROID_STATISTICS_FACE_DETECT_MODE_OFF;<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_STATISTICS_FACE_DETECT_MODE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  &value, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_STATISTICS_FACE_DETECT_MODE, value);<br>
<br>
  Â  Â  Â  value = ANDROID_STATISTICS_LENS_SHADING_MAP_MODE_OFF;<br>
  Â  Â  Â  resultMetadata->addEntry(ANDROID_STATISTICS_LENS_SHADING_MAP_MODE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  &value, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  value);<br>
<br>
  Â  Â  Â  value = ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE_OFF;<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  &value, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE, value);<br>
<br>
  Â  Â  Â  value = ANDROID_STATISTICS_SCENE_FLICKER_NONE;<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_STATISTICS_SCENE_FLICKER,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  &value, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_STATISTICS_SCENE_FLICKER, value);<br>
<br>
  Â  Â  Â  value = ANDROID_NOISE_REDUCTION_MODE_OFF;<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_NOISE_REDUCTION_MODE, &value, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_NOISE_REDUCTION_MODE, value);<br>
<br>
  Â  Â  Â  /* 33.3 msec */<br>
  Â  Â  Â  const int64_t rolling_shutter_skew = 33300000;<br>
  Â  Â  Â  resultMetadata->addEntry(ANDROID_SENSOR_ROLLING_SHUTTER_SKEW,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  &rolling_shutter_skew, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  rolling_shutter_skew);<br>
<br>
  Â  Â  Â  /* Add metadata tags reported by libcamera. */<br>
  Â  Â  Â  const int64_t timestamp = metadata.get(controls::SensorTimestamp);<br>
-  Â  Â  Â resultMetadata->addEntry(ANDROID_SENSOR_TIMESTAMP, &timestamp, 1);<br>
+  Â  Â  Â resultMetadata->addEntry(ANDROID_SENSOR_TIMESTAMP, timestamp);<br>
<br>
  Â  Â  Â  if (metadata.contains(controls::draft::PipelineDepth)) {<br>
  Â  Â  Â  Â  Â  Â  Â  uint8_t pipeline_depth =<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  metadata.get<int32_t>(controls::draft::PipelineDepth);<br>
  Â  Â  Â  Â  Â  Â  Â  resultMetadata->addEntry(ANDROID_REQUEST_PIPELINE_DEPTH,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  &pipeline_depth, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  pipeline_depth);<br>
  Â  Â  Â  }<br>
<br>
  Â  Â  Â  if (metadata.contains(controls::ExposureTime)) {<br>
  Â  Â  Â  Â  Â  Â  Â  int64_t exposure = metadata.get(controls::ExposureTime) * 1000ULL;<br>
-  Â  Â  Â  Â  Â  Â  Â resultMetadata->addEntry(ANDROID_SENSOR_EXPOSURE_TIME,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  &exposure, 1);<br>
+  Â  Â  Â  Â  Â  Â  Â resultMetadata->addEntry(ANDROID_SENSOR_EXPOSURE_TIME, exposure);<br>
  Â  Â  Â  }<br>
<br>
  Â  Â  Â  if (metadata.contains(controls::ScalerCrop)) {<br>
@@ -2289,7 +2258,7 @@ CameraDevice::getResultMetadata(const Camera3RequestDescriptor &descriptor) cons<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  crop.x, crop.y, static_cast<int32_t>(crop.width),<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  static_cast<int32_t>(crop.height),<br>
  Â  Â  Â  Â  Â  Â  Â  };<br>
-  Â  Â  Â  Â  Â  Â  Â resultMetadata->addEntry(ANDROID_SCALER_CROP_REGION, cropRect, 4);<br>
+  Â  Â  Â  Â  Â  Â  Â resultMetadata->addEntry(ANDROID_SCALER_CROP_REGION, cropRect, 2);<br>
  Â  Â  Â  }<br>
<br>
  Â  Â  Â  /*<br>
-- <br>
2.27.0<br>
<br>
_______________________________________________<br>
libcamera-devel mailing list<br>
<a href="mailto:libcamera-devel@lists.libcamera.org" target="_blank">libcamera-devel@lists.libcamera.org</a><br>
<a href="https://lists.libcamera.org/listinfo/libcamera-devel" rel="noreferrer" target="_blank">https://lists.libcamera.org/listinfo/libcamera-devel</a><br>
</blockquote></div></div>