class BufferQueue : public BnGraphicBufferProducer,
public BnGraphicBufferConsumer,
private IBinder::DeathRecipient
从继承关系来看,是生产者,也是消费者,还关心的一个Binder的生死
主功能分成3个部分
1.生产者
IGraphicBufferProducer
dequeueBuffer
queueBuffer
2.消费者
IGraphicBufferConsumer
acquireBuffer
releaseBuffer
3.数据
BufferQueue
BufferSlot mSlots[32];
Vector mQueue;
工作原理
数据部分:(共享内存)
struct BufferSlot {
//图像缓冲区
sp mGraphicBuffer;
//buffer的状态,表示当的状态,是否可以dequue,queue,acquire等
BufferState mBufferState;
}
class BufferItem : public Flattenable {
//图像缓冲区
sp mGraphicBuffer;
//在slot数组中的索引
int mBuf;
…
}
BufferQueue中的 mSlots[32],mQueue都是指向GraphicBuffer的,只是应用的地方不一样
mQueue:是加工好的数据,Consumer可以消