Android 图像格式HAL_PIXEL_FORMAT_* vs ImageFormt.*对应关系

目录

一、常用HAL_PIXEL_FORMAT_*

二、ImageFormat与HAL Pixel Format对应关系

YUV:

RGB:

JPEG、DEPTH、RAW等:

Data Space

三、具体图像格式内存分布


一、常用HAL_PIXEL_FORMAT_*

HAL_PIXEL_FORMAT_*是hal中用到的图像像素格式,对应app侧的ImageFormat.*。定义位置在system/core/include/system/下面的几个文件,最常用的几种格式定义在graphics-base-v1.0.h。如下:

typedef enum {
    HAL_PIXEL_FORMAT_RGBA_8888 = 1,
    HAL_PIXEL_FORMAT_RGBX_8888 = 2,
    HAL_PIXEL_FORMAT_RGB_888 = 3,
    HAL_PIXEL_FORMAT_RGB_565 = 4,
    HAL_PIXEL_FORMAT_BGRA_8888 = 5,
    HAL_PIXEL_FORMAT_YCBCR_422_SP = 16,
    HAL_PIXEL_FORMAT_YCRCB_420_SP = 17,
    HAL_PIXEL_FORMAT_YCBCR_422_I = 20,
    HAL_PIXEL_FORMAT_RGBA_FP16 = 22,
    HAL_PIXEL_FORMAT_RAW16 = 32,
    HAL_PIXEL_FORMAT_BLOB = 33,
    HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED = 34,
    HAL_PIXEL_FORMAT_YCBCR_420_888 = 35,
    HAL_PIXEL_FORMAT_RAW_OPAQUE = 36,
    HAL_PIXEL_FORMAT_RAW10 = 37,
    HAL_PIXEL_FORMAT_RAW12 = 38,
    HAL_PIXEL_FORMAT_RGBA_1010102 = 43,
    HAL_PIXEL_FORMAT_Y8 = 538982489,
    HAL_PIXEL_FORMAT_Y16 = 540422489,
    HAL_PIXEL_FORMAT_YV12 = 842094169,
} android_pixel_format_t;

如果遇到其他不常用的格式,搜下同目录下几个文件。

二、ImageFormat与HAL Pixel Format对应关系

对应关系如下:

YUV:

ImageFormat/PixelFormatValueHAL Pixel FormatValue
ImageFormat.YUV_420_88835 (0x00000023)HAL_PIXEL_FORMAT_YCBCR_420_88835
ImageFormat.YV12842094169 (0x32315659)HAL_PIXEL_FORMAT_YV12842094169
ImageFormat.NV2117 (0x00000011)HAL_PIXEL_FORMAT_YCRCB_420_SP17
ImageFormat.NV1616 (0x00000010)HAL_PIXEL_FORMAT_YCBCR_422_SP16
ImageFormat.YUY220 (0x00000014)HAL_PIXEL_FORMAT_YCBCR_422_I20
ImageFormat.Y8538982489 (0x20203859)HAL_PIXEL_FORMAT_Y8538982489
ImageFormat.YCBCR_P01054 (0x00000036)HAL_PIXEL_FORMAT_YCBCR_P01054

RGB:

ImageFormat/PixelFormatValueHAL Pixel FormatValue
PixelFormat.RGBA_88881 (0x00000001)HAL_PIXEL_FORMAT_RGBA_88881
PixelFormat.RGBX_88882 (0x00000002)HAL_PIXEL_FORMAT_RGBX_88882
PixelFormat.RGB_8883 (0x00000003)HAL_PIXEL_FORMAT_RGB_8883
PixelFormat.RGB_5654 (0x00000004)HAL_PIXEL_FORMAT_RGB_5654
Not SupportedNAHAL_PIXEL_FORMAT_BGRA_88885
PixelFormat.RGBA_F1622 (0x00000016)HAL_PIXEL_FORMAT_RGBA_FP1622
PixelFormat.RGBA_101010243 (0x0000002b)HAL_PIXEL_FORMAT_RGBA_101010243

JPEG、DEPTH、RAW等:

ImageFormat/PixelFormatValueHAL Pixel FormatValue
ImageFormat.JPEG256 (0x00000100)HAL_PIXEL_FORMAT_BLOB33
ImageFormat.DEPTH_POINT_CLOUD257 (0x00000101)HAL_PIXEL_FORMAT_BLOB33
ImageFormat.DEPTH_JPEG1768253795 (0x69656963)HAL_PIXEL_FORMAT_BLOB33
ImageFormat.HEIC1212500294 (0x48454946)HAL_PIXEL_FORMAT_BLOB33
ImageFormat.DEPTH161144402265 (0x44363159)HAL_PIXEL_FORMAT_Y16540422489
ImageFormat.RAW_DEPTH4098(0x1002)HAL_PIXEL_FORMAT_RAW1632
ImageFormat.RAW_SENSOR32 (0x00000020)HAL_PIXEL_FORMAT_RAW1632
ImageFormat.RAW_PRIVATE36 (0x00000024)HAL_PIXEL_FORMAT_RAW_OPAQUE36
ImageFormat.RAW1037 (0x00000025)HAL_PIXEL_FORMAT_RAW1037
ImageFormat.RAW1238 (0x00000026)HAL_PIXEL_FORMAT_RAW1238
ImageFormat.PRIVATE34 (0x00000022)HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED

34

Data Space

可以看出,同一个HAL pixel format可能对应几种image format,如何确定是哪种?用Data Space:

ImageFormatData SpaceStream Configuration Metadata
JPEGHAL_DATASPACE_V0_JFIFSCALER_AVAILABLE_STREAM_CONFIGURATIONS
DEPTH_POINT_CLOUD
DEPTH16
RAW_DEPTH
HAL_DATASPACE_DEPTHDEPTH_AVAILABLE_DEPTH
_STREAM_CONFIGURATIONS
DEPTH_JPEGHAL_DATASPACE_DYNAMIC_DEPTHDEPTH_AVAILABLE_DYNAMIC
_DEPTH_STREAM_CONFIGURATIONS
HEICHAL_DATASPACE_HEIFHEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS
OthersHAL_DATASPACE_UNKNOWNSCALER_AVAILABLE_STREAM_CONFIGURATIONS

三、具体图像格式内存分布

优秀博客:Android中的图像格式_android_如浴春风_InfoQ写作社区

参考:

第9讲 StreamConfigurationMap详解一 - Android Camera2 API|极客笔记 (deepinout.com)

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值