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

Commit 9cd007e2 authored by Jiwen 'Steve' Cai's avatar Jiwen 'Steve' Cai Committed by Miao Wang
Browse files

Add more AIMAGE_FORMAT for RGB formats

As we are adding AHardwareBuffer access through AImage and AImageReader,
we now need buffer formats used by GL/Vulkan.

Bug: 35114769
Test: Built system and ran native camera cts
Change-Id: I4157c933b411ab597799c933d18fc78ad3323eb5
(cherry picked from commit de2a5448)
parent 7639616e
Loading
Loading
Loading
Loading
+91 −0
Original line number Original line Diff line number Diff line
@@ -53,6 +53,97 @@ typedef struct AImage AImage;


// Formats not listed here will not be supported by AImageReader
// Formats not listed here will not be supported by AImageReader
enum AIMAGE_FORMATS {
enum AIMAGE_FORMATS {
    /**
     * 32 bits RGBA format, 8 bits for each of the four channels.
     *
     * <p>
     * Corresponding formats:
     * <ul>
     * <li>AHardwareBuffer: AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM</li>
     * <li>Vulkan: VK_FORMAT_R8G8B8A8_UNORM</li>
     * <li>OpenGL ES: GL_RGBA8</li>
     * </ul>
     * </p>
     *
     * @see AImage
     * @see AImageReader
     * @see AHardwareBuffer
     */
    AIMAGE_FORMAT_RGBA_8888         = 0x1,

    /**
     * 32 bits RGBX format, 8 bits for each of the four channels.
     *
     * <p>
     * Corresponding formats:
     * <ul>
     * <li>AHardwareBuffer: AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM</li>
     * <li>Vulkan: VK_FORMAT_R8G8B8A8_UNORM</li>
     * <li>OpenGL ES: GL_RGBA8</li>
     * </ul>
     * </p>
     *
     * @see AImage
     * @see AImageReader
     * @see AHardwareBuffer
     */
    AIMAGE_FORMAT_RGBX_8888         = 0x2,

    /**
     * 24 bits RGB format, 8 bits for each of the three channels.
     *
     * <p>
     * Corresponding formats:
     * <ul>
     * <li>AHardwareBuffer: AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM</li>
     * <li>Vulkan: VK_FORMAT_R8G8B8_UNORM</li>
     * <li>OpenGL ES: GL_RGB8</li>
     * </ul>
     * </p>
     *
     * @see AImage
     * @see AImageReader
     * @see AHardwareBuffer
     */
    AIMAGE_FORMAT_RGB_888           = 0x3,

    /**
     * 16 bits RGB format, 5 bits for Red channel, 6 bits for Green channel,
     * and 5 bits for Blue channel.
     *
     * <p>
     * Corresponding formats:
     * <ul>
     * <li>AHardwareBuffer: AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM</li>
     * <li>Vulkan: VK_FORMAT_R5G6B5_UNORM_PACK16</li>
     * <li>OpenGL ES: GL_RGB565</li>
     * </ul>
     * </p>
     *
     * @see AImage
     * @see AImageReader
     * @see AHardwareBuffer
     */
    AIMAGE_FORMAT_RGB_565           = 0x4,

    /**
     * 64 bits RGBA format, 16 bits for each of the four channels.
     *
     * <p>
     * Corresponding formats:
     * <ul>
     * <li>AHardwareBuffer: AHARDWAREBUFFER_FORMAT_R16G16B16A16_SFLOAT</li>
     * <li>Vulkan: VK_FORMAT_R16G16B16A16_SFLOAT</li>
     * <li>OpenGL ES: GL_RGBA16F</li>
     * </ul>
     * </p>
     *
     * @see AImage
     * @see AImageReader
     * @see AHardwareBuffer
     */
    AIMAGE_FORMAT_RGBA_FP16         = 0x16,

    /**
    /**
     * Multi-plane Android YUV 420 format.
     * Multi-plane Android YUV 420 format.
     *
     *
+10 −0
Original line number Original line Diff line number Diff line
@@ -41,6 +41,11 @@ const char* AImageReader::kContextKey = "Context";
bool
bool
AImageReader::isSupportedFormat(int32_t format) {
AImageReader::isSupportedFormat(int32_t format) {
    switch (format) {
    switch (format) {
        case AIMAGE_FORMAT_RGBA_8888:
        case AIMAGE_FORMAT_RGBX_8888:
        case AIMAGE_FORMAT_RGB_888:
        case AIMAGE_FORMAT_RGB_565:
        case AIMAGE_FORMAT_RGBA_FP16:
        case AIMAGE_FORMAT_YUV_420_888:
        case AIMAGE_FORMAT_YUV_420_888:
        case AIMAGE_FORMAT_JPEG:
        case AIMAGE_FORMAT_JPEG:
        case AIMAGE_FORMAT_RAW16:
        case AIMAGE_FORMAT_RAW16:
@@ -60,6 +65,11 @@ AImageReader::getNumPlanesForFormat(int32_t format) {
    switch (format) {
    switch (format) {
        case AIMAGE_FORMAT_YUV_420_888:
        case AIMAGE_FORMAT_YUV_420_888:
            return 3;
            return 3;
        case AIMAGE_FORMAT_RGBA_8888:
        case AIMAGE_FORMAT_RGBX_8888:
        case AIMAGE_FORMAT_RGB_888:
        case AIMAGE_FORMAT_RGB_565:
        case AIMAGE_FORMAT_RGBA_FP16:
        case AIMAGE_FORMAT_JPEG:
        case AIMAGE_FORMAT_JPEG:
        case AIMAGE_FORMAT_RAW16:
        case AIMAGE_FORMAT_RAW16:
        case AIMAGE_FORMAT_RAW_PRIVATE:
        case AIMAGE_FORMAT_RAW_PRIVATE: