#include <stdint.h>
typedef struct ARect {
int32_t left;
int32_t top;
int32_t right;
int32_t bottom;
} ARect;
enum AHardwareBuffer_Format {
AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM = 1,
AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM = 2,
AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM = 3,
AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM = 4,
AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT = 0x16,
AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM = 0x2b,
AHARDWAREBUFFER_FORMAT_BLOB = 0x21,
AHARDWAREBUFFER_FORMAT_D16_UNORM = 0x30,
AHARDWAREBUFFER_FORMAT_D24_UNORM = 0x31,
AHARDWAREBUFFER_FORMAT_D24_UNORM_S8_UINT = 0x32,
AHARDWAREBUFFER_FORMAT_D32_FLOAT = 0x33,
AHARDWAREBUFFER_FORMAT_D32_FLOAT_S8_UINT = 0x34,
AHARDWAREBUFFER_FORMAT_S8_UINT = 0x35,
AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420 = 0x23,
};
enum AHardwareBuffer_UsageFlags {
AHARDWAREBUFFER_USAGE_CPU_READ_NEVER = 0UL,
AHARDWAREBUFFER_USAGE_CPU_READ_RARELY = 2UL,
AHARDWAREBUFFER_USAGE_CPU_READ_OFTEN = 3UL,
AHARDWAREBUFFER_USAGE_CPU_READ_MASK = 0xFUL,
AHARDWAREBUFFER_USAGE_CPU_WRITE_NEVER = 0UL << 4,
AHARDWAREBUFFER_USAGE_CPU_WRITE_RARELY = 2UL << 4,
AHARDWAREBUFFER_USAGE_CPU_WRITE_OFTEN = 3UL << 4,
AHARDWAREBUFFER_USAGE_CPU_WRITE_MASK = 0xFUL << 4,
AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE = 1UL << 8,
AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER = 1UL << 9,
AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT = AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER,
AHARDWAREBUFFER_USAGE_COMPOSER_OVERLAY = 1ULL << 11,
AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT = 1UL << 14,
AHARDWAREBUFFER_USAGE_VIDEO_ENCODE = 1UL << 16,
AHARDWAREBUFFER_USAGE_SENSOR_DIRECT_DATA = 1UL << 23,
AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER = 1UL << 24,
AHARDWAREBUFFER_USAGE_GPU_CUBE_MAP = 1UL << 25,
AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE = 1UL << 26,
AHARDWAREBUFFER_USAGE_VENDOR_0 = 1ULL << 28,
AHARDWAREBUFFER_USAGE_VENDOR_1 = 1ULL << 29,
AHARDWAREBUFFER_USAGE_VENDOR_2 = 1ULL << 30,
AHARDWAREBUFFER_USAGE_VENDOR_3 = 1ULL << 31,
AHARDWAREBUFFER_USAGE_VENDOR_4 = 1ULL << 48,
AHARDWAREBUFFER_USAGE_VENDOR_5 = 1ULL << 49,
AHARDWAREBUFFER_USAGE_VENDOR_6 = 1ULL << 50,
AHARDWAREBUFFER_USAGE_VENDOR_7 = 1ULL << 51,
AHARDWAREBUFFER_USAGE_VENDOR_8 = 1ULL << 52,
AHARDWAREBUFFER_USAGE_VENDOR_9 = 1ULL << 53,
AHARDWAREBUFFER_USAGE_VENDOR_10 = 1ULL << 54,
AHARDWAREBUFFER_USAGE_VENDOR_11 = 1ULL << 55,
AHARDWAREBUFFER_USAGE_VENDOR_12 = 1ULL << 56,
AHARDWAREBUFFER_USAGE_VENDOR_13 = 1ULL << 57,
AHARDWAREBUFFER_USAGE_VENDOR_14 = 1ULL << 58,
AHARDWAREBUFFER_USAGE_VENDOR_15 = 1ULL << 59,
AHARDWAREBUFFER_USAGE_VENDOR_16 = 1ULL << 60,
AHARDWAREBUFFER_USAGE_VENDOR_17 = 1ULL << 61,
AHARDWAREBUFFER_USAGE_VENDOR_18 = 1ULL << 62,
AHARDWAREBUFFER_USAGE_VENDOR_19 = 1ULL << 63,
};
typedef struct AHardwareBuffer_Desc {
uint32_t width; uint32_t height;
uint32_t layers;
uint32_t format; uint64_t usage; uint32_t stride; uint32_t rfu0; uint64_t rfu1; } AHardwareBuffer_Desc;
typedef struct AHardwareBuffer_Plane {
void* _Nullable data; uint32_t pixelStride; uint32_t rowStride; } AHardwareBuffer_Plane;
typedef struct AHardwareBuffer_Planes {
uint32_t planeCount; AHardwareBuffer_Plane planes[4]; } AHardwareBuffer_Planes;
typedef struct AHardwareBuffer AHardwareBuffer;