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

Commit ec2aee4f authored by Ján Sebechlebský's avatar Ján Sebechlebský Committed by Android (Google) Code Review
Browse files

Merge "Add aberration correction and noise reduction keys to request and response." into main

parents efd91b99 4be2bd06
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
@@ -250,7 +250,8 @@ std::optional<CameraMetadata> initCameraCharacteristics(
          .setRequestPartialResultCount(1)
          .setPipelineMaxDepth(kPipelineMaxDepth)
          .setSyncMaxLatency(ANDROID_SYNC_MAX_LATENCY_UNKNOWN)
          .setAvailableRequestKeys({ANDROID_CONTROL_CAPTURE_INTENT,
          .setAvailableRequestKeys({ANDROID_COLOR_CORRECTION_ABERRATION_MODE,
                                    ANDROID_CONTROL_CAPTURE_INTENT,
                                    ANDROID_CONTROL_AE_MODE,
                                    ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,
                                    ANDROID_CONTROL_AE_TARGET_FPS_RANGE,
@@ -265,19 +266,20 @@ std::optional<CameraMetadata> initCameraCharacteristics(
                                    ANDROID_CONTROL_SCENE_MODE,
                                    ANDROID_CONTROL_VIDEO_STABILIZATION_MODE,
                                    ANDROID_CONTROL_ZOOM_RATIO,
                                    ANDROID_STATISTICS_FACE_DETECT_MODE,
                                    ANDROID_FLASH_MODE,
                                    ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES,
                                    ANDROID_JPEG_QUALITY,
                                    ANDROID_JPEG_THUMBNAIL_QUALITY})
                                    ANDROID_JPEG_THUMBNAIL_QUALITY,
                                    ANDROID_NOISE_REDUCTION_MODE,
                                    ANDROID_STATISTICS_FACE_DETECT_MODE})
          .setAvailableResultKeys(
              {ANDROID_CONTROL_AE_MODE, ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,
               ANDROID_CONTROL_AF_MODE, ANDROID_CONTROL_AWB_MODE,
               ANDROID_CONTROL_EFFECT_MODE, ANDROID_CONTROL_MODE,
               ANDROID_FLASH_MODE, ANDROID_FLASH_STATE,
              {ANDROID_COLOR_CORRECTION_ABERRATION_MODE, ANDROID_CONTROL_AE_MODE,
               ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER, ANDROID_CONTROL_AF_MODE,
               ANDROID_CONTROL_AWB_MODE, ANDROID_CONTROL_EFFECT_MODE,
               ANDROID_CONTROL_MODE, ANDROID_FLASH_MODE, ANDROID_FLASH_STATE,
               ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES, ANDROID_JPEG_QUALITY,
               ANDROID_JPEG_THUMBNAIL_QUALITY, ANDROID_SENSOR_TIMESTAMP,
               ANDROID_LENS_FOCAL_LENGTH})
               ANDROID_JPEG_THUMBNAIL_QUALITY, ANDROID_LENS_FOCAL_LENGTH,
               ANDROID_SENSOR_TIMESTAMP, ANDROID_NOISE_REDUCTION_MODE})
          .setAvailableCapabilities(
              {ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE});

+4 −0
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@
 * limitations under the License.
 */

#include "system/camera_metadata.h"
#define LOG_TAG "VirtualCameraRenderThread"
#include "VirtualCameraRenderThread.h"

@@ -93,6 +94,8 @@ CameraMetadata createCaptureResultMetadata(
    const Resolution reportedSensorSize) {
  std::unique_ptr<CameraMetadata> metadata =
      MetadataBuilder()
          .setAberrationCorrectionMode(
              ANDROID_COLOR_CORRECTION_ABERRATION_MODE_OFF)
          .setControlAeMode(ANDROID_CONTROL_AE_MODE_ON)
          .setControlAePrecaptureTrigger(
              ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE)
@@ -109,6 +112,7 @@ CameraMetadata createCaptureResultMetadata(
          .setJpegThumbnailSize(requestSettings.thumbnailResolution.width,
                                requestSettings.thumbnailResolution.height)
          .setJpegThumbnailQuality(requestSettings.thumbnailJpegQuality)
          .setNoiseReductionMode(ANDROID_NOISE_REDUCTION_MODE_OFF)
          .setPipelineDepth(kPipelineDepth)
          .setSensorTimestamp(timestamp)
          .build();
+3 −0
Original line number Diff line number Diff line
@@ -142,6 +142,8 @@ CameraMetadata createDefaultRequestSettings(
  int maxFps = getMaxFps(inputConfigs);
  auto metadata =
      MetadataBuilder()
          .setAberrationCorrectionMode(
              ANDROID_COLOR_CORRECTION_ABERRATION_MODE_OFF)
          .setControlCaptureIntent(requestTemplateToIntent(type))
          .setControlMode(ANDROID_CONTROL_MODE_AUTO)
          .setControlAeMode(ANDROID_CONTROL_AE_MODE_ON)
@@ -160,6 +162,7 @@ CameraMetadata createDefaultRequestSettings(
          .setJpegQuality(VirtualCameraDevice::kDefaultJpegQuality)
          .setJpegThumbnailQuality(VirtualCameraDevice::kDefaultJpegQuality)
          .setJpegThumbnailSize(0, 0)
          .setNoiseReductionMode(ANDROID_NOISE_REDUCTION_MODE_OFF)
          .build();
  if (metadata == nullptr) {
    ALOGE("%s: Failed to construct metadata for default request type %s",
+15 −0
Original line number Diff line number Diff line
@@ -489,6 +489,14 @@ MetadataBuilder& MetadataBuilder::setAvailableAberrationCorrectionModes(
  return *this;
}

MetadataBuilder& MetadataBuilder::setAberrationCorrectionMode(
    const camera_metadata_enum_android_color_correction_aberration_mode
        aberrationCorrectionMode) {
  mEntryMap[ANDROID_COLOR_CORRECTION_ABERRATION_MODE] =
      asVectorOf<uint8_t>(aberrationCorrectionMode);
  return *this;
}

MetadataBuilder& MetadataBuilder::setAvailableNoiseReductionModes(
    const std::vector<camera_metadata_enum_android_noise_reduction_mode>&
        noiseReductionModes) {
@@ -497,6 +505,13 @@ MetadataBuilder& MetadataBuilder::setAvailableNoiseReductionModes(
  return *this;
}

MetadataBuilder& MetadataBuilder::setNoiseReductionMode(
    camera_metadata_enum_android_noise_reduction_mode noiseReductionMode) {
  mEntryMap[ANDROID_NOISE_REDUCTION_MODE] =
      asVectorOf<uint8_t>(noiseReductionMode);
  return *this;
}

MetadataBuilder& MetadataBuilder::setRequestPartialResultCount(
    const int partialResultCount) {
  mEntryMap[ANDROID_REQUEST_PARTIAL_RESULT_COUNT] =
+9 −0
Original line number Diff line number Diff line
@@ -155,11 +155,20 @@ class MetadataBuilder {
          camera_metadata_enum_android_color_correction_aberration_mode>&
          aberrationCorectionModes);

  // See COLOR_CORRECTION_ABERRATION_MODE in CaptureRequest.java.
  MetadataBuilder& setAberrationCorrectionMode(
      camera_metadata_enum_android_color_correction_aberration_mode
          aberrationCorrectionMode);

  // See NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES in CameraCharacteristics.java.
  MetadataBuilder& setAvailableNoiseReductionModes(
      const std::vector<camera_metadata_enum_android_noise_reduction_mode>&
          noiseReductionModes);

  // See NOISE_REDUCTION_MODE in CaptureRequest.java.
  MetadataBuilder& setNoiseReductionMode(
      camera_metadata_enum_android_noise_reduction_mode noiseReductionMode);

  // See REQUEST_PARTIAL_RESULT_COUNT in CameraCharacteristics.java.
  MetadataBuilder& setRequestPartialResultCount(int partialResultCount);