欢迎来到天天文库
浏览记录
ID:36489350
大小:75.50 KB
页数:9页
时间:2019-05-11
《Android6.0显示系统(三)管理图像缓冲区》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Android6.0显示系统(三)管理图像缓冲区一、BufferQueueCoreBufferQueueProducerBufferQueueConsumer上篇博客在Layer的onFirstRef函数中,调用了下面函数,创建了3个对象BufferQueueCoreBufferQueueProducerBufferQueueConsumer。其中BufferCore是核心,把BufferQueueProducer和BufferQueueConsumer对象连接在一起。[cpp]viewplaincopy在CODE上查看代码片派生到我的代码片voidBuff
2、erQueue::createBufferQueue(sp*outProducer,sp*outConsumer,constsp&allocator){spcore(newBufferQueueCore(allocator));spproducer(newBufferQueueProducer(core));sp3、Consumer>consumer(newBufferQueueConsumer(core));*outProducer=producer;*outConsumer=consumer;}1.1生产者和core的联系IGraphicBufferProducer的大致接口如下,BufferQueueProducer类是接口IGraphicBufferProducer的实现,使用BufferQueueProducer之前先要调用connect函数,使用结束后调用disconnect断开连接。[cpp]viewplaincopy在CODE上查看代码片派生到我的代码片4、classIGraphicBufferProducer:publicIInterface{public:virtualstatus_trequestBuffer(intslot,sp*buf)=0;virtualstatus_tsetBufferCount(intbufferCount)=0;virtualstatus_tdequeueBuffer(int*slot,sp*fence,boolasync,uint32_tw,uint32_th,PixelFormatformat,uint32_tusage)=0;v5、irtualstatus_tdetachBuffer(intslot)=0;virtualstatus_tdetachNextBuffer(sp*outBuffer,sp*outFence)=0;virtualstatus_tattachBuffer(int*outSlot,constsp&buffer)=0;virtualstatus_tqueueBuffer(intslot,constQueueBufferInput&input,QueueBufferOutput*output)=6、0;virtualvoidcancelBuffer(intslot,constsp&fence)=0;virtualintquery(intwhat,int*value)=0;virtualstatus_tconnect(constsp&listener,intapi,boolproducerControlledByApp,QueueBufferOutput*output)=0;virtualstatus_tdisconnect(intapi)=0;virtualstatus_tsetSidebandStr7、eam(constsp&stream)=0;virtualvoidallocateBuffers(boolasync,uint32_twidth,uint32_theight,PixelFormatformat,uint32_tusage)=0;virtualstatus_tallowAllocation(boolallow)=0;virtualstatus_tsetGenerationNumber(uint32_tgenerationNumber)=0;virtualString8getConsumerName()const=08、;};在BufferQueueCore类中定义了一个
3、Consumer>consumer(newBufferQueueConsumer(core));*outProducer=producer;*outConsumer=consumer;}1.1生产者和core的联系IGraphicBufferProducer的大致接口如下,BufferQueueProducer类是接口IGraphicBufferProducer的实现,使用BufferQueueProducer之前先要调用connect函数,使用结束后调用disconnect断开连接。[cpp]viewplaincopy在CODE上查看代码片派生到我的代码片
4、classIGraphicBufferProducer:publicIInterface{public:virtualstatus_trequestBuffer(intslot,sp*buf)=0;virtualstatus_tsetBufferCount(intbufferCount)=0;virtualstatus_tdequeueBuffer(int*slot,sp*fence,boolasync,uint32_tw,uint32_th,PixelFormatformat,uint32_tusage)=0;v
5、irtualstatus_tdetachBuffer(intslot)=0;virtualstatus_tdetachNextBuffer(sp*outBuffer,sp*outFence)=0;virtualstatus_tattachBuffer(int*outSlot,constsp&buffer)=0;virtualstatus_tqueueBuffer(intslot,constQueueBufferInput&input,QueueBufferOutput*output)=
6、0;virtualvoidcancelBuffer(intslot,constsp&fence)=0;virtualintquery(intwhat,int*value)=0;virtualstatus_tconnect(constsp&listener,intapi,boolproducerControlledByApp,QueueBufferOutput*output)=0;virtualstatus_tdisconnect(intapi)=0;virtualstatus_tsetSidebandStr
7、eam(constsp&stream)=0;virtualvoidallocateBuffers(boolasync,uint32_twidth,uint32_theight,PixelFormatformat,uint32_tusage)=0;virtualstatus_tallowAllocation(boolallow)=0;virtualstatus_tsetGenerationNumber(uint32_tgenerationNumber)=0;virtualString8getConsumerName()const=0
8、;};在BufferQueueCore类中定义了一个
此文档下载收益归作者所有