USB1.1采集图像速率分析
来源:互联网 发布:网络规划设计方案 编辑:程序博客网 时间:2024/04/29 18:14
遇到的问题:
在Tiny6410上面做视频采集、H264编码、Rtp传输的、远端解码显示的流媒体时,遇到了视频卡顿与丢帧严重的现象,移植以为是Rtp协议的问题,调试了很久。
最终基本排除Rtp协议的问题,猜测问题应该是图像采集速率过低造成的,查找各方面的资料来验证我的猜想,结果如下:
Tiny6410的USB接口是USB1.1的标准,传输速率最高为1.5M/s
性能分析
USB1.1最大每秒可传的帧数由图像大小和USB速度共同决定。下面以320×240 YUYV格式的图像为例,计算USB1.1最大每秒可传的帧数。
(1)每帧需要传输的数据量为 320 × 240 × 2 × 8 = 1228800bit = 1.2288Mbit
(2)USB协议规定:USB1.1的最大传输比特率为12M也就是每秒传12Mbit。这只是理论上的数据,实际传输也就10M左右。我们以10Mbps为例
(3)USB协议规定:同步传输不得超过总线的带宽的90%,所以传播速度还得乘以0.9,为9Mbps。
(4)USB传输速度包括了协议相关的位,USB协议规定USB同步传输包,每个包的协议信息为9个字节。每秒帧数还与每个USB帧(1mS)传输的包的数量有关系,这与同步端点的最大数据有关系,我的摄像头同步端点最大数据为8字节。所以每个包的数据与协议数据比就是 8 : 9, 这样一来带宽还得乘以一个 8/17,为4.2353Mbps
(5) 最后算出每秒帧数据就是 4.2353 / 1.2288 = 3.4
以上计算没有考虑SOF包,以及USB位填充,以及其他的因素,粗略的算出,对于320×240的一幅YUYV格式的图像,USB1.1最大每秒传输3.4帧。可谓是非常小了,但这只是理论的值,实际我用gettimeofday测出的只有每秒一帧多,这样的速度不卡才怪。所以最后得出的结论就是:由于USB1.1的速度限制,采用USB1.1做图像采集,在USB摄像头输出格式为未压缩的原始数据(如:RGB,YUV)的前提下只能采集到低分辨率,低质量的画面。基本上不能用于产品,我查了一些资料,USB1.1数据采集的系统,USB摄像头采集出来的数据格式大多是已经压缩过的,如JPEG格式,这样可大大减轻USB传输的负担,提高视频采集的采集质量。但是这样也有弊端,采集回的数据不是原始数据,不方便对数据的二次处理。所以这种压缩输出格式的USB摄像头基本上都是USB1.1的,USB2.0的摄像头输出格式基本上都是未经处理的原始数据,因为2.0的速度已经足够快,理论480Mbps的速度绝对满足需要。
0 0
- USB1.1采集图像速率分析
- USB1.1学习笔记
- USB1.1学习笔记
- 图像采集
- 图像采集
- FTP下载速率分析
- 图象速率及采集的计算公式
- 图象速率及采集的计算公式
- 图象速率及采集的计算公式
- [1]树莓派控制摄像头采集图像
- USB1.1规范之硬件篇
- USB1.1规范之协议篇
- USB1.1规范之端点篇
- USB1.1规范之描述符篇
- USB1.1规范之请求篇
- USB1.1规范之实例篇
- LINUX下USB1.1设备学习小记
- LINUX下USB1.1设备学习小记
- Map集合的两种取出方式
- python进程间传递文件描述符扩展库
- 新浪微博网站接入的具体步骤 同步微博
- 常用工具注册码收集
- Android_项目上线流程总结
- USB1.1采集图像速率分析
- Android第十七天 Loader异步装载
- 装ODAC期间注意的问题
- Dijkstra算法Java实现
- UFLDL稀疏自编码器练习翻译增添公式图片
- Unity移动物体
- rfc791 IP协议
- js清除cookie
- poj3308--Paratroopers(最小割)