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

Commit 29d20665 authored by Shuzhen Wang's avatar Shuzhen Wang
Browse files

Camera: Update required queryable feature combinations

Test: Build and read docs
Bug: 314229449
Change-Id: I75a9364802e33b1225858ca51046d77ea0399a29
parent 3f548c00
Loading
Loading
Loading
Loading
+62 −203
Original line number Diff line number Diff line
@@ -5062,21 +5062,29 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri
    /**
     * <p>The version of the session configuration query
     * {@link android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported }
     * API</p>
     * and {@link android.hardware.camera2.CameraDevice.CameraDeviceSetup#getSessionCharacteristics }
     * APIs.</p>
     * <p>The possible values in this key correspond to the values defined in
     * android.os.Build.VERSION_CODES. Each version defines a set of feature combinations the
     * camera device must reliably report whether they are supported via
     * {@link android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported }
     * API. And the version is always less or equal to android.os.Build.VERSION.SDK_INT.</p>
     * <p>If set to UPSIDE_DOWN_CAKE, this camera device doesn't support
     * {@link android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported }.
     * Calling the method for this camera ID throws an UnsupportedOperationException.</p>
     * <p>If set to VANILLA_ICE_CREAM, the application can call
     * It also defines the set of session specific keys in CameraCharacteristics when returned from
     * {@link android.hardware.camera2.CameraDevice.CameraDeviceSetup#getSessionCharacteristics }.
     * The version is always less or equal to android.os.Build.VERSION.SDK_INT.</p>
     * <p>If set to UPSIDE_DOWN_CAKE, this camera device doesn't support the
     * {@link android.hardware.camera2.CameraDevice.CameraDeviceSetup } API.
     * Trying to create a CameraDeviceSetup instance throws an UnsupportedOperationException.</p>
     * <p>From VANILLA_ICE_CREAM onwards, the camera compliance tests verify a set of
     * commonly used SessionConfigurations to ensure that the outputs of
     * {@link android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported }
     * to check if the combinations of below features are supported.</p>
     * and {@link android.hardware.camera2.CameraDevice.CameraDeviceSetup#getSessionCharacteristics }
     * are accurate. The application is encouraged to use these SessionConfigurations when turning on
     * multiple features at the same time.</p>
     * <p>When set to VANILLA_ICE_CREAM, the combinations of the following configurations are verified
     * by the compliance tests:</p>
     * <ul>
     * <li>A subset of LIMITED-level device stream combinations.</li>
     * </ul>
     * <li>
     * <p>A set of commonly used stream combinations:</p>
     * <table>
     * <thead>
     * <tr>
@@ -5084,257 +5092,108 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri
     * <th style="text-align: center;">Size</th>
     * <th style="text-align: center;">Target 2</th>
     * <th style="text-align: center;">Size</th>
     * <th style="text-align: center;">Sample use case(s)</th>
     * </tr>
     * </thead>
     * <tbody>
     * <tr>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">MAXIMUM</td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;">Simple preview, GPU video processing, or no-preview video recording.</td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">PREVIEW</td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;"></td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">S1440P</td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;"></td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">S1080P</td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;"></td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">S720P</td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;"></td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">YUV</td>
     * <td style="text-align: center;">MAXIMUM</td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;">In-application video/image processing.</td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">YUV</td>
     * <td style="text-align: center;">PREVIEW</td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;"></td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">YUV</td>
     * <td style="text-align: center;">S1440P</td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;"></td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">YUV</td>
     * <td style="text-align: center;">S1080P</td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;"></td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">YUV</td>
     * <td style="text-align: center;">S720P</td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;"></td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">PREVIEW</td>
     * <td style="text-align: center;">JPEG</td>
     * <td style="text-align: center;">MAXIMUM</td>
     * <td style="text-align: center;">Standard still imaging.</td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">S1440P</td>
     * <td style="text-align: center;">JPEG</td>
     * <td style="text-align: center;">MAXIMUM</td>
     * <td style="text-align: center;"></td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">S1080P</td>
     * <td style="text-align: center;">JPEG</td>
     * <td style="text-align: center;">MAXIMUM</td>
     * <td style="text-align: center;"></td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">S720P</td>
     * <td style="text-align: center;">JPEG</td>
     * <td style="text-align: center;">MAXIMUM</td>
     * <td style="text-align: center;"></td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">S1440P</td>
     * <td style="text-align: center;">JPEG</td>
     * <td style="text-align: center;">S1440P</td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;">JPEG/JPEG_R</td>
     * <td style="text-align: center;">MAXIMUM_16_9</td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">S1080P</td>
     * <td style="text-align: center;">JPEG</td>
     * <td style="text-align: center;">S1080P</td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;">JPEG/JPEG_R</td>
     * <td style="text-align: center;">UHD</td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">S720P</td>
     * <td style="text-align: center;">JPEG</td>
     * <td style="text-align: center;">S1080P</td>
     * <td style="text-align: center;"></td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">YUV</td>
     * <td style="text-align: center;">PREVIEW</td>
     * <td style="text-align: center;">JPEG</td>
     * <td style="text-align: center;">MAXIMUM</td>
     * <td style="text-align: center;">In-app processing plus still capture.</td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">YUV</td>
     * <td style="text-align: center;">S1440P</td>
     * <td style="text-align: center;">JPEG</td>
     * <td style="text-align: center;">MAXIMUM</td>
     * <td style="text-align: center;"></td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">YUV</td>
     * <td style="text-align: center;">S1080P</td>
     * <td style="text-align: center;">JPEG</td>
     * <td style="text-align: center;">MAXIMUM</td>
     * <td style="text-align: center;"></td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">YUV</td>
     * <td style="text-align: center;">S720P</td>
     * <td style="text-align: center;">JPEG</td>
     * <td style="text-align: center;">MAXIMUM</td>
     * <td style="text-align: center;"></td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">YUV</td>
     * <td style="text-align: center;">JPEG/JPEG_R</td>
     * <td style="text-align: center;">S1440P</td>
     * <td style="text-align: center;">JPEG</td>
     * <td style="text-align: center;">S1440P</td>
     * <td style="text-align: center;"></td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">YUV</td>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">S1080P</td>
     * <td style="text-align: center;">JPEG</td>
     * <td style="text-align: center;">JPEG/JPEG_R</td>
     * <td style="text-align: center;">S1080P</td>
     * <td style="text-align: center;"></td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">YUV</td>
     * <td style="text-align: center;">S720P</td>
     * <td style="text-align: center;">JPEG</td>
     * <td style="text-align: center;">S1080P</td>
     * <td style="text-align: center;"></td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">PREVIEW</td>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">PREVIEW</td>
     * <td style="text-align: center;">Standard recording.</td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">S1440P</td>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">S1440P</td>
     * <td style="text-align: center;"></td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">S1080P</td>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">S1080P</td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;">UHD</td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">S720P</td>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">S720P</td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;">JPEG/JPEG_R</td>
     * <td style="text-align: center;">MAXIMUM_16_9</td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">PREVIEW</td>
     * <td style="text-align: center;">YUV</td>
     * <td style="text-align: center;">PREVIEW</td>
     * <td style="text-align: center;">Preview plus in-app processing.</td>
     * <td style="text-align: center;">S720P</td>
     * <td style="text-align: center;">JPEG/JPEG_R</td>
     * <td style="text-align: center;">UHD</td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">S1440P</td>
     * <td style="text-align: center;">YUV</td>
     * <td style="text-align: center;">S1440P</td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;">S720P</td>
     * <td style="text-align: center;">JPEG/JPEG_R</td>
     * <td style="text-align: center;">S1080P</td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">S1080P</td>
     * <td style="text-align: center;">YUV</td>
     * <td style="text-align: center;">S1080P</td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;">XVGA</td>
     * <td style="text-align: center;">JPEG/JPEG_R</td>
     * <td style="text-align: center;">MAXIMUM_4_3</td>
     * </tr>
     * <tr>
     * <td style="text-align: center;">PRIV</td>
     * <td style="text-align: center;">S720P</td>
     * <td style="text-align: center;">YUV</td>
     * <td style="text-align: center;">S720P</td>
     * <td style="text-align: center;"></td>
     * <td style="text-align: center;">S1080P_4_3</td>
     * <td style="text-align: center;">JPEG/JPEG_R</td>
     * <td style="text-align: center;">MAXIMUM_4_3</td>
     * </tr>
     * </tbody>
     * </table>
     * <pre><code>- {@code MAXIMUM} size refers to the camera device's maximum output resolution for
     *   that format from {@code StreamConfigurationMap#getOutputSizes}. {@code PREVIEW} size
     *   refers to the best size match to the device's screen resolution, or to 1080p
     *   (@code 1920x1080}, whichever is smaller. Both sizes are guaranteed to be supported.
     *
     * - {@code S1440P} refers to {@code 1920x1440 (4:3)} and {@code 2560x1440 (16:9)}.
     *   {@code S1080P} refers to {@code 1440x1080 (4:3)} and {@code 1920x1080 (16:9)}.
     *   And {@code S720P} refers to {@code 960x720 (4:3)} and {@code 1280x720 (16:9)}.
     *
     * - If a combination contains a S1440P, S1080P, or S720P stream,
     *   both 4:3 and 16:9 aspect ratio sizes can be queried. For example, for the
     *   stream combination of {PRIV, S1440P, JPEG, MAXIMUM}, and if MAXIMUM ==
     *   4032 x 3024, the application will be able to query both
     *   {PRIV, 1920 x 1440, JPEG, 4032 x 3024} and {PRIV, 2560 x 1440, JPEG, 4032 x 2268}
     *   without an exception being thrown.
     * </code></pre>
     * <ul>
     * <li>VIDEO_STABILIZATION_MODES: {OFF, PREVIEW}</li>
     * <li>AE_TARGET_FPS_RANGE: { {<em>, 30}, {</em>, 60} }</li>
     * <li>DYNAMIC_RANGE_PROFILE: {STANDARD, HLG10}</li>
     * <li>{@code MAXIMUM_4_3} refers to the camera device's maximum output resolution with
     *   4:3 aspect ratio for that format from {@code StreamConfigurationMap#getOutputSizes}.</li>
     * <li>{@code MAXIMUM_16_9} is the maximum output resolution with 16:9 aspect ratio.</li>
     * <li>{@code S1440P} refers to {@code 2560x1440 (16:9)}.</li>
     * <li>{@code S1080P} refers to {@code 1920x1080 (16:9)}.</li>
     * <li>{@code S720P} refers to {@code 1280x720 (16:9)}.</li>
     * <li>{@code UHD} refers to {@code 3840x2160 (16:9)}.</li>
     * <li>{@code XVGA} refers to {@code 1024x768 (4:3)}.</li>
     * <li>{@code S1080P_43} refers to {@code 1440x1080 (4:3)}.</li>
     * </ul>
     * </li>
     * <li>
     * <p>VIDEO_STABILIZATION_MODE: {OFF, PREVIEW}</p>
     * </li>
     * <li>
     * <p>AE_TARGET_FPS_RANGE: { {*, 30}, {*, 60} }</p>
     * </li>
     * <li>
     * <p>DYNAMIC_RANGE_PROFILE: {STANDARD, HLG10}</p>
     * </li>
     * </ul>
     * <p>All of the above configurations can be set up with a SessionConfiguration. The list of
     * OutputConfiguration contains the stream configurations and DYNAMIC_RANGE_PROFILE, and
     * the AE_TARGET_FPS_RANGE and VIDEO_STABILIZATION_MODE are set as session parameters.</p>
     * <p>This key is available on all devices.</p>
     */
    @PublicKey