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

Commit 7950cdff authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 12551711 from c96b8dd8 to 25Q1-release

Change-Id: I2578bc5eeac7d8cbde1d41cd91ee79b51b2ac6c9
parents 1a884980 c96b8dd8
Loading
Loading
Loading
Loading
+14 −18
Original line number Diff line number Diff line
@@ -99,23 +99,21 @@ status_t Camera::unlock()
    return c->unlock();
}

// pass the buffered IGraphicBufferProducer to the camera service
status_t Camera::setPreviewTarget(const sp<IGraphicBufferProducer>& bufferProducer)
{
    ALOGV("setPreviewTarget(%p)", bufferProducer.get());
// pass the Surface to the camera service
status_t Camera::setPreviewTarget(const sp<SurfaceType>& target) {
    ALOGV("setPreviewTarget(%p)", target.get());
    sp<::android::hardware::ICamera> c = mCamera;
    if (c == 0) return NO_INIT;
    ALOGD_IF(bufferProducer == 0, "app passed NULL surface");
    return c->setPreviewTarget(bufferProducer);
    ALOGD_IF(target == 0, "app passed NULL surface");
    return c->setPreviewTarget(target);
}

status_t Camera::setVideoTarget(const sp<IGraphicBufferProducer>& bufferProducer)
{
    ALOGV("setVideoTarget(%p)", bufferProducer.get());
status_t Camera::setVideoTarget(const sp<SurfaceType>& target) {
    ALOGV("setVideoTarget(%p)", target.get());
    sp<::android::hardware::ICamera> c = mCamera;
    if (c == 0) return NO_INIT;
    ALOGD_IF(bufferProducer == 0, "app passed NULL video surface");
    return c->setVideoTarget(bufferProducer);
    ALOGD_IF(target == 0, "app passed NULL video surface");
    return c->setVideoTarget(target);
}

// start preview mode
@@ -272,12 +270,10 @@ void Camera::setPreviewCallbackFlags(int flag)
    c->setPreviewCallbackFlag(flag);
}

status_t Camera::setPreviewCallbackTarget(
        const sp<IGraphicBufferProducer>& callbackProducer)
{
status_t Camera::setPreviewCallbackTarget(const sp<SurfaceType>& target) {
    sp<::android::hardware::ICamera> c = mCamera;
    if (c == 0) return NO_INIT;
    return c->setPreviewCallbackTarget(callbackProducer);
    return c->setPreviewCallbackTarget(target);
}

status_t Camera::setAudioRestriction(int32_t mode)
+88 −17
Original line number Diff line number Diff line
@@ -17,16 +17,16 @@

//#define LOG_NDEBUG 0
#define LOG_TAG "ICamera"
#include <utils/Log.h>
#include <stdint.h>
#include <sys/types.h>
#include <binder/Parcel.h>
#include <camera/CameraUtils.h>
#include <android/hardware/ICamera.h>
#include <android/hardware/ICameraClient.h>
#include <gui/IGraphicBufferProducer.h>
#include <binder/Parcel.h>
#include <camera/CameraUtils.h>
#include <gui/Surface.h>
#include <gui/view/Surface.h>
#include <media/hardware/HardwareAPI.h>
#include <stdint.h>
#include <sys/types.h>
#include <utils/Log.h>

namespace android {
namespace hardware {
@@ -34,8 +34,14 @@ namespace hardware {
enum {
    DISCONNECT = IBinder::FIRST_CALL_TRANSACTION,
    SET_PREVIEW_TARGET,
#if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES
    SET_PREVIEW_TARGET_SURFACE,
#endif
    SET_PREVIEW_CALLBACK_FLAG,
    SET_PREVIEW_CALLBACK_TARGET,
#if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES
    SET_PREVIEW_CALLBACK_TARGET_SURFACE,
#endif
    START_PREVIEW,
    STOP_PREVIEW,
    AUTO_FOCUS,
@@ -54,6 +60,9 @@ enum {
    RELEASE_RECORDING_FRAME,
    SET_VIDEO_BUFFER_MODE,
    SET_VIDEO_BUFFER_TARGET,
#if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES
    SET_VIDEO_BUFFER_TARGET_SURFACE,
#endif
    RELEASE_RECORDING_FRAME_HANDLE,
    RELEASE_RECORDING_FRAME_HANDLE_BATCH,
    SET_AUDIO_RESTRICTION,
@@ -79,15 +88,20 @@ public:
        return binder::Status::ok();
    }

    // pass the buffered IGraphicBufferProducer to the camera service
    status_t setPreviewTarget(const sp<IGraphicBufferProducer>& bufferProducer)
    {
    // pass the Surface to the camera service
    status_t setPreviewTarget(const sp<SurfaceType>& target) {
        ALOGV("setPreviewTarget");
        Parcel data, reply;
        data.writeInterfaceToken(ICamera::getInterfaceDescriptor());
        sp<IBinder> b(IInterface::asBinder(bufferProducer));
#if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES
        view::Surface viewSurfaceProducer = view::Surface::fromSurface(target);
        data.writeParcelable(viewSurfaceProducer);
        remote()->transact(SET_PREVIEW_TARGET_SURFACE, data, &reply);
#else
        sp<IBinder> b(IInterface::asBinder(target));
        data.writeStrongBinder(b);
        remote()->transact(SET_PREVIEW_TARGET, data, &reply);
#endif
        return reply.readInt32();
    }

@@ -102,15 +116,19 @@ public:
        remote()->transact(SET_PREVIEW_CALLBACK_FLAG, data, &reply);
    }

    status_t setPreviewCallbackTarget(
            const sp<IGraphicBufferProducer>& callbackProducer)
    {
    status_t setPreviewCallbackTarget(const sp<SurfaceType>& target) {
        ALOGV("setPreviewCallbackTarget");
        Parcel data, reply;
        data.writeInterfaceToken(ICamera::getInterfaceDescriptor());
        sp<IBinder> b(IInterface::asBinder(callbackProducer));
#if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES
        view::Surface viewCallbackProducer = view::Surface::fromSurface(target);
        data.writeParcelable(viewCallbackProducer);
        remote()->transact(SET_PREVIEW_CALLBACK_TARGET_SURFACE, data, &reply);
#else
        sp<IBinder> b(IInterface::asBinder(target));
        data.writeStrongBinder(b);
        remote()->transact(SET_PREVIEW_CALLBACK_TARGET, data, &reply);
#endif
        return reply.readInt32();
    }

@@ -326,14 +344,19 @@ public:
        return reply.readInt32();
    }

    status_t setVideoTarget(const sp<IGraphicBufferProducer>& bufferProducer)
    {
    status_t setVideoTarget(const sp<SurfaceType>& target) {
        ALOGV("setVideoTarget");
        Parcel data, reply;
        data.writeInterfaceToken(ICamera::getInterfaceDescriptor());
        sp<IBinder> b(IInterface::asBinder(bufferProducer));
#if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES
        view::Surface viewSurfaceProducer = view::Surface::fromSurface(target);
        data.writeParcelable(viewSurfaceProducer);
        remote()->transact(SET_VIDEO_BUFFER_TARGET_SURFACE, data, &reply);
#else
        sp<IBinder> b(IInterface::asBinder(target));
        data.writeStrongBinder(b);
        remote()->transact(SET_VIDEO_BUFFER_TARGET, data, &reply);
#endif
        return reply.readInt32();
    }
};
@@ -358,9 +381,25 @@ status_t BnCamera::onTransact(
            CHECK_INTERFACE(ICamera, data, reply);
            sp<IGraphicBufferProducer> st =
                interface_cast<IGraphicBufferProducer>(data.readStrongBinder());
#if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES
            sp<Surface> sp = new Surface(st);
            reply->writeInt32(setPreviewTarget(sp));
#else
            reply->writeInt32(setPreviewTarget(st));
#endif
            return NO_ERROR;
        } break;
#if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES
        case SET_PREVIEW_TARGET_SURFACE: {
            ALOGV("SET_PREVIEW_TARGET_SURFACE");
            CHECK_INTERFACE(ICamera, data, reply);
            view::Surface viewSurface;
            data.readParcelable(&viewSurface);
            sp<Surface> st = viewSurface.toSurface();
            reply->writeInt32(setPreviewTarget(st));
            return NO_ERROR;
        } break;
#endif
        case SET_PREVIEW_CALLBACK_FLAG: {
            ALOGV("SET_PREVIEW_CALLBACK_TYPE");
            CHECK_INTERFACE(ICamera, data, reply);
@@ -373,9 +412,25 @@ status_t BnCamera::onTransact(
            CHECK_INTERFACE(ICamera, data, reply);
            sp<IGraphicBufferProducer> cp =
                interface_cast<IGraphicBufferProducer>(data.readStrongBinder());
#if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES
            sp<Surface> sp = new Surface(cp);
            reply->writeInt32(setPreviewCallbackTarget(sp));
#else
            reply->writeInt32(setPreviewCallbackTarget(cp));
#endif
            return NO_ERROR;
        }
#if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES
        case SET_PREVIEW_CALLBACK_TARGET_SURFACE: {
            ALOGV("SET_PREVIEW_CALLBACK_TARGET_SURFACE");
            CHECK_INTERFACE(ICamera, data, reply);
            view::Surface viewSurface;
            data.readParcelable(&viewSurface);
            sp<Surface> cp = viewSurface.toSurface();
            reply->writeInt32(setPreviewCallbackTarget(cp));
            return NO_ERROR;
        }
#endif
        case START_PREVIEW: {
            ALOGV("START_PREVIEW");
            CHECK_INTERFACE(ICamera, data, reply);
@@ -508,9 +563,25 @@ status_t BnCamera::onTransact(
            CHECK_INTERFACE(ICamera, data, reply);
            sp<IGraphicBufferProducer> st =
                interface_cast<IGraphicBufferProducer>(data.readStrongBinder());
#if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES
            sp<Surface> sp = new Surface(st);
            reply->writeInt32(setVideoTarget(sp));
#else
            reply->writeInt32(setVideoTarget(st));
#endif
            return NO_ERROR;
        } break;
#if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES
        case SET_VIDEO_BUFFER_TARGET_SURFACE: {
            ALOGV("SET_VIDEO_BUFFER_TARGET_SURFACE");
            CHECK_INTERFACE(ICamera, data, reply);
            view::Surface viewSurface;
            data.readParcelable(&viewSurface);
            sp<Surface> cp = viewSurface.toSurface();
            reply->writeInt32(setVideoTarget(cp));
            return NO_ERROR;
        } break;
#endif
        case SET_AUDIO_RESTRICTION: {
            CHECK_INTERFACE(ICamera, data, reply);
            int32_t mode = data.readInt32();
+13 −9
Original line number Diff line number Diff line
@@ -21,13 +21,18 @@

#include <android/hardware/ICameraService.h>

#include <gui/IGraphicBufferProducer.h>
#include <system/camera.h>
#include <camera/CameraBase.h>
#include <camera/CameraUtils.h>
#include <camera/ICameraRecordingProxy.h>
#include <camera/android/hardware/ICamera.h>
#include <camera/android/hardware/ICameraClient.h>
#include <camera/CameraBase.h>
#include <camera/CameraUtils.h>
#include <gui/Flags.h>
#if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES
#include <gui/Surface.h>
#else
#include <gui/IGraphicBufferProducer.h>
#endif
#include <system/camera.h>

namespace android {

@@ -91,8 +96,8 @@ public:
            status_t    lock();
            status_t    unlock();

            // pass the buffered IGraphicBufferProducer to the camera service
            status_t    setPreviewTarget(const sp<IGraphicBufferProducer>& bufferProducer);
            // pass the SurfaceType to the camera service
            status_t    setPreviewTarget(const sp<SurfaceType>& target);

            // start preview mode, must call setPreviewTarget first
            status_t    startPreview();
@@ -148,7 +153,7 @@ public:

            // Set the video buffer producer for camera to use in VIDEO_BUFFER_MODE_BUFFER_QUEUE
            // mode.
            status_t    setVideoTarget(const sp<IGraphicBufferProducer>& bufferProducer);
            status_t    setVideoTarget(const sp<SurfaceType>& target);

            void        setListener(const sp<CameraListener>& listener);

@@ -158,8 +163,7 @@ public:
            // disabled by calling it with CAMERA_FRAME_CALLBACK_FLAG_NOOP, and
            // Target by calling it with a NULL interface.
            void        setPreviewCallbackFlags(int preview_callback_flag);
            status_t    setPreviewCallbackTarget(
                    const sp<IGraphicBufferProducer>& callbackProducer);
            status_t    setPreviewCallbackTarget(const sp<SurfaceType>& target);

            sp<ICameraRecordingProxy> getRecordingProxy();

+5 −7
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
#include <binder/Parcel.h>
#include <binder/IMemory.h>
#include <binder/Status.h>
#include <gui/Flags.h>
#include <utils/String8.h>

namespace android {
@@ -61,9 +62,8 @@ public:
    // allow other processes to use this ICamera interface
    virtual status_t        unlock() = 0;

    // pass the buffered IGraphicBufferProducer to the camera service
    virtual status_t        setPreviewTarget(
            const sp<IGraphicBufferProducer>& bufferProducer) = 0;
    // pass the SurfaceType to the camera service
    virtual status_t        setPreviewTarget(const sp<SurfaceType>& bufferProducer) = 0;

    // set the preview callback flag to affect how the received frames from
    // preview are handled. Enabling preview callback flags disables any active
@@ -73,8 +73,7 @@ public:
    // of preview callback buffers. Passing a valid interface here disables any
    // active preview callbacks set by setPreviewCallbackFlag(). Passing NULL
    // disables the use of the callback target.
    virtual status_t        setPreviewCallbackTarget(
            const sp<IGraphicBufferProducer>& callbackProducer) = 0;
    virtual status_t        setPreviewCallbackTarget(const sp<SurfaceType>& callbackProducer) = 0;

    // start preview mode, must call setPreviewTarget first
    virtual status_t        startPreview() = 0;
@@ -138,8 +137,7 @@ public:
    virtual status_t        setVideoBufferMode(int32_t videoBufferMode) = 0;

    // Set the video buffer producer for camera to use in VIDEO_BUFFER_MODE_BUFFER_QUEUE mode.
    virtual status_t        setVideoTarget(
            const sp<IGraphicBufferProducer>& bufferProducer) = 0;
    virtual status_t        setVideoTarget(const sp<SurfaceType>& bufferProducer) = 0;

    // Set the audio restriction mode
    virtual status_t        setAudioRestriction(int32_t mode) = 0;
+21 −11
Original line number Diff line number Diff line
@@ -573,7 +573,7 @@ typedef enum acamera_metadata_tag {
     * <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR</a>
     * capability or devices where
     * <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>
     * lists <a href="https://developer.android.com/reference/CaptureRequest.html#SENSOR_PIXEL_MODE">ACAMERA_SENSOR_PIXEL_MODE</a>
     * lists ACAMERA_SENSOR_PIXEL_MODE,
     * ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION /
     * ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION must be used as the
     * coordinate system for requests where ACAMERA_SENSOR_PIXEL_MODE is set to
@@ -802,7 +802,7 @@ typedef enum acamera_metadata_tag {
     * <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR</a>
     * capability or devices where
     * <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>
     * lists <a href="https://developer.android.com/reference/CaptureRequest.html#SENSOR_PIXEL_MODE">ACAMERA_SENSOR_PIXEL_MODE</a>,
     * lists ACAMERA_SENSOR_PIXEL_MODE,
     * ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION /
     * ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION must be used as the
     * coordinate system for requests where ACAMERA_SENSOR_PIXEL_MODE is set to
@@ -1008,7 +1008,7 @@ typedef enum acamera_metadata_tag {
     * <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR</a>
     * capability or devices where
     * <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>
     * lists <a href="https://developer.android.com/reference/CaptureRequest.html#SENSOR_PIXEL_MODE">ACAMERA_SENSOR_PIXEL_MODE</a>,
     * lists ACAMERA_SENSOR_PIXEL_MODE,
     * ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION /
     * ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION must be used as the
     * coordinate system for requests where ACAMERA_SENSOR_PIXEL_MODE is set to
@@ -4052,8 +4052,8 @@ typedef enum acamera_metadata_tag {
     * <p>For camera devices with the
     * <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR</a>
     * capability or devices where <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>
     * lists <a href="https://developer.android.com/reference/CaptureRequest.html#SENSOR_PIXEL_MODE">ACAMERA_SENSOR_PIXEL_MODE</a></p>
     * <p>ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION /
     * lists ACAMERA_SENSOR_PIXEL_MODE,
     * ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION /
     * ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION must be used as the
     * coordinate system for requests where ACAMERA_SENSOR_PIXEL_MODE is set to
     * <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">CameraMetadata#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION</a>.</p>
@@ -5999,7 +5999,7 @@ typedef enum acamera_metadata_tag {
     * This key will only be present for devices which advertise the
     * <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR</a>
     * capability or devices where <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>
     * lists <a href="https://developer.android.com/reference/CaptureRequest.html#SENSOR_PIXEL_MODE">ACAMERA_SENSOR_PIXEL_MODE</a></p>
     * lists ACAMERA_SENSOR_PIXEL_MODE.</p>
     * <p>The data representation is <code>int[4]</code>, which maps to <code>(left, top, width, height)</code>.</p>
     *
     * @see ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE
@@ -6032,7 +6032,7 @@ typedef enum acamera_metadata_tag {
     * This key will only be present for devices which advertise the
     * <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR</a>
     * capability or devices where <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>
     * lists <a href="https://developer.android.com/reference/CaptureRequest.html#SENSOR_PIXEL_MODE">ACAMERA_SENSOR_PIXEL_MODE</a></p>
     * lists ACAMERA_SENSOR_PIXEL_MODE.</p>
     *
     * @see ACAMERA_SENSOR_INFO_PHYSICAL_SIZE
     * @see ACAMERA_SENSOR_PIXEL_MODE
@@ -6061,7 +6061,7 @@ typedef enum acamera_metadata_tag {
     * This key will only be present for devices which advertise the
     * <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR</a>
     * capability or devices where <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>
     * lists <a href="https://developer.android.com/reference/CaptureRequest.html#SENSOR_PIXEL_MODE">ACAMERA_SENSOR_PIXEL_MODE</a></p>
     * lists ACAMERA_SENSOR_PIXEL_MODE.</p>
     * <p>The data representation is <code>int[4]</code>, which maps to <code>(left, top, width, height)</code>.</p>
     *
     * @see ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE
@@ -6100,7 +6100,7 @@ typedef enum acamera_metadata_tag {
     * <ul>
     * <li>This key will be present if
     *   <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>
     *   lists <a href="https://developer.android.com/reference/CaptureRequest.html#SENSOR_PIXEL_MODE">ACAMERA_SENSOR_PIXEL_MODE</a>, since RAW
     *   lists ACAMERA_SENSOR_PIXEL_MODE, since RAW
     *   images may not necessarily have a regular bayer pattern when
     *   <a href="https://developer.android.com/reference/CaptureRequest.html#SENSOR_PIXEL_MODE">ACAMERA_SENSOR_PIXEL_MODE</a> is set to
     *   <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">CameraMetadata#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION</a>.</li>
@@ -6470,9 +6470,19 @@ typedef enum acamera_metadata_tag {
     * height dimensions are given in ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE.
     * This may include hot pixels that lie outside of the active array
     * bounds given by ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE.</p>
     * <p>For camera devices with the
     * <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR</a>
     * capability or devices where
     * <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>
     * lists ACAMERA_SENSOR_PIXEL_MODE,
     * ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE_MAXIMUM_RESOLUTION will be used as the
     * pixel array size if the corresponding request sets ACAMERA_SENSOR_PIXEL_MODE to
     * <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">CameraMetadata#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION</a>.</p>
     *
     * @see ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE
     * @see ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE
     * @see ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE_MAXIMUM_RESOLUTION
     * @see ACAMERA_SENSOR_PIXEL_MODE
     */
    ACAMERA_STATISTICS_HOT_PIXEL_MAP =                          // int32[2*n]
            ACAMERA_STATISTICS_START + 15,
@@ -7622,8 +7632,8 @@ typedef enum acamera_metadata_tag {
     * <p>For camera devices with the
     * <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR</a>
     * capability or devices where <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>
     * lists <a href="https://developer.android.com/reference/CaptureRequest.html#SENSOR_PIXEL_MODE">ACAMERA_SENSOR_PIXEL_MODE</a>
     * , the current active physical device
     * lists ACAMERA_SENSOR_PIXEL_MODE,
     * the current active physical device
     * ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION /
     * ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION must be used as the
     * coordinate system for requests where ACAMERA_SENSOR_PIXEL_MODE is set to
Loading