背景:Camera2不支持数据格式PixelFormat.RGBA_8888。然而,CameraX却支持使用RGBA_8888的方式输出数据流。那么,CameraX是怎么做到的呢???
1. 首先我们介绍一下为何Camera2不支持数据格式PixelFormat.RGBA_8888。
我们通常配置ImageFormat时候,会通过以下代码配置。
ImageReader.newInstance(
previewSize!!.width, previewSize!!.height,
imageFormat, IMAGE_BUFFER_SIZE
)
但是运行起来会报错:format 0x1 defined
2023-01-07 17:52:27.835 25993-26074 CameraDevice-JV-1 com.demo.scanner W Stream configuration failed due to: createSurfaceFromGbp:413: Camera 1: No supported stream configurations with format 0x1 defined, failed to create output stream
2023-01-07 17:52:27.836 25993-26074 CameraCaptureSession com.demo.scanner E Session 0: Failed to create capture session; configuration failed
2. CameraX是怎么做到的呢???
首先在代码中配置的数据流处理方式OUTPUT_IMAGE_FORMAT_RGBA_8888
2.1. 我们发现,当创建CaptureSession时,配置的ImageFormat,分别是34(ImageFormat.PRIVATE)35(ImageFormat.YUV_420_888)