Android CameraServer答疑1:ImageBuffer申请与使用
Q4: Image Buffer 在哪里申请?怎么给到 Camera Provider?又怎么送到上层?结论: Buffer 由 App 的 Surface 创建,Service 中转给 HAL,HAL 处理后通过 BufferQueue 返回给 App,全程零拷贝。1. Buffer 申请(两种模式)模式一:Service 端主动申请(传统模式)RequestThread::prepareHalRequests() - outputStream-getBuffer() - Camera3OutputStream::getBufferLockedCommon() - mBufferManager-getBufferForStream() // BufferManager 共享池分配 或 - anw-dequeueBuffer() // 从 App 的 BufferQueue 出队Camera3OutputStream::getBufferLockedCommon()(Camera3OutputStream.cpp:882) 中:若mUseBufferManager == true:调用Camera3BufferManager::getBufferForStream()从共享 buffer 池获取,再attachBuffer()到 BufferQueue否则:直接从 App 端的Surface(ANativeWindow)dequeueBuff

相关新闻