用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

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

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 23:57:17
.1 MPEG-4视频解码原理

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

3.2 程序流程

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

主程序在初始化后,首先从码流中解出VOL和VOP的头,然后根据这些头信息以宏块为单位进行解码。MB解码单独做成函数,也是首先解出头信息,据此判断出宏块类型:帧内MB、帧间MB或帧间4VMB。帧内MB解码是以1块为单位作纹理解码,解出的纹理值在block[6][64]中,最后存入解码后宏块行缓存区内;2种帧间MB解码相同部分都是先解出运动矢量MV,根据MV进行运动补偿得到预测值存入解码后宏块行缓存区,再以块为单位进行纹理解码,解出残差值存入block[6][64]中,最后将block[6][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、机顶盒和住宅网关等;还可以与相应的编码器配套用于远程监控中。



上一页  [1] [2] 

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:9,921.87500 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号