Android Camera 系统架构源码分析(5)---->Camera数据Buf的传递方式及相关类
来源:互联网 发布:数控车床如何编程 编辑:程序博客网 时间:2024/05/16 15:01
我们已经把大致的流程已经贯穿完了,还有很多东西没有讲,日后慢慢再说。不过现在有一个重要的问题,就是整个流利里各种buf,provider,bufmgr,queue类等之间的关系,说白了就是buf类和buf辅助类之前的关系。理清这些类的关系和这些类的作用,再从Buf流理解一下整个框架,CamAdapter和CamClient是怎么通过Buf联系,会对日后的分析有一个很大的帮助。也相当于对本文的一个总结。本来为了避免贴太多代码,想直接写中文总结的,后来发现贴代码虽然看得更辛苦一点,但细节更清晰,还是贴代码吧
看到这里我们了解到了
ImgBufQueNode为基本buf,里面包装了一个IImgBuf,用于操作内存存储
ImgBufQueue继承于IImgBufQueue和IImgBufProvider,是一个ImgBufQueNode队列的管理器,里面包含两条buf队列,一个是mTodoImgBufQue,一个是mDoneImgBufQue,里面装载着两种不同状态的buf,会把闲置的buf放入todo里,装好数据的buf装到done里,等待处理。在ImgBufQueue里有两个系列的函数
Process系列:
Provider系列
这些系统函数都继承于他们的父类,其中Process系列的我们已经都看到了,只要给DisplayClient内部用于负责操作mTodoImgBufQue和mDoneImgBufQue的数据进出。但我们根据立面的分析知道,DisplayClient的数据由外部的CamAdapter提供,接下来就从CamAdapter角度来分析:
看到这里我们又知道了:
IImgBufProviderClient是用来管理IImgBufProvider,即让CamAdapter通过ImgBufProvidersManager管理DisplayClient的IImgBufProvider
这里的IImgBufProvider是我们DiaplayClient数据队列的管理者ImgBufQueue的父类。管理着mTodoImgBufQue和mDoneImgBufQue
上面说了ImgBufQueue继承了Provider和Process,并实现了他们的函数,其中Provider是提供给外部的类提出数据包和插入数据包,而Process是用来给内部整理和读取数据包。就如我们的DisplayClient的ImgBufQueue,DisplayClient内部生成和读取Buf通过Process系列函数,而DisplayClient把Provider系列函数提供给了CamAdapter操作数据包
这里还涉及了两个外部管理类,ImgBufProvidersManager和PreviewBufMgr,他们的继承关系是:
ImgBufProvidersManager-->RefBase
PreviewBufMgr-->IPreviewBufMgr-->IPreviewBufMgrHandler
ImgBufProvidersManager是用来管理ImgBufQueue,DisplayClient和CamClient都在它的管理内
PreviewBufMgr则是提取Provider的数据包,并填充数据再按数据包的作用通过ImgBufProvidersManager找到相应的Provider,把数据传给Provider
阅读全文
0 0
- Android Camera 系统架构源码分析(5)---->Camera数据Buf的传递方式及相关类
- Android Camera 系统架构源码分析(5)---->Camera数据Buf的传递方式及相关类
- Android Camera 系统架构源码分析(4)---->Camera的数据来源及Camera的管理
- Android Camera 系统架构源码分析(4)---->Camera的数据来源及Camera的管理
- Android Camera 系统架构源码分析(1)---->Camera的初始化
- Android Camera 系统架构源码分析(1)---->Camera的初始化
- Android Camera 系统架构源码分析
- Android Camera 系统架构源码分析(2)---->Camera的startPreview和setPreviewCallback
- Android Camera 系统架构源码分析(3)---->Camera的显示流程
- Android Camera 系统架构源码分析(2)---->Camera的startPreview和setPreviewCallback
- Android Camera 系统架构源码分析(3)---->Camera的显示流程
- Android5.1.1Camera 系统架构源码分析(2)---->Camera的startPreview和setPreviewCallback
- Android 7.0 Camera架构源码分析1
- Android 5.0 Camera系统源码分析(2):Camera打开流程
- Android 5.0 Camera系统源码分析(2):Camera打开流程
- Android Camera架构分析
- Android Camera架构分析
- Android Camera源码分析
- 树的子结构
- Java 解析 Json 文件 (把 Json 转化成 String 的方法来解析)
- 十、内部类的认识
- web.xml文件中的7个错误的安全配置
- UnsupportedClassVersionError
- Android Camera 系统架构源码分析(5)---->Camera数据Buf的传递方式及相关类
- svn安装
- Java中Socket网络通信原理
- 简述CGI
- 论文_autosar
- openwrt 编译时 mbed TLS libraries not found 问题解决记录
- 机器学习实战Ch02_k近邻算法的运行
- 欢迎使用CSDN-markdown编辑器
- c# ExecuteScalar使用