題外話
我竟然已經寫了這個系列的十一篇文章了,雖然內容很淺顯,雖然內容很枯燥,雖然內容也許沒營養,但我為自己的堅持點贊!
必讀: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的邏輯