基于TMS320C64x的MPEG-4实时编码器设计与实现

发布者:火箭少年最新更新时间:2012-10-12 来源: 21ic 关键字:TMS320C64x  MPEG-4  编码器 手机看文章 扫描二维码
随时随地手机看文章
  信息时代对于视频通讯的需求越来越广,从较低码率的可视电话、视频会议、实时监控到高码率的空中侦察、数字电视等,迫切要求将高效率、高质量的视频压缩算法实用化。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直接写至片外。
2 采用预测技术的运动估计算法
  运动估计是MPEG-4编码中计算量最大的一部分,占据整个编码时间的50%以上。各种快速运动估计算法也成为近年来研究的热点。本文通过实验证明,采用预测技术的运动估计不但可以大大缩短计算时间,而且也有助于提高图像的质量。
  宏块(Macro Block)的运动矢量(Motion Vector)在时间和空间都具有相关性,预测的原理就是利用当前帧和参考帧内相邻位置宏块的MV来预测当前宏块的MV。下面详述本文所采用的预测算法。
  (1)确定当前宏块MV的7个候选值PreMV1~7。
  如图3所示。PreMV1=(0,0);PreMV4取当前宏块左边相邻宏块的MV值;PreMV5取上边相邻宏块的MV值;PreMV6取右上方相邻宏块的MV值;PreMV2=mid{PreMV4, PreMV5, PreMV6},即取三者的中值;PreMV3取参考帧相同位置宏块的MV值;PreMV7取参考帧右下方相邻宏块的MV值。 [page]
                                              
                                                 图3 预测运动矢量示意图

  (2)确定筛选候选值的依据——SAD(绝对误差和)的门限值ThreshSAD。
  SAD是确定最佳匹配块的准则。门限值ThreshSAD是指这样一个值:如果参考帧内某一宏块和当前宏块的SAD小于ThreshSAD,则当前宏块的MV值就可取作二者之间的位移。因此,ThreshSAD就可作为筛选7个候选值的依据。
  由于SAD在空间上的相关性,ThreshSAD由相邻宏块的SAD值来确定:
   ThreshSAD=Min{SADleft,SADtop,SADtop_left}
  其中,SADleft、SADtop、SADtop-right分别为MBleft、MBtop、MBtop-right和其对应匹配块的SAD值,ThreshSAD取三者的最小值。
  (3)从7个候选值中选出当前宏块的MV值。
  按照PreMV1~7的顺序,依次计算当前宏块和7个匹配块的SAD值。如果有SAD值小于ThreshSAD,即停止计算,选用对应的PreMV作为当前宏块的MV值;如果7个SAD值均大于ThreshSAD,则采用运动搜索来确定当前宏块的MV值。该运动搜索并不以MV=(0,0)为中心,而是以对应SAD值最小的PreMV为中心,搜索采用简化的菱形算法。
  对标准视频序列foreman.cif(352×288)进行编码(码率300kbps),测得表1所示数据。采用预测的运动估计算法利用视频序列在时间和空间上的相关性,无需对每个宏块都进行运动搜索,而且其搜索中心点也同样利用了相关信息,搜索算法也可进一步简化,因此大大减少了运动估计的计算量;同时,预测有助于提高图像质量,直接进行快速运动搜索通常会带来局部最小的问题,从而影响图像质量,而PreMV1~7取自位于当前宏块周围各个方向的宏块的MV值,避免陷入局部最小。
                                     表1 预测技术对运动搜索性能的提高
采用预测 平均每个宏块所需的
SAD值计算次数
峰值信噪比PSNR(dB) 平均帧率(fps)
5 33.16 120
15 33.23 95


3 基于C64x CPU的软件优化技术
  为了提高代码的执行效率,必须充分利用C64x CPU的VLIW和流水线结构对其进行优化,使程序无冲突地并行执行。MPEG-4编码程序中包含大量的循环体,例如计算SAD值、量化、DCT、半像素插值、运动补偿和构建重建帧等。这些循环体代码并不复杂,但执行次数频繁,占据了编码的绝大部分时间,因此循环体的优化是重点。本文所采取的代码优化分为C语言优化和编写线性汇编两个步骤,主要从消除数据相关性、数据打包和循环体的软件流水三个方面进行优化。
3.1 针对C语言的优化
  C代码的优化主要依靠开发环境CCS的编译器完成,编程者需要合理选择编译选项,并利用特定的关键字和指令向编译器提供优化信息。例如关键字restrict用来消除数据间的相关性,编译器从而可以安排语句的并行执行;内联函数_nassert有助于数据的打包处理;宏指令#pragma MUST_ITERATE告诉编译器有关循环迭代次数的信息,编译器会根据这一信息进行软件流水。
3.2 用线性汇编改写关键代码
  线性汇编是TMS320C6000特有的一种编程语言,介于高级语言和汇编语言之间。它可以指定指令用到的寄存器和功能单元,更易于对数据的打包处理。
  线性汇编代码的并行处理和软件流水由汇编优化器完成,编程者需要熟悉C64x DSP的CPU结构和指令集,认真设计代码并充分利用编译器的反馈信息合理修改代码,才能写出高质量的线性汇编。本设计中程序主框架采用C语言编写,其它各关键部分的代码采用线性汇编实现。表2是代码优化前后的效率对比,表2中所列各代码段均针对8×8宏块进行处理。
                                    表2 各关键代码优化前后消耗指令周期数对比 
            
代码段 未优化 C优化后 线性汇编优化后
SAD值计算 1400 55 34
量化 1250 238 108
逆量化 1200 291 170
FDCT 1360 292 96
IDCT 1600 373 102
半像素插值 2800 466 246
运动补偿、做差 1950 160 59
重建宏块 1000 890 88

4 结果分析
  对各标准视频序列进行编码,测得表3所示数据。实时采集D1(720×576)分辨率的视频进行编码,测得码率为850kbps时,编码速率达25fps以上,峰值信噪比(PSNR)高于31dB,实现了高分辨率的实时MPEG-4编码。
                                     表3 标准视频序列的编码结果 
                    
视频序列 分辨率 码率(bps) PSNR(dB) 平均帧率(fps)
News QCIF 100k 36.23 480
Silent QCIF 100k 35.66 485
Foreman QCIF 100k 32.04 465
Foreman CIF 300k 33.16 120

  表3中各视频序列的编码均采用了8×8半像素精度的运动估计,解码图像的视觉效果较好。对于较低分辨率的视频(QCIF、CIF),其编码速率已远远高于实时的要求,因此可以考虑添加新的算法以提高压缩效率并增强码流的抗差错性能。
  本文以DM642芯片为例详述了基于C64x DSPs的MPEG-4实时编码器设计。编码器采用MPEG-4 Simple Profile算法,在算法和代码优化方面还有一定的研究空间。本文给出的设计方法可以进一步推广到H.264或者其他视频编码系统。
参考文献
1 Prasad RSV, Ramkishor korada. Efficient implementation of MPEG-4 video encoder on RISC
core[J].IEEE Transactions on Consumer Electronics, 2003;47(1):1~6
2 A. Dasu, S. Panchanathan. A Survey of Media Processing Approaches[J]. IEEE Trans.on
Circuit and System for Video Technology, 2002;12(8):1~13
3 Tihao Chiang, Hung_Ju Lee, Huifang Sun. An overview of the encoding tools in the
MPEG-4 reference software[J].In-ternational Symposium on Circuits and Systems,
2000; May 28-31:1~4
4 钟玉琢,王 琪,贺玉文. 基于对象的多媒体数据压缩编码国际标准——MPEG-4及其校验模型[M].
北京:科学出版社,2000
5 李方慧,王 飞,何佩琨. TMS320C6000系列DSPs的原理与应用[M].北京:电子工业出版社,2003
关键字:TMS320C64x  MPEG-4  编码器 引用地址:基于TMS320C64x的MPEG-4实时编码器设计与实现

上一篇:基于Blackfin533的H.264编码
下一篇:变频空调电控系统的设计

推荐阅读最新更新时间:2024-05-02 22:22

旋转变压器与光电编码器区别及工作原理
  旋转变压器与光电编码器是目前伺服领域应用最广的测量传感器。   一、伺服系统   又称为随动系统,精确的跟随或者复现某个过程的反馈系统。   使物体的位置、方位、状态等输出被控量能够跟随目标(设定)的任意变化的自动控制系统   1.伺服电机的三种控制方式   ①速度控制-模拟量   通过模拟量的输入或脉冲的频率进行转动速度的控制。   ②转矩控制-模拟量   通过改变模拟量的设定或通过通讯方式改变对应的地址的数值来改变设定的力矩大小。   ③位置控制-脉冲量   通过外部输入的脉冲的频率来确定转动速度的大小,通过脉冲的个数来确定转动的角度   也有些伺服可以通过通讯方式直接对速度和位移进行赋值   2.伺服电机的控制   伺服
[嵌入式]
旋转变压器与光电<font color='red'>编码器</font>区别及工作原理
MPEG-4视频数字水印技术的设计与实现
摘要:介绍了数字水印技术的基本原理,以MPEG-4为例,提出并实现了一种改进的基于扩展频谱的视频水印方案。实践证明,该视频水印方案在不降低视频质量的基础上,能够抵抗多种干扰和攻击,具有良好的稳定性和鲁棒性。 关键词:数字水印 视频 MPEG-4 扩展频谱 随着信息技术和计算机网络的飞速发展,人们不但可以通过互联网和CD-ROM方便快捷地获得多媒体信息,还可以得到与原始数据完全相同的复制品,由此引发的盗版问题和版权纷争已成为日益严重的社会问题。因此,数字多媒体产品的水印处理技术已经成为近年来研究的热点领域之一。 虽然数字水印技术近几年得到长足发展,但方向主要集中于静止图像。由于包括时间域掩蔽效应等特性在内的更为精确的人眼视觉
[单片机]
基于TMS320C64x实现LFM信号的实时脉冲压缩
0 引言 脉冲压缩技术因解决了雷达作用距离与分辨率之间的矛盾而成为现代雷达的一种重要体制,数字LFM(线性调频)信号脉冲压缩就是利用数字信号处理的方法来实现雷达信号的脉冲压缩,脉冲压缩器的设计就是匹配滤波器的设计,脉冲压缩过程是接收信号与发射波形的复共扼之间的相关函数,在时域实现时,等效于求接收信号与发射信号复共轭的卷积。若考虑到抑制旁瓣加窗函数,不但要增加存储器,而且运算量将增加1倍,在频域实现时,是接收信号的FFT值与发射波形的FFT值的复共轭相乘,然后再变换到时域而获得的。若求N点数字信号的脉冲压缩,频域算法运算量大大减少,而且抑制旁瓣加窗时不需增加存储器及运算量,相比较而言,用频域FFT实现脉冲压缩的方法较优,因此选用频
[模拟电子]
STC15F104W编码器两路可调PWM输出源程序
//没有用IAPIDLE功能,有没有高手指点一下利弊 #include STC15F104E_PLUS.h #include intrins.h typedef unsigned char BYTE; typedef unsigned int WORD; //#define uint unsigned int //#define MAIN_Fosc 22118400L //定义主时钟 //#define MAIN_Fosc 12000000L //定义主时钟 #define MAIN_Fosc 11059200L //定义主时钟 //#define MAIN_Fos
[单片机]
基于TM1300的嵌入式网络视频编码器的设计
1  系统介绍   随着网络多媒体应用的推广,独立机型的嵌入式多媒体通信终端系统由于其成本低、性能好等优点已成为当前研究的热点. 具有网络通信功能的嵌入式视频编码器的研究便成为设计多媒体通信终端系统中的核心内容.嵌入式网络视频编码器的工作原理是将模拟视频信号数字化后按照国际标准压缩编码和网络协议处理后发送到网络,客户端可以从网络接收视频数据,解码后实时回放. 嵌入式视频编码器是一个高性能处理器和操作系统捆绑较为紧密、功能专一、设计专门的独立设备,不像插卡系统那样受通用计算机系统中其他软件硬件的影响,性能上更稳定可靠且易于实现系统的模块化设计,便于安装、管理和维护.    TM1300是一款高性能的多媒体处理器,可采用pSOS 嵌入式
[嵌入式]
CANOPEN总线编码器在车辆技术中的应用
CANopen 总线编码器是一种常用于车辆电子系统的编码器,它可以将各种传感器和执行器发送的数据进行编码,以便在车辆内部进行通信。在车辆技术中,CANopen 总线编码器可以用于以下应用: 车辆安全系统:车辆安全系统需要获取车辆内外各种传感器的数据,如车速、门状态、安全气囊等。CANopen 总线编码器可以将这些数据进行编码,以便在车辆内部进行通信,从而提高车辆的安全性能。 车辆动力系统:车辆动力系统需要获取各种传感器和执行器的数据,如发动机转速、车速、油量等。CANopen 总线编码器可以将这些数据进行编码,以便在车辆内部进行通信,从而提高车辆的动力性能。 车辆电气系统:车辆电气系统需要获取各种传感器和执行器的数据,
[嵌入式]
CAST公司宣布对JPEG编码器IP核进行优化
伍德克利夫湖市,新泽西州,2012年6月19日——半导体IP供应商CAST公司今日宣布对其提供的JPEG编码器IP核进行功能及性能优化。S2C公司是CAST在中国的正式代理商, 想了解CAST的IP方案详情和购买产品,请联系 sales@s2cinc.com 。 系统设计师现在有两个速率控制选项可以选择,用于调试JPEG压缩功能的特定应用程序: ·有限缓冲,基于模块的速率控制可为缓冲和传输带宽最小化片上内存,产生高质量图像。 ·Motion JPEG面向视频速率控制可为Motion JPEG数据流最大化视频的质量,同时更有效地使用硬件资源。 “图像压缩对外行来说简单意味着“JPEG”,但这远非一个’万全之策’的技术 ”。C
[半导体设计/制造]
TMS320C6201在MPEG-4视频解码器中的应用
摘要:TMS320C6201是美国TI公司生产的一种高性能数字信号处理器。本文介绍如何利用1片TMS320C6201数字信号处理器实现MPEG-4 SVP视频解码,并讨论解码器的结构,算法、存储器分配以及程序的优化等问题,最后给出该解码器总体特性表。 关键词:TMS320C6201 视频压缩 MPEG-4 VOP MB IDCT 运动补偿 引言 随着网络和多媒体技术的发展,视觉通信的重要性和需求急剧增加,如桌面视频会议、移动终端、基于因特网的视音频通信等。随之而来的是视频压缩技术的迅速发展和视频压缩标准的不断推出。国际运动图像编码专家组(MPEG)先后推出了MPEG-1、MPEG-2和MPEG-4.MPEG-4是由国际运动图
[应用]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved