Android 12(S) 圖像顯示系統 - BufferQueue的工作流程(十)



題外話

疫情隔離在家,周末還在努力學習的我  .....


 

一、前言


上一篇文章中,有基本講清楚Producer一端的處理邏輯,最后也留下了一個疑問:

Consumer是什么時候來消費數據的?他是自己主動來取的?還是收到了某種通知后再來處理的?

這篇文章,就帶着這些疑問來開始分析源碼。開頭還是把這種流程圖貼一下

 

二、Listener監聽器的回調過程解析


生產者寫完數據,把buffer還給buffer queue后,又是怎樣通知消費者來使用的呢?

下面這些解析步驟,就是回答上面的問題

1. 生產者把數據寫入buffer后,調用BufferQueueProducer::queueBuffer 入隊列這個buffer;

2. 怎么去通知消費者來取呢? queueBuffer函數中會調用frameAvailableListener->onFrameAvailable(item);

3. frameAvailableListener是什么呢?frameAvailableListener = mCore->mConsumerListener;

4. mCore即為BufferQueueCore, BufferQueueCore中有成員 sp<IConsumerListener> mConsumerListener


5. BufferQueueCore::mConsumerListener 是什么時候設置的呢?

   

 

關注公眾號 Android元宇宙 繼續閱讀相關文章!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM