作者:清华大学 崔鹏 陶品
摘要:主要介绍在基于xscale处理器(PXA255)的嵌入式开发平台上搭建视频通信原型系统的具体方法。整个系统共分为采集,显示.编码、解码、发送、接收6个功能模块,着重介绍视频编解码部分在嵌入式系统上的优化方法。
实验结果表明,在基于xscale(PXA255)处理器的嵌入式系统平台上,该视频通信原型系统可以基本满足实时视频通信的要求,并具有良好的可扩展性。
要害词:XscaleH.263视频编码优化PXA255
引言
随着后PC时代的到来及Internet网络的飞速发展,人们已经不满足于被局限在PC平台上的视频通信,可以随时随地通过无线网络进行视频通信的移动设备有着很大的社会需求。众所周知,视频是一种流特性业务,数据量很大;另外实时视频通信要求对视频图像进行高效率、高比例的压缩,计算复杂度非常高。假如直接采用现有的Pc上的算法,嵌入式设备有限的电池能源和运算能力难以满足进行实时视频通信的需求,因此需要依据嵌入式设备的特点对算法进行改进和优化,从而降低运算的复杂度。基于xscale处理器的视频通信原型系统,初步满足了移动视频通信的要求,本文将具体介绍该系统的实现、优化方法和实验结果。
1 系统配置
硬件方面,本系统采用Intel公司的sitsangBoard(基于XScalePXA255处理器)作为硬件平台,使用以OV51l为接口芯片的USBCamera作为图像采集设备,Symbol公司的Spectrum24 WiFi CF Card作为无线网络传输设备。系统的砸件结构框图如图l所示。
软件方面,操作系统采用linux-2.4.19-rmk7版本的嵌入式Linux内核,图形界面环境采用MiniGUI1.3.3.网络传输协议采用802.11b。
2 系统软件设计
2.1功能模块设计
本系统终端需要具备以下功能:根据用户需求,①只显示本地图像;②只显示远程图像;③同时显示本地图像和远程图像。为实现功能选择的任意性,对系统软件进行了模块化设计,软件模块框图如图2所示。
①图像采集模块。调用Vide04Linux模块的API函数进行编写,为系统采集YUV格式的本地实时图像数据。
②图像显示模块。基于MiniGUI1.3.3图形库编写.并采用MiniGUI中的YUVOverlav技术直接对YUV图像数据进行显示。
③图像编码模块。采用H.263编码标准,对本地图像数据进行压缩编码。
④图像解码模块。采用H.263解码标准,对远程图像数据进行解码。该模块与图像解码模块共同构成本系统的核心。
⑤无线网络通信模块。采用802.11b协议,引入了RTP协议的打包机制,实现了基于UDP传输机制的发送模块和接收模块。
2.2软件设计流程
系统中本地显示、远程显示、发送和接收需要并发执行,故系统采用多线程编程技术。本系统共创建采集、显示、编码、解码、发送和接收6个线程,如图3所示。其中,合理有效的线程间的通信与互斥机制是保证程序能够顺利高效执行的要害。
3 系统性能优化
嵌入式设备计算能力受限问题以及功耗问题的存在,使得在嵌入式设备上实现实时视频通信更具挑战性。这就需要依据嵌入式设备的特点,充分利用计算资源,设计更合理的软件架构,并采用计算复杂度更小的算法对系统进行优化。下面具体介绍本系统中的优化策略。
3.1软件框架级优化
在多线程机制中,各个线程之间通过“时间片”机制分时复用CPU资源。假如不进行优化,则无法保证得到时间片的线程处于有效执行状态,而需要CPU资源的线程能很快得到时间片。
本系统中6个线程之间存在明显的依靠性。若编码线程不完成,则发送线程不会有数据源,若线程切换时间片为200ms,则在发送线程的200ms中,CPU一直处于空转状态。因此对整个系统而言,假如不加任何优化处理.CPU只有30%左右的时间处于有效执行状态。本系统的优化策略采用系统调用usleep()函数使处于无效状态的线程尽快释放CPU资源,实现方法如下:
while(1){
if(该线程标志位被触发){
……
usleeD(1000)
}
通过在代码的适当位置插入usleep()函数调用,CPU的利用率从30%左右提高到了96%以上,从而大大提高了计算资源的有效利用率,提高了整个系统的性能。
3.2算法级优化
本系统的核心部分由编码模块和解码模块构成。其中编码模块的复杂度要远大于解码模块的复杂度,成为整个系统的瓶颈。本文主要介绍编码模块的优化策略。
本系统采用tmn-1.7作为编码模块的蓝本。tmn-1.7遵循标准的H.263编解码标准,所以并没有考虑嵌入式设备的运算特性。其中对本系统影响最明显的是离散余弦变换算法(DCT)以及运动补偿算法(ME)。下面针对这两个算法提出优化方法。
3.2.1离散余弦变换算法
DCT算法把图像由像素域转换到频率域后,图像的大部分能量集中到直流系数分量以及低频交流系数分量上,从而更有利于去除空间冗余信息。
DCT变换的原理是:通过线性变换x=Hx将N维向量x变换为变换系数向量x,其中变换核H为:
其中变换核中的元素H(k,n)是无理数。这对大多数没有浮点协处理器的嵌入式设备实现实时视频通信是很大的瓶颈,因此提出将浮点数DCT变换算法改写成整数DCT变换算法的方案。
为实现这一方案,最要害的问题就是生成一个满足变换核的正交性要求,并且只包含整数系数的变换矩阵。其基本思路是将无理数扩大再取整,即:
Q(k,n)=round(aH(k,n))(2)
下面依据本系统所采用的方法,介绍整数DCT算法。
首先,介绍本系统该算法中的数据表示:
int*dataptr——指向临时存放DCT系数的内存空间指针:
int*blkptr——指向存放原始块数据的内存空间指针;
int*coeffptr——指向存放最终DCT系数的内存空间指针。
然后,对相关系数以及常数进行放缩。在对8×8的块进行DCT变换时,采用先进行行变换,再进行列变换的方法。下面以获取一个DCT系数的过程为例说明。
#defineCONST__BlTS13
#deflnePASSBITS2
#defineF1x_0_541196100((int)4433) /*O.541196100<<
CONST_BITS*/
到此行变换结束。结合公式(1)可以看出,经过行变换后比原始的DcT变换放大22倍;同理,再经过列变换后,系数又增大2、/2倍,即经过行列变换后共放大到8倍。在算法最后,将按比例还原:
block[i]=(shortint)(data[i]>>3);
再通过zigzag扫描矩阵,将系数填充到coeff矩阵中:
*(coeff+zigzag[i][j])=*(bLock+i*8+j);
在整数DCT算法中,通过比例放缩消除了浮点数运算,并且大多数乘除运算均采用移位方式处理,更符合CPU的运算特点,从而大幅度提高了运算效率和压缩速度。
3.2.2运动补偿算法
运动补偿算法用于去除相邻图像之间的时间冗余信息。该算法中,最佳匹配块搜索算法运算量占绝大部分。tmn-1.7编码器采用螺旋式全搜索算法,虽然准确度较高,但速度很慢。为了适应实时视频通信以及嵌入式设备运算能力较低的要求,本系统采用二维对数下降法。
二维对数下降法的原理是,通过快速搜索跟踪最小MAD点,如图4所示。以运动矢量(O,O)点为起始点,以十字形分布的5个点构成每次搜索的点群。假如最小MAD点出现在十字点群的边缘,则下次搜索以该点为中心,步长不变;假如最小MAD点出现在十字点群的中心,则下次搜索仍以该点为中心,但步长减半;假如新的十字形搜索中心出现在搜索窗边缘,则步长减半。如此循环,直到步长为1,则最小MAD点即为最佳匹配点。
本系统中对二维对数下降法的实现如下:
whlie(步长step>=1){
for(当前搜索十字点群中的每个点){
sad=SAD_Macroblock(当前搜索块的指针);/*获得SAD值*/if(sad息*/
}
}
if(最小MAD点是当前搜索中心){
step=stet)/2;//更新搜索步径
}
}
该算法大幅度减少了运动搜索的搜索次数,从而大大降低了运算量,提高了帧问编码的速率。
4 系统性能分析
下面对实时采集的QCIF图像序列进行测试和分析。测试环境为IntelSitsang硬件平台。此硬件平台采用PXA255处理器,主频400MHz;64MB SDRAM;操作系统采用Embeded Linux一2.4.19-rmk7。
实时视频通信系统主要性能指标为帧率、图像压缩比和信噪比。影响这三个因素的主要模块为采集、编码、解码以及接收和发送模块。以下针对各模块进行性能分析。
4.1模块性能分析
(1)采集模块
Sitsang板上的USB接口为USBl.1类型。由表1可知,采集数据的速率基本达到了USBI.1协议的12Mbps传输能力的上限,因此,采集图像的速度完全取决于图像格式及图像大小。为了保证图像实时性,采用YUV420176×144方案。
(2)编码模块
编码模块经过改写和优化,编码速度得到很大提高,基本可以满足实时视频传输的速度要求.具体数据如表2所列。在当前压缩速率的情况下,还能够获得理想的压缩比和信噪比,从而保证实时视频通信的质量,如表3所列。
(3)解码模块
经过对原有程序的裁减和改写,解码速度可以达到84fps。
(4)发送与接收模块
本系统采用WiFiCFCard作为网络传输设备,采用802.11b协议,引入了RTP协议的打包机制,实现了基于UDP传输机制的发送模块和接收模块。802.11b带宽达11Mbps,在表3的压缩比情况下,可传输帧率>1000fps,完全满足实时视频传输的要求。
4.2系统性能分析
经过模块优化和系统整合,原型系统在Sitsang板上同时显示本地图像和远程图像可达8帧/s,基本达到了实时视频要求。因为在系统框架设计中采用了采集线程一本地显示线程一编码线程发送线程互相抑制的机制,从而基本实现了本地端图像和远程端图像的同步。
结语
本文所设计的“基于嵌入式设备的视频通信原型系统”虽然只是一个雏形,但却完全实现了实时视频通信的功能,并为在嵌入式设备上实现实时视频通信提供了可行的框架和思路。该系统具有良好的可扩展性,为在嵌入式设备上实现视频会议以及可视电话系统提供了有价值的参考。