Android --camera2(CameraExtensionCharacteristics)

627 阅读2分钟

CameraExtensionCharacteristics

允许客户端查询相机扩展的可用性和支持的分辨率。

相机扩展使相机客户可以访问特定于设备的算法和序列,这些算法和序列可以提高各种情况下快照的整体图像质量,例如低光、自拍、肖像和可以从增强的动态范围中受益的场景。通常,这种复杂的处理序列将依赖多个相机帧作为输入并产生单个输出。

不能保证所有设备上都存在摄像头扩展,因此摄像头客户端必须通过CameraExtensionCharacteristics#getSupportedExtensions().

为了使用任何可用的相机扩展,相机客户端必须创建一个相应的 CameraExtensionSession通过 CameraDevice#createExtensionSession(ExtensionSessionConfiguration)

相机客户端必须知道,特定于设备的相机扩展可能仅支持可用相机分辨率的一个子集,并且必须首先查询 CameraExtensionCharacteristics#getExtensionSupportedSizes(int, int)支持的单个高质量请求输出大小和 CameraExtensionCharacteristics#getExtensionSupportedSizes(int, Class)支持的重复请求输出大小。

在正常操作条件下,预期给定设备的扩展特性保持静态。

getEstimatedCaptureLatencyRangeMillis

public Range<Long> getEstimatedCaptureLatencyRangeMillis (int extension, 
                Size captureOutputSize, 
                int format)

返回调用期间目标捕获分辨率的估计捕获延迟范围(以毫秒为单位)CameraExtensionSession#capture。这包括处理多帧捕获请求所花费的时间以及必要时用于对已处理缓冲区进行编码的任何额外时间。

getExtensionSupportedSizes

public List<Size> getExtensionSupportedSizes (int extension, 
                int format)

检查给定的扩展是否可用,并通过 返回可用于高质量捕获请求的支持的输出表面分辨率CameraExtensionSession#capture

请注意,特定于设备的扩展只允许支持 StreamConfigurationMap#getOutputSizes.

特定于设备的扩展目前最多支持两种多帧捕获表面格式。所有扩展都将支持 ImageFormat.JPEG,并且可能支持也可能不支持 ImageFormat.YUV_420_888。

getExtensionSupportedSizes

public List<Size> getExtensionSupportedSizes (int extension, 
                Class<T> klass)

获取与klass用作重复请求的输出 兼容的尺寸列表CameraExtensionSession#setRepeatingRequest

请注意,特定于设备的扩展只允许支持相机输出表面和分辨率的子集。SurfaceTexture对于向后兼容的相机,该类保证至少有一种尺寸,而不保证支持其他输出类。

获取支持的扩展

public List<Integer> getSupportedExtensions ()

返回给定相机设备支持的特定于设备的扩展列表。