从Camera2 API来看,表面似乎需要指定两次。在createCaptureSession期间完成后,传入曲面列表。稍后,我们再次为预览生成器的addTarget方法指定相同的曲面。如果我们以后要指定目标曲面,为什么我们需要在createCaptureSession调用期间首先指定曲面列表?addTarget对createCaptureSession没有做的表面到底做了什么?致以问候。
发布于 2018-06-12 06:15:34
对于捕获会话,需要列出可能要用于请求的所有表面。这样,相机设备就可以配置其硬件处理管道,以便能够按照请求的大小和所请求的目的地提供所有这些输出(例如,向SurfaceView/TextureView预览1080 p,向ImageReaders提供全分辨率JPEG,将4K视频记录缓冲区提供给MediaRecorder,等等)。
然后,每个请求包括这些曲面的子集(或全部)。并不是每个请求通常都希望包含每个配置好的ImageReader;您通常只包含用于快照的完全分辨率的JPEG,并且在积极录制视频时只包含MediaRecorder曲面。
如果这些表面只包含在捕获请求中,那么当它看到一个以前没有使用过的新曲面时,相机管道将不得不动态地重新配置自己。这通常会导致300-600毫秒的暂停,因为相机硬件会刷新其数据并重新配置自己。
因此,为了确保顺利运行,camera2 API要求应用程序预先为当前会话指定所有所需的输出。
https://stackoverflow.com/questions/50790524
复制相似问题