基于TMS320C64x DSPs的MPEG-4实时编码器设计与实现
李群迎, 张晓林, 刘荣科, 姚 远
(北京航空航天大学 电子信息工程学院, 北京100083)
摘 要:设计并实现了一种基于TMS320C64x系列高性能通用DSPs 的MPEG-4 Simple Profile编码器。详细介绍了系统的硬件结构和工作流程。为解决高分辨率视频编码的实时性问题, 采用预测技术的运动估计算法以及基于C64x CPU的软件优化技术。实验结果表明编码器对D1分辨率(720×576)视频的编码速率达到25帧/秒以上,且具有较低的码率和较好的图像质量。
关键词:MPEG-4 TMS320C64x 软件优化 运动估计
信息时代对于视频通讯的需求越来越广,从较低码率的可视电话、视频会议、实时监控到高码率的空中侦察、数字电视等,迫切要求将高效率、高质量的视频压缩算法实用化。MPEG-4于2000年正式成为国际标准并不断地扩展。它不仅支持码率低于64kbps的多媒体通信,还能支持广播级的视频应用。与以前的视频标准相比,MPEG-4可以提供更高的压缩效率、更好的交互性以及更强的抗误码能力。目前,MPEG-4已经成为视频压缩标准的主流。
MPEG-4算法非常复杂,其编解码的实时性难以保证,通常只能实现对中低分辩率视频的实时编码。本文基于TI公司的C64x系列DSPs设计并实现了一种MPEG-4编码器,实现了对D1分辨率(720×576)视频的实时编码,且在保证输出码率低于1Mbps的同时,解码图像具有较高的峰值信噪比和较好的视觉效果。
1 编码系统的硬件结构
编码系统以TMS320DM642高性能通用DSP芯片为核心。图1为系统框图。
图1 编码器系统框图
1.1 TMS320DM642芯片的特点
DM642属于TI公司的C64x系列DSPs。Veloci TI结构使C6000 DSPs在视频和图像处理中得到广泛应用。CPU的VLIW结构由多个并行运行的执行单元组成,这些单元在单个周期内可执行多条指令。并行是C6000获得高性能的关键。C64x在C6000的基础上有一些重要的改进。除了有更高的时钟频率外,C64x从以前的Veloci TI结构扩展到Veloci TI.2结构,包含了许多新的指令,增加了额外的数据通道,寄存器的数量也增加了一倍。这些扩展使得CPU可以在一个时钟周期内处理更多的数据,从而获得更高的运算性能。
DM642芯片集成了各种片内外设,使得开发视频和图像领域的应用更为方便。它带有三个可配置的视频端口,提供与视频输入、视频输出以及码流输入的无缝接口。这些视频端口支持许多格式的视频输入/输出,包括BT.656、HDTV Y/C、RGB以及MPEG-2码流的输入。利用DM642开发视频编码器,其视频输入部分只需要一块视频采集芯片即可,如Phillips的SAA7113,无需外加逻辑控制电路和FIFO缓存,使硬件系统更为简单和稳定。DM642的其它外设包括:10Mbps/100Mbps的以太网口(EMAC)、多通道音频串口(McASP)、外部存储器接口(EMIF)、主机接口(HPI)、多通道缓冲串口(McBSP)以及PCI接口等。
1.2 系统工作流程
该编码系统可分为图像压缩卡和主机两部分。其工作流程如图2所示。
图2 系统工作流程图
首先主机通过PCI初始化DSP并对其加载程序;DSP开始运行MPEG-4编码程序,从视频端口获取实时采集的视频,如图1所示。SAA7113输出BT.656格式的数字视频,作为DM642 VPORT的输入,VPORT输出YUV(4:2:0)格式的图像,作为编码程序的输入;DSP完成一帧图像的编码,通过PCI向主机发出中断;主机响应中断,从DSP的存储空间读取原始图像数据和压缩后的码流。主机程序在VC++环境下编写,提供与用户交互的界面,可对数据进行各种处理,包括原始视频的实时播放、保存,压缩码流的实时解压播放、保存、回放、网络传输,从网络接收压缩码流实时解压回放等。
需要注意的是原始图像和压缩码流在DSP中的存储。视频端口、编码程序和主机都要访问原始图像,例如在某一时刻,编码程序访问当前帧图像,主机读取上一帧图像,而视频端口正在输入下一帧图像,为了避免访问冲突,原始图像在DSP中采用三缓冲区进行管理。压缩码流由编码程序写入,主机读取,所以采用乒乓制进行存储。
1.3 内存分配
DM642片内只有256KB的存储空间,因此当前帧、参考帧和当前帧的重建帧都必须放至片外存储器,压缩码流若被主机读取,也放至片外。其它数据如程序代码、全局变量、VLC码表、各编码模块产生的中间数据等均可放至片内。
由于CPU访问片外的速度通常要比访问片内慢几十倍,片外数据的传输通常成为程序运行时的瓶颈,即使代码效率很高,流水线也会因为等待数据而被严重阻塞。解决这一问题的有效方法是用EDMA传送数据。程序是逐个宏块进行编码的,在编码当前宏块的同时,EDMA将下一个宏块的数据、用到的参考帧数据由片外传送至片内;当前宏块做完运动补偿后,EDMA将重建后的宏块由片内传送至片外。这样CPU只对片内数据进行操作,使得流水线可以顺利进行,而压缩码流按逐个码字有时间间隔地写入,可由CPU直接写至片外。
MPEG-4 相关文章:
- 大规模IPTV点播系统解决方案(08-18)
- 数字音视频编解码技术标准AVS(08-19)
- 数字电视与数字电视编码技术的发展简介(08-19)
- IPTV编解码标准综述(08-26)
- IPTV洋标准暗藏高额专利费(08-29)
- 三重播放网络环境下验证IPTV服务质量(10-15)