2024年10月24日 第14讲 OutputConfiguration API详解 极客笔记
本讲是Android Camera专题系列的第14讲,我们介绍Android Camera2 API专题的OutputConfiguration API详解。
更多资源:
资源 | 描述 |
---|---|
在线课程 | 极客笔记在线课程 |
知识星球 | 星球名称:深入浅出Android Camera 星球ID: 17296815 |
极客笔记圈 |
API | 描述 |
---|---|
enableSurfaceSharing() | 使能多个Surfaces共享同一个OutputConfiguration |
getMaxSharedSurfaceCount() | 获取当前OutputConfiguration最大可以被几个Surfaces Share,目前是4个 |
removeSurface(Surface surface) | 删除不需要Share的Surface |
addSurface(Surface surface) | 向OutputConfiguration增加一个Surface;Deferred Surface和Surface Sharing都需要调用该方法 |
getSurfaceGroupId() | 获取该OutputConfiguration的Surface Group ID |
setPhysicalCameraId(String physicalCameraId) | 设置该OutputConfiguration属于哪个Physical Camera |
addSensorPixelModeUsed(int sensorPixelModeUsed) | 设置该OutputConfiguration的Sensor Pixel Mode |
removeSensorPixelModeUsed(int sensorPixelModeUsed) | 移除之前Add过的Sensor Pixel Mode,如果移除未Add过的Sensor Pixel Mode会发生IllegalArgumentException |
createInstancesForMultiResolutionOutput(MultiResolutionImageReader multiResolutionImageReader) | 通过MultiResolutionImageReader创建一个Multiresolution的OutputConfiguration列表 |
当App配置的Stream数量超出底层支持的限制时,可以考虑使用Surface Sharing功能。
哪些Surfaces满足Surface Sharing的条件
相同的size, format, 和 dataSpace, 不同的Surface source,则不一定能支持Surface Sharing,如果用这样的OutputConfiguration配置来创建Camera Capture Session,成功则表示可以Share,失败则表示无法Share。
enableSurfaceSharing必须在createCaptureSessionByOutputConfigurations前设置。
通过getMaxSharedSurfaceCount获取当前OutputConfiguration最大支持多少个Surface share同一个stream,目前是hardcode写死为4个。
从OutputConfiguration中移除不需要Share的Surface
用于创建OutputConfiguration的Surface不能被Remove,也就是下列Surface无法被移除
第一次调用addSurface的Deferred Surface
移除未Add过的Surface会发生IllegalArgumentException
向OutputConfiguration增加一个Surface
Deferred Surface,用于增加已经Ready的Surface
一个Logical Camera设备可能对应多个Physical Camera设备,App如何想获取某个Physical Camera的Stream,则需要通过该方法对OutputConfiguration设置Physical Camera ID
合法的Physical Camera ID需要从CameraCharacteristics.getPhysicalCameraIds获取
该方法必须在创建Camera Capture Session之前调用
对Reprocess的支持(待验证)
>= Android 12:Physical camera stream可以给logical camera stream reprocess,Physical camera stream可以给physical camera stream reprocess。
可设置的Sensor Pixel Mode
CaptureRequest需要搭配设置CaptureRequest.SENSOR_PIXEL_MODE参数
MultiResolutionImageReader将多个ImageReader封装在一起,这些ImageReader具体如下特性
应用场景
Stream Configuration Map
本文链接:http://so.lmcjl.com/news/16117/