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的逻辑

 

关注公众号 Android元宇宙 继续阅读相关文章!

posted on 2022-03-23 09:03  二的次方  阅读(4398)  评论(3编辑  收藏  举报