Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 088b4ac1 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fake ae precapture cancellation when requested" into main

parents 92c44266 6a43bebe
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -109,7 +109,14 @@ CameraMetadata createCaptureResultMetadata(
          .setControlAeLock(ANDROID_CONTROL_AE_LOCK_OFF)
          .setControlAeMode(ANDROID_CONTROL_AE_MODE_ON)
          .setControlAePrecaptureTrigger(
              ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE)
              // Limited devices are expected to have precapture ae enabled and
              // respond to cancellation request. Since we don't actuall support
              // AE at all, let's just respect the cancellation expectation in
              // case it's requested
              requestSettings.aePrecaptureTrigger ==
                      ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL
                  ? ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL
                  : ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE)
          .setControlAeState(ANDROID_CONTROL_AE_STATE_INACTIVE)
          .setControlAfMode(ANDROID_CONTROL_AF_MODE_OFF)
          .setControlAfTrigger(ANDROID_CONTROL_AF_TRIGGER_IDLE)
+2 −0
Original line number Diff line number Diff line
@@ -64,6 +64,8 @@ struct RequestSettings {
  camera_metadata_enum_android_control_capture_intent_t captureIntent =
      VirtualCameraDevice::kDefaultCaptureIntent;
  std::optional<GpsCoordinates> gpsCoordinates;
  std::optional<camera_metadata_enum_android_control_ae_precapture_trigger>
      aePrecaptureTrigger;
};

// Represents single capture request to fill set of buffers.
+2 −1
Original line number Diff line number Diff line
@@ -265,7 +265,8 @@ RequestSettings createSettingsFromMetadata(const CameraMetadata& metadata) {
      .fpsRange = getFpsRange(metadata),
      .captureIntent = getCaptureIntent(metadata).value_or(
          ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW),
      .gpsCoordinates = getGpsCoordinates(metadata)};
      .gpsCoordinates = getGpsCoordinates(metadata),
      .aePrecaptureTrigger = getPrecaptureTrigger(metadata)};
}

}  // namespace
+16 −0
Original line number Diff line number Diff line
@@ -931,6 +931,22 @@ std::optional<camera_metadata_enum_android_lens_facing> getLensFacing(
  return static_cast<camera_metadata_enum_android_lens_facing>(entry.data.u8[0]);
}

std::optional<camera_metadata_enum_android_control_ae_precapture_trigger>
getPrecaptureTrigger(
    const aidl::android::hardware::camera::device::CameraMetadata& cameraMetadata) {
  auto metadata =
      reinterpret_cast<const camera_metadata_t*>(cameraMetadata.metadata.data());

  camera_metadata_ro_entry_t entry;
  if (find_camera_metadata_ro_entry(
          metadata, ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER, &entry) != OK) {
    return std::nullopt;
  }

  return static_cast<camera_metadata_enum_android_control_ae_precapture_trigger>(
      entry.data.u8[0]);
}

}  // namespace virtualcamera
}  // namespace companion
}  // namespace android
+4 −0
Original line number Diff line number Diff line
@@ -480,6 +480,10 @@ std::optional<GpsCoordinates> getGpsCoordinates(
std::optional<camera_metadata_enum_android_lens_facing> getLensFacing(
    const aidl::android::hardware::camera::device::CameraMetadata& metadata);

std::optional<camera_metadata_enum_android_control_ae_precapture_trigger>
getPrecaptureTrigger(
    const aidl::android::hardware::camera::device::CameraMetadata& cameraMetadata);

}  // namespace virtualcamera
}  // namespace companion
}  // namespace android