但是DMA 只适合于数据块的整体搬移,对于不同数据结构间的数据传输,前DSP 的DMA 控制器就无能为力了。所以可以借助ARM7控制DSPDMA 来完成视频编码中复杂的数据传输。
完成编码后的视频数据通过ARM7来进行和外界的传输,可以通过Internet、 CDMA或者GSM网络等,只需要ARM7设计相应的传输接口即可。至于ARM7与编码卡通信可以通过并口、串口、USB口、PCI接口等方式实现。其中PCI 接口方式易于ARM7与编码器高速传输数据,因此可以采用PCI接口。编码后的数据通过DSP的HPI、PCI桥芯片、PCI总线到达ARM7。ARM7通过DSP的HPI直接对DSP的存储空间进行访问。
3 软件设计及优化
3.1 视频采集
本系统在视频采集中设计了一个数据结构将空间连续的先行缓冲区转化为一个环形的缓冲区,其简单的示意图如图4所示。
absMiddle" border="0" onload="return imgresize(this);" onclick="javascript:window.open(this.src);" style="cursor:pointer;"/>
采用此方法只要为这个缓冲区分配足够大的空间,使其中存放的图像帧的数目至少大于3,这样就可以保证在对图像数据进行处理的同时还可以同步进行新的图像数据的采集,而不会发生任何数据冲突。系统将会永远保留环形缓冲区中最旧的N帧图像直至被系统取走。
3.2 视频编码
MPEG-4的视频编码是基于对象的视频编码,它仍然采用传统的预测编码、运动补偿、DCT变换构成的混合编码方式。编码器的核心算法包括运动估计、DCT/IDCT、量化、VLC 等,其中运动估计占据整个编码器近四分之一的运算量。因此,研究适合DSP 结构的、在速度和编码质量之间具有良好折中的运动估计算法是实现实时编码的一个关键问题。
在视频编码中应该采用块匹配的运动估计算法,但传统的块匹配算法在匹配速度上达不到满意的效果,因此本系统采用了在三步搜索算法的基础上改进的四步搜索的块匹配算法。
四步搜索算法描述如下:
(1)搜索匹配点组成一个菱形窗口,如图5所示。初始的9个匹配点为菱形的4个顶点、4条边的中点及菱形的中心点,如图5中的实心点。对每个点计算SAD的值,选取SAD最小的点。如果该点是此次搜索窗口的中心则跳到第4步,否则到第2步。
absMiddle" border="0" onload="return imgresize(this);" onclick="javascript:window.open(this.src);" style="cursor:pointer;"/>
图5 四步搜索算法示意图
(2)以SAD最小的点为新的菱形匹配点窗口的中心点,其余的匹配点的选取按下面的原则进行。
a)如果SAD最小的点是当前搜索窗口的角上的点,如A点,则取与A点不相邻的另外5个点,如图5中的形如的点。选取SAD最小的点,并到第3步;
b)如果SAD最小的点是当前搜索窗口的边上的点,如B点,则取与B点不相邻的另外3个点,如图5中的形如的点。选取SAD最小的点,并到第3步;
c)如果SAD最小的点是当前搜索窗口的中心点C点,则到第4步;
(3)搜索模式同2,最后都到第4步。