H.264视频编码器在DSP上的实现与优化

发布者:平和的心情最新更新时间:2010-05-22 来源: 微计算机信息 关键字:H.264  DSP  视频编码  算法优化 手机看文章 扫描二维码
随时随地手机看文章

      摘要:在DM642 EVM平台上实现了 H.264视频编码器,并从内存分配、Cache优化、代码优化以及汇编程序级优化等几个方面对编码器进行了优化。实验结果表明,优化后的编码器能保持较高的图象质量和压缩效率,并具有较好的实时性能。

1 引言

  H.264/AVC是ITU-T视频编码专家组和ISO/IEC运动图象专家组联合提出的新一代视频编码标准。在相同的条件下,与MPEG-1、MPEG-2、H.263、MPEG-4等标准相比,H.264/AVC能够减少50%的码流。但是,H.264的高编码效率是以高运算量和高复杂度为代价的。

  本文采用具有较高运算速度和较强数据处理能力的DM642 EVM作为H.264视频编码器实现和优化的 DSP硬件平台,实现了 H.264视频编码算法,并对算法程序进行了综合优化。实验结果表明,经过优化的 H.264视频编码器能保持较高的图象质量和压缩效率,并具有较好的实时性能。

2 H.264视频编码技术及DM642 EVM开发平台

  2.1 H264视频编码技术

  H.264压缩算法采用与H.263和MPEG-4类似的基于块的混和编码方法,采用帧内(Intra)和帧间(Inter)两种编码模式。为了提高编码效率、压缩比和图象质量,H.264采用了许多新的编码技术,这些技术主要有:

  ⑴ H.264标准压缩系统由视频编码层(VCL,Video Coding Layer)和网络抽象层(NAL,Network Abstraction Layer)两部分组成。

  ⑵ H.264采用帧内预测,昀大程度地减少图象的空间冗余信息。

  ⑶ H.264的帧间预测采用多帧参考帧(参考的个数为1~5)、高精度的内插算法(包括1/4和 1/8精度)、多种变形搜索块等新的方法,在很大程度上提高运动估计与补偿的效率。

  ⑷ 1/4、1/8象素精度的亚象素运动估计:对于QCIF视频格式使用1/4象素精度预测方式,对于CIF视频格式使用1/8象素精度预测方法。

  ⑸ 残差图象的4x4整数DCT变换技术,逆变换过程中没有匹配错误问题。

  ⑹ 新的环路滤波技术及熵编码技术等。

  2.2 DM642 EVM开发平台DM642

  EVM是TI推出的一款专门面向多媒体应用的开发平台,板上资源包括:DM642 CPU芯片、4M×64bit同步动态存储器(SDRAM)、4M×8bit FLASH存储器和一路视频编码和两路视频解码等,其结构如图1所示。DM642基于C64X内核,主频高达600MHz,采用超长指令字(VLIW)结构,每个指令周期可并行处理8条32位的指令,处理能力达4800MIPS;片上内存采用二级缓存Cache结构,L1由16KB的数据Cache L1D和16KB的程序Cache L1P组成,256KB的L2可配置成SRAM或Cache,大幅度提高了程序的运行性能;片内64位的EMIF(External MemoryInterface)接口可以与SDRAM、Flash等存储器件无缝连接,极大地方便了大量数据的搬移;DM642包括了3个专用的视频端口(VP0~VP2),用于接收、处理视频数据,提高了整个系统的性能;DM642自带的EMAC口以及从EMIF口扩展出来的ATA口,还为处理完成后产生的海量数据提供了存储通道。因此,实现H.264的视频算法,高性能的DM642 EVM是一个理想的硬件平台。

3 H.264视频编码器的实现与优化

  3.1 编码器的实现

  H.264视频编码器的实现有多种方法,不过大部分都是进行移植、优化的操作。H.264代码要在DSP的软件平台CCS环境下运行,需要注意几个问题:如配置文件、库文件的改动、数据类型的调整、汇编程序的处理、内存终结模式的调整等。

  H.264编码采用变换和预测的混合编码方法,其原理如图2所示。输入帧或者场Fn以宏块为单位被编码器处理,即将图象分成子图象块,以子图象块作为编码单元。当采用帧内预测编码时,预测值P是由当前片中已编码的参考图象经过运动补偿(MC)后得出的,其中参考图象用F1n-1表示;为了提高预测精度,从而提高压缩比,实际的参考图象可在过去或未来已编码解码重建和滤波的帧中选择。预测值P和当前块相减后,产生一个残差块Dn,经块变换、量化后产生一组量化后的变化系数X,再经过熵编码,与解码所需的一些边信息(如预测模式量化参数、运动矢量等)一起组成一个压缩后的码流,经过NAL供传输和存储用。

[page]
 

  3.2 内存分配及Cache优化

  与PC机相比,DSP的程序数据存储空间非常有限。因此,对于视频编码这种需要处理大量数据的程序而言,必须合理安排数据和程序的存储方式,实现对存储器的优化。实验表明,合理利用两级缓存并配合低工作频率外部存储器,系统的效率能达到全部使用高工作频率内部存储器的80%~90%。

  本文将占据较大空间的数据或使用频率不高的程序放在片外存储器中,启用L2 Cache,调用C6000的芯片支持库CSL中的CACHE-setL2Mode函数,将L2设置为198KB的SRAM和64KB的Cache模式。并根据H.264算法本身的结构,采取以下方法对存储器进行优化:利用CCS的分析工具Profile分析C代码,将反复调用的程序段(例如DCT变换和IDCT变换)放在片内程序存储区中,把频繁用到的数据段(如编码表)放在片内数据存储器中,把运用次数较少的程序和数据段放在片外存储器中,避免对程序或数据进行不必要的反复搬移。

  在H.264编码器运行过程中,由于一帧图象的数据量很大,因此将参考帧和当前帧数据放到片外存储器中,需要用到时,再将它们从外部存储器搬到片内存储器中,以提高程序的运行效率。

  3.3 代码优化

  进行代码优化,先要找出程序的瓶颈,即占用CPU时间较多的代码,然后对其进行有针对性的优化。使用CCS提供的代码剖析工具Profile可以统计显示出程序中各个重要段和函数的运行时间,找出运算量较大的程序段,优化这些程序段,对于提高算法的性能有巨大影响。

  ⑴ 联合使用-pm和-03编译选项,对代码进行项目级的优化:CCS提供了强大功能的编译选项,从-O0到-O3共四级优化。-O3编译选项使能软件流水和其他优化方法,-pm选项从程序代码角度,把整个项目的所有源程序联合起来,作为一个模块来处理。-pm和-03两个选项联合使用,能进行一系列的优化,并且代码尺寸变小很多。


  ⑵ 使用const、restrict 关键字修饰指针:const指示编译器其修饰的指针所指向的内容不能修改;restrict指示编译器其修饰的指针与其他指针指向的内容不会覆盖,这些信息使两个指针不会访问同一存储器地址,可以消除存储器之间的相关性,这样可以并行执行多个数据的读取和运算,使代码运行达到昀大效率。

  ⑶ 对短字长数据使用宽长度的存储器访问(数据打包处理):即当CPU执行一连串短型数据(如16bit数据)操作时,可将数据类型设置为32bit长度的int型,这样可以一次性访问2个短型数据,然后使用C6000指令,同时进行两个数据的操作,减少了对内存的访问,这比采用16bit长度short型节约一半的时间。

  ⑷ 循环展开,把C语言中的循环打开,把多循环变为少循环,减少循环嵌套,使得可能并行的指令增加,从而改进软件流水编排,改善代码性能。

  ⑸ 减少C函数的调用,尽量使用系统提供的内联函数(intrinsics函数)代替C函数,C6000编译器提供了许多intrinsics,是直接与C6000汇编指令映射的在线函数,可以快速优化C代码,这样减少许多不必要的操作,提高代码运算速度。

  ⑹ 使用软件流水技术,软件流水是一种对循环中的指令进行调度优化的技术,利用软件流水可生成非常紧凑的循环代码。当编译时采用-O2或-O3级别的优化选项时,编译器将对程序中的循环进行软件流水。通过软件流水的优化,可以大大提高循环代码的效率,极大地实现指令的并行性。

  3.4 汇编程序级优化

  通过 profile clock工具找出效率很低的部分,使用线形汇编继续优化。线性汇编语言是 C6000系列 DSP独有的一种编程语言,介于高级语言和低级语言之间。和标准的汇编语言不同的是,在编写线性汇编程序时可不必考虑指令的延时、指令的并行、寄存器的使用和功能单元的分配等,汇编优化器将根据代码的情况自动确定这些信息。汇编程序优化可通过对自动编译生成的汇编文件进行修改而进行。汇编优化其实就是根据以上各个方面的特点,采取针对性的方法,以获得尽可能高的程序效率。常用的汇编伪指令如下:

  ⑴ 定义一个可被汇编优化器优化且可被 C/C++当做函数调用的线性汇编代码段的伪指令:

  label .cproc [ var1,[var2,…] ]

        .endproc

 [page] 

  ⑵ 定义一个可被汇编优化器优化的线性汇编代码段的伪指令:

  label .proc [ reg1,[reg2,…] ]

    .endproc [ reg1,[reg2,…] ]

  线性汇编优化时还需要考虑以下几个方面:① 平均分配使用功能单元,提高代码的并
行度。② 使流水线核心循环的时钟周期数昀小。

4 实验结果

  经过以上各种算法优化后,基于DSP硬件平台DM642 EVM的H.264编码算法的性能得到了极大提高。实验中采用Foreman、Container、News三个H.264标准测试序列,分别代表高、中、低运动格式,采用IPP编码模式,对优化前后的算法进行了测试。

  表3给出了优化前后对各种标准测试序列进行编码后的测试结果,算法优化在保证图象质量的前提下,极大提高了编码速度,视频图象较好地实现了实时性编码要求。


 

  本文重点探讨了H.264视频编码算法在DM642 EVM硬件平台上的实现和优化,经过优化后算法具有较好的实现性和实时性。在此基础上,还可以在调整代码结构方面进行优化,使其更加适合DSP的指令系统。此外还可以更合理的利用TMS320DM642芯片的结构和丰富的外部接口,更高效的实现编解码器算法。

参考文献

  [1]  TMS320C6000CPUand Instruction Set Reference Guide[z].TI,2002

  [2]  ITU_T Rec.H.264/ISO/IEC 1496-10.Advanced Video Coding. Final Committee Draft,Document JVT-E022.2002.12(9)

  [3]  李方慧,何佩琨等.TMS320C6000系列DSPs的原理与应用(第二版)[M].北京:电子工业出版社,2002

  [4]  王熹微,唐昆等.基于DM642的视频编码Cache优化策略[J].微计算机信息,2005年第21卷第9-2期

  [5]  毕厚杰.新一代视频压缩标准──H.264/AVC[M].北京:人民邮电出版社,2005

  [6]  张伦,马忠松.基于DM6437的H.264 I帧编码器优化[J].微计算机信息,2009年第25卷第3-2期


 
 

关键字:H.264  DSP  视频编码  算法优化 引用地址:H.264视频编码器在DSP上的实现与优化

上一篇:FPGA在频率综合器中的应用设计与电路
下一篇:首个产业化RFID“中国芯”即将诞生

推荐阅读最新更新时间:2024-03-16 10:52

基于SBC+DSP的嵌入式系统设计与应用
1 引言 嵌入式系统是以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对 功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。其主要由嵌入式处理器、 相关支撑硬件、嵌入式操作系统及应用软件系统等组成。使用嵌入式系统技术,不仅可以实 现硬件和软件的集成优化,而且具有多任务和网络化功能。基于嵌入式系统的以上优点,针 对星图识别大数据量、实时响应速度和高可靠性等特征,以及方便以后的远程控制,本文提 出一种以SBC+DSP 为硬件平台的嵌入式系统,并说明其特征。 2 系统设计 2.1 系统构成和框图 在星图的识别系统中需要进行大量的星图数据的处理工作,并且需要存储星表数据,利 用一般的嵌入式系统
[单片机]
基于现场可编程门阵列的数控延时器的设计
   1 引言   利用硬件描述语言结合可编程逻辑器件(PLD)可以极大地方便数字集成电路的设计,本文介绍一种利用VHDL硬件描述语言结合现场可编程门阵列(FPGA)设计的数控延时器,延时器在时钟clk的作用下,从8位数据线输入延时量,到LATCH高电平时锁存数据,可以实现对触发脉冲TRIG的任意量的延时。由于延时范围不同,设计所用到的FPGA的资源也不同,本文详细介绍最大延时量小于触发脉冲周期的情况。该延时器的软件编程和调试均在MuxplusⅡ环境下完成,系统设计选用Altera公司的EPFl0K30AQC208-3,EPCI44l型专用电路,与DSP相结合,应用于雷达目标模拟器的控制部分,实现对目标距离的模拟。    2
[嵌入式]
基于现场可编程门阵列的数控延时器的设计
利用异步通信芯片16C552实现PC机与DSP的串行通讯
摘要:介绍了异步通信芯片16C552的功能、特点、结构和内部寄存器,给出了用16C552芯片实现PC机与DSP串行通讯的方法,同时给出了它们之间的硬件接口电路和软件初始化程序。 关键词:16C552;串行通讯;异步 当实现PC机与DSP的串行通讯时,通常可直接利用DSP的串行通讯接口(SCI)模块和SCI多处理器通讯协议(即空闲线路模式和地址位模式)来在同一串行线路中实现多个处理器之间的通讯,也可以采用SCI异步通讯模式实现串行通讯。这两种方式虽然都能方便地实现串行通讯,但它们都需占用系统较多的硬件和软件资源, 因而不适用于对实时性要求比较高且系统资源紧张的应用场合。笔者在研制电力有源滤波实验系统中,由于采用了异步通讯芯片
[工业控制]
应用于网络视频监控的新型前端视频编码
  近日,科达公司为进一步丰富科达的网络视频监控产品线,发布了多款适应不同应用需求的网络视频编码器,分别是KDM2401、KDM2401L和KDM2404LS。   KDM2401是一款高清晰的单路网络视频编码产品,具有1路BNC视频输入接口、1路音频输入接口和1路音频输出接口,支持MPEG-4视频编码技术和G.726音频编解码技术,可提供D1/4CIF格式的高清晰视频效果。KDM2401主要应用于仅需接入1路摄像机且对图像质量要求较高的前端监控点。   KDM2401L是一款可提供CIF格式视频的单路网络视频编码器。除了视频格式,KDM2401L与KDM2401完全相同,同样具有1路BNC视频输入接口、1路音频输入接口和
[安防电子]
基于DSP和CAN的电机同步控制系统与通信
0 引言 传统的多 电机控制 系统适用于要求不高、相对简单、电机分布比较集中的场合。而对于运动控制中实时性、可靠性、可扩展性、传输距离、传输速度等要求较高的场合,需要采用高传输速度、远传输距离、可靠性较高的通信方式和处理速度快、功能强大、能够实现复杂控制策略的处理器。 控制器局域网CAN(Controller Area Network)是一种有效支持分布式控制和实时控制的串行通信网络。它属于现场总线范畴,与现有的其它总线相比,它是一种分散式、数字化、双向、多站点的通信系统,具有速率高、可靠性好、智能化高、连接方便等诸多优点,在分布式测试和工业控制等相关领域的应用越来越广泛 。 数字信号处理器(Dig
[嵌入式]
海思採用Cadence Tensilica Vision P6 DSP
电子网消息,全球电子设计创新领导厂商益华计算机(Cadence Design Systems, Inc.)宣布,全球无晶圆厂半导体及IC设计公司海思半导体采用Cadence Tensilica Vision P6 DSP,于其华为最新Mate 10系列手机的10奈米Kirin 970行动应用处理器。 采用Vision P6 DSP,海思半导体为Kirin SoC增强图像及视觉处理能力。 高效Vision P6 DSP具有增加的运算能力,并对架构进行优化,成为图像和视觉处理树立新标准,较前代Tensilica Vision P5 DSP 提升多达四倍效能。 由于宽广的VLIW SIMD架构、高度优化的指令集及完善调适的图像数据库,让
[半导体设计/制造]
基于DSP和FPGA的机器人声控系统设计与实现
1 引言 机器人听觉系统主要是对人的声音进行语音识别并做出判断,然后输出相应的动作指令控制头部和手臂的动作,传统的机器人听觉系统一般是以PC机为平台对机器人进行控制,其特点是用一台计算机作为机器人的信息处理核心通过接口电路对机器人进行控制,虽然处理能力比较强大,语音库比较完备,系统更新以及功能拓展比较容易,但是比较笨重,不利于机器人的小型化和复杂条件下进行工作,此外功耗大、成本高。 本次设计采用了性价比较高的数字信号处理芯片TMS320VC5509作为语音识别处理器,具有较快的处理速度,使机器人在脱机状态下,独立完成复杂的语音信号处理和动作指令控制,FPGA系统的开发降低了时序控制电路和逻辑电路在PCB板所占
[嵌入式]
DSP片外高速海量SDRAM存储系统设计
在数字图像处理、航空航天等高速信号处理应用场合,需要有高速大容量存储空间的强力支持,来满足系统对海量数据吞吐的要求,通过使用大容量同步动态RAM(SDRAM)来扩展嵌入式DSP系统存储空间的方法,选用ISSI公司的IS42S16400高速SDRAM芯片,详细论述在基于TMS320C6201(简称C6201)的数字信号处理系统中此设计方法的具体实现。    1 IS42S16400芯片简介   IS42S16400是ISSI公司推出的一种单片存储容量高达64Mb(即8MB)的16位字宽高速SDRAM芯片。SDRAM的主要特点是:①同步访问,读写操作需要时钟;②动态存储,芯片需要定时刷新。IS42S16400采用CMOS工艺
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新安防电子文章

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 视频监控 智能卡 防盗报警 智能管理 处理器 传感器 其他技术 综合资讯 安防论坛

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

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