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

Commit f1419f04 authored by Jag Saund's avatar Jag Saund Committed by Android (Google) Code Review
Browse files

Merge "Camera: Low Light Boost AE Mode" into main

parents 80f11251 4cc26a1e
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -62,3 +62,10 @@ flag {
    description: "Enable session parameter injection via reconfiguration"
    bug: "308984721"
}

flag {
     namespace: "camera_platform"
     name: "camera_ae_mode_low_light_boost"
     description: "An AE mode that enables increased brightening in low light scenes"
     bug: "312803148"
}
+85 −0
Original line number Diff line number Diff line
@@ -2244,6 +2244,39 @@ typedef enum acamera_metadata_tag {
     */
    ACAMERA_CONTROL_AUTOFRAMING_STATE =                         // byte (acamera_metadata_enum_android_control_autoframing_state_t)
            ACAMERA_CONTROL_START + 54,
    /**
     * <p>The operating luminance range of low light boost measured in lux (lx).</p>
     *
     * <p>Type: float[2]</p>
     *
     * <p>This tag may appear in:
     * <ul>
     *   <li>ACameraMetadata from ACameraManager_getCameraCharacteristics</li>
     * </ul></p>
     *
     */
    ACAMERA_CONTROL_LOW_LIGHT_BOOST_INFO_LUMINANCE_RANGE =      // float[2]
            ACAMERA_CONTROL_START + 55,
    /**
     * <p>Current state of the low light boost AE mode.</p>
     *
     * <p>Type: byte (acamera_metadata_enum_android_control_low_light_boost_state_t)</p>
     *
     * <p>This tag may appear in:
     * <ul>
     *   <li>ACameraMetadata from ACameraCaptureSession_captureCallback_result callbacks</li>
     * </ul></p>
     *
     * <p>When low light boost is enabled by setting the AE mode to
     * 'ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY', it can dynamically apply a low light
     * boost when the light level threshold is exceeded.</p>
     * <p>This state indicates when low light boost is 'ACTIVE' and applied. Similarly, it can
     * indicate when it is not being applied by returning 'INACTIVE'.</p>
     * <p>This key will be absent from the CaptureResult if AE mode is not set to
     * 'ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY.</p>
     */
    ACAMERA_CONTROL_LOW_LIGHT_BOOST_STATE =                     // byte (acamera_metadata_enum_android_control_low_light_boost_state_t)
            ACAMERA_CONTROL_START + 56,
    ACAMERA_CONTROL_END,
    /**
@@ -8214,6 +8247,44 @@ typedef enum acamera_metadata_enum_acamera_control_ae_mode {
     */
    ACAMERA_CONTROL_AE_MODE_ON_EXTERNAL_FLASH                        = 5,
    /**
     * <p>Like 'ON' but applies additional brightness boost in low light scenes.</p>
     * <p>When the scene lighting conditions are within the range defined by
     * ACAMERA_CONTROL_LOW_LIGHT_BOOST_INFO_LUMINANCE_RANGE this mode will apply additional
     * brightness boost.</p>
     * <p>This mode will automatically adjust the intensity of low light boost applied
     * according to the scene lighting conditions. A darker scene will receive more boost
     * while a brighter scene will receive less boost.</p>
     * <p>This mode can ignore the set target frame rate to allow more light to be captured
     * which can result in choppier motion. The frame rate can extend to lower than the
     * ACAMERA_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES but will not go below 10 FPS. This mode
     * can also increase the sensor sensitivity gain which can result in increased luma
     * and chroma noise. The sensor sensitivity gain can extend to higher values beyond
     * ACAMERA_SENSOR_INFO_SENSITIVITY_RANGE. This mode may also apply additional
     * processing to recover details in dark and bright areas of the image,and noise
     * reduction at high sensitivity gain settings to manage the trade-off between light
     * sensitivity and capture noise.</p>
     * <p>This mode is restricted to two output surfaces. One output surface type can either
     * be SurfaceView or TextureView. Another output surface type can either be MediaCodec
     * or MediaRecorder. This mode cannot be used with a target FPS range higher than 30
     * FPS.</p>
     * <p>If the session configuration is not supported, the AE mode reported in the
     * CaptureResult will be 'ON' instead of 'ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY'.</p>
     * <p>The application can observe the CapturerResult field
     * ACAMERA_CONTROL_LOW_LIGHT_BOOST_STATE to determine when low light boost is 'ACTIVE' or
     * 'INACTIVE'.</p>
     * <p>The low light boost is 'ACTIVE' once the scene lighting condition is less than the
     * upper bound lux value defined by ACAMERA_CONTROL_LOW_LIGHT_BOOST_INFO_LUMINANCE_RANGE.
     * This mode will be 'INACTIVE' once the scene lighting condition is greater than the
     * upper bound lux value defined by ACAMERA_CONTROL_LOW_LIGHT_BOOST_INFO_LUMINANCE_RANGE.</p>
     *
     * @see ACAMERA_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
     * @see ACAMERA_CONTROL_LOW_LIGHT_BOOST_INFO_LUMINANCE_RANGE
     * @see ACAMERA_CONTROL_LOW_LIGHT_BOOST_STATE
     * @see ACAMERA_SENSOR_INFO_SENSITIVITY_RANGE
     */
    ACAMERA_CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY   = 6,
} acamera_metadata_enum_android_control_ae_mode_t;
// ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER
@@ -9215,6 +9286,20 @@ typedef enum acamera_metadata_enum_acamera_control_autoframing_state {
} acamera_metadata_enum_android_control_autoframing_state_t;
// ACAMERA_CONTROL_LOW_LIGHT_BOOST_STATE
typedef enum acamera_metadata_enum_acamera_control_low_light_boost_state {
    /**
     * <p>The AE mode 'ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY' is enabled but not applied.</p>
     */
    ACAMERA_CONTROL_LOW_LIGHT_BOOST_STATE_INACTIVE                   = 0,
    /**
     * <p>The AE mode 'ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY' is enabled and applied.</p>
     */
    ACAMERA_CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE                     = 1,
} acamera_metadata_enum_android_control_low_light_boost_state_t;
// ACAMERA_EDGE_MODE
+2 −0
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@ std::map<int, std::vector<camera_metadata_tag>> static_api_level_to_keys{
      {34, {
          ANDROID_CONTROL_AUTOFRAMING_AVAILABLE,
          ANDROID_CONTROL_AVAILABLE_SETTINGS_OVERRIDES,
          ANDROID_CONTROL_LOW_LIGHT_BOOST_INFO_LUMINANCE_RANGE,
          ANDROID_FLASH_SINGLE_STRENGTH_DEFAULT_LEVEL,
          ANDROID_FLASH_SINGLE_STRENGTH_MAX_LEVEL,
          ANDROID_FLASH_TORCH_STRENGTH_DEFAULT_LEVEL,
@@ -108,6 +109,7 @@ std::map<int, std::vector<camera_metadata_tag>> dynamic_api_level_to_keys{
      {34, {
          ANDROID_CONTROL_AUTOFRAMING,
          ANDROID_CONTROL_AUTOFRAMING_STATE,
          ANDROID_CONTROL_LOW_LIGHT_BOOST_STATE,
          ANDROID_CONTROL_SETTINGS_OVERRIDE,
          ANDROID_CONTROL_SETTINGS_OVERRIDING_FRAME_NUMBER,
          ANDROID_EXTENSION_CURRENT_TYPE,