本讲是Android Camera专题系列的第9讲,我们介绍Android Camera2 API专题的StreamConfigurationMap详解一部分。
视频在线观看:
极客笔记在线课程:
https://v.deepinout.com/detail/p_623dd97ae4b01a4851e925da/6
加入知识星球与更多Camera同学交流
星球名称:深入浅出Android Camera
星球ID: 17296815
StreamConfigurationMap 概述
![StreamConfigurationMap 概述 StreamConfigurationMap 概述](https://static.deepinout.com/deepinout/android-system/camera/20210614193952-1.png)
存储可以使用的Stream Configurations(流配置信息)
这些信息用于创建Surface时使用
包括如下几大功能
输出流配置信息
输入流配置信息
高分辨率流配置信息
高帧率流配置信息
StreamConfigurationMap-输出流配置信息
输出流配置信息API
Description
API
getOutputFormats
返回输出流支持的Format列表,这些Format定义在ImageFormat 或 PixelFormat。这个Format列表中的Format,在isOutputSupportedFor(int format)后会返回True。
API 21
getOutputSizes(int format)
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)
API 21
判断是否为Flexible Consumer
![判断是否为Flexible Consumer 判断是否为Flexible Consumer](https://static.deepinout.com/deepinout/android-system/camera/20210614193952-4.png)
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
输出流配置信息API
Description
API
getOutputMinFrameDuration(int format, Size size)
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/PixelFormat
Value
HAL Pixel Format
Value
ImageFormat.JPEG
256 (0x00000100)
HAL_PIXEL_FORMAT_BLOB
33
ImageFormat.DEPTH_POINT_CLOUD
257 (0x00000101)
HAL_PIXEL_FORMAT_BLOB
33
ImageFormat.DEPTH_JPEG
1768253795 (0x69656963)
HAL_PIXEL_FORMAT_BLOB
33
ImageFormat.HEIC
1212500294 (0x48454946)
HAL_PIXEL_FORMAT_BLOB
33
ImageFormat.DEPTH16
1144402265 (0x44363159)
HAL_PIXEL_FORMAT_Y16
540422489
ImageFormat.RAW_DEPTH
4098(0x1002)
HAL_PIXEL_FORMAT_RAW16
32
ImageFormat.RAW_SENSOR
32 (0x00000020)
HAL_PIXEL_FORMAT_RAW16
32
ImageFormat.RAW_PRIVATE
36 (0x00000024)
HAL_PIXEL_FORMAT_RAW_OPAQUE
36
ImageFormat.RAW10
37 (0x00000025)
HAL_PIXEL_FORMAT_RAW10
37
ImageFormat.RAW12
38 (0x00000026)
HAL_PIXEL_FORMAT_RAW12
38
ImageFormat.PRIVATE
34 (0x00000022)
HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED
34
ImageFormat/PixelFormat
Value
HAL Pixel Format
Value
ImageFormat.YUV_420_888
35 (0x00000023)
HAL_PIXEL_FORMAT_YCBCR_420_888
35
ImageFormat.YV12
842094169 (0x32315659)
HAL_PIXEL_FORMAT_YV12
842094169
ImageFormat.NV21
17 (0x00000011)
HAL_PIXEL_FORMAT_YCRCB_420_SP
17
ImageFormat.NV16
16 (0x00000010)
HAL_PIXEL_FORMAT_YCBCR_422_SP
16
ImageFormat.YUY2
20 (0x00000014)
HAL_PIXEL_FORMAT_YCBCR_422_I
20
ImageFormat.Y8
538982489 (0x20203859)
HAL_PIXEL_FORMAT_Y8
538982489
ImageFormat.YCBCR_P010
54 (0x00000036)
HAL_PIXEL_FORMAT_YCBCR_P010
54
ImageFormat/PixelFormat
Value
HAL Pixel Format
Value
PixelFormat.RGBA_8888
1 (0x00000001)
HAL_PIXEL_FORMAT_RGBA_8888
1
PixelFormat.RGBX_8888
2 (0x00000002)
HAL_PIXEL_FORMAT_RGBX_8888
2
PixelFormat.RGB_888
3 (0x00000003)
HAL_PIXEL_FORMAT_RGB_888
3
PixelFormat.RGB_565
4 (0x00000004)
HAL_PIXEL_FORMAT_RGB_565
4
Not Supported
NA
HAL_PIXEL_FORMAT_BGRA_8888
5
PixelFormat.RGBA_F16
22 (0x00000016)
HAL_PIXEL_FORMAT_RGBA_FP16
22
PixelFormat.RGBA_1010102
43 (0x0000002b)
HAL_PIXEL_FORMAT_RGBA_1010102
43
一个HAL Pixel Format如何对应多个ImageFormat?从Data Space的角度进行切分
ImageFormat
Data Space
Stream Configuration Metadata
JPEG
HAL_DATASPACE_V0_JFIF
SCALER_AVAILABLE_STREAM_CONFIGURATIONS
DEPTH_POINT_CLOUD DEPTH16 RAW_DEPTH
HAL_DATASPACE_DEPTH
DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS
DEPTH_JPEG
HAL_DATASPACE_DYNAMIC_DEPTH
DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS
HEIC
HAL_DATASPACE_HEIF
HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS
Others
HAL_DATASPACE_UNKNOWN
SCALER_AVAILABLE_STREAM_CONFIGURATIONS
|