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

Commit 4be2bd06 authored by Jan Sebechlebsky's avatar Jan Sebechlebsky
Browse files

Add aberration correction and noise reduction keys to request and

response.

Bug: 326201504
Test: CtsCameraTestCases with test virtual camera enabled.
Change-Id: I382023caaac8fb7fcae0fc0e89f9b6f97febc7ad
parent ab37820c
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);