摘 要:本文主要研究MPEG-4算法进行移植、测试、优化,分别针对PC机、OMAP3530 单ARM核工作、OMAP3530双核协同工作等状态下视频处理性能进行测评。
关键词:OMAP;MPEG-4算法视频处理
1 引言
OMAP是一款面向多操作系统(包括PalmOS5.0,PocketPC2002和通信领域的Symbian)的高性能低功耗处理器。它集成了包括一个数字协处理器在内的多媒体单元,并且加入和GSM/GPRS接口和蓝牙无线协议等一些当前的高级功能。由于其较低的主频150Mhz和广泛的支持性能,OMAP获得了Palm公司的认可,成为了其下Palm OS5产品的标准处理器。而其中的OMAP3530是TI公司推出的面向移动网络多媒体信号处理的双核处理器,片内集成了ARM Cortex-A8和TMS320C64+处理器。
数字视频编码在诸如数字视频监控系统与视频会议系统等众多应用中发挥着重要作用。本文将对以TMS320C64x DSP为基础的通用视频编码器优化技术进行介绍。基于DM64x的视频编码优化结合了多种技术,其中包括算法/系统优化、存储器缓冲优化、EDMA及高速缓存利用率优化等。TMS320C64x器件建立在德州仪器(TI)开发的第二代高性能VLIW架构(VelociTI.2)基础之上。该器件具有VLIW架构、2级存储器/高速缓存层次结构以及EDMA引擎等关键特性,从而使其成为计算强度较大的视频/影像应用(如视频编码与分析)的最佳选择之一。利用DM64x进行应用开发时,需要全面了解其特性与开销以实现最佳性能。
2 研究内容
本设计在OMAP3530硬件平台进行数字视频应用设计。主要内容是对MPEG-4算法进行移植、测试、优化,分别针对PC机、OMAP3530 单ARM核工作、OMAP3530双核协同工作等状态下视频处理性能进行测评,其中双核协同工作部分应与同组同学共同设计,通过基于XDM的ARM和DSP交互驱动进行编程开发。
在完成上述基本工作的基础上可进一步设计基于MPEG-4和Qtopia图形界面的网络视频通信。开发的最终希望能够实现一个基于OMAP3530的视频处理设备,可以高速地对视频进行MPEG-4的编码解码和播放功能。
下面以TMS320C64为例在此列出其所有DSP关键特性:
1. 增强功能单元
TMS320C64x的8个功能单元中的VelociTI.2扩展包括加速视频与影像应用性能的新指令。
2. L1/L2分级存储器结构
16KB直接映射的L1P程序高速缓存,带有32字节的高速缓存管线(8周期L1P高速缓存缺失损失)。
16KB双路关联L1D数据高速缓存,带有64字节的高速缓存管线(6循环L1D高速缓存缺失损失)。
256KBL2统一映射RAM/高速缓存(灵活的RAM/缓存分配)
L2四路关联高速缓存,带有128字节的高速缓存管线。
3. 位优先原则:低位优先(Little Endian),高位优先(Big Endian)。
4.64位外部存储器接口(EMIF):至异步与异步存储器的无胶合逻辑接口。
5.1024MB总的可寻址外部存储器空间。
6.增强型直接存储器存取(EDMA)控制器(64个独立通道)。
片上外设集包括:三个可配置的视频端口,一个10/100Mbps以太网MAC(EMAC),一个管理数据输入/输出(MDIO)模块,一个VCXO内插控制端口(VIC)。视频端口外设提供与通用视频解码器和编码器相连的无缝接口,以支持多种视频分辨率及标准,如ITU-BT.656、BT.1120、SMPTE125M/260M/274M/296M等。
上面的功能特性对包括视频编码在内的所有算法的执行都相当重要。二级存储器/高速缓存分级结构与EDMA引擎基本决定了视频编码器实现的架构。在算法实现过程中,我们需要弄清一些有关存储器/高速缓存层次结构以及EDMA引擎的基本概念。如果代码大于L1P,就可能发生L1P高速缓存缺失,CPU停止运行至到读取到所需代码。类似地,如果数据与L1D不符,就会出现L1D高速缓存缺失并且CPU停止运行。所有的L1P与L1D缺失问题均由L2高速缓存/SRAM来解决。如果代码与数据的大小均大于L2高速缓存的容量,那么就可能出现L2高速缓存缺失。与L1P/L1D高速缓存缺失损失相比,L2缺失损失通常更严重,因为L2高速缓存需要与速度较低的片外存储器相互传递数据/代码。
确保视频编码器最佳性能的两大重要因素是进行有利于高速缓存的程序分区(program partitioning)以及数据传输处理(如减少L1/L2缺失)。尽管L2 SRAM可用于解决L1D/L1P缺失问题,我们通常还是更倾向于采用EDMA来传输L2 SRAM与片外存储器之间的代码/数据,因为EDMA的传输效率通常高于L2高速缓存。
3 实现方法及预期目标
图1给出了通用视频编码算法结构图,MPEG2、H.263及MPEG4等許多视频编码标准都可从该算法结构图衍生而来。在图1中,DCT与量化(Q)去除了视频的空间冗余;运动估计(ME)降低了视频的时间冗余;VLC进行熵编码(entropycoding),以将数据有效地进行分组。
通常,视频编码器的实现是以宏模块(MB)为基础。这就是说,只有在当前MB完成所有处理步骤后,视频编码器才读取下一个MB。这种靠直觉进行操作的方法存在两大缺点:
1.视频编码器的整体代码尺寸通常大于L1P。在每个MB读取阶段,代码都需要在L1P和L2P之间进行交换,这会造成严重的高速缓存缺失问题。endprint
2.用EDMA从外部视频帧存储器向内部存储器传输小块数据(如一个MB)的效率不高。
为了避免造成大量高速缓存缺失损失和CPU停止响应问题,我们可将算法分为三个小循环/模块,每部分都能在L1P中容下。每个循环中每次同时操作M个宏模块(MB串),而不是只操作一个宏模块。M是宏模块串的大小,只受可用L1D大小的限制。M越大,就能获得的越高的EDMA数据吞吐量性能。
正如上面强调指出的那样,每次都读取M个宏模块,一起经过三个环路中的一个来处理。举例来说,在宏模块编码循环中,如果将M个宏模块读入内部存储器,那么将对其进行DCT转换、量化以及熵编码。只有当宏模块编码环路结束时,这一组宏模块才离开L1D。相应的程序包括DCT、量化以及VLC内核,其会在所有M个宏模块在L1P中完全处理之后才脱离该环路。EDMA引擎驱动的乒乓存储器缓冲方案有助于减少执行一组宏模块时环路初始的设置时间,同时还可确保最小化的CPU停止周期,这是由于传输与处理并行进行的原因。
当测试通过时将所编好的程序进行从PC机向OMAP3530嵌入式开发板的移植工作。这里需要先对OMAP3530嵌入式开发板有一个熟悉的过程,对于该开发板有一个基本的掌握。然后将程序移植入OMAP3530嵌入式开发板中以进行调试与运行测试。
最后,将程序进行修改,以实现OMAP3530双核协同工作等状态下视频处理。
这里面的重点有两个,首先是MPEG-4算法的研究,如果没有对MPEG-4编码、解码算法应用方法的正确理解是无法完成测速任务的,更不可能完成实现双核协同工作的任务。另一个是OMAP3530嵌入式开发板在使用前的原理理解还有对配置与应用的掌握。这一步走的好坏与否轻则将直接影响到开发的进度,重则影响到最后一项结果的实现。
参考文献
[1]徐鹏,邹浩斌.达芬奇技术简化数字视频设计:[博士论文].广州:华南理工大学,2006
[2]周军,徐卫,刘广存,蔡庆安.基于达芬奇技术的H.264视频编码器的实现:[博士论文].广州:华南理工大学,2007
[3]赵勇,袁誉乐,丁锐.DAVINC技术原理与应用指南[M].南京:东南大学出版社,2008:93-121
[4]鐘玉啄王琪贺玉文.基于对象的多媒体数据压缩编码国际标准MPEG-4及其校验模型[M].北京:科学出版社,2000
作者简介
宫晓梅(1976-),女,内蒙古赤峰,汉族,硕士,副教授,研究方向:计算机信息技术,通信技术。endprint