学海荡舟手机网

主页 > 实用文摘 > 教育文摘_09 > > 详细内容

TMS320C6201在MPEG-4视频解码器中的应用_DSP论文

摘要:tms320c6201是美国ti公司生产的一种高性能数字信号处理器。本文介绍如何利用1片tms320c6201数字信号处理器实现mpeg-4 svp视频解码,并讨论解码器的结构,算法、存储器分配以及程序的优化等问题,最后给出该解码器总体特性表。

    关键词:tms320c6201 视频压缩 mpeg-4 vop mb idct 运动补偿

引言

随着网络和多媒体技术的发展,视觉通信的重要性和需求急剧增加,如桌面视频会议、移动终端、基于因特网的视音频通信等。随之而来的是视频压缩技术的迅速发展和视频压缩标准的不断推出。国际运动图像编码专家组(mpeg)先后推出了mpeg-1、mpeg-2和mpeg-4.mpeg-4是由国际运动图像专家组于1998年11月制定的。它是一个面向多媒体应用的压缩标准,其应用覆盖范围远大于mpeg-1和mpeg-2等标准。从移动可视电话到专业视频编辑,既支持自然图像,也支持计算机合成图像。最重要的是它支持交互功能。这是由于mpeg-4采用了与其它标准不同的、基于对象的图像描述方式。目前,国内有关mpeg-4应用技术的研究及开发的工作正在悄然兴起。笔者在研究了mpeg-4视频标准之后,充分利用tms320c6201的硬件资源和软件优化,实时实现了嵌入式mpeg-4视频解码器。

1 mpeg-4视频码流及主要算法

mpeg-4采用了基于对象的压缩编码技术。在编码前,首先要对视频序列进行分析,从原理图像中分割出各个视频对象,然后南分别对每个视频对象单独编码。每个对象都有自己的形状信息(shape)、运动信息(motion)、纹理信息(texture)。对视频对象的编码就是对这3种信息进行编码。mpeg-4通过运动预测和运行补偿来去除连续帧之间的时间冗余。运动预测与运动补偿的精度可以为整像素、半像素或1/4像素,另外还增了重叠运动补偿方式。与形状相关算法有:基于邻近的算术编码、水平和垂直填补、扩张填补等。与纹理编码相关的算法有:离散余弦变换(dct)、量化、dct系数的dc/ac差分预测、zig-zag扫描、游程编码、霍夫曼变长编码等。

笔者实现的是mpeg-4的svp(simple visual profile)视频解码。视频序列全部为矩形,所以不存在任意形状编码。视频序列按照视频对象层vol(video object layer)、视频对象平台vop(video object plane)、宏块mb(macro block)视顺序编成一串码流。1个vol中包含多个vop,1个vop中包含多个mb。mb是码流中的基本单位。mb又分为帧内mb(intramb)、帧间mb(imtermb)。帧间4vmb(inter4vmb)等几种。在i-vop中,所有的宏块都是intramb。p-vop中宏块有多种可能,可以是intramb、intermb或inter4vmb。p-vop中的intermb或inter4vmb的码流描述如下:

mb码流=mb形状+mb头信息+mv+dct纹理(y1+y2+y3+y4+u+v)

由于是矩形帧,所以无形状编码mb shape部分。

mb头中主要包括4个参数:not_coded(本mb是否编码的标志位)、mcbpc(色度块u和v是否编码的标志位)、cbpy(亮度块y1~y4是否编码的标志位)、dquant(本mb中dct系数量化步长的增量值)。

mv为运动矢量,实际写入码流的是运动矢量误差值(Δmv),这是因为编码中mv采用差分编码。如果mb是一个intermb,则表示本mb只有1个运动矢量,所以在码流中只传1个Δmv;如果mb是一个inter4vmb,则表示本mb有4个运行矢量,即每个子块(block)有1个运动矢量,所以在码流中需传送4个Δmv,即mvd1、mvd2、mvd3和mvd4。

最后是一连串经过量化、zig-zag扫描、游程编码和霍夫曼变长编码的dct系数,按照y1、y2、y3、y4、u和v的先后顺序编码。

2 tms320c6201 dsp及evm板介绍

2.1 tms320c6201 dsp

tms320c6201是美国ti公司的c6000系列新一代数字信号处理器中的第1个产品,于1997年3月发布。它是一个32bit的定点dsp芯片。该芯片具有8个相互独立的功能单元,可以工作在200mhz的cpu时钟频率,全速运行时可达到1600 mips。其主要特性包括:

*芯片内核采用velociti tm先进的超长指令字(vliw)结构,具有高度的并行性和快速的运行能力,每个时钟周期最多可同时执行8条32位指令,并且所有的指令都可以有条件执行;

*具有丰富的指令系统且可对字节操作,支持16位的乘法运算;

*有4个彼此独立的快速的dma通道,可以进行多种形式的数据传输。

*片内数据存储区和程序存储区各64kb,并支持多种数据宽度8位/16位/32位;32位的外部存储器接口,提供与片外sdram、sdsram和sram的直接接口。

tms320c6201的以上特点,能满足视频图像处理的实时性要求。例如:tms320c6201 dsp计算1块8×8 idct(逆变散余弦变换)仅用(168+62)个时钟周期,为1.15μs。

2.2 evm板

tms320c6201 evm板是一块带有pci接口的插卡,除了可以插在计算机主板的pci插槽上使用外,还可以外配电源作为独立的模块工作,并通过xds510仿真器进行调试。该板上配有1片tms320c6201 dsp,最高工作在160mhz。

evm板上提供的片外存储器包括1组64kbit×32(256kb)、133mhz的sbsram,配置成ce0;2组4mb、100mhz的sdram,分别配置成ce2和ce3;另外还可以通过板上的外部存储器接口(emif)扩展存储空间,这些扩展存储器配置成cei。

3 用tms320c6201实现mpeg-4 svp解码

3.1 mpeg-4视频解码原理

mpeg-4的一个vop的解码过程如图1所示,解码器用这一过程从编码位流中恢复视频对象。不难看出,解码器主要由形状解码器、运动解码器和纹理解码器3部分组成。

3.2 程序流程

整个程序采用模块化设计,以优化c语言编程为主。限于篇幅,仅列出主程序流程(如图2所示)和mb解码流程(如图3所示)。

主程序在初始化后,首先从码流中解出vol和vop的头,然后根据这些头信息以宏块为单位进行解码。mb解码单独做成函数,也是首先解出头,据此判断出宏块类型:帧内mb、帧间mb或帧间4vmb。帧内mb解码是以1块为单位作纹理解码,解出的纹理值在block[64]中,最后存入解码后宏块行缓存区内;2种帧间mb解码相同部分都是先解出运动矢量mv,根据mv进行运动补偿得到预测值存入解码后宏块行缓存区,再以块为单位进行纹理解码,解出残差值存入block[64]中,最后将block[64]加入到解码后宏块门缓存区中得到最后结果。不同的是,在解码mv时intramb解出1个mv;而inter4vmb解出4个mv。因此,运动补偿时,一个按宏块做,一个按块做。另外还有一种情况,就是p-vop中的mb没有被编码(not_coded=1),码流中没有此宏块的数据,应该mv=0、dct系数全为0处理,即从前一帧同样位置处找到参考块作为当前宏块的结果。

3.3 存储器分配

mpeg-4 svp解码器是在evm板上编程实现的。由于tms320c6201 dsp片内数据存储空量只有64kb,而图像处理的数据量非常大,因此,合理有效地分析存储空间是解码设计中的关键问题。内部64kb存储空间内开辟了一些空间用于暂存解码中常用的一些,具体设置如表1所列。

表1 内部数据存储器空间分配

全局变量所占空间/b
变长解码(vld)表4906
zig-zag扫192
vol、vop和mb的头108
dc/ac预测和mb模式5560
mv预测9504
量化步长396
解码输出缓存区(1个宏块行)8448
输入的压缩码流缓存区10k

合    计

38.3k

输入的压缩码流和解码后的视频输出都存储在片外。输入的压缩码流在程序开始前由pc机传输到evm板的外部存储器中保存,解码时分批将数据通过dma方式复制到片内。片内设置1个压缩码流缓存区。解码后的视频序列存放在外部存储器中,在内部缓存1个宏块行,每解完1个宏块行后,就用dma传输到外部存储器中。

3.4 程序优化

(1)软件开发流程及开发工具

整个程序的编写和调试按照c6000软件开发流程进行,流程分为:产生c代码、优化c代码和编写线性汇编程序3个阶段。使用的开发工具是ti的集成开发环境ccs(code composer studio)。在ccs下,可以对软件进行编辑、编译、调试、代码性能测试(profile)等所有工作。

(2)程序优化措施

为使程序优化,采取如下措施:

①为编写出优化的c程序,在编程时尽量按照c6000环境下支持的优化c的方法进行编程,这样有助于c编译器产生高效的汇编代码。

②使用ti提供的库函数,大大提高了编程效率。

③使用dma传数,提高了cpu的效率。

在解码程序中用dma方式实现了下列数据的传输:

*码流输入——码流从片外存储器传输到片内;

*解码后的结果输出——解码完一宏块行后,将结果从片内传输到片外保存;

*顶部和低部的填充;

*运动补偿时,将在片外找到的参考块传输到片内。

(3)采用线性汇编对某些程序段做进一步优化。

为了提高代码性能,对影响应用程序的代码可以用线性汇编重新编写。

3.5 mpeg-4 svp解码器的特性及测试结果

按照上述思路所实现的mpeg-4 svp视频解码器完全符合mpeg-4的svp规范,其特点如表2所列。输入图像分辨率可为qcif或cif,输入比特率为64kbps、128kbps和384kbps,输出图像格式为4:2:0yuv,最大解码速率为30帧/s。

表2 mpeg-4 svp视频解码器特性表

压缩标准mpeg-4svp
输入图像分辨率qcif(176×144),cif(352×288)
像素精度8bit/pixel
扫描格式逐行扫描
输入比特率/kbps64,128,384
最大解码帧率最高30帧/s
输出图像格式4:2:0 yuv

在解码软件是在evm板上调试通过的,解码时间可在ccs环境下测得。对于不同的图像解码所用的时间是有差异的。笔者对多种情况的码流进行了测试,在1秒内都能解出25~30帧,甚至更多帧从而实现了实时解码。

结束语

笔者在研究了mpeg-4的视频编解码算法之后,成功地在tms320c6201 evm板上编程实现子mpeg-4 svp的实时解码,为最终设计出独立的mpeg-4解码器打下了基础。此解码器可以嵌入到某些移动终端中,用于解码vpeg-4码流,如pda、机顶盒和住宅网关等;还可以与相应的编码器配套用于远程监控中。