Android 12(S) 图像显示系统 - BufferQueue的工作流程(十一)
题外话
我竟然已经写了这个系列的十一篇文章了,虽然内容很浅显,虽然内容很枯燥,虽然内容也许没营养,但我为自己的坚持点赞!
必读:Android 12(S) 图像显示系统 - 开篇
一、前言
前面的两篇文章,分别讲解了Producer的处理逻辑和queue buffer后通过FrameAvailableListener通知到Consumer的基本过程。
流程已经走到了BufferQueueConsumer::acquireBuffer中,所以这篇文章聚焦Consumer的一些处理逻辑。
还是把流程图贴上来
从流程图中看,这篇文章就是讲解右半部分的内容。
二、消费者-Consumer的相关逻辑
了解了 BufferQueueCore 和 BufferQueueProducer,接着看 BufferQueue 的最后一个元素:BufferQueueConsumer。
BufferQueueConsumer作为消费者的一个代表元素通过 acquireBuffer 来获取图像缓冲区,通过 releaseBuffer 来释放该缓冲区。
下面就分别看看 BufferQueueConsumer 中 acquireBuffer 和 releaseBuffer 两个操作的具体流程。
2.1 代码位置
/frameworks/native/libs/gui/BufferQueueConsumer.cpp
2.2 acquireBuffer的逻辑