>
首页 » 业界动态 » 基于MPEG-4和DSP的视频处理器的设计与应用

基于MPEG-4和DSP的视频处理器的设计与应用

作者:宁强,王永生,张海英  时间:2007-04-18 10:23  来源:

摘要:介绍了MPEG-4标准及其编码原理,讨论了基于通用DSP的硬件设计方案和对MPEG-4源代码进行优化的方法,并给出该视频处理器在煤矿救援系统中的一个实际应用。

关键词:视频;MPEG-4;DSP;实时处理


目前,对视频信号进行MPEG-4压缩编码主要有三种方式:第一种是纯软件的方式,即把摄像头或图像传感器捕获的视频信号直接交给计算机,后续所有的编码工作都由计算机软件来完成。这种方式完全依赖计算机,计算机CPU负担过重,因而难以实现实时性。第二种方式是使用专用芯片编码,这类芯片固化了MPEG-4的压缩算法,可对视频码流进行高速而有效的压缩;但这类专用芯片价格十分昂贵,用户难以对其进行二次开发,故适用面较窄。第三种方式是自主开发硬件平台和压缩软件进行编码,这种方式设计灵活,节约成本,而且能大幅度提高处理速度。本文讨论的视频实时处理器采用第三种方式。

MPEG-4标准及其编码原理

MPEG-4是由ITU-T的视频编码专家组(VCEG)及ISO/IEC的移动图像专家组(MPEG)大力发展研究的新一代基于对象(object-based)的视频压缩标准,它充分利用了人眼视觉特性,抓住了图像信息传输的本质,从轮廓、纹理思路出发,支持基于视觉内容的交互功能,适应了多媒体信息的应用由播放型转向基于内容的访问、检索及操作的发展趋势。MPEG-4利用带宽很窄,但更注重多媒体系统的交互性和灵活性,主要应用于视像电话(Video Phone),视像电子邮件(Video Email),电子新闻(Electronic News)和远程监控等。

MPEG-4视频压缩标准的最显著特点是:既可用于低码率(5 -64Kbps)的视频压缩编码,又可用于高码率(4Mbps)的视频压缩编码;既可用于传统的矩形帧图像,又可用于任意形状的视频对象压缩编码。MPEG-4采用基于对象的编码,把一段视频序列看成由不同的视频对象VO(Video Object)组成,每个VO在某一特定时刻的实例称为视频对象面VOP(VideoObject Plane),编码器根据实际情况对各个VOP或只对特定的VOP编码,即MPEG-4用VOP代替了传统的矩形帧作为编码对象,用形状、运动、纹理信息代替H.263等传统视频编码采用的运动、纹理信息来表示视频。编码仍按宏块进行,采用形状编码、预测编码、基于DCT的纹理编码的混合编码方法。除去VO的图像剩余背景部分,采用传统的矩形DCT变换编码。最后VO场景描述信息的编码、VOP流、背景编码流一起送入MPEG-4帧复合器,形成MPEG-4视频流输出。图1简单描述了MPEG-4视频编码原理。


图1 MPEG-4视频编码原理简图

需要特别指出的是:虽然MPEG-4标准最大的特点是引入了对象的概念,但目前还没有非常成熟的算法能够提取和分离对象,其实现方法复杂、运算量大,因此实际应用中的MPEG-4编码器都是将视频帧划分为矩形块或者宏块进行编码的。

系统设计

硬件设计
通常认为,数字逻辑电路的频率达到或超过45MHz~50MHz,而且工作在该频率下的电路已经占到了整个电子系统一定的份量(比如说1/3),就称之为高速电路。本视频处理器的电路有许多高速器件,因而在设计过程中需要特别注意电源的分配、串扰的消除、过孔的放置以及耦合及退耦等问题。在器件的放置和布线过程中,实现电路基本功能的同时,要综合考虑各种因素,既满足设计的要求,又要尽量降低其复杂程度。系统硬件框图如图2所示。


图2 硬件系统框图

系统硬件主要芯片介绍如下:
(1)DSP(TMS320C6211)——TI公司的高性能数字信号处理器,它拥有完善的指令系统和优秀的处理能力,片上72K字节的Memory,主频150MHz,每秒处理1200M条指令,通过功能强大的接口对外部设备进行操作。

(2)SAA7114H——Philips公司经典的视频解码芯片,将摄像头输出的PAL或NTSC制式信号转变为数据色彩格式为4:2:0的数字信号,通过IIC总线对其进行配置。

(3)SN74V215——视频FIFO,512K,18位帧缓存。

(4)ISPLSI1032——CPLD,电路逻辑控制芯片。通过SAA-7114H的状态及DSP相应的输出控制信号生成FIFO的控制信号,此外还完成对其他芯片的逻辑控制。

(5)CS8900A——以太网控制芯片,它将压缩过的码流传递到网络接口。

(6)AT29LV040——512K,8位FLASH,程序存贮器。

(7)HY57V651620BTC——4M,16位SDRAM。

系统主要由视频处理模块、电源模块、时钟模块、扩展存储模块和网络模块几部分构成。下面详细介绍视频处理模块。视频处理子系统见图3。


图3 视频子系统示意图

视频采集芯片选用Philips公司的SAA7114H。该芯片的工作时钟为24.576MHz。输入PAL(或NTSC)格式模拟视频信号,设定输出数据色彩格式为4:2:0,设定抗混叠滤波、AD转换、自动钳位、自动增益变换、PAL和NTSC制式之间自动切换等功能。通过IIC总线对SAA7114H进行初始配置。SAA7114H可分为场同步脉冲和行同步脉冲,每场的数字视频信号有效之前,SAA71l4H会输出场同步脉冲,并使能垂直参考信号IGPV置高;而在每行信号有效之前,也会输出行同步脉冲,并使能水平参考信号IGPH置高。

DSP首先判断奇、偶场,随后当IGPH有效时开始接收一行的数据,当一行数据接收完毕后IGPH被置低;当IGPV有效时开始接受一场的数据,当一场数据接收完毕后IGPV被置低。避免在黑电平期间接收无用数据,同时翻转奇偶场识别信号电子。由于DSP工作时钟远高于7114H的工作时钟,采用双FIFO(FIFO_0和FIFO_1)的设计来提高系统的效率。7114H输出的数字信号直接存入两片16位FIFO中,由7114H的ICLK时钟引脚向FIFO的写时钟WCLK进行同步,通过CPLD的组合逻辑来片选FIFO_0和FIFO_1,然后合并两路16位数据,输出到32位数据总线,由DSP来对其操作。

软件设计
系统的软件模块主要包括硬件驱动程序包、MPEG-4算法程序包和TCP/IP协议以及传输层协议实现等几个部分。其中,硬件驱动程序包括DSP初始化程序、视频AD和FIFO初始化程序以及CPLD编程包等,MPEG-4压缩算法采用移植和优化开源代码xvid来实现,TCP/IP软件栈是基于DSP对网络接口驱动芯片CS8900A的控制来实现的。软件系统流程如图4所示。


图4 软件系统流程

下面是SAA7114H的功能配置程序(部分):

/* 设置SAA7114重新开始1个新的图像捕捉、处理过程 */
MCBSP_clrPin(hMcbsp1,FIFO_0_ENABLE);
/* FEN_0="0"禁止FIFO_0数据采集 */
MCBSP_clrPin(hMcbsp1,FIFO_0_RESET);
/* FRS_0="0"FIFO_0复位 */
MCBSP_clrPin(hMcbsp1,FIFO_1_ENABLE);
/*FEN_1="0"禁止FIFO_1数据采集*/
MCBSP_clrPin(hMcbsp1,FIFO_1_RESET);
/* FRS_1="0" FIFO_1复位 */
Vconfig_frame_count=0; /* 帧计数清为0,重新开始 */
/*使缩放器Scaler处于空闲状态*/
err|=IIC_writeReg(slaveAddr,PowerSaveControl,SCALER_RST);
/* 设置亮度、对比度、饱和度、色调 */
err|=IIC_writeReg(slaveAddr,LuminanceBrightness,vconfig.brightness);
err|=IIC_writeReg(slaveAddr,LuminanceContrast,vconfig.contrast);
err|=IIC_writeReg(slaveAddr,ChromaSaturation,vconfig.saturation);
err|=IIC_writeReg(slaveAddr,ChromaHueControl,vconfig.hue);
/* 使缩放器Scaler切换回正常工作状态 */
err|=IIC_writeReg(slaveAddr,PowerSaveControl,SCALER_ON);
MCBSP_setPin(hMcbsp1,FIFO_0_RESET);
/* FRS_0="1" 撤销FIFO_0复位信号 */
MCBSP_setPin(hMcbsp1,FIFO_0_ENABLE);
/* FEN_0="1" 使能FIFO_0数据采集 */
MCBSP_setPin(hMcbsp1,FIFO_1_RESET);
/* FRS_1="1" 撤销FIFO_1复位信号 */
MCBSP_setPin(hMcbsp1,FIFO_1_ENABLE);
/* FEN_1="1" 使能FIFO_1数据采集 */
vconfig.saa7114_ok |=err;

下面介绍MPEG-4编码程序的优化。本系统编码设计采用移植开源代码xvid作为算法实现的基础,xvid为开源的C语言的MPEG-4算法,在此基础上对DSP代码的优化共分为三个层次:项目级优化、C程序级优化、汇编程序级优化。算法的优化是实现程序实时性的重要保证,针对此MPEG-4实时编码器系统,瓶颈就在编码的速度,可以采取如下几种优化策略:

(1)项目级优化:主要是通过选择CCS提供的编译优化参数,根据MPEG-4标准进行优化,通过不断地对各个参数(-mw-pm-o3-mt等)的选择、搭配、调整,改善循环体的性能,进行软件流水,从而提高软件的并行性。

(2)C程序级优化:主要是针对采用的DSP的具体特点进行代码的功能精简、数据结构的优化、循环的优化、代码的并行化处理。

(3)汇编程序级优化:汇编级的优化包括两部分,采用线性汇编语言进行优化和直接用汇编语言进行优化。由于系统编译器的局限性,并不能将全部的函数都很好地优化,这样就需要统计比较耗时的C语言函数,用汇编语言重新编写。例如C代码的DCT变换程序,执行一维8点DCT时,需要近300个周期,改写为线性汇编后,仅需近40个周期,大大提高了执行效率。系统上电后,首先进行程序的自举加载,进行系统的初始化;然后加载MPEG-4算法程序包。在具体的硬件环境中,进一步地进行MPEG-4算法的优化,直至达到实时性的要求。

视频处理器应用

KTE-5型矿山救援可视化指挥系统采用了基于MPEG-4和DSP的视频处理器技术,视频处理器对井下图像进行采集、处理和传输。2004年11月8号,陕西省铜川市陈家山煤矿发生矿难,而后救援人员利用此视频处理器将井下救灾现场的图像进行压缩编码并传输至地面的指挥中心,再由指挥中心的上位机进行实时解压和播放,使得指挥中心能够及时了解灾区情况,做出有效的救灾指挥。下面是本视频处理器在陈家山煤矿进行实地使用时得到的现场录像的截图。实际应用中,对于分辨率为350×280的一路图像,可以达到不低于20fps的高质量传输,基本满足了实时性的要求。


图5 陈家山煤矿救护队员在井下集结


图6 陈家山煤矿井下冒顶区

结束语

基于MPEG-4和DSP的视频处理器可以有效地应用于各种实时性要求较高的场合,可广泛的应用于可视电话终端、视频会议系统和视频监控系统。实践证明,此视频处理器能够在煤矿多媒体救援等紧急情况下可靠的工作,这对我国煤矿救援来讲具有重大意义。据统计,我国的煤矿每年因事故造成的人员伤亡在2000人以上,但由于缺乏视频采集、压缩、存储和传输设备,对井下现场第一手资料的获取只停留在口述和纸笔记录的阶段,导致无法很好地进行现场指挥和经验总结,严重制约了煤矿安全工作的开展,让国家和人民蒙受了巨大的损失。而把此视频处理器应用于煤矿的灾后救援,标志着了我国矿山救援进入了实时可视化救援的新时代。

相关推荐

CEVA凭借90%的市场份额继续领导DSP IP市场

CEVA  DSP  2012-05-30

欧胜推出带有语音处理器DSP的下一代音频中枢

欧胜  DSP  2012-05-07

Tensilica HiFi音频/语音DSP迎来又一里程碑

Tensilica  DSP  2012-04-25

Tensilica授权瑞萨电子ConnX BBE16 DSP IP核

Tensilica  DSP  2012-04-18

Tensilica HiFi音频DSP支持杜比数字+功能

Tensilica  DSP  2012-02-28

CEVA和Idea! 电子系统合作

CEVA  DSP  ISDB-T  2011-12-19
在线研讨会
焦点