第9讲 Android Camera2 API StreamConfigurationMap详解一

本讲是Android Camera专题系列的第9讲,我们介绍Android Camera2 API专题的StreamConfigurationMap详解一部分。

视频在线观看:

StreamConfigurationMap 概述

StreamConfigurationMap 概述

  • 存储可以使用的Stream Configurations(流配置信息)

  • 这些信息用于创建Surface时使用

  • 包括如下几大功能

    • 输出流配置信息
    • 输入流配置信息
    • 高分辨率流配置信息
    • 高帧率流配置信息

StreamConfigurationMap-输出流配置信息

输出流配置信息APIDescriptionAPI
getOutputFormats返回输出流支持的Format列表,这些Format定义在ImageFormat 或 PixelFormat。这个Format列表中的Format,在isOutputSupportedFor(int format)后会返回True。API 21
getOutputSizes(int format)

StreamConfigurationMap-输出流配置信息

API 21
getOutputSizes(Class klass)返回指定Class支持的输出流Size列表(不包括High Resolution),这个函数只返回ImageFormat#PRIVATE的Size列表,这个方法建议只用于不知道该使用什么Format时API 21
isOutputSupportedFor(int format)返回指定的Format是否支持配置为输出流,返回True的话,在getOutputSizes(int format)一定能获取到非空列表API21
isOutputSupportedFor(Class klass)返回指定的klass是否支持配置为接收Camera Buffer的Consumer,只有这6个组件会返回true:SurfaceTexture, SurfaceHolder, ImageReader, MediaRecorder, MediaCodec, Allocation。API21
isOutputSupportedFor(Surface surface)

StreamConfigurationMap-输出流配置信息

API 21

判断是否为Flexible Consumer

判断是否为Flexible Consumer

Min Frame Duration

当ISP处理模块的Mode(android.*.mode)设置为OFF/FAST时,这个值等于android.sensor.frameDuration

Stall Frame Duration

某路Buffer在Min Frame Duration基础上额外增加的处理时间,通常如下Format的Buffer有Stall Duration

  • JPEG

  • RAW16

  • RAW_PRIVATE

如下Format的Buffer的Stall Duration为0

  • YUV_420_888

  • Implementation-Defined

输出流配置信息APIDescriptionAPI
getOutputMinFrameDuration(int format, Size size)

Min Frame Duration

API 21
getOutputMinFrameDuration(Class klass, Size size)返回指定klass和Size的最小Frame Duration,单位是NS。API 21
getOutputStallDuration(int format, Size size)返回指定Format和Size的Stall Frame Duration,单位是NS。API21
getOutputStallDuration(Class klass, Size size)返回指定klass和Size的Stall Frame Duration,单位是NS。API 21

Camera ImageFormat vs HAL Pixel Format

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_DEFINED34
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
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

一个HAL Pixel Format如何对应多个ImageFormat?从Data Space的角度进行切分

ImageFormatData SpaceStream Configuration Metadata
ImageFormat.JPEGHAL_DATASPACE_V0_JFIFSCALER_AVAILABLE_STREAM_CONFIGURATIONS
ImageFormat.DEPTH_POINT_CLOUD ImageFormat.DEPTH16 ImageFormat.RAW_DEPTHHAL_DATASPACE_DEPTHDEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS
ImageFormat.DEPTH_JPEGHAL_DATASPACE_DYNAMIC_DEPTHDEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS
ImageFormat.HEICHAL_DATASPACE_HEIFHEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS
OthersHAL_DATASPACE_UNKNOWNSCALER_AVAILABLE_STREAM_CONFIGURATIONS
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

deepinout_camera

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值