androidcamera 系统架构源码分析 (5)
写到第五篇,我们已经把大致的流程已经贯穿完了,还 有很多东
西没有讲,日后慢慢再说。不过现在有一个重要的 问题,就是整个流
利里各种 buf , provider ,bufmgr ,queue
类等之间的关系,说白了就是 buf 类和 buf 辅助类之前的关 系。理清
这些类的关系和这些类的作用,再从 Buf 流理解一 下整个框架,
CamAdapter 和 CamClient 是怎么通过 Buf 联系, 会对日后的分析
有一个很大的帮助。也相当于对本文的一个 总结。本来为了避免贴太
多代码,想直接写中文总结的,后 来发现贴代码虽然看得更辛苦一点,
但细节更清晰,还是贴 代码吧
DisplayClient::onThreadLoop(Command const& rCmd){ // (0) lock
Processor. //pImgBufQueue 的实现在 ImgBufQueue.cpp 里
spIImgBufQueue> pImgBufQueue; pImgBufQueue =
mpImgBufQueue; /** (1) Prepare all TODO buffers. pImgBufQueue
里有两个 Buf 队列 mTodoImgBufQue 和 mDoneImgBufQue 下面的
函数用 StreamImgBuf 生成好 ImgBufQueNode ,把 buf 的标志位设
为 eSTATUS_TODO 后 调用 ImgBufQueue 的
enqueProcessor()ffi 所有的 Buf 都放入到 mTodoImgBufQue 做接
收数据的准备 **/ prepareAllTodoBuffers(pImgBufQueue); // (2)
Start 只是通 知队列,不做任何队列的数据处理
pImgBufQueue->startProcessor(); // (3) Do until disabled. while ( 1