为什么盖住OPPOR11最后一颗牙齿被肉盖住镜头,另最后一颗牙齿被肉盖住不能用

当前位置: >>
H264编码器的DSP实现与优化
代鼍………1…070…1……..擎号…….璺堡!翟塑Z……分娄号……..婴!曼!!…….密姗-………j盟………而簧它手辩校先訾硕士学位论文题(中、英文)目H.264编码器的DSP实现与优化Transpl
antation and Optimization of H.264 Encoder………………………B…ase…d…on.瞵P…………………….作者姓名….扬羞芳….指导教师姓名、职务……赵峦工.熬援…..。f学科门类工学学科、专业模式识别与智能系统提交论文日期……………………三9.Q土生一.且…………………… 摘要摘要H.264/AVC是ⅡU.TVCEG和ISo/ⅢC MPEG联合制定的最新的视频编码国 际标准,是目前图像通信研究领域的热点问题之一。H.264的视频编码层(vcL) 采用了许多新技术使得编码性能大幅度提高。但这是以复杂度的成倍增加为代价 的,这就使得H.264在实时的视频编码及传输应用中面临着巨大的挑战. 利用高性能数字信号处理器(DSP)来实现H.264实时编码器是一种快速有效的方法,有助于H.264视频标准的迅速推广和应用.ADI Blackfin561是一款高性能的数字信号处理器,具有600MHz的主频。本文选择其作为硬件平台,探索 了在资源有限的DSP平台上实现H.264编码器的有效途径。 论文选择JM85作为参考,阐述了H.264编码器C算法级优化的整个过程, 随后在深入剖析算法的基础上,对影响编码速度的瓶颈部分进行研究,寻找算法 的改进途径,在运动估计方面提出了改进方法;在此基础上进行将在PC机下改 进的代码向DSP的移植及优化工作,根据所选择的DSP芯片的特点,对移植后 的程序进行C语言级和汇编语言级的优化,通过Memory配置、Cache应用和DMA 等多种方法,完成了H.2“编码的DSP移植关键词:H.264标准复杂度分析Blackfin DSP优化 AbstractAbstractH。264/AVC is the newest video international standard designed by bothⅡU-TVCEG and ISO/IEC research field.TheMPEG.It becomesallimportant content of imagecommunicationgreatly.new technology of VCLonimpmvedcodingefficiencyHowever the improvement is basedthecost of rapidincreased complexity,whichmakes it difficulty of real―time coding and transmission of H.264.Based Encodar isonhiD-performanceof mostDigital Signal Processor toimplementMediaH.264 videooneeffidentmethods,which also help to promote theaapplicationof H.264.ADI Blackfin561 ishigh-performanceDigitalProcessor with600MHz clock rate.This dissertation choose BF561 as the hardware platform to implements the real―time H.264 encoder,and exploited the efficient means of H.264encoder implementationTo successfullybasedonDSPplatform.code onto the DSP device.after introduces thetransport H.264 Cperformance ofstates theBF561 DSP and unique features of its architectu聘,this dissertationwhole optimizing process of the original C code.It choose JM85.Varioustomethods are adoptedadjustingthe overall program structureand datastructure.The thenew algorithm is consistent with the Baseline Profile,simple,clear,without redundant and has the same coding resultof the ori舀hal JM.Throughdeeply studyingthe main techniques and algorithms,find out the bottleneck which influences the coding speed,then the codeanimproved diamond―searching algorithm is proposed to improve improved encoding algorithms areasefficiency.Finally theuansplantedto theDSP chip,some key points,suchdecision ofencodertools,memoryconfiguration,cache,DMA,Cand assembly language optimization,ale summarized.Keyword:H.264/AVCcomplexity analysisBlackfin DSPoptimization 创新性声明本人声明所呈交的论文是我个人在导师的指导下进行的研究工作及所取得的 研究成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文 中不包含其它人已发表或撰写过的研究成果;也不包含为获得西安电子科技大学 或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志所做的任何贡献均已在论文中做了明确的说明并表示了谢意。本人签名:日期:关于论文使用授权的说明本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究生 在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。本人保证毕业 离校后,发表论文或使用论文工作成果时署名单位仍然为西安电子科技大学。学 校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部 或部分内容,可以允许采用影印、缩印或其它复制手段保存论文。(保密的论文在 解密后遵守此规定)本学位论文属于保密,在一年解密后适用本授权书。本人签名: 导师签名: R期日期坦2:!:塑: 第一章绪论第一章绪论1.1引言自上世纪70年代以来,计算机与数字信号处理技术有了突飞猛进的跨越式发 展,互联网逐步普及,网络服务水平也随之提高,这一切使得简单的文本信息无法满足信息时代的通信要求,人类对信息的处理迅速地由模拟领域进入了数字领域,处理的对象集中于多媒体信息。因此2l世纪被形象地称为数字时代或多媒体时代。多媒体信息主要包括文字、声音、图像和视频等内容,视频是其中最重要的 组成部分。且前,可视电话,视频会议,安全监控,远程教育和视频点播等多媒体服务已成为人们关心的热点。这是因为:首先视频信息具有直观、形象、准确、高效和应用广泛等特点,因此极易被人类接受。据统计人类接受的信息70%来自视觉;其次,视频信息具有无与伦比的信息容量,在许多工程领域,都会遇到对海量图像数据进行传输与存储的问题。在传输方面,包括数字电视,遥感照片, 军事侦察图像,可视电话,视频会议等;在存储方面:教育、商业、管理等领域 的图文资料,CT机,核磁等设备的医用图像,天气云图等,几乎涉及各个行业。 但是,与文字、数据等相比,数字化后的视频信息,海量的数据量给信息的传输核存储造成极大的困难,成为阻碍人类有效获取和使用信息的瓶颈之一。原始的 数字视频几乎没有任何实用价值。例如,对于SIF(SourceInputFormat)格式,NTSC制式,4:4:4采样的数字电视图像,每帧数据量为352×240×3=253KB,每秒数据量为253×30=7.603MB/s,一片CD.ROM可存帧数650/0.253=1.226髓帧,一部CD.ROM节目时间仅为(650/7.603)/60=1.42分;对于高清晰度数字电视(Ⅱ'U―R 709),每秒数据量高达884.7Mbi协,而地面广播系统的传输带宽仅有 6M到8M。因此数字视频必须经过压缩才能有实际意义。为了在有限的容量里存储更多的图片,或为了在最短的时间里传递更多的信息,或在有限的带宽条件下 传输更多的活动图像,必须研究如何最大限度地压缩图像,并保证重建图像能够被用户接受,这样视频压缩技术就成为多媒体技术的关键所在。1.2视频编码原理视频编码的目的是实现对视频的压缩,其核心内容是去相关,即通过减少视频序列间的相关性,用较少的比特数来 表示视频内容,降低冗余,从而实现对视频的压缩。视频序列中的冗余主要有以 2H.264编码器的DSP实现与优化下几个方面f”】:1.空间冗余:在同一帧画面中,相邻的象素间存在的相关性。特别是当这些相 邻象素位于同一个视频对象中时,相关性极强,例如图像的背景区域;2.时间冗余:通常对视频序列而言,除非发生场景切换,否则相继帧在时间上 都是连续的。即在前后两帧中往往包含与当前帧相同的背景和对象,只是由 于镜头的转动或对象的移动使得空间位置发生变化。运动越缓慢,位置的变 换越小。因此视频序列存在极强的相关性;3.编码冗余:对于编码符号,其平均码长高于所表示的信息熵,这个偏差就形 成了编码冗余; 4.人眼视觉冗余:由于人眼视觉的非均匀性,使得人眼视觉对某些空间频率感 觉迟钝。因此视频中不同频率成分的内容对于人眼系统而言其重要性不同, 也就是说存在频域冗余。例如人眼视觉系统对亮度信号变化的敏感性高于色 度信号变化,因此可以对色度分量进行降采样,同时保持主观视觉质量不变. YUV4:2:0色差格式就是对色度分量在水平和垂直两个方向进行2:1的降采 样。另一方面对信号频域的各个分量可以采取不同的量化步距,将人眼感觉 不敏感的分量去除,而不会引起主观质量的下降;5.结构冗余和知识冗余:图像的某些区域存在非常强的纹理结构,图像象素值 有明显的分布模式,形成结构冗余。或者图像中包含的信息与某些先验知识 有关,例如人的五官位置对于人脸而言就是一种先验知识,这种冗余构成知 识冗余。 在上述冗余中,编码冗余、空间冗余和时间冗余都依赖于图像数据的统计特性,可以统称为统计冗余。 信源编码的方法按照压缩数据能否被准确恢复分为两大类:无损编码和有损 编码。虽然无损编码可以无失真地恢复原始数据,但其压缩效率十分有限(10倍 以下),因此视频压缩中是将无损编码和有损编码结合使用. 视频编码中主要压缩技术有以下几种:l、预测编码不是对一个象素直接编码,而是用同一帧(帧内预测编码)或相邻帧(帧问 预测编码)中的象素值来进行预测,然后对预测残差进行量化和编码。显然预测 编码实际是利用了图像数据中的空间和时问冗余。线性预测编码又称为差分脉冲 编码调制DPCM(DifferentialPulse CodeModulation),由于算法简单,易于硬件实现,已被各种视频编码标准采纳. 帧间预测编码的主要方法有帧重复法、帧内插法和运动补偿法等。其中运动 补偿法在视频编码中应用得最为广泛.运动补偿预测通常可以采用单向预测(一 个参考帧),双向预测(两个参考帧)和插值预测(取两个参考帧预测值的平均) 第一章绪论3来实现。由于运动补偿预测可以有效地减少视频序列的时域冗余,因此成为构成 当前主要视频编码标准最基本的技术之一。 2、变换编码变换编码是构成当前主要视频编码标准的另一项最基本技术,用来消除图像的频域(变换域)冗余【”。变换编码可分为正交变换编码,子带编码【“州和小波 编码[11-121.正交变换编码通常是将空域相关的象素点映射到另一个正交矢量空间,使得 变换后的系数之间相关性降低。常见的正交变换有K-L(Karhunen.Locve)变换、离散傅立叶变换DFT(Discretc Fourier Transform)、离散余弦变换DCT(Discrete CosineTransform)、沃尔什哈达玛j(Walsh-Hadamard)变换和哈尔(Har0变换。K-L变换是 均方误差准则下的最优变换,但实现困难。在现行视频编码标准中几乎都采用了 性能最接近K-L变换的DCT。实际上当自相关系数为1时,K-L变换就退化为DCT变换【射。Dcr变换是1974年Ahmed【61提出的,它具有一组固定的基函数(和 图像内容无关),以及很好的能量压缩和去相关特性。DCT变换和DFr变换密切相关,NXNDCT可以由它的偶对称扩展2NX2NDFT变换表达出来,这样利用 DFT变换的可分级特性以及若干FFT变换算法中的一个。可以用O(2N2log,Ⅳ)操 作代替0(Ⅳ4)计算出NXN DCTt”。除此之外,目前已经有了许多更为实用的DCT 变换快速算法17.41。由于Dcr变换采用实数计算,加上有效的快速算法实现,使得硬件实现成为可能,因此被广泛地采用。 通过正交变换编码,图像的能量集中在低频区域,表示图像中缓慢变化的内 容,而图像的边缘、细微的纹理等细节部分集中在变换的高频区。在压缩过程中,通常采用同一个量化器进行量化,牺牲了图像的细节部分,造成解码图像模糊。 在高压缩比时,基于块的正交变换编码还会产生块效应(Uock effect)和振铃效应∞ng effect),进~步降低图像质量。因此出现了子带编码和小波编码等新方法。子带编码是将图像分裂成几个不同频带的子带(Sub-band),对不同的予带设计不同的编码参数,提高图像质量。小波变换编码充分地利用了小波分析在时域和频域 同时具有良好的局部化特性,与人眼视觉特性相符的多分辨率能力,分析系数分布平稳,自然分级的金字塔式数据结构等优点,在视频压缩领域引起广泛的关注。它利用与正交分解完全不同的小波分解,以原始图像(而非原始图像中的块)为初值,不断地将上一级图像分解为4个子带:上一级图像中的低频信息、垂直方向、水平方向和对角线方向的边缘信息。从多分辨率分析出发,一般每次只对上 一级的低频子图图像进行分解。将整个图像而非其中的块作为整体进行传送,因此不会产生块效应。由于小波变换的金字塔式数据结构的每一层都包含整个图像的信息,只是其中的分辨率不同,因此可以选择传送部分或全部,非常简单,自 然的实现可分级视频编码。 4H.264编码器的DSP实现与优化3、统计编码根据香农信息论的观点,信源冗余度来自信源本身的相关性和信源内部事件概率分布的不均匀性。统计编码主要有基于概率分布特性的霍夫曼编码和算术编 码,以及基于相关性的游程长度编码三类。霍夫曼编码(Huffman coding)是一种变长编码VLC(VariablcLengthCoOing)。它将信源符号按概率大小重新排序。通过二叉树算法,依次将两个概率最小的结 点合并,直至根结点。完成树的构造后,给所有的树枝分配0和l,这样就可以 给高概率符号分配短码,而概率小的符号则分配较长的码字,去除符号间的统计 冗余。在已知信源符号概率时,可以给出极好的编码性能。但霍夫曼编码严重依 赖信源的统计特性,编码前必须有信源概率分布的先验知识。对于复杂的视频来说,只能用对大量数据统计后获得的近似分布来代替,因此实际应用时无法达到 最佳性能。另一方面VLC提高了编码效率,但不利于硬件实现。算术编码111州(Arithmetic coding)是20世纪80年代发展起来的,理论上,算 术编码和霍夫曼编码都是最佳的,但在信源概率分布未知的情况下,算术编码优于霍夫曼编码。算术编码的基本原理是利用【0a]之问的一个概率区间来表示数据序列。将信源x的一个给定状态X―f蜀,X:,..z.v’与【叩】问的一个由大概率P和小概率Q限定的概率子区间相联系,区间的长度等于序列的概率pG)。编码器从N-1开始,逐位地处理输入的符号流。每输入一位,更新当前符号的条件概率, 并以此调整尸和Q限定的概率子区问。随着Ⅳ的增加,和输入符号序列相联系的 概率子区间就会变得越来越小。最后用这个表示概率子区间的小数给符号序列编码。 游程长度编码RLC(Run-Length CoOing)是将符号值相同的连续符号串用一个游程长度(符号数)和一个代表值(值)描述。这样可以用更紧密的序列代替原有的相同值符号串。在视频压缩中,量化后的数据常常出现大量的连零系数, 利用游程长度编码可以有效地降低表示零码的比特数。 4、分形编码和模型基编码本文的关注焦点主要集中于基于块匹配的编码框架中,因此分形编码f15-17]和 模型基编码[18-19l超出了本文的讨论范围,不再一一详述。其具体的编码原理可以参见相关的文献。1.3视频编码标准视频编码技术的标准化给不同的厂商和视频提供者奠定了一个共同工作的基础,也为编码视频的交互和更为广泛的应用创造了必要的条件。开发一种国际标 准需要来自不同国家的许多同行的合作,并需要一个能支持标准化过程和实篪标 第一章绪论5准的组织㈣。视频编码国际标准的制定主要由ITU-T0ntemationalTelecommunicationUnion-Tclecommunication StandardizationSect00和ISO/IEC(IntemationalOrganization for Standardization/International ElectrotechnicalCommission)负责。rrU.T相继发布了H.26x系列标准,而ISO/IEC则推出了MPEG系列标准。这些标准都是建立在基于块匹配的混合编码框架下的,若且有非常类似的结构.下面对基于块匹配混合编码框架的基本结构、必要算法和相关视频编码标准作一个简要介绍。1.3.1混合编码框架下的视频编码器到目前为止,不管是MPEG系列标准还是ⅡU-T的H.26x系列标准,其编码 基本原理都是一样的,那就是用时域预测去掉时域冗余,空域预测去掉空间冗余, 然后DCT域量化,去掉高频不重要的信息,再用VLC和游程编码使得编码可以用最少的比特来表示码流。所不同的是,各种标准采用的码表有所差别,以面向 不同的应用;另外,新的标准在某些模块会采用一些新的算法,做出改进。现有的视频编码标准都是DPCM/T的压缩方式,不同标准下的编解码器有所差别,但 大致的结构基本是一致的。 基于块匹配混合编码框架下的视频编码系统是将编码帧划分为N×N的块, 每一个块相对独立地进行处理。其核心思想是利用帧间预测编码消除图像序列中 的时域冗余,利用变换编码消除频域冗余。其编码器框图如图1-1。这些编码器 都用到了运动估计和运动补偿、Dcr变换等技术。图1-1基于块匹配混合编码系统编码器示意图通常编码器的主要模块为运动估计(Motion Estimation)和运动补偿fMotionCompensation)以及纹理编码。其中运动补偿用到了反量化(Inverse Q)、反变换 (Inverse oct),纹理编码用到了变换(DCT)量化(Q)、变长编码(Variable Coding)等技术。Length 6H.264编码器的DsP实现与优化1.3.1.1运动估计和运动补偿 常用的运动估计算法有象素递归,块匹配等。考虑到规律性和软硬件实现的简单性,块匹配技术是通常采用的更合适的方法。目前所有压缩编码标准的运动 估计都采用块匹配技术。由于运动估计运算的复杂性,它也是编码过程的最大的运算瓶颈。全搜索算法的结果最好,但要以很大的计算复杂性为代价,所以在实现中,必须对运动矢量的质量与运动估计过程的计算复杂性折衷考虑.参考鞭E咄 ’裔钕C田攮寰譬【J口■捌燃点囵甄魁块焉.。 刚。趣靖矢量图1-2运动估计原理图1-2就显示了块匹配运动估计原理【矗】。当一个物体通过时,它可能在每幅画面上出现在不同的位置,但其本身的外形并没有多大的改变。通过在编码器上测量运动可以降低画面差异。画面差异被以矢量的方式送往解码器.解码器使用该矢量将上一幅画面的一部分移至新画面中更恰当的位置上。 在下列情况下,运动估值的压缩效率较好:?一个视频对象的大部分特征,如形状和方位,在各帧之间保持不变。●只有帧内视频对象的位置改变。 运动估计过程计算每NXN象素区域(称为宏块)的运动矢量,运动矢量就是宏块从一帧到另一帧的相对位移。假设在当前帧(t时刻)中某一宏块左上角 的位置是O,Y),如果该宏块在参考帧中的最佳匹配宏块位于O+Ⅳ,Y+v),那么位于0,y)处的宏块的运动矢量就是O+Ⅳ,Y+v).在相对坐标系中,运动矢量表 示为@,y)。如果参考帧是t时刻之前的(f一厅)时刻,则运动矢量称为前向运动矢量。如果参考帧是t时刻之后的(f+押)时刻,则运动矢量称为后向运动矢量。考虑到通过帧间运动补偿可以有效压缩数据比特数,数据压缩标准中通常采用三种类型的图像:帧内图(I图像),预测图(P图像)和双向预测图(B图像)。 ●帧内图像(1帧):编码时不需要其它参考帧。帧内编码宏块不需要运动矢量。l帧画面是指帧内编码画面,解码时不需要其它额外的信息。l帧 主要由变换系数组成,不含矢量。它允许观众变换频道,并防止误码的传递。 ●预测图像(P帧):P帧数据由在前面画面中描述的每个宏块的矢量所组 第一章绪论7成,而不是由描述必须加到宏块上的校正或差异数据的变换系数所组成。 P帧需要的数据大约是I帧的一半。在同一个P帧内,某一宏块可以编码 为P类型(前向预测编码)或l类型(帧内编码)宏块。如果在运动估值 过程中计算出的运动矢量不能用时,则该宏块选择I类型编码模式. ●双向预测图像(B帧):同时用前面和后面的I帧或P帧作参考帧进行运 动补偿预测编码。在同一个B帧内,某一宏块可以编码为I类型,P类型 或B类型编码模式.B帧通常每个宏块需要两个运动矢量:一个前向运 动矢量和一个后向运动矢量的线性插值。由于双向预测非常有效,所以B 帧需要的数据大约是l帧的四分之一. 这些图像类型的组织结构十分灵活,可以由编码器的参数决定。 在同一个视频帧中,每个宏块也可以采用不同的编码类型。每个宏块具有的 运动矢量数目取决于宏块的编码类型。 各种块匹配算法在以下三方面有区别:块大小选择,最佳匹配标准,搜索策略。在H.264标准中,可以选择从16X 16到4X4等多种变化的尺寸为块匹配尺寸.最佳匹配可以用多种方法来判断。最常用的实现简单的方法是绝对差之和 (SAD)方法,也就是说,最佳匹配宏块是使SAD(/,,)取最小值的宏块。SAO(f,,)定义如下:Ⅳ一1Ⅳ一1SaDq,,)。磊荟Ic(x+七,),+7)一R(x+‘+七,),+,+‘)c0+t,Y+f)表示当前帧中位于O,Y)处宏块的象素,该宏块被称为估计宏 块。RO+“七,Y+,+f)表示参考帧中宏块的象素,该宏块被称为参考宏块。f, ,定义在搜索区域内:一P‘f‘P,一Ps,‘P.31,M表示宏块的尺寸。 位于O,),)处的宏块的运动矢量是使函数SAO(i,,)取最小值的O,,)。 当最佳匹配宏块与估计宏块几乎相同时,差值副DO,,)非常小.实际上,只 有对SAD(i,,)值小于某一预定阈值的宏块,才能使用运动估值算法。 运动估计的过程通常是:首先对宏块的亮度块用全搜索方法得到整象素精度 的运动向量,然后用这个运动向量作为初始估计,在它周围进行半象素精度的搜 索。将得到的亮度块的运动向量除以2作为对应的宏块的色度块的运动向量。对 于作参考的帧,由于它需要能够独立解码,因此在解码的时候可能没有帧外部的 象素值,而在运动估计时,可能要用到这些象素值,因此需要先采用“重复填充” 技术来根据帧内部的象素值来外插帧外部的象素值。填充过程可看作是根据帧内 部的象素点对帧外部的象素点进行预测。因此作运动估计之前,要先对参考帧进 8H.264编码器的DSP实现与优化行填充,然后进行运动估计. 运动补偿是指根据运动矢量在参考帧中找出参考块。如果运动矢量的工分量和y分量都是整象素长度,则直接在参考帧中找出参考块:如果是半象素长度,则需要通过内插运算计算出参考块,计算出的参考块需要加上解码得出的误差块 才能得到当前块。运动补偿是减少帧序列冗余的有效方法。13.1.2DCT变换编码DCT变换编码方法归纳起来可分为:离散余弦变换、对DCT变换系数进行 量化(包括量化、z字扫描、行程编码)和熵编码三个阶段.为得到更高压缩比, 必须对Dcr系数进行量化。为了进一步提高DCT固有的压缩性和减小运动信息对整个码率的影响,要使用可变长度的码字进行编码(即变长码VLC)。视频编码算法中帧内和帧闻编码的核心算法都是DCT变换编码,视频压缩算法中采用的8×8二维DCT定义如下:s(≈),)-耄耄co)co),m,v)cos垡气詈坦cos垦之专崆盹Vm㈨,砉私cos学cos%竽其中z。是在ff,刀位置处的象素值,“和v分别是水平和垂直频率索引,而常量c0)和c∽由下式给出:∽。岛的DCT变换。如下所示:k_0’Otherw/se上式的运算,对8×8块中的每个象素有“次乘法和63次加法,对整个块中 的64个象素值共有4096次乘法和4032次加法。等效于先对v分量求和,再对H 分量求和,相当于先对块中的每一列进行一维DCT运算,然后再对其结果的每一 行进行一维DCT运算。这就是基本的行列分离法,把二维的DCT变换化成一维盹力-掣警酬警“石黔cos【譬铲V刁阻c@).jk_o. 1 otherwise【万图1-3是每一个单独DCT系数逆向变换后的结果。 第一章绪论9图1-38×8尺寸DCr变换在亮度信号中,左上方的系数是整块的平均亮度或DC分量。在顶行上移动时(向右),水平空间频率会增加。在左列上移动时(向下),垂直空间频率会增 加. 在实际画面中,不同的垂直和水平空间频率会同时出现,块中一些点的系数 将代表所有可能的水平频率和垂直频率的组合。对彩色画面而言,y、c,和C。数据被组合成分离的8×8排列,并各自独立变换。在相当真实的节目内容中,许多系数都是零值或接近零值,所以不会被传送。这就产生了实际无损耗的压缩。如果需要更高的压缩系数,那么非零系数的字长 必须缩短,这样会导致这些系数精度下降,并将在处理中产生损耗。1.3.2主要视频编码标准图1.4视频压缩编码国际标准的发展各种视频压缩编码标准都是根据人们在不同领域中对声像数据的要求所制定的。并且随着人们的需求不断地发展。视频压缩编码标准按其制定的时间大概可以用图1-4进行描述。1、H.261t31l 10H.264编码器的DSP实现与优化H.261是第一个获得广泛应用的视频编码标准。它的全称为。Videoaudio visual services atcodec forP×64kbi帕”。目标是在ISDN(IntegratedServicesDi【gitalNetwork)上以P X64Kbps,P-L2,...30的速率开展视频会议和视频电话业务。 H.261定义了一个完整的视频编码算法,采用了帧内图像编码、帧间误差预 测、运动补偿、DCT、交长编码等技术,建立了取得巨大成功的基于块混合编码 框架,为后来的MPEG.1、MPEG.2等视频压缩标准提供了基础。2、MPEG.1I矧1991年11月活动图像专家组(MPEG)制定了MPEG.1标准。MPEG标准 在H.261视频编码算法的基础上改进、发展。MPEG.1改进的主要内容是增加了B图像帧(双向预测)和图像组(GOP),这些改进具有更高的压缩比,同时定义了编码算法中各工具层的语法,使视频的可操作性更灵活。 MPEG-1标准是将数字视频信号和与之相伴的音频信号在一个可以接受的质量下,能被压缩到码率约1.SMbit/s的一个MPEG单一流,主要应用于存储应用。MPEG.1标准只规定了码流语法和解码过程,用户可以很好地利用这个语法的灵 活性来设计非常高质量的编码器和非常低成本的解码器。编码器的设计中一些重 要参数,如运动估值、自适应量化和码流速率控制等可以由用户自由确定。速率约为1.2Mb/s的用MPEG.1算法压缩的视频图像的质量相当于VHS(家用视频系统)记录质量。空间分辨率限制为每视频帧扫描行360个象素,并且在源编码器端的视频信号为30帧/秒,非隔行扫描。对大多数原始图像内容,可得到无人工痕迹的图像质量。MPEG.1标准是VCD工业标准的核心,现在已经走入 千家万户;利用MPEG.1音频的三层MP3音乐格式也倍受青睐.3、MPEG.21”IISO/IEC于1991年开始研究新的标准。新标准着力于提高视频质量,提供不亚予bITSC/PAL直到10Mbps左右的CCIR601质量。1994年公布了ISO/IECl3818(MPEG.2)草案,一年后成为国际标准。因此,MPEG-2标准能广泛应用于卫星广播业务(BBS)、电缆电视(CATV)、数字电视地面广播(啪)、通信等众多领域。MPEG.2是工业标准D、l,D的核心标准。 作了重要的改进和扩充,针对隔行扫描的常规电视图像专门设置了“按帧编码”点播电视(VOD)、数字声音广播(DAB)、多媒体终端、网络数据库业务、双工MPEG-2是MPEo.1的一个超集,它后向兼容MPEG.1。MPEG.2又对MPEG-1 和“按场编码”两种模式,并对运动补偿作了相应的扩充,使其编码效率显著提高。档次和等级的划分是MPEG-2为适应不同应用而定义各个子集的结果。“档 次”是集成后的完整码流的一个子集,而每个“档次”的“等级”则是对编码参数所做出的进一步限制。“档次/等级”是通过确定码流中相应的标题信息及附加 第一章绪论信息中的有关参数来给定的,这样,为较高“档次”和“等级”码流设计的解码 器能够对相同或较低档次的数据解码。4、H.2631卅针对甚低码率(低于64kbps)的视频会议和可视电话的应用,在1995年11 月,兀U-T推荐的低码率视频编码标准H.263建议草案出台。H.263标准的视频 编码算法与H.261相似(运动补偿和DCT算法),但它在性能上有了显著提高。 试验表明:在相同的主观质量下,H.263编码码率仅为H.261的一半。与H.261 相比,H.263的主要区别如下: H.263支持更多的图像格式、半象素精度运动估计、宏块(16X 16)运动估计和块(8×8)运动估计的自适应变换、3.D(IAsT-RUN.u’ⅦL)而不是2.D(RUN.uⅣEL)游程编码、可选的无限制运动矢量、可选的算式编码、可选的 重叠运动补偿和四运动矢量/宏块的高级预测模式和可选的双向预测。 在完成H.263标准的制定工作后,为适应在现有的窄带网络环境上传输视频 信息,1TU.T在1998年1月通过了H.263标准的第二版H.263+,增加了十二个 新的高级模式。2000年11月,又推出了第三版H.263++,新增3个高级模式。 新增模式主要包括:参考帧再采样模式、高级帧内编码模式、交替帧间VIJ(3选择 模式、分片结构模式、参考帧选择模式、数据分割模式、可分级扩展编码等。5、MPEG.4138一agl在成功制定了MPEG.1和MPEG-2后,国际运动图像编码专家组(MPEG)于1999年初正式推出了令人称道的MPEG.4标准。与前两者不同,MPEG4不仅 仅是针对一定比特率的视频、音频编码,还更加注重多媒体系统的交互性和灵活 性。因此,MPEG.4采用了全新的第二代视频压缩技术,引入视听对象(Audio/Visual0bjects,AVO)的概念,使得更多的交互操作成为可能。以上这些优点无疑使得MPEG-4具有广阔的应用前景,如Intemet/Intranet上 的多媒体流服务、视频点播、可视游戏、低码率的移动多媒体通信如视频手机等 交互式多媒体应用、数字电视与演播电视、虚拟会议等等。6、H.2641”11998年1月,ITu.T的VCEG专家组提出了H.26L建议,开始广泛征求意见; 1999年,VCEG专家组给出了H.26L的第一个测试模型TML-1,公开进行测试和改进;2000年6月,VCEG专家组给出了H.26L新的测试模型删L广8;随后在2001年,MPEG专家组也认可了H.26L标准的发展潜力,并且与VCEG合作成立了联合视频专家组(JointVideoTeam,JVT)共同致力于新标准的研制。2003part年5月,该标准正式推出,定名为H.264/MPEG(Advanced Video Coding,AVC)。10,官方叫法是先进视频编码H.264继承了H.263+、H.263++中一些行之有效的可选模式,如先进帧内预 12H.264编码器的DSP实现与优化测模式,基于上下文的算术编码模式等,同时加入了一些新的研究成果。与H.263 基本框架相比,主要的改进有:1/4(1/8)象素精度的运动估计、7种不同尺寸块 的运动矢量估计、整型DCT运算等。 作为新的视频编码标准,H.264具有低码率、高质量、数据错误/丢失的鲁棒 性、不同网络环境下操作的可变性等优点,所以在高质量实时传输领域,H.264 具有无可比拟的强大优势。正因为此,本课题选用H.264进行DSP上的移植与优 化。在以后的章节将对H.264标准作详细介绍。1.4研究背景与选题如前所述,现代化的社会工作方式的不断发展,传统的以单一语音为主的媒 体交流方式已经无法满足社会与人民的需要。随着通信技术和网络技术的发展, 现代多媒体技术随着编码技术、计算机技术、数字信号处理技术、大规模集成电 路技术的发展.已经成为现代信息社会的一个显著特征。多媒体发展在社会上有 广阔的应用背景。 H.264正是因为其良好的压缩性能和网络友好性等新特点而成为目前视频存 储和图像通信研究领域的一个热点问题。实现H.264实时编码是其中一个很重要 的研究方向,尤其在移动视频、视频会议、电视电话等视频实时应用场合具有非 常重要的研究意义和实用价值。 视频压缩编码的实现主要有三种可能途径:基于PC的纯软件实现、纯硬件 实现、软硬件相结合实现。随着视频压缩标准的不断发展与完善,算法的运算量 和复杂度也就随之而提升,H.264视频压缩编码算法也不例外。用基于PC的纯软 件的方法来实现H.264实时压缩非常困难,尤其对于高分辨率的图像来说几乎是 不可能的.同时,就纯硬件实现来说,虽然通过设计制作高性能的专业视频处理 芯片的方法来完成视频编解码一度在视频压缩系统中占据了主导地位,但专用的 视频处理芯片固有的灵活性差和高成本缺点却极大地限制了该方法的普及。而通 用的数字信号处理器(DSP),由于其高度可编程性、超强的数据吞吐能力和运算 速度、使产品能够迅速应用新算法、快速地进行产品升级,这些优点使得以DSP 为核心处理器的软硬件相结合的方法成为了目前国际上和国内实现H.264实时编 码的一种可行的、有效地,快速的途径. Blackfin系列DSP是美国模拟器件公司(ADI,AnalogDevice Instruments)于2003年推出的新一代处理器,其性能是传统DSP和嵌入式处理器的两倍而功 耗仅为它们的一半,BF561更是其中的佼佼者。Blackfin系列的重点在消费类多 媒体,针对视频和图像处理领域应用。BF561因其运算性能良好、功能全面等特 点而成为目前实现H.264视频编码器的理想平台之一。本课题的目的就是通过利 第一章绪论13用AD BF561高性能DSP加H.264编码算法软硬件相结合的方法来实现H.264算 法的实时编码。具体而言就是在充分研究H.264编码算法的基础上,在保持良好的图像质量和编码效率的同时,通过提出新的快速有效的算法和采用各种代码优 化方法来减小原H.264编码算法的运算量,提高编码速度,最终实现以AD 为平台的实时H.264压缩编码器。BF5611.5内容安排本文以H.264的标注参考模型JM85为蓝本,采用ADI的Blackfm 561作为主处理平台,研究视频编码算法在DSP上的移植和优化过程. 本文主要内容安排如下:第一章序论部分简单介绍了视频压缩编码的基本方法,基于块匹配混合编码框架的构成以及主要视频编码标准的特点和本课题的研究目的。 第二章较详细地介绍了H.264/AVC标准的特点和其中包含的新技术,包括其 分层的体系结构以及视频编码层的新特性,最后指出了复杂度是H.264未被广泛采用的主要因素之一,必须进行算法和平台的快速优化。第三章介绍了开发使用的硬件环境,包括DSP芯片的结构特点、外设接口、流水线、以及开发用软件平台的特点.第四章选择JM85,根据选用的硬件特点,详细进行了PC机的C算法级,PC机到DSP的移植和DSP平台上的DSP代码优化,实现了DSP平台上的视频编码。最后一章为全文总结,并对下一步的工作进行了展望 第二章H.264视频编码器的分析与实现15第二章H.264视频编码器的分析与实现如前所述,目前较为经典和广泛使用的图像压缩编码方法是混合编码,即通 过减少统计冗余来达到压缩图像数据量的目的‘”Ⅱ“。H.264也不例外。它在技术上不但集中了以往标准的优点,而且对关键算法进行了改进,使其在图像质量、 编码效率、压缩率及网络适应性、容错性等方面均较以往的视频压缩标准有较大 改善。与以往标准相比,H.264主要有以下优点I删:●在相同重建图像质量下比H.263+署q]MPEG-4(Part 2)节约50%码率; ●可在很宽的码率范围内提供高质量的视频服务;?对信道时延的适应性较好,既可工作于低时延模式以满足实时业务,如会 议电视等,又可工作于无时延限制的宽松场合,如视频存储等:?具备较强的抗误码能力,包括支持传输环境恶劣的无线网络; ●采用分层模式:视频编码层(VCL,VideoCodingLayer)和专用于网络传输的网络抽象层(NAL,NetworkAbstraction Layer),进一步提高网络 适应能力: 2.1H.264的基本框架如图2-1所示,H.264按功能将视频编码系统分为视频编码层(VCL)和网络抽象层(NAL)两个层次‘“。VCL完成对视频序列的高效压缩;NAL规范视频数据的格式,主要提供头部信。。。合各种媒体的传输和存储。NAL作为H.264标准的一部分正式定义了视频编/解码器和外部网络之间基于包的接口,以便将 VCL层视频流进行协议封装后通过NAL集成到传输层。I甲卜/孑瓢二二8l I一本氟蜃I I一*彝屠?甲”酱艋I~l存取屉■舢檀口上存取囊一al图2-1 H.264的分层结构图NAL层把数据封装成为若干网络抽象单元(NALU,NALunit),这些网络抽 16H.264编码器的DSP实现与优化象单元可以在现有的大部分网络中以包的形式传送。封装于网络抽象单元的中的 数据称为原始字节序列载荷(RBSP,RawBytes SequencePayloads).根据RBSP的不同,网络抽象单元中可以分为不同的类型。H.264中的RBSP主要分为两种: 一种为视频编码数据,一种为控制数据。视频编码数据可以以slice(每个slice 由若干宏块组成)为单位进行组织,也可以对slice进行数据分割,即将每个slice 中编码后的数据按类型分为三种,同类型的数据组织到一起,形成三个数据划分(DataPartition),视频编码数据以数据划分为单位进行组织,其中控制数据是指视频序列参数、图像参数等信息。对于解码端,可以认为这些网络抽象单元或者 正确无误,或者在网络中丢失,或者存在位错误。一般网络抽象单元头信息中会 设有相应标志来指示是否发生位错误,解码器能够识别发生位错误的网络抽象单 元并决定是对其进行解码还是丢弃。 VCL层主要研究基于混合编码中涉及到的常规的运动补偿,变换编码、熵编 码等编码技术,来提高视频信号的编码效率。使用slice技术,将一个待编码图像 分割成许多宏块来处理。―般VCL的主要任务如下: 1、通过分块技术将对整帧的处理降到对块的处理,来降低视频处理时问; 2、通过变换、量化和熵编码方式对原始块进行编码,以达到降低视频帧在空 间上存在的冗余度的目的。 3、采用运动估计和运动补偿技术只对残差数据进行编码,以降低时间冗余。 H.264的vCL层压缩算法是在H.263和H.263+的基础上发展而来的,也采用 与H.263和MPEG-4类似的基于块的混合编码方法,采用帧内(Intra)和帧间(Inter) 两种编码模式。编码都以宏块为单位进行,对于I帧图像采用帧内模式编码,对 于P帧和B帧图像则采用帧间模式编码,通过复杂的帧间预测来减少运动图像的 时间冗余,通过对预测残差进行DCT变换来减少空间冗余。Intra编码的基本流程为:选择宏块的帧内预测模式――帧内编码一对残差数据进行变换和量化一 一对量化后的系数进行变长编码和算术编码一生成重构块(用于后继块编码时图2-2 tL264编码器框图 第二章H.264视频编码器的分析与实现17的参考).Inter编码流程为:多模式运动估计――根据率失真优化算法选择编码 模式――运动补偿产生残差数据――对残差数据进行变换、量化和熵编码。H.264 编码器框图如图2-2所示(编码器中也包含解码器部分)【.7l 编码时,首先把当前帧,^划分成宏块。宏块有帧内和帧间两种模式,帧内模 式使用当前帧内已编码的宏块进行预测;帧间模式使用以往一个或多个帧作为参 考进行运动预测。然后,对预测值和原始值的差值D进行整型变换、量化、重新 排序和vie编码,最后将运动向量MV和每个宏块的头信息进行熵编码,产生 压缩数据流进行传输。对量化系数x进行逆量化、反变换后,与预测系数相加,得到未经滤波的肛F帧,对弘F帧进行滤波,得到当前重构帧《.解码过程对应于编码器的各部分进行逆向操作,即可输出重构图像数据。具 体过程为:对每个块进行再量化,逆转换产生差值D’,因为是不可逆量化,所以 D’与D不同;将运动补偿预测P加到D’上产生重构块,各重构块存储起来以便产生重构帧《。一个完整的帧被解码后生成的《就可输出显示了,也可保存起来 用作参考帧以生成下一帧《.,。2.2H.264的输入图像格式类型H.264支持的视频源格式包括YLrV4:2:0、4:2:2和4:4:4,同时支持逐行扫描 和隔行扫描的视频序列;对于隔行扫描的视频帧,H.264支持将奇偶场进行独立 编码,也支持将奇偶场一起编码的方式。 目前,H.264主要针对采用YUV4:2:0采样的视频序列进行压缩编码。其中视 频序列的一帧可以由连续的数据构成,也可以由两个交织场(奇场和偶场)来构 成。为了统一,无论编码数据的组织方式是连续的还是由交织的两场构成,都统XX × XX o ×× ×’cXXo X × o×OX ר?X 0 ×× a × × a X× × × XX ×X× × X× o ×●●●×o ××。亮度分量ot色度分量图2-3 4:2:0采样亮度和色度分量的排列情况 H.264编码器的DSP实现与优化~称为一帧图像(Picture)。图2.3说明了采用YUV&2:0采样方式时亮度和色度 分量的关系。2.3H.264视频编码层的新技术为了提高编码效率、压缩比和图像质量,H.264在继承了许多优秀的编码技 术的同时又采用了很多全新的编码技术,这些技术包括:先进的帧内预测,更多 的块划分种类,多预测参考帧,多模式运动估计及1/4、1/8象素精度的运动估计, 残差图像的整数变换编码、环路滤波和先进的熵编码技术等。 根据对于以上技术的使用情况的不同,H.264还将编码划分为4个档次(Profile),以便于不同应用场合选择不同的编码档次。各个编码档次及所采用的技术如下; ?基本档次(Baseline Profile):支持l’P帧、CAVLC编码、slice分组、冗 余帧、slice随机排序(ASO,Arbitrary(FMO,Flexible Macroblock Slice Ordering)及宏块灵活排序Ordering);主要应用于低时延的实时应用场合。 ●主档次(Main Profile):支持l、P、B帧、CAVLC、CABAC编码;主要 针对对时延要求不高,但压缩率和质量要求较高的场合. ●扩展档次(Extended Profile);具有基本档次Baseline Profile的全部技术,另加对B、S鹏P帧的支持;主要针对各种网络视频流传输方面的应用。?高档次(High Profile):新增档次,具有主档次(Main Profile)的所有特征,但支持高于8bits/样值位深,还增加了8×8整型变换、基于感知的量 化缩放矩阵以及视频中指定区域的无损压缩等功能,主要应用于高保真视频。2.3.1帧内编码帧内编码的思想是根据同一帧内的相邻宏块间具有空间相关性,特别是当相 邻象素位于同一视频对象中(如背景区域)时,其相关性极强的特点,采用对点 的预测编码算法去除这种空间相关性,从而降低I帧的编码流长度。为了进一步 提高帧内编码的效率,H.264利用相邻宏块的空间相关性来进行帧内预测编码。 对一个给定的宏块。利用其周围的相邻宏块对当前宏块进行预测。 H.264的帧内预测编码中,对亮度块做帧内编码时可以按16X16(Intral6X 16)和4X4(Intra4X4)两种方式进行块的划分。对于图像中变化缓慢的部分, 采用16X 16块预测;对于需要进行细化的图像部分,则采用4X4块预测。其中 在Intral6X 16方式下有4种预测模式,Intra4X4方式下有9种预测模式;各种 第二章H.264视频编码器的分析与实现19预测模式如图2-4,图2.6所示。同时,对于8X8色度块,使用Intral6X16对应 的4种预测模式。在进行预测前,要对与当前块相邻的左、上方重构块进行分类, 然后根据不同的分类,采用率失真优化算法,遍历其可用的各种预测模式来选择 最终的块划分方式及相应的预测模式算法。0(vettical)图“16x16亮度块的预测模式^BCDEFOHO●J KLF订] |I¨-lI竺12|.f?hI1lMHO P√. 彦j 砀’ ‘p图2-6帧内预测模式方向图2-5用于帧内预测的象素在做帧内编码时,H.264更充分地利用了邻近的重构块的信息,这样就能更 大程度地减少空间冗余,增强压缩比。同时使用的4X4的九种预测模式,很好地 保留了图像细节部分信息,提高编码图像的质量。当然,在计算上也复杂了很多, 因为宏块的编码分析要占用大量的时间,而且无论是Intra还是Inter编码,在对 宏块的编码模式选择进行分析时都要Intra分析,所以在优化H.264编码算法时, 对Intra模式选择的优化具有非常重要的意义,可以达到整体上提高编码速度的目的。2.3.2帧间编码与以往的视频编码标准类似,H.264也使用块匹配的帧间预测以消除视频序 列的时域冗余。在其它视频编码标准中只定义了两种块的大小,以象素为单位, 分别是16X16和8×8的正方形块(8×8的块是在H.263和MPEG-4中定义的)。 但由于视频图像的复杂性,在较大的块中可能包含多个具有不同运动状态和不同 H.264编码器的DSP实现与优化形状的对象。特别是在运动剧烈的局部区域中,用1个16X16或4个8×8运动 矢量并不能准确地描述一个宏块全部的运动细节。 大量实验表明,对于图像中变换缓慢的部分采用较大的块并不会降低估计精 度;对于变化较剧烈的运动物体,采用较小的块可以提高运动估计的精度。为此, I"I.264帧问预测支持7种不同尺寸和形状的宏块及子宏块分割,分别为:16X16、 16×8、8X16、8×8、8×4、4X8、4X4,如图2.7所示,通过率失真优化算法(RDO,Rate DistortionOptimization)来选择不同的块尺寸.16x8 8x1616x168x8口日田田8x88x44x84x4口日田田图2-7宏块和子宏块分割H.264的帧间编码仍然是基于运动估计和补偿,以消除时域相关性,这是压 缩效率的重要来源。其主要特点如下: ●H.264中基于运动补偿的块(宏块、宏块分区、宏块子分区)可动态选择 块的形状及大小,编码的灵活性好。 ●支持亚象素运动矢量:通过在参考帧象素间内插预测参考值可获得1/4、 1/8象素精度的运动矢量。这样可以显著提高预测精度,提高压缩效率。 ?帧间预测可以基于单帧或多帧模式,这不仅使预测的精度得以提高,压缩 口 口口口围I-l圆 固圈囤口 口口 口效率上升,而且 也增强了抗误码 干扰的能力。 第二章H.264视频编码器的分析与实现量进行编码所需要的码率两方面的因素。 H.264支持亮度分量的1/4象素精度和色度分量的1/8象素精度的运动估计, 利用6抽头滤波器(1,-5,20,20,.5。1)产生1,2象素,再线性插值产生1/4 象素;4抽头滤波器产生1/8象素。各精度象素位置如图2-8所示,图2-8中大写 字母表示整数象素位置,小写字母表示分数象素位置。 帧间编码的两大主要模块就是匹配块的搜索和运动补偿两部分。搜索匹配块 时,检查的点越多,搜索范围越大,则匹配精度越高;运动补偿时,精度越高, 所计算的运动矢量就越接近实际值;进而计算得到的残差数据就越小,压缩比和 图像质量也会越高。同时这样也使得运算量增大,计算过程更加复杂,占有更多 的处理时间。据统计,帧间编码的运动估计部分占用整个编码算法的80%以上, 所以,对运动估计中的块匹配和运动补偿,特别是需要搜索很大数量的匹配点的 块匹配算法的优化将对整个H.264编码算法速度的提升起到关键性的作用。2.33整数变换和量化H.264中采用了基于4X4块的整数DCT变换,并根据待变换残差块的不同 类型采用了4X4哈达玛变换和2X2哈达玛变换,如图2-9所示为宏块中的变换 块及其传送顺序。图2-9中,编号为.1的块是在采用Intral6X16模式编码时0-15 号4X4子块经整数DCT变换后的DC系数再经4X4的哈达玛变换的结果;块壳度妇图2-9宏块中的变换块及其传送顺序16,17是色度块的DC系数进行2X2哈达玛变换的结果;其余的24个块则进行 4X4整数DCT变换。 与以往标准中所采用的基于浮点运算的8×8DCT变换相比,H.264中的整数 DCT变换具有以下优点: ●所有运算都是整数运算,不存在舍入误差,故避免了编码和解码端做正变 H.264编码器的DSP实现与优化换及相应的反变换时出现的“失配”的问题。整数运算较浮点数运算要快 很多,而且还可以减轻由于使用较大的8×8块做变换,因降低了相邻块 之间的相关性,而产生的高压缩比时出现的块效应。●变换中通过近似和尺度变换,使得正、反变换的运算中仅仅包含了移位和 加(减)法运算。●将用于消除尺度变换影响而进行的乘法运算整合到了量化和反量化运算 过程中,减少了整体的运算量。整个变换过程可以使用16位运算,这对 于采用快速算法是十分有利的。 当然,与浮点运算相比,整数DCT变换会引起一些额外的误差,但因为DCT 变换后的量化也存在量化误差,与之相比,整数Dcr变换引起的量化误差影响并 不大。另外,其无乘(除)法,只涉及到移位,很大程度上消除了除法运算时经 常会产生的取整误差,进一步提高了编码效率和质量。正是这些特点,使得H.264 非常便于定点DSP的实现和优化 H.264中可选52种不同的量化步长,这与H.263中有31个量化步长很相似, 但是在H.264中,步长是以12.5%的复合率递进的,而不是一个固定常数。在编 码端,这个过程包括前向变换、zig-zag扫描、量化熵编码。2.3.4熵编码H.264中,熵编码是针对控制数据(一个视频序列和一帧图像的头信息等) 以及前面运算得到的结果数据(预测得到的残差值作正交变换和量化后的结果数 据,运动矢量等).由于这些数据理论上是不允许有失真的,尤其是控制数据,否 则,解码端将无法正确恢复数据;所以,H.264采用无失真的熵编码方法对这类 数据进行压缩。 H.264中的熵编码有两种类型:一种是采用基于指数型Golomb码的统一变字 长编码(UVLC,UniversalVariable LengthCoding)来对除了交换系数之外的所有语法流元素进行编码。扫描变换系数得到的数据采用更灵活的基于上下文的自适 应变长编码(cAVLC),这也是H.264中默认的熵编码方式。H.264提供的另一种 编码就是一种基于上下文的自适应二进制算术编码(CABAC),这种熵编码比默 认的CAVLC方式复杂度大得多,但压缩效率要优于C越lrIC,因而作为H.264的MainProfile中的一个可选项。 H.264的熵编码元素中,对图像序列、帧、slice级的语法元素采用定长或变长的二进制编码,即利用UVLC码表提供的Exp.Oolomb编码,不管符号表述什 么类型的数据,都使用统一变字长编码表。其优点是简单,缺点是单一的码表是 从概率统计分布模型得出的,没有考虑编码符号间的相关性,在中高码率时效果 第二章H.264视频编码器的分析与实现不是很好;而在slice级以下层中(如宏块级MB)的语法元素则采用变长编码 CAVLC或CABAC。其中,CAVLC充分利用了4×4块量化系数的以下一些特征:●通过预测、转换和量化,系数块通常都是稀疏的(含大量的0),aWLC利用游程码对长0串进行压缩; ●通过“之”字型扫描的高端的非O系数通常是一个+1或.1的序列,CAVLC 将高频系数+1或.1的数量通过压缩作为信号发出; ●相邻块之间的非O系数的数量是相关联的,系数的数量是通过查找表进行 编码,对查找表的选择依赖于相邻块中非0系数的数量; ●非O系数个数的数量级在重排序数组的开始(接近直流系数)的地方比较 高,在高频部分比较低;CAVLC充分利用这一点,采用依靠最近编码的 数量级自适应选择量级参数查找表的方法。 通过这种方法与传统的变长编码(vI_C)的结合,将能更为充分利用信源的 各种相关性和人的视觉特性更好地压缩数据,降低所需地传码率。23.5去块效应滤波由于使用基于块的编码方法,重建块的边界象素因为可用的己知信息相对较 少,会比内部象素的精度低,进而会产生块效应。为此H.264定义了一种自适应 的环路滤波方法来去除块效应。去块效应滤波可平滑块边界,尤其在高压缩率情 况下可很好地改进主观质量;而且使用经滤波后的宏块进行运动补偿可使残差信 号减少,有利于提高压缩效率。H.264中环路滤波操作编码端是在对每个宏块完 成反变换后,对其进行重构和存储以用于预测其它宏块前进行的,根据宏块中每 个块的位置和量化参数不同,对每条块边界设置不同的滤波强度,自适应地调整 滤波效果;解码端是在重构和显示宏块之前进行的. 由于H.264中变换计算的单位是4X4块,因此在宏块中也以4X4块为单位一田田蠢直边抖木V边并一 艘 墨曲a0)-平垃摊ql q2啦图2-10宏块边界示意图图2-11 4×4块的水平和垂直边界元素进行水平和垂直边界滤波。如图2.10和图2.11所示,滤波操作计算顺序为:对16X16亮度宏块的4个垂直和4个水平边界相继进行滤波操作――对8X 8色度 H.264编码器的DSP实现与优化宏块的2个垂直和2个水平边界相继进行滤波操作.环路滤波的基本思想是:如果测出块边缘附近的采样点问的差值的绝对值较大,则可能会产生方块效应;然而当差值很大且这个差值不可能是由于编码中的量化噪声产生的,那么这个边缘则更有可能是反映了源图像真实的情况,所以这 种情况下不应该进行滤波操作。 通过滤波操作使块效应减小的同时轮廓清晰度基本上不改变,因此图像的主 观质量将大为改善。同时,滤波可使比特率降低大约5.10%左右,当然也加大了编码的运算复杂度.2.4本章小节H.264主要采用了以下新技术;1、采用多种帧内预测模式,更加合理地利用了I帧的空间冗余,从而大大降低了l帧的编码码流长度。 2、自适应块大小编码模式(AdaptiveBlock SizeCoding):H.264允许使用16×16、16×8、8×16、8X8、8×4、4X8、4×4等子块预测模式和编码模式,采 用更小的块和白适应编码的方式,使得预测残差的数据量减少,进一步降低了码 率。 3、高精度亚象素运动估计:H.264中明确提出了采用亚象素运动估计的方法, 并制定1/4和1/8象素可选的运动估计方法,提高了预测精度,同时降低了残差 的编码码率.4、多参考帧:传统的视频压缩编码采用一个(P帧)或两个(B帧)解码帧 作为当前帧预测的参考帧。在H.264中允许最多5个参考帧,通过在更多的参考帧里面进行运动估计和补偿,找到残差更小的预测块,降低编码码率.5、整型变换编码:H.264采用4X4整数DCT变换,采用定点运算代替以往 DCT变换中的浮点运算。采用这种变换,不仅可以降低编码时间,而且为该算法在多媒体处理平台上的实现带来了方便.在这一点上,H.264视频编码标准更适 合作为多媒体终端的编解码标准。 6、两种可选熵编码CAVLC和CABAC,提高压缩比。7、去块效应滤波,提高图像质量。以上新技术及在图像质量和压缩比上的提高都是以更复杂的算法为代价的, 所以改进算法,提高压缩效率是非常必要的。 第三章硬件开发环境第三章硬件开发环境3.1引言美国模拟器件公司(ADI)是全世界领先的高性能信号处理集成电路制造商,是全球主要的可编程DSP芯片供应商之一。在通用DSP市场上,ADI占有约40% 的市场份额。Blackfin DSPt40-421是16位产品的一个大系列,是ADI与Intcl联合 开发的体现高性能体系结构的首款第四代DSP产品。这一新产品是专为通信和互 联网应用而设计的通用DSP芯片,能处理广泛用于互联网的大量图像、声音、文 本和数据流,适用于电信和各种互联网设备,例如可视电话、游戏设备、网络终 端、网络电视和智能手持设备。 Blackfin系列DSP目前公布的有BF535、BF531、BF532、BF533和BF561。 其中BF535接口丰富,性能优良,而BF561增加了视频处理接口,性价比很高。BlackfinDSP的主要优点如下:1、微信号结构:BlackfinDSP体系结构是在ADI和hItel公司联合开发的“微信号结构”(MSA)的基础上实现的。这种统一的编程模式由于采用了一个综合的信号处理和控制指令集,而消除了传统的多个不同的处理器之间相联系的复杂性,因为传统的多处理器系统的信号处理和控制系统都在分立的处理器结构上工作。 2、动态电源管理:动态电源管理可以通过改变电压和工作频率,提供比其它 DSP更少的功耗。Blackfin DSP体系结构允许电压和频率独立调整,使每一个单 项任务所消耗的能量最小.它的推出使ADI的DSP性能提高了4倍以上,功耗降低了将近1/3。同时ADI为了使这个体系结构独有的动态电源管理特性发挥最 大效能,还推出了一个能够控制DSP电压和频率的芯片组,使得基于Blackfm DSP 的设计功耗减少了60%以上。 3、高度并行的计算单元:该体系结构内的计算单元使在相同周期内能执行的 算术运算的次数最大化。在每一个周期内,每个MAC能在4个独立的操作数上 执行16位乘16位的乘法运算。40位ALU能累加2个40位的数字或4个16位的数字。这种体系结构可以处理8位、16位和32位的数据字运算。 4、高性能地址产生器:2个数据地址产生器(DAG)用于产生支持高级DSP 滤波运算的地址的复合装入或存储单元。对于DSP寻址,它支持位倒序寻址和循环缓冲:对于RISCMCU载入和存储,支持自动增量、自动减量和基地址+立即 偏移量寻址方式.它包括6个32位地址指针寄存器(P0~P5)读取操作数和其它4组32位寄存器:变址寄存器(10~13),修正寄存器(M0~M3),基址寄存 H.264编码器的DSP实现与优化器(B0~B3)和长度寄存器(L0~L3)。该DAG还包括2个用于嵌套零开销循 环的循环计数器以及支持传输过程中饱和和限幅的硬件。5、极佳的代码密度:RISC MCU编码一般都用时较长,因为它是线性写入的。DSP编码一般用时较短,并且包含较多的循环周期。Blackfin DSP体系结构支持 多种长度指令。该内核能将16位控制指令与32位DSP指令一起混合并链进64 位组,使内存分组最大。当缓冲和读取内存时,内核自动完全填充总线长度分组, 因为它没有排列限制。这两个特点使得内核处理器具有优秀的代码密度处理能力. 该内核体系结构很容易为获得最佳软件代码密度提供多指令长度、指令混合及内 存排列。基于代码中使用的指令,还能自动混合16、32和64位指令。而无须任 何限制、方式切换或代码隔离。 6、视频指令;除了支持8位数据――RGB象素处理算法公用的字长之外, 该体系结构还包括视频指令。例如,用一条IEEEll80舍入运算支持离散余弦变 换(DCT):“SUMABSOLUTEDIFFERENCES”指令支持视频压缩中使用的运动 估计算法.对于霍夫曼(Huffman)编码,该指令集包括一个“FIELDDEPOSIT/EXTRACT”命令。7、分层结构的内存:分层结构的内存缩短了内核对内存的访问时间,以获得最大的数据吞吐量、较少的延迟和缩短的处理空载时间。此外,内存管理单元 (MMu)能提供内存保护,当内核工作在用户方式和监控方式时,内存保护支持全部OS核心。OS核心在监控方式运行,并且为了实际应用软件在用户方式下运 行,将内存单元和其它系统资源分开,而传统DSP则不具有这种独特而强大的功能。 8、集成更多的外围设备.9、该系列中部分芯片配有专用视频接口,如BF561。3.2ADSP.BF561芯片介绍ADSP.BF561采用双MAC的结构具有正交的类似RISC的微处理器指令集,主频高达600MHZ,有专门的视频处理指令相对应,还有灵活的SRAM和CACHE结构可供自由使用,是一款在多媒体处理与网络传输方面极具特色的芯片。这样 的芯片结构不但易于编程,可以快速地进行信号和多媒体的处理,而且方便扩展USB、PCII/O、UART、SPORT等接口.3.2.1芯片结构芯片的结构见图3-1,其特点如下: ?16位定点DSP内核,可以实现600MHz的连续工作; 第三章硬件开发环境图3-1 ADSP-BF561结构框图灵活的软件控制动态电源管理;4GB统一寻址空间;L1指令寄存器,由16KBytes4路相级联的CACHE和16Kbytes的SRAM组成,CACHE存储器也可以配置成SRAM: L1数据存储器,由4个16K Bytes的Bank组成,u数据存储器的两个 Bank可配置成2路组相联CACHE或一个SRAM,另外两个Bank被配置 成SRAM:●4Kbytes的临时数据SRAM,和L1存储器有相同的运行速度,但只能作 为数据SRAM,不能配置为CACHE或通过DMA访问; 提供128Kbytes高速SRAM的L2SRAM存储器阵列,以内核速度的一半 进行访问,比访问U存储器Bank有稍多的延迟; 支持片外同步或异步存储器(包括PCI33 SDRAM); 灵活的引导方式(内部或外部存储资源); 内存管理单元提供内存保护; 事件处理;2个WatchDog定时器;●● ● ● ● ● ● ● ● ● ●12个通用32-b“定时/计数器,支持PWM;SPI兼容端口;2个双通道全双工同步串行端口,支持8个立体声f2s通道; 2个16通道DMA控制器和1个内部存储器DMA控制器; 支持IrDA的UART; H.264编码器的DSP实现与优化●1X~63×倍频的片内PIb●2个可直接与并行A/D和D/A转换器、符合ITU.601/656标准的视频编码 和解码器以及其它通用外设连接的并行接口(PPI):●0.8-1.2V内核电压,兼容3.3V及2.5V I/O; 3.2.2DSP内核结构Blackfin内核结构如下图所示,包括2个16位MAC,2个40位ALU,4个 8位视频ALu,以及1个40位移位器,RISC式寄存器和指令模型。图3-2ADSP-BF561内核结构 Blackfin内核是一个改进的哈佛结构,它的内核结构兼有DSP和CPU的特点。硬件支持运算结果的进位和去尾,支持对8/16/32位整形单独进行操作,也可以对16/32位浮点形数据类型进行操作。SIMD操作支持8/16位数据类型操作。3.2.3数据存储区结构Blackfin的数据存储区很有特点,兼有DSP和CPU的优点。ADSP.BF561把存储器视为一个统一的4GB的地址空间,使用32位地址.所有的资源,包括内 部存储器、外部存储器和FO控制存储器,都占据公共地址空间的各自独立的部 分。此地址空间的各部分存储器按分级结构排列,以提供高的性价比.一些非常 快速、低延迟的存储器(如CACHE或SRAM)的位置非常接近处理器,而更大 第三章硬件开发环境的低成本、低性能的存储器远离处理器。内部,外部存储器映射如图3-3所示。■RD∞∞一■Ⅻ∞∞_一魄l岫睢暖潮睢 Lt任目圈刚ND碍■嗍l∞毛岫睡暖帕畦9孽暇帆囊嘲溘甜EIS■W●∞一一U¨∞■∞WC■,tn韵HH柏Ut日嘲口Hg■■嗍 H∞∞UD田^融暇B碍W‘,口目■N■扫O田∞一一娜∞∞-一啊虫哪LImWBgW惴R日目^nmm― u咀碍a吣哥―■口at㈣ LI“m酬^孽蛳●c嘲*H蛐U篮“讥}啪嗣删÷W RiBmU●¥蝌蓐×H辨■£:材眚【'朝Ha目嚏D-㈣∞∞?―N霸口'∞―PaI确4000一a㈣㈣-^●’q㈣..-Od再OUO■■目目I-1●E啊C●Ng■■-∞Rj日m R|HⅧUD目^■H饵翔■啪EC瞄4u删拍日州B踊脚tt峋._amⅢ._m∞∞∞-e1040㈣ -ofR口哪、U0目^叫H(矗辅■花雌I●湘m■睁∞∞口口一●ummB”^*糊稍12∞¨ftm拜Ⅸ响Rd■日×∞m―X啪∞aap,^H}CH■时日呱3嘏忡HN】Ⅳ釉,一2^凇¨^嘣自0K●>目日,M■娴■● ⅨH忡.J目他"■口抖nV氍口 %|■∞ ∞Ⅷm“3轼明∞时K2gMlm¨‘1图3-3ADSP.BF561内部/岁}部存储器映射外部存储系统通过外部总线接口单元(EBIU)进行访问,可以由SDRAM、 FLASH和SRAM进行扩展,可以访问多达768Mbytes的物理存储器。 内部存储区域根据不同的应用分级,Ll SRAM和SCRATCH SRAM离内核较近,运行速度无延迟,而L2 SRAM离内核较远,所以运行时有延迟。片外同步或异步SDRAM,由于通过总线接口访问,则延迟更大。 ADSP.BF561有4块片内存储器,提供到内核的高带宽的访问。L1SRAM分为16KB指令Memory和16KB数据Memory。L1指令Memory有64位数据宽度的总线,可以得到不同长度指令的结合。L1指令Memory可以 作为SRAM又可以作为CACHE。当被配置为SRAM时,指令SRAM分成4个 H.264编码器的DSP实现与优化片,每一片只有单通道。而整个指令SRAM是双通道的,核与系统DMA都可以访问,所以不能同时访问同一个片,一旦同时出现,系统DMA优于内核的取指 令操作。u指令Memory还可以设置成指令CACHE(高速缓冲通道),当程序较大时,需要将程序代码放在更大的空间中,如L2 SRAM,这时就需要设置成指令CACHE,以缩短流水线较长的取指令延迟。u指令Memory可分为四路指令。蛇HE,每一路有128行,每行32字节。当设置指令CAC既时,需要把每一路每一行CACHE都设置成无效,然后才打开CACHE允许控制。但当设置为CACHE后,就不允许使用DMA。如果某段程序很常用,可以把这段程序锁定在 C幻:HE中,以减少时间开销。 L1数据Memory由4个16KBytes的Bank组成,它的两个Bank可配置成2路组相联CACHE或一个SRAM,另外两个Bank被配置成SRAM.当被配置成 SRAM时,存储器每个16K Bank被分成4个4K的sub-bank,同样有双通道供 DMA和内核地址产生器寻址使用。和指令Memory相同,L1数据Memory用作 数据CACHE时,对于大量的数据情况(如视频数据),可以大大减少对外部SDRAM读写带来的延时。当设定为CACHE时,DMA将不能访问数据CACHE。L2Memory共128KB,它既可以作为程序SRAM又可以作为数据SRAM。内核与外部FO、DMA/PCI都可以直接访问它。在视频编码器程序中,由于程序的代码量和数据量都较大,L2可以作为程序与数据的存储区,又作为堆栈的使用 区。如果程序在L2中,一般需要设置指令CACHE提高速度,因为如果不设置 CACHE,每次取指令只能64位长度,等执行完以后还需要等待7个周期才能执 行下一条语句。但如果设置CACHE,一条执行完后,流水线操作下一条指令立 即执行,这样基本可以减少不必要的延迟.除此之外,ADSP.BF561还提供一个4KB的临时数据SRAM,它和LIMemory 有相同的运行速度,但是只能作为数据SRAM(不能配置为CACHE,也不能通 过DMA访问)。 外部SDRAM有四块空间,每一块容量可以是16M到128M字节,通过外部总线接口单元(EBIU)进行访问。还有四个“M空间支持异步Memory,另外有 128M空间作Pa数据空间。在视频编码器的输入部分,由于视频数据量太大, 所以需要放在外部SDRAM中,这时可以使用异步Memory将数据通过DMA方 式传输到SDRAM中。3.2.4DSP主要外设接口1、外部总线接口单元(EBIU)外部总线接口单元(EBIU)提供与外部存储器的无缝接口,包括一条16bit 第三章硬件开发环境宽度数据总线,一条地址总线,一条控制总线。16bit和8bit访问均支持。2、DMAADSP.BF561使用直接存储器访问(DMA)进行存储器空间内部或者存储器 空间与外设之间的数据传输。DMA控制器允许处理器或外部设备指定数据传送 操作,然后返回到正常操作中.DMA控制器传送数据的过程独立于处理器的活动。DMA控制器传送数据的方式有下面几种: ●存储器一一存储器(MemDMA); ●存储器一一串行外设接口(SPI); ●存储器一一串行接口; ●存储器一一u越盯口; ●存储器一一USB口 DMA传送可以是基于描述符的,也可以是基于自动缓冲的。基于描述符的 DMA传送在发起DMA传送序列时,需要一组存储在存储器中的参数,这类传输 允许将多个DMA序列链接在一起。在基于描述符的DMA传送中,一个DMA 通道可以被编程建立,并且在当前序列完成之后自动启动另外一个DMA传送; 基于自动缓冲的DMA传送允许处理器直接编程DMA控制寄存器,以发起一个 DMA传送。传送完成时,控制寄存器将它们的原始设置值自动更新。3、TI~咂RADSP.BF561具有12个通用可编程定时器、1个核心定时器和1个看门狗定时器。4、UARTADSP.BF561提供1个全双工的通用异步接收/发送(uART)端口,它与PC 标准的UART完全兼容。UART在串行和并行格式之间转换数据。串行通信遵循 支持多种字长、停止位和奇偶校验的异步协议,它也包括调试解调器控制和中断 处理的硬件。3.2.5指令和流水线结构由于指令和流水线结构与程序的执行和代码的优化有最直接的关系,所以下 面具体介绍其结构和执行过程。 Blackf'm指令长度有三种,16位和32位单指令,64位并行指令。64位并行 指令由一个32位指令和2个16位指令组成。并行指令允许对两个单元同时读或 者一个读一个写,但是不支持两个存储单元同时写。 例:AI+-ROar-/‘Rid/,A0+-R0.L‘m上IIR2-【10++】0【11++】tR3; H.264编码器的DSP实现与优化在这个例子中,有两个乘法/力口法器操作,一个读一个写操作,还有地址指针 自加操作。 Blackfin有八级流水线结构,如图3-4所示:姗Fe位hIl码醴 Felch2 ln瞄 D屯codch敏Addressc蛆c Exl EklD∞O赴 ^∞m蠲talc自dE妇WBl点,Insl&tch2岛吐E妇W雷图3-4沉水线结构第一步从SRAM中开始取指令,第二步取出指令后完成指令的排列,第三步 开始指令的解码和读取寄存器地址,第四步为数据地址的计算或转移地址的获得, 第五步从数据寄存器里读取数据,第六步完成读取数据并进行双乘法/累加器计算 操作,第七步执行单周期指令,最后一步将数据和指针传递给相应寄存器。 由于采用多级流水线结构,而条件分支转移会破坏流水线结构,当发现要转 移时漉水线已经多取了指令,这时就必须全部放弃原来所取的指令,又要重新取 指令操作,这样就消耗了较多的时间。所以Blackfin提供了静态分支检测来减少时间的延迟。同时Blackfin提供了较多的向量操作指令和多媒体操作指令,这些指令对地 址的访问都有限定。所以在编程中应尽量采用并行指令和零开销循环来完成算法,进行流水线操作,同时注意地址的变化以避免EXCEPTION。3.3集成调试环境VisualDSP++4。5ADSP-BF561支持一整套开发软件和硬件开发工具,包括ADI公司的仿真器 和Blackfro DSP开发环境下的vjsualDSP++。VisualDSP++4.5j集成了两大部分,集成的开发环境IDE和调试器DEBUG, 支持ASM、C、C++语言,具有强大的编辑器功能、灵活的工程管理能力、编译 功能以及有效的调试控制和可视效果,支持多处理器同时调试能力。 ADI公司另外还增加了各种库函数,使用起来更加方便。VisualDSP++4.5系统调试环境可以采用软件模拟(simulator),也可以使用硬件通过JTAG在EZKIT评估板上进行试验,还可以通过USB口进行仿真调试.VisualDSP++调试器有很多重要的特性:灵活的绘图功能使数据更加清楚,这种用图形表示的用户数据使编程者可以快速地确定算法的性能。算法越复杂, 这种性能在设计者的计划中就越重要。统计学的特性使编程者可以不用中止程序 第三章硬件开发环境就能够得到处理器性能,就像运行了中断一样,这使得开发者不用中断程序的实 时性就可以得到重要的代码执行情况,从而在本质上可以找到软件速度和效率的 瓶颈,集中改进影响程序性能的地方。 除了ADI公司所用的软件和硬件开发工具外,还有第三方提供的支持BlackfmDSP家族的种类繁多的工具。硬件工具包括ADSP.BF561 EZ-Kit评价,开发插件。第三方软件包括DSP库、实时操作系统和方框图设计工具等。 程序编写以及优化调试工作是编码器的核心工作,在后面的章节里将详细进行说明。3.4本章小节本章主要介绍了ADI H.264编码器算法。Blackfin561DSP平台与编码器算法移植和实现有关的一些结构和特点,熟练掌握这些知识有利于在该平台上快速有效地优化和实现 第四章H.264编码器的DSP实现与优化第四章H.264编码器的DSP实现与优化4.1引言就目前现状而言,国际和国内很多同行在使用DSP实现H.264编码算法的课题上做了很多的研究,并且有了一些实际成果。如Moonlight公司,主要对去块滤波器进行了优化,其编码器支持D1格式,在PentiumIV 3.IGI-lzCPU上实现了Baseline Prome的实时编码,但不包括FMO模式,且对帧内预测模式进行了 简化;W&W Communications公司基于DM64x的BC-264(BaselineProfile H.264编解码器),实现了720X480,30帧/秒NTSC制,以及720X576,25帧,秒PAL制的实时编解码;国内杭州海康公司也利用11的DM642 DSP芯片实现了H.264 4CIF的实时编码。由于不能确切知道这些公司所采用的H.264算法提供的各种新 技术的细节,而且也不能详细得知其准确的编码质量和编码效率,所以不能简单 地评价这些基于DSP的H.264编码器的性能,但总的来说这些成果是非常不错的。 对于复杂度和运算量相当高的H.264编码算法而言,在现有DSP平台上实现 H.264实时编码算法的关键在于编码速度的提高,难度在于提高编码速度的同时又要能保持H.264编码器良好的编码性能,不能单纯为了实现实时编码而牺牲太多的图像质量或任意降低编码效率。4.2三大开源编码器评测与选择同以往的视频编码标准相同,H.264仅仅对编码后的码流结构及解码器做了标准化,对编码器各部分的具体实现方法未作规定,这促进了各开发厂商对编码 器的灵活实现。目前业内比较流行的开源编码器有三种:JM,X264及亿64,为了完成DSP实现,首先必须选择合适的算法。JM是H.264的官方测试代码,由德国HHI研究所负责开发,它实现了H.264所有的特性,由于是官方的测试源码,所以学术研究的算法都是在其基础上实现 并和JM比较,但其程序结构冗长,编码复杂度极高;X264是网上自由组织联合 开发的兼容H.264标准码流的编码器,由法国巴黎中心学校的研究所学生发起, 注重实用,在不明显降低编码性能的前提下,努力降低计算复杂度,摒弃了H.264 中一些对编码性能贡献微小的新特性,但它目前没有解码器;T264是由中国视频编码自由组织联合开发的H.264编解码器,和X264的出发点相似,编码器输出 标准的H.264码流,解码器只能解T264编码生成的码流。经实验比较,在JM选用Baseline时,运行时间:JM>X264>'r264t重建图像 H.264编码器的DSP实现与优化主观质量:X264>JM>T264;客观质量(PSNR):JM>X264>T264;1r264首先被 摒弃,为了更好的学习H.264的各种新特性以及便于算法研究,主要选择JM进行DSP实现与优化,选定版本为JM85(90以上的版本适用于高保真视频,与课 题方向不符).4.3JM复杂度分析及优化方向4.3.1参数的配置如前所述,本章中对H.264的复杂度分析是基于JvT提供的未经优化的c参 考代码在PC机上的实现,硬件配置环境如下:CPU:赛扬1.7G:内存:512M;VC6编译,如无特殊说明,下文所有PC运行环境不变。复杂度可分为时间复杂度和空间复杂度。本文中执行复杂度的指标采用了三 个:内存访问频率、峰值存储时间和处理时间。存储器访问频率是指单位时间内 内存传输总次数,峰值存储空间指代码占用的最大内存空间,这两项指标反映了 空间复杂度,处理时间则是时间复杂度的度量指标,编码性能指标采用峰值信噪比(PSNR)和比特率(bit-rate)。为了实现实时应用,处理时间是考虑重点.JM85可根据不同应用场合,对编码器进行配置。参数配置采用配置文件 encoder.dg,配置文件参数见附录A。参数选择包括:参考帧的帧数、哈达玛变 换、块大小模式选择、B帧、CABAC、RDO和运动搜索范围,合理配置以达到 编码效率和计算复杂度之间的平衡是一项挑战。配置条件中具有代表性的是最简单配置和最复杂配置,前者包括所有可选项 关闭、l帧和P帧、单一参考帧、运动向量搜索范围为16.后者包括所有可选项 打开、IPB帧、五个参考帧、运动向量搜索范围为16;试验结合文献后,结果如 表4.1所示: 表4.1JM最复杂与最简单配置比较PSNR增加0.5-0.7比特节省25%_38%峰值存储空间比例7内存访问频率比例40处理时间比例35配置不同将造成较大的复杂度差异,这是由不同可选项累积而来。峰值存储 空间仅仅与参考帧的个数有关:而内存访问频率和处理时间则与较多因素相关, 包括不同的块大小、哈达玛变换、率失真优化、B帧、CABAC、运动向量分辨率、 搜索范围及多参考帧等,为了达到平衡,同时考虑到DSP内存较小的特点及课题应用,选择base

我要回帖

更多关于 灯太亮用纸张盖住可以 的文章

 

随机推荐