重庆卫士 女王驾到:H.264 - 维库电子开发网

来源:百度文库 编辑:九乡新闻网 时间:2024/04/27 10:58:02

2011年3月16日 农历二月十二PDF 电路图 技术文章 IC货源
  • 最新电子元器件资料免费下载
  • 下单即有机会获赠69件工具套装
  • IR首款汽车专用 MOSFET 系列
  • 电子知识 一查百通
  • 查看最近90天中添加的最新产品
  • 全球最大的芯片PDF资料下载基地
  首页 > 电子通列表 > H.264

H.264

H.264的基本概况
  • ·H.261的简介
  • ·H.264-最新的视频解码编译解析
  • ·IP视频压缩协议H.263
  • ·H.264的技术背景
  • ·H.264的算法
  • ·H.264的优势
H.264标准
  • ·H.264标准概述
  • ·H.264标准的主要特点
  • ·H.264标准的关键技术
  • ·H.264的技术亮点
  • ·H264编码技术
  • ·H264层次构成
H.264解码
  • ·H.264解码
  • ·H.264视频解码器在C6416 ...
  • ·基于ADSP-BF533处理器的H...
  • ·H.264解码器中CABAC硬件加...
  • ·基于H.264的Exp-Golomb解码...
  • ·H.264解码器中一种新颖的...
  • ·H.264可扩展视频编解码器(...

H.261的简介

 

    H.261 协议又被称为p64,是第一个视频压缩标准,主要应用于视频会议行业.从压缩技术上来说,与后来的压缩技术相比,它的算法最简单,自然,压缩的效果也比较差.对于研究视频压缩技术的工程师而言,从H.261开始研究,有种事半功倍的感觉,因为后来的压缩算法基本思想都和H.261差不多,只是在细节上更加高效了.

    前面介绍过了,视频压缩的关键就是运动估计、DCT变换、量化和反量化.H.261除了这些,还有一个环路滤波器,用来消除块效应.下面,我们一一介绍.

    运动估计(ME)

    我们经常可以碰到这样的情况,两个不同的产商,他们都支持H.261,设置的码率也一样,可是实际跑起来的时候,两个产商的编码效果差别却很大,这里面,主要的原因就是运动估计算法不同.

    最简单的运动估计算法是所谓的全搜索,可是实际的产品中,几乎没有采用这种算法的,为什么?因为全搜索太慢了,对视频编码的算法选择而言,永远是在编码效率和算法性能上找平衡点.事实上,有很多算法在性能上可能是全搜索的10%左右,但是,编码效率可能只比全搜索稍差,对于实时应用的编码器而言,选择一个适合CPU运算特点的优化算法是关键.这里插一句,如果是非实时应用的话,采用全搜索是个非常好的注意.

    H.261协议里面其实并没有定义如何运动估计,因为,协议一般只定义解码器,它不管你如何编码,只要你最后得到的码流符合它的协议就够了.与运动估计对应的解码过程叫运动补偿(MC),H.261运动补偿主要特点有:1 它的搜索范围是 -16到15;2 只支持整像素搜索;3  每个宏块只有一个运动向量,并不支持到块级运动估计;4 只支持P帧,并不支持双向预测帧(B帧).

    与后来的协议相比较,个人的看法,运动估计的范围-16到15基本上是够用了,再大的话,一方面性能可能做不到,另一方面,实际应用中,运动超过这个范围的宏块还是很少的.与整像素搜索对应的是半像素、四分之一像素等搜索精度,这个算法应该说非常有效,个人感觉H.263比H.261算法好的最关键因素就是这里.运动向量只到宏块一级其实差不多,不过支持4mv的话,有些场合码率可能可以节省5%到15%,这是我以前mpeg-4编码器测试的结论,当然,为了追求这10%左右的效率,性能上运动估计大约要增加30%以上的运算量(看选择的算法).B帧也是很重要的算法,以前的测试结论大约是可以节省15%左右,不过H.261也不支持.

    在H.261的编码帧中,分为I帧和P帧.I帧也被称为关键帧,而P帧则被称为预测帧.I帧里的宏块全部由帧内编码宏块组成,并没有运动估计.实际上I帧的编码算法和jpeg压缩算法很类似,可以说就是使用了jpeg压缩技术.I帧的压缩效果比P帧差很多,同等图像质量的话,I帧的码率可能是P帧的十倍,从这里可以看出来运动估计对于视频压缩的巨大作用.也正是因为I帧压缩效果差,因此,很多编码器算法都有一个叫做关键帧间隔的参数,这个值比较流行设置为100,也就是大概4秒钟出现一次I帧.很多实时编码的算法,经常会过几秒,画面给人的感觉是刷了一下,这就是关键帧在刷新.

H.264-最新的视频解码编译解析 

    JVT(Joint VideoTeam,视频联合工作组)于2001年12月在泰国Pattaya成立.它由ITU-T和ISO两个国际标准化组织的有关视频编码的专家联合组成.

    JVT的工作目标是制定一个新的视频编码标准,以实现视频的高压缩比、高图像质量、良好的网络适应性等目标.目前JVT的工作已被ITU-T接纳,新的视

    频压缩编码标准称为H.264标准,该标准也被ISO接纳,称为AVC(Advanced VideoCoding)标准,是MPEG-4的第10部分.

    H.264标准可分为三档:

    基本档次(其简单版本,应用面广);

    主要档次(采用了多项提高图像质量和增加压缩比的技术措施,可用于SDTV、HDTV和DVD等);

    扩展档次(可用于各种网络的视频流传输).

    H.264

    不仅比H.263和MPEG-4节约了50%的码率,而且对网络传输具有更好的支持功能.它引入了面向IP包的编码机制,有利于网络中的分组传输,支持网络中视频的流媒体传输.H.264具有较强的抗误码特性,可适应丢包率高、干扰严重的无线信道中的视频传输.H.264支持不同网络资源下的分级编码传输,从而获得平稳的图像质量.H.264能适应于不同网络中的视频传输,网络亲和性好.

    一、H.264视频压缩系统

    H.264标准压

    缩系统由视频编码层(VCL)和网络提取层(Network AbstractionLayer,NAL)两部分组成.VCL中包括VCL编码器与VCL解码器,主要功能是视频数据压缩编码和解码,它包括运动补偿、变换编码、熵编码等压缩单元.NAL则用于为VCL提供一个与网络无关的统一接口,它负责对视频数据进行封装打包后使其在网络中传送,它采用统一的数据格式,包括单个字节的包头信息、多个字节的视频数据与组帧、逻辑信道信令、定时信息、序列结束信号等.包头中包含存储标志和类型标志.存储标志用于指示当前数据不属于被参考的帧.类型标志用于指示图像数据的类型.VCL可以传输按当前的网络情况调整的编码参数.

    二、H.264的特点

    H.264和H.261、H.263一样,也是采用DCT变换编码加DPCM的差分编码,即混合编码结构.同时,H.264在混合编码的框架下引入了新的编码方式,提高了编码效率,更贴近实际应用.

    H.264没有繁琐的选项,而是力求简洁的"回归基本",它具有比H.263++更好的压缩性能,又具有适应多种信道的能力.

    H.264的应用目标广泛,可满足各种不同速率、不同场合的视频应用,具有较好的抗误码和抗丢包的处理能力.

    H.264的基本系统无需使用版权,具有开放的性质,能很好地适应IP和无线网络的使用,这对目前因特网传输多媒体信息、移动网中传输宽带信息等都具有重要意义.

    尽管H.264编码基本结构与H.261、H.263是类似的,但它在很多环节做了改进,现列举如下.

    1.多种更好的运动估计

    高精度估计

    在H.263中采用了半像素估计,在H.264中则进一步采用1/4像素甚至1/8像素的运动估计.即真正的运动矢量的位移可能是以1/4甚至1/8像素为基本单位的.显然,运动矢量位移的精度越高,则帧间剩余误差越小,传输码率越低,即压缩比越高.

    在H.264中采用了6阶FIR滤波器的内插获得1/2像素位置的值.当1/2像素值获得后, 1/4像素值可通过线性内插获得,对于4:1:1的视频格式,亮度信号的1/4 像素精度对应于色度部分的1/8像素的运动矢量,因此需要对色度信号进行1/8像素的内插运算.

    理论上,如果将运动补偿的精度增加一倍(例如从整像素精度提高到1/2像素精度),可有0.5bit/Sample的编码增益,但实际验证发现在运动矢量精度超过1/8像素后,系统基本上就没有明显增益了,因此,在H.264中,只采用了1/4像素精度的运动矢量模式,而不是采用1/8像素的精度.

    多宏块划分模式估计

    在H.264的预测模式中,一个宏块(MB)可划分成7种不同模式的尺寸,这种多模式的灵活、细微的宏块划分,更切合图像中的实际运动物体的形状,于是,在每个宏块中可包含有1、2、4、8或16个运动矢量.

    多参数帧估计

    在H.264中,可采用多个参数帧的运动估计,即在编码器的缓存中存有多个刚刚编码好的参数帧,编码器从其中选择一个给出更好的编码效果的作为参数帧,并指出是哪个帧被用于预测,这样就可获得比只用上一个刚编码好的帧作为预测帧的更好的编码效果.

    2.小尺寸4X4的整数变换

    视频压缩编码中以往的常用单位为8?8块.在H.264中却采用小尺寸的4?4块,由于变换块的尺寸变小了,运动物体的划分就更为精确.这种情况下,图像变换过程中的计算量小了,而且在运动物体边缘的衔接误差也大为减少.

    当图像中有较大面积的平滑区域时,为了不产生因小尺寸变换带来的块间灰度差异,H.264可对帧内宏块亮度数据的16个4?4块的DCT系数进行第二次4?4块的变换,对色度数据的4个4?4块的DC系数(每个小块一个,共4个DC系数)进行2?2块的变换.

    H.263不仅使图像变换块尺寸变小,而且这个变换是整数操作,而不是实数运算,即编码器和解码器的变换和反变换的精度相同,没有"反变换误差".

    3.更精确的帧内预测

    在H.264中,每个4X4块中的每个像素都可用17个最接近先前已编码的像素的不同加权和来进行帧内预测.

    4.统一的VLC

    H.264中关于熵编码有两种方法.统一的VLC(即UVLC:Universal VLC).UVLC使用一个相同的码表进行编码,而解码器很容易识别码字的前缀,UVLC在发生比特错误时能快速获得重同步.内容自适应二进制算术编码(CABAC:Context Adaptive Binary Arithmetic Coding).其编码性能比UVLC稍好,但复杂度较高.

    三、性能优势

    H.264与MPEG-4、H.263++编码性能对比采用了以下6个测试速率:32kbit/s、10F/s和QCIF;64kbit/s、15F/s和QCIF;128kbit/s、15F/s和CIF;256kbit/s、15F/s和QCIF;512kbit/s、30F/s和CIF;1024kbit/s、30F/s和CIF.测试结果标明,H.264具有比MPEG和H.263++更优秀的PSNR性能.H.264的 PSNR比MPEG-4平均要高2dB,比H.263++平均要高3dB.

    四、新的快速运动估值算法

    新的快速运动估值算法UMHexagonS(中国专利)是一种运算量相对于H.264中原有的快速全搜索算法可节约90%以上的新算法,全名叫"非对称十字型多层次六边形格点搜索算法"(Unsymmetrical-CrossMuti-HexagonSearch)",这是一种整像素运动估值算法.由于它在高码率大运动图像序列编码时,在保持较好率失真性能的条件下,运算量十分低,已被H.264标准正式采纳ITU和 ISO合作发展的 H.264(MPEG-4 Part 10)有可能被广播、通信和存储媒体(CDDVD)接受成为统一的标准,最有可能成为宽带交互新媒体的标准.我国的信源编码标准尚未制定,密切关注H.264的发展,制定我国的信源编码标准的工作

    正在加紧进行.

    H264标准使运动图像压缩技术上升到了一个更高的阶段,在较低带宽上提供高质量的图像传输是H.264的应用亮点.H.264的推广应用对视频终端、网守、网关、MCU等系统的要求较高,将有力地推动视频会议软、硬件设备在各个方面的不断完善.

    MPEG4视频压缩编码技术详解

    MPEG全称是Moving Pictures Experts

    Group,它是"动态图象专家组"的英文缩写,该专家组成立于1988年,致力于运动图像及其伴音的压缩编码标准化工作,原先他们打算开发MPEG1、MPEG2、MPEG3和MPEG4四个版本,以适用于不同带宽和数字影像质量的要求.目前,MPEG1技术被广泛的应用于VCD,而MPEG2标准则用于广播电视和DVD等.MPEG3最初是为HDTV开发的编码和压缩标准,但由于MPEG2的出色性能表现,MPEG3只能是死于襁褓了.而我们今天要谈论的主角--MPEG4于1999年初正式成为国际标准.它是一个适用于低传输速率应用的方案.与MPEG1和MPEG2相比,MPEG4更加注重多媒体系统的交互性和灵活性.下面就让我们一起进入多彩的MPEG4世界.

    MPEG4的技术特点

    MPEG1、MPEG2技术当初制定时,它们定位的标准均为高层媒体表示与结构,但随着计算机软件及网络技术的快速发展,MPEG1.MPEG2技术的弊端就显示出来了:交互性及灵活性较低,压缩的多媒体文件体积过于庞大,难以实现网络的实时传播.而MPEG4技术的标准是对运动图像中的内容进行编码,其具体的编码对象就是图像中的音频和视频,术语称为"AV对象",而连续的AV对象组合在一起又可以形成AV场景.因此,MPEG4标准就是围绕着AV对象的编码、存储、传输和组合而制定的,高效率地编码、组织、存储、传输AV对象是MPEG4标准的基本内容.

    在视频编码方面,MPEG4支持对自然和合成的视觉对象的编码.(合成的视觉对象包括2D、3D动画和人面部表情动画等).在音频编码上,MPEG4可以在一组编码工具支持下,对语音、音乐等自然声音对象和具有回响、空间方位感的合成声音对象进行音频编码.

    由于MPEG4只处理图像帧与帧之间有差异的元素,而舍弃相同的元素,因此大大减少了合成多媒体文件的体积.应用MPEG4技术的影音文件最显著特点就是压缩率高且成像清晰,一般来说,一小时的影像可以被压缩为350M左右的数据,而一部高清晰度的DVD电影, 可以压缩成两张甚至一张650MCD光碟来存储.对广大的"平民"计算机用户来说, 这就意味着, 您不需要购置DVD-ROM就可以欣赏近似DVD质量的高品质影像.而且采用MPEG4编码技术的影片,对机器硬件配置的要求非常之低,300MHZ 以上CPU,64M的内存和一个 8M显存的显卡就可以流畅的播放.在播放软件方面,它要求也非常宽松,你只需要安装一个 500K左右的 MPEG4编码驱动后,用 WINDOWS 自带的媒体播放器就可以流畅的播放了(下面我们会具体讲到).

    视频编码研究与MPEG标准演进

    人类获取的信息中70%来自于视觉,视频信息在多媒体信息中占有重要地位;同时视频数据冗余度最大,经压缩处理后的视频质量高低是决定多媒体服务质量的关键因素.因此数字视频技术是多媒体应用的核心技术,对视频编码的研究已成为信息技术领域的热门话题.

    视频编码的研究课题主要有数据压缩比、压缩/解压速度及快速实现算法三方面内容.以压缩/解压后数据与压缩前原始数据是否完全一致作为衡量标准,可将数据压缩划分为无失真压缩(即可逆压缩)和有失真压缩(即不可逆压缩)两类.

    传统压缩编码建立在仙农信息论基础之上的,以经典集合论为工具,用概率统计模型来描述信源,其压缩思想基于数据统计,因此只能去除数据冗余,属于低层压缩编码的范畴.伴随着视频编码相关学科及新兴学科的迅速发展,新一代数据压缩技术不断诞生并日益成熟,其编码思想由基于像素和像素块转变为基于内容(content-based).它突破了仙农信息论框架的束缚,充分考虑了人眼视觉特性及信源特性,通过去除内容冗余来实现数据压缩,可分为基于对象(object-based)和基于语义(semantics-based)两种,前者属于中层压缩编码,后者属于高层压缩编码.与此同时,视频编码相关标准的制定也日臻完善.视频编码标准主要由ITU-T和ISO/IEC开发.ITU-T发布的视频标准有

    H.261、 H.262、 H.263、 H.263+、H.263++,ISO/IEC公布的MPEG系列标准有MPEG-1、MPEG-2 、MPEG-4 和MPEG-7,并且计划公布MPEG-21.

    MPEG即Moving Picture ExpertGroup(运动图像专家组),它是专门从事制定多媒体视音频压缩编码标准的国际组织.MPEG系列标准已成为国际上影响最大的多媒体技术标准,其中MPEG-1和MPEG-2是采用以仙农信息论为基础的预测编码、变换编码、熵编码及运动补偿等第一代数据压缩编码技术;MPEG-4(ISO/IEC14496)则是基于第二代压缩编码技术制定的国际标准,它以视听媒体对象为基本单元,采用基于内容的压缩编码,以实现数字视音频、图形合成应用及交互式多媒体的集成.MPEG系列标准对VCD、DVD等视听消费电子及数字电视和高清晰度电视(DTV&&HDTV)、多媒体通信等信息产业的发展产生了巨大而深远的影响.

    MPEG-4视频编码核心思想及关键技术

    核心思想

    在MPEG-4制定之前,MPEG-1、MPEG-2、H.261、H.263都是采用第一代压缩编码技术,着眼于图像信号的统计特性来设计编码器,属于波形编码的范畴.第一代压缩编码方案把视频序列按时间先后分为一系列帧,每一帧图像又分成宏块以进行运动补偿和编码,这种编码方案存在以下缺陷:

    · 将图像固定地分成相同大小的块,在高压缩比的情况下会出现严重的块效应,即马赛克效应;

    · 不能对图像内容进行访问、编辑和回放等*作;

    · 未充分利用人类视觉系统(HVS,Human Visual System)的特性.

    MPEG-4则代表了基于模型/对象的第二代压缩编码技术,它充分利用了人眼视觉特性,抓住了图像信息传输的本质,从轮廓、纹理思路出发,支持基于视觉内容的交互功能,这适应了多媒体信息的应用由播放型转向基于内容的访问、检索及*作的发展趋势.

    AV对象(AVO,Audio VisualObject)是MPEG-4为支持基于内容编码而提出的重要概念.对象是指在一个场景中能够访问和*纵的实体,对象的划分可根据其独特的纹理、运动、形状、模型和高层语义为依据.在MPEG-4中所见的视音频已不再是过去MPEG-1、MPEG-2中图像帧的概念,而是一个个视听场景(AV场景),这些不同的AV场景由不同的AV对象组成.AV对象是听觉、视觉、或者视听内容的表示单元,其基本单位是原始AV对象,它可以是自然的或合成的声音、图像.原始AV对象具有高效编码、高效存储与传输以及可交互*作的特性,它又可进一步组成复合AV对象.因此MPEG-4标准的基本内容就是对AV对象进行高效编码、组织、存储与传输.AV对象的提出,使多媒体通信具有高度交互及高效编码的能力,AV对象编码就是MPEG-4的核心编码技术.

    MPEG-4不仅可提供高压缩率,同时也可实现更好的多媒体内容互动性及全方位的存取性,它采用开放的编码系统,可随时加入新的编码算法模块,同时也可根据不同应用需求现场配置解码器,以支持多种多媒体应用.

    MPEG-4 采用了新一代视频编码技术,它在视频编码发展史上第一次把编码对象从图像帧拓展到具有实际意义的任意形状视频对象,从而实现了从基于像素的传统编码向基于对象和内容的现代编码的转变,因而引领着新一代智能图像编码的发展潮流.

    关键技术

    MPEG-4除采用第一代视频编码的核心技术,如变换编码、运动估计与运动补偿、量化、熵编码外,还提出了一些新的有创见性的关键技术,并在第一代视频编码技术基础上进行了卓有成效的完善和改进.下面重点介绍其中的一些关键技术.

    A. 视频对象提取技术

    MPEG-4实现基于内容交互的首要任务就是把视频/图像分割成不同对象或者把运动对象从背景中分离出来,然后针对不同对象采用相应编码方法,以实现高效压缩.因此视频对象提取即视频对象分割,是MPEG-4视频编码的关键技术,也是新一代视频编码的研究热点和难点.

    视频对象分割涉及对视频内容的分析和理解,这与人工智能、图像理解、模式识别和神经网络等学科有密切联系.目前人工智能的发展还不够完善,计算机还不具有观察、识别、理解图像的能力;同时关于计算机视觉的研究也表明要实现正确的图像分割需要在更高层次上对视频内容进行理解.因此,尽管MPEG-4框架已经制定,但至今仍没有通用的有效方法去根本解决视频对象分割问题,视频对象分割被认为是一个具有挑战性的难题,基于语义的分割则更加困难.

    目前进行视频对象分割的一般步骤是:先对原始视频/图像数据进行简化以利于分割,这可通过低通滤波、中值滤波、形态滤波来完成;然后对视频/图像数据进行特征提取,可以是颜色、纹理、运动、帧差、位移帧差乃至语义等特征;再基于某种均匀性标准来确定分割决策,根据所提取特征将视频数

    据归类;最后是进行相关后处理,以实现滤除噪声及准确提取边界.

    在视频分割中基于数学形态理论的分水岭(watershed)算法被广泛使用,它又称水线算法,其基本过程是连续腐蚀二值图像,由图像简化、标记提取、决策、后处理四个阶段构成.分水岭算法具有运算简单、性能优良,能够较好提取运动对象轮廓、准确得到运动物体边缘的优点.但分割时需梯度信息,对噪声较敏感,且未利用帧间信息,通常会产生图像过度分割.

    B. VOP视频编码技术

    视频对象平面(VOP,Video ObjectPlane)是视频对象(VO)在某一时刻的采样,VOP是MPEG-4视频编码的核心概念.MPEG-4在编码过程中针对不同VO采用不同的编码策略,

    即对前景VO的压缩编码尽可能保留细节和平滑;对背景VO则采用高压缩率的编码策略,甚至不予传输而在解码端由其他背景拼接而成.这种基于对象的视频编码,不仅克服了第一代视频编码中高压缩率编码所产生的方块效应,而且使用户可与场景交互,从而既提高了压缩比,又实现了基于内容的交互,为视频编码提供了广阔的发展空间.

    MPEG-4支持任意形状图像与视频的编解码.对于任意形状视频对象.对于极低比特率实时应用,如可视电话、会议电视,MPEG-4则采用VLBV(Very Low Bit-rate Video,极低比特率视频)核进行编码.

    传统的矩形图在MPEG-4中被看作是VO的一种特例,这正体现了传统编码与基于内容编码在MPEG-4中的统一.VO概念的引入,更加符合人脑对视觉信息的处理方式,并使视频信号的处理方式从数字化进展到智能化,从而提高了视频信号的交互性和灵活性,使得更广泛的视频应用及更多的内容交互成为可能.因此VOP视频编码技术被誉为视频信号处理技术从数字化进入智能化的初步探索.

    C. 视频编码可分级性技术

    随着因特网业务的巨大增长,在速率起伏很大的IP(Internet Protocol)网络及具有不同传输特性的异构网络上进行视频传输的要求和应用越来越多.在这种背景下,视频分级编码的重要性日益突出,其应用非常广泛,且具有很高的理论研究及实际应用价值,因此受到人们的极大关注.

    视频编码的可分级性(scalability)是指码率的可调整性,即视频数据只压缩一次,却能以多个帧率、空间分辨率或视频质量进行解码,从而可支持多种类型用户的各种不同应用要求.

    MPEG-4通过视频对象层(VOL,Video ObjectLayer)数据结构来实现分级编码.MPEG-4提供了两种基本分级工具,即时域分级(TemporalScalability)和空域分级(SpatialScalability),此外还支持时域和空域的混合分级.每一种分级编码都至少有两层VOL,低层称为基本层,高层称为增强层.基本层提供了视频序列的基本信息,增强层提供了视频序列更高的分辨率和细节.

    在随后增补的视频流应用框架中,MPEG-4提出了FGS(Fine GranularityScalable,精细可伸缩性)视频编码算法以及PFGS(Progressive Fine GranularityScalable,渐进精细可伸缩性)视频编码算法.

    FGS编码实现简单,可在编码速率、显示分辨率、内容、解码复杂度等方面提供灵活的自适应和可扩展性,且具有很强的带宽自适应能力和抗误码性能.但还存在编码效率低于非可扩展编码及接收端视频质量非最优两个不足.

    PFGS则是为改善FGS编码效率而提出的视频编码算法,其基本思想是在增强层图像编码时使用前一帧重建的某个增强层图像为参考进行运动补偿,以使运动补偿更加有效,从而提高编码效率.

    D. 运动估计与运动补偿技术

    MPEG-4采用I-VOP、P-VOP、B-VOP三种帧格式来表征不同的运动补偿类型.它采用了H.263中的半像素搜索(half pixel searching)技术和重叠运动补偿(overlapped motioncompensation)技术,同时又引入重复填充(repetitive padding)技术和修改的块(多边形)匹配(modified block (polygon)matching)技术以支持任意形状的VOP区域. 此外,为提高运动估计算法精度,MPEG-4采用了MVFAST(Motion Vector Field AdaptiveSearch Technique)和改进的PMVFAST(Predictive  MVFAST)方法用于运动估计.对于全局运动估计,则采用了基于特征的快速顽健的FFRGMET(Feature-based Fast and Robust Global Motion Estimation Technique)方法.

    在MPEG-4视频编码中,运动估计相当耗时,对编码的实时性影响很大.因此这里特别强调快速算法.运动估计方法主要有像素递归法  和块匹配法两大类,前者复杂度很高,实际中应用较少,后者则在H.263和MPEG中广泛采用.在块匹配法中,重点研究块匹配准则及搜索方法.目前有三种

    常用的匹配准则:

    (1)绝对误差和(SAD, Sum of Absolute Difference)准则;

    (2)均方误差(MSE, Mean Square Error)准则;

    (3)归一化互相关函数(NCCF, Normalized Cross Correlation Function)准则.

    在上述三种准则中,SAD准则具有不需乘法运算、实现简单方便的优点而使用最多,但应清楚匹配准则的选用对匹配结果影响不大.

    在选取匹配准则后就应进行寻找最优匹配点的搜索工作.最简单、最可靠的方法是全搜索法(FS, Full Search),但计算量太大,不便于实时实现.因此快速搜索法应运而生,主要有交叉搜索法、二维对数法和钻石搜索法,其中钻石搜索法被MPEG-4校验模型(VM, Verification Model)所采纳,下面详细介绍.

    钻石搜索(DS, DiamondSearch)法以搜索模板形状而得名,具有简单、鲁棒、高效的特点,是现有性能最优的快速搜索算法之一.其基本思想是利用搜索模板的形状和大小对运动估

    计算法速度及精度产生重要影响的特性.在搜索最优匹配点时,选择小的搜索模板可能会陷入局部最优,选择大的搜索模板则可能无法找到最优点.因此DS算法针对视频图像中运动矢量的基本规律,选用了两种形状大小的搜索模板.

    · 大钻石搜索模板(LDSP, Large Diamond Search Pattern),包含9个候选位置;

    · 小钻石搜索模板(SDSP, Small Diamond Search Pattern),包含5个候选位置.

    DS算法搜索过程如下:开始阶段先重复使用大钻石搜索模板,直到最佳匹配块落在大钻石中心.由于LDSP步长大,因而搜索范围广,

    可实现粗定位,使搜索不会陷于局部最小,当粗定位结束后,可认为最优点就在LDSP 周围8个点所围菱形区域中.然后再使用小钻石搜索模板来实现最佳匹配块的准确定位,以不产生较大起伏,从而提高运动估计精度.

    此外Sprite视频编码技术也在MPEG-4中应用广泛,作为其核心技术之一.Sprite又称镶嵌图或背景全景图,是指一个视频对象在视频序列中所有出现部分经拼接而成的一幅图像.利用Sprite可以直接重构该视频对象或对其进行预测补偿编码.

    Sprite视频编码可视为一种更为先进的运动估计和补偿技术,它能够克服基于固定分块的传统运动估计和补偿技术的不足,MPEG-4正是采用了将传统分块编码技术与Sprite编码技术相结合的策略.

    MPEG4的应用领域

    凭借着出色的性能,MPEG4技术目前在多媒体传输、多媒体存储等领域得到了广泛的应用,下面我们就来看看目前在那些领域MPEG4技术得到了大显伸手的机会.

    1、精彩的视频世界

    精彩的视频世界是MPEG4技术应用最多也是最为广大朋友所熟悉的的形式.目前它主要以两种形式出现,一种是DIVX-MPEG4影碟(国内市面上已出现,且D版居多),另一种是网上MPEG4电影.

    (1)、我们先来说说DIVX-MPEG4影碟,DIVX视频编码技术实际上就是MPEG4压缩技术,它由微软MPEG4V3修改而来,使用的是MPEG4压缩算法,并同时分离视频和音频.它的核心部分便是由DivX对DVD音视频进行压缩,生成Mpeg4视频格式文件(也就是AVI格式).

    (2)、随着网络技术的不断发展,互联网上的视频流应用也成为了近几年的热门话题.目前,在互联网上比较流行的几种影像格式包括Quicktime、RealPlay以及微软的MediaPlayer等.MPEG4技术出现之后,互联网上又出现了MPEG4格式的电影,不过在观看前,系统会提示你下载最新的MPEG4解码软件.

    2、低比特率下的多媒体通信,目前,MPEG4技术已经广泛的应用在如视频电话、视频电子邮件、移动通信、电子新闻等多媒体通信领域.由于这些应用对传输速率要求较低,一般在4.8~64kbit/s之间,分辨率为176×144左右.因此MPEG4技术完全可以充分的利用网络带宽,通过帧重建技术压缩和传输数据,以最少的数据量获得最佳的图像质量.

    3、实时多媒体监控.

    多媒体监控领域原来一直是MPEG1技术担当重任,但近些年来,它们也是"城头变换大王旗"了.由于MPEG4压缩技术原本是一种适用在低带宽下进行信息交换的音视频处理技术,它的特点是可以动态的侦测图像各个区域变化,基于对象的调整压缩方法可以获得比MPEG1更大的压缩比,使压缩码流更低.因此,尽管MPEG4技术一开始并不是专为视频监控压缩领域而开发的,但它高清晰度的视频压缩,在实时多媒体监控上,无能是存储量,传输的速率,清晰度都比MPEG1具有更大的优势.

    4、基于内容存储和检索的多媒体系统.

    由MPEG4在压缩方法上远远优于MPEG1技术,更是MJPEG技术所不能比拟的.经过专家的测试表明,在相同清晰度对应MPEG1(500Kbits/sec)码流情况下, MPEG4比MPEG1节省了2/3的硬盘空间,在一般活动场景下也节省近一般的容量.因此无论是从内容存储量,还是从多媒体文件的检索速度来说,MPEG4技术都是多媒体系统应用的不二之选.

    5、硬件产品上面的应用

    目前,MPEG4技术在硬件产品上也已开始逐步得到应用.特别是在视频监控、播放上,这项高清晰度,高压缩的技术得到了众多硬件厂商的钟爱,而市场上支持MPEG4技术的产品也是种类繁多.下面笔者就列举一些代表性的产品,旨在让读者了解MPEG4技术在今天应用范围之广.

    (1)、摄像机:日本夏普公司推出过应用在互联网上的数字摄像机VN-EZ1.这台网络摄像机利用MPEG4格式,可把影像文件压缩为ASF(高级流格式),用户只要利用微软公司的MediaPlayer播放程序,就可以直接在电脑上进行播放.

    (2)、播放机:飞利浦公司于今年八月份推出了一款支持DivX的DVD播放机DVD737.它可以支持DivX 3.11、4.xx、5.xx等MPEG4标准,而对于新标准的支持则可以通过升级固件来实现.

    (3)、数码相机:日本京瓷公司在11月中旬发售其最新款数码相机Finecam L30,这款是采用300万像素、3倍光学变焦设计的数码相机产品, L30采用了MPEG4格式动态视频录制,可以让动态视频录制画面效果比传统数码相机更出色.

    (4)、手机:在手机领域,MPEG4技术更是得到了广泛的应用,各大手机厂商也都推出了可拍摄MPEG4动态视频的手机型号,如西门子ST55、索尼爱立信P900/P908、LG 彩屏G8000等.

    (5)、MPEG4数字硬盘:在今年深圳举行的安防展览会上,开发数字录像监控产品的厂家纷纷推出了他们的最新产品,而支持MPEG4的DVR压缩技术也成为改展会上的亮点.

    如北京华青紫博科技推出的"E眼神MPEG4数字视频王"便是一款基于网络环境的高清晰数字化监控报警系统.内置多画面处理器,集现场监控、监听、多路同时数字录像与回放等多种功能为一体.

    其实,市场上还有许多基于MPEG4技术的硬件产品,笔者这里就不一一列举了,不过笔者相信,随着视频压缩技术的不断发展,MPEG4技术的产品会越来越多的出现在我们生活,工作中.

IP视频压缩协议H.263

    无论是在全球范围举行面对面会议的便利性方面,还是从一个中心局进行远程监控应用,IP视频的潜力都在日益增加.公共安全机构正在推动对部署增强型数字视频工具需求的增长,而新视频技术使这类工具迁移到通信网络上成为可能.

    由于视频压缩技术特别是H.263标准提供了一种取代增加带宽的高性价比途径,因此利用IP传输视频时,用户不必将网络升级到千兆以太网.在视频压缩领域中有两类技术:多家生产商开发的专有压缩算法;H.263和包括MotiON JPEG在内的MPEG系列等基于标准的技术.

    虽然实际应用(无论是安全应用、e学习或视频会议)将最终决定技术的采用,但每一类技术中仍有不同的选择.两种最流行的基于标准的技术是Motion JPEG和H.263.

    Motion JPEG

    该技术通常被称作MJPEG,是MPEG的"远亲",并且常被用在数字录像机中.MJPEG一般被用在物理安全环境中,将来自闭路电视摄像机的模拟视频转换为可存储在硬盘上的数字流.MJPEG具有发送高质量图像的能力,但是需要大量的带宽(高达T-1线路的带宽)来生成全运动视频.与MPEG不同,MJPEG不使用帧间(interframe)编码,并且更容易用非线性编辑器进行编辑.

    但是,MJPEG图像属于占用最大的数字媒介空间的数字图像之一,需要大量的磁盘空间来满足今天大多数企业的需要,在物理安全环境应用中效率很低.

    H.263

    H.263使用户可以扩展带宽利用率,可以低达128Kbps的速率实现全运动视频(每秒30帧).H.263以其灵活性以及节省带宽和存储空间的特性,具有低总拥有成本并提供了迅速的投资回报.H.263是为以低达20K到24Kbps带宽传送视频流而开发的,基于H.261编解码器来实现.但是,原则上它只需要一半的带宽就可取得与H.261同样的视频质量.

    最初作为ISDN上视频会议标准而设计的H.261,引入了运动预测和块传输等特性,它使传送具有良好质量的更平滑的图像成为可能.此外,H.261需要使用大量的带宽(64K到2M),并且主要定位于电路交换网络.

    H.263已经基本上取代了H.261.在H.263由于其能够以低带宽传送高质量视频而变得流行的过程中,这项标准扩展和升级了九次.IT管理员可以方便地将它安装到他们的数据网络中,无需增加带宽和存储费用、或中断已经运行在网络上的其他关键语音和数据应用.

    H.263算法还可以为开发人员所二次开发,以产生更好的结果和更佳的压缩方案,而这反过来为最终用户在选择最适合他们业务应用的H.263实现中提供了更多的选择.

H.264的技术背景

    H.264标准的主要目标是:与其它现有的视频编码标准相比,在相同的带宽下提供更加优秀的图象质量.

    而,H.264与以前的国际标准如H.263和MPEG-4相比,最大的优势体现在以下四个方面:

    1. 将每个视频帧分离成由像素组成的块,因此视频帧的编码处理的过程可以达到块的级别.

    2. 采用空间冗余的方法,对视频帧的一些原始块进行空间预测、转换、优化和熵编码(可变长编码).

    3. 对连续帧的不同块采用临时存放的方法,这样,只需对连续帧中有改变的部分进行编码.该算法采用运动预测和运动补偿来完成.对某些特定的块,在一个或多个已经进行了编码的帧执行搜索来决定块的运动向量,并由此在后面的编码和解码中预测主块.

    4. 采用剩余空间冗余技术,对视频帧里的残留块进行编码.例如:对于源块和相应预测块的不同,再次采用转换、优化和熵编码.

H.264的算法

    H.264是在MPEG-4技术的基础之上建立起来的,其编解码流程主要包括5个部分:帧间和帧内预测(EstimatiON)、变换(Transform)和反变换、量化(Quantization)和反量化、环路滤波(Loop Filter)、熵编码(Entropy Coding).

    H.264/MPEG-4 AVC(H.264)是1995年自MPEG-2视频压缩标准发布以后的最新、最有前途的视频压缩标准.H.264是由ITU-T和ISO/IEC的联合开发组共同开发的最新国际视频编码标准.通过该标准,在同等图象质量下的压缩效率比以前的标准提高了2倍以上,因此,H.264被普遍认为是最有影响力的行业标准.

H.264的优势

    H.264是国际标准化组织(ISO)和国际电信联盟(ITU)共同提出的继MPEG4之后的新一代数字视频压缩格式,它即保留了以往压缩技术的优点和精华又具有其他压缩技术无法比拟的许多优点.

    1.低码流(Low Bit Rate):和MPEG2和MPEG4 ASP等压缩技术相比,在同等图像质量下,采用H.264技术压缩后的数据量只有MPEG2的1/8,MPEG4的1/3.显然,H.264压缩技术的采用将大大节省用户的下载时间和数据流量收费.

    2.高质量的图象:H.264能提供连续、流畅的高质量图象(DVD质量).

    3.容错能力强:H.264提供了解决在不稳定网络环境下容易发生的丢包等错误的必要工具.

    4.网络适应性强:H.264提供了网络抽取层(Network AbstractiON Layer), 使得H.264的文件能容易地在不同网络上传输(例如互联网,CDMA,GPRS,WCDMA,CDMA2000等).

H.264标准概述

    H.264和以前的标准一样,也是DPCM加变换编码的混合编码模式.但它采用"回归基本"的简洁设计,不用众多的选项,获得比H.263++好得多的压缩性能;加强了对各种信道的适应能力,采用"网络友好"的结构和语法,有利于对误码和丢包的处理;应用目标范围较宽,以满足不同速率、不同解析度以及不同传输(存储)场合的需求.

    技术上,它集中了以往标准的优点,并吸收了标准制定中积累的经验.与H.263 v2(H.263+)或MPEG-4简单类(Simple Profile)相比,H.264在使用与上述编码方法类似的最佳编码器时,在大多数码率下最多可节省50%的码率.H.264在所有码率下都能持续提供较高的视频质量.H.264能工作在低延时模式以适应实时通信的应用(如视频会议),同时又能很好地工作在没有延时限制的应用,如视频存储和以服务器为基础的视频流式应用.H.264提供包传输网中处理包丢失所需的工具,以及在易误码的无线网中处理比特误码的工具.

    在系统层面上,H.264提出了一个新的概念,在视频编码层(VIDEO Coding Layer, VCL)和网络提取层(Network AbstractiON Layer, NAL)之间进行概念性分割,前者是视频内容的核心压缩内容之表述,后者是通过特定类型网络进行递送的表述,这样的结构便于信息的封装和对信息进行更好的优先级控制.H.264的系统编码框图如图1所示.

H.264标准的主要特点

    H264标准是由JVT(Joint VIDEO Team,视频联合工作组)组织提出的新一代数字视频编码标准.JVT于2001年12月在泰国Pattaya成立.它由ITU-T的VCEG(视频编码专家组)和ISO/IEC的MPEG(活动图像编码专家组)两个国际标准化组织的专家联合组成.JVT的工作目标是制定一个新的视频编码标准,以实现视频的高压缩比、高图像质量、良好的网络适应性等目标H264标准.H264标准将作为MPEG-4标准的一个新的部分(MPEG-4 part.10)而获得批准,是一个面向未来IP和无线环境下的新数字视频压缩编码标准.

    H264标准的主要特点如下:

    1.更高的编码效率:同H.263等标准的特率效率相比,能够平均节省大于50%的码率.

    2.高质量的视频画面:H.264能够在低码率情况下提供高质量的视频图像,在较低带宽上提供高质量的图像传输是H.264的应用亮点.

    3.提高网络适应能力:H.264可以工作在实时通信应用(如视频会议)低延时模式下,也可以工作在没有延时的视频存储或视频流服务器中.

    4.采用混合编码结构:同H.263相同,H.264也使用采用DCT变换编码加DPCM的差分编码的混合编码结构,还增加了如多模式运动估计、帧内预测、多帧预测、基于内容的变长编码、4x4二维整数变换等新的编码方式,提高了编码效率.

    5.H.264的编码选项较少:在H.263中编码时往往需要设置相当多选项,增加了编码的难度,而H.264做到了力求简洁的"回归基本",降低了编码时复杂度.

    6.H.264可以应用在不同场合:H.264可以根据不同的环境使用不同的传输和播放速率,并且提供了丰富的错误处理工具,可以很好的控制或消除丢包和误码.

    7.错误恢复功能:H.264提供了解决网络传输包丢失的问题的工具,适用于在高误码率传输的无线网络中传输视频数据.

    8.较高的复杂度:264性能的改进是以增加复杂性为代价而获得的.据估计,H.264编码的计算复杂度大约相当于H.263的3倍,解码复杂度大约相当于H.263的2倍.

    H264标准各主要部分有Access Unit delimiter(访问单元分割符),SEI(附加增强信息),primary coded picture(基本图像编码),Redundant Coded Picture(冗余图像编码).Instantaneous Decoding Refresh(IDR,即时解码刷新)、Hypothetical Reference Decoder(HRD,假想码流调度器)、Hypothetical Stream Scheduler(HSS,假想参考解码).

H.264标准的关键技术

    1.帧内预测编码

    帧内编码用来缩减图像的空间冗余.为了提高H.264帧内编码的效率,在给定帧中充分利用相邻宏块的空间相关性,相邻的宏块通常含有相似的属性.因此,在对一给定宏块编码时,首先可以根据周围的宏块预测(典型的是根据左上角的宏块,因为此宏块已经被编码处理),然后对预测值与实际值的差值进行编码,这样,相对于直接对该帧编码而言,可以大大减小码率.

    H.264提供6种模式进行4×4像素宏块预测,包括1种直流预测和5种方向预测,如图2所示.在图中,相邻块的A到I共9个像素均已经被编码,可以被用以预测,如果我们选择模式4,那么,a、b、c、d4个像素被预测为与E相等的值,e、f、g、h4个像素被预测为与F相等的值,对于图像中含有很少空间信息的平坦区,H.264也支持16×16的帧内编码. 图2 帧内编码模式

    2.帧间预测编码

    帧间预测编码利用连续帧中的时间冗余来进行运动估计和补偿.H.264的运动补偿支持以往的视频编码标准中的大部分关键特性,而且灵活地添加了更多的功能,除了支持P帧、B帧外,H.264还支持一种新的流间传送帧--SP帧,如图3所示.码流中包含SP帧后,能在有类似内容但有不同码率的码流之间快速切换,同时支持随机接入和快速回放模式.图3 SP-帧示意图H.264的运动估计有以下4个特性.

    (1)不同大小和形状的宏块分割

    对每一个16×16像素宏块的运动补偿可以采用不同的大小和形状,H.264支持7种模式,如图4所示.小块模式的运动补偿为运动详细信息的处理提高了性能,减少了方块效应,提高了图像的质量.图4 宏块分割方法

    (2)高精度的亚像素运动补偿

    在H.263中采用的是半像素精度的运动估计,而在H.264中可以采用1/4或者1/8像素精度的运动估值.在要求相同精度的情况下,H.264使用1/4或者1/8像素精度的运动估计后的残差要比H.263采用半像素精度运动估计后的残差来得小.这样在相同精度下,H.264在帧间编码中所需的码率更小.

    (3)多帧预测

    H.264提供可选的多帧预测功能,在帧间编码时,可选5个不同的参考帧,提供了更好的纠错性能,这样更可以改善视频图像质量.这一特性主要应用于以下场合:周期性的运动、平移运动、在两个不同的场景之间来回变换摄像机的镜头.

    (4)去块滤波器

    H.264定义了自适应去除块效应的滤波器,这可以处理预测环路中的水平和垂直块边缘,大大减少了方块效应.

    3.整数变换

    在变换方面,H.264使用了基于4×4像素块的类似于DCT的变换,但使用的是以整数为基础的空间变换,不存在反变换,因为取舍而存在误差的问题,变换矩阵如图5所示.与浮点运算相比,整数DCT变换会引起一些额外的误差,但因为DCT变换后的量化也存在量化误差,与之相比,整数DCT变换引起的量化误差影响并不大.此外,整数DCT变换还具有减少运算量和复杂度,有利于向定点DSP移植的优点.

    4.量化

    H.264中可选32种不同的量化步长,这与H.263中有31个量化步长很相似,但是在H.264中,步长是以12.5%的复合率递进的,而不是一个固定常数.

    在H.264中,变换系数的读出方式也有两种:之字形(Zigzag)扫描和双扫描,如图6所示.大多数情况下使用简单的之字形扫描;双扫描仅用于使用较小量化级的块内,有助于提高编码效率.图6 变换系数的读出方式

    5.熵编码

    视频编码处理的最后一步就是熵编码,在H.264中采用了两种不同的熵编码方法:通用可变长编码(UVLC)和基于文本的自适应二进制算术编码(CABAC).

    在H.263等标准中,根据要编码的数据类型如变换系数、运动矢量等,采用不同的VLC码表.H.264中的UVLC码表提供了一个简单的方法,不管符号表述什么类型的数据,都使用统一变字长编码表.其优点是简单;缺点是单一的码表是从概率统计分布模型得出的,没有考虑编码符号间的相关性,在中高码率时效果不是很好.

    因此,H.264中还提供了可选的CABAC方法.算术编码使编码和解码两边都能使用所有句法元素(变换系数、运动矢量)的概率模型.为了提高算术编码的效率,通过内容建模的过程,使基本概率模型能适应随视频帧而改变的统计特性.内容建模提供了编码符号的条件概率估计,利用合适的内容模型,存在于符号间的相关性可以通过选择目前要编码符号邻近的已编码符号的相应概率模型来去除,不同的句法元素通常保持不同的模型.

    四、H.264在视频会议中的应用

    目前,大多数的视频会议系统均采用H.261或H.263视频编码标准,而H.264的出现,使得在同等速率下,H.264能够比H.263减小50%的码率.也就是说,用户即使是只利用 384kbit/s的带宽,就可以享受H.263下高达 768kbit/s的高质量视频服务.H.264 不但有助于节省庞大开支,还可以提高资源的使用效率,同时令达到商业质量的视频会议服务拥有更多的潜在客户.

    目前,已经有少数几家厂商的视频会议产品支持H.264协议,厂商们致力于普及H.264这个全新的业界标准.随着其它视频会议方案厂商陆续效仿他们的做法,我们必将能全面体验H.264视频服务的优势.

H.264的技术亮点

    1、分层设计 H.264的算法在概念上可以分为两层:视频编码层(VCL:Video Coding Layer)负责高效的视频内容表示,网络提取层(NAL:Network AbstractiON Layer)负责以网络所要求的恰当的方式对数据进行打包和传送.在VCL和NAL之间定义了一个基于分组方式的接口,打包和相应的信令属于NAL的一部分.这样,高编码效率和网络友好性的任务分别由VCL和NAL来完成.

    VCL层包括基于块的运动补偿混合编码和一些新特性.与前面的视频编码标准一样,H.264没有把前处理和后处理等功能包括在草案中,这样可以增加标准的灵活性.

    NAL负责使用下层网络的分段格式来封装数据,包括组帧、逻辑信道的信令、定时信息的利用或序列结束信号等.例如,NAL支持视频在电路交换信道上的传输格式,支持视频在Internet上利用RTP/UDP/IP传输的格式.NAL包括自己的头部信息、段结构信息和实际载荷信息,即上层的VCL数据.(如果采用数据分割技术,数据可能由几个部分组成).

    2、高精度、多模式运动估计

    H.264支持1/4或1/8像素精度的运动矢量.在1/4像素精度时可使用6抽头滤波器来减少高频噪声,对于1/8像素精度的运动矢量,可使用更为复杂的8抽头的滤波器.在进行运动估计时,编码器还可选择"增强"内插滤波器来提高预测的效果.

    在H.264的运动预测中,一个宏块(MB)可以按图2被分为不同的子块,形成7种不同模式的块尺寸.这种多模式的灵活和细致的划分,更切合图像中实际运动物体的形状,大大提高了运动估计的精确程度.在这种方式下,在每个宏块中可以包含有1、2、4、8或16个运动矢量.

    在H.264中,允许编码器使用多于一帧的先前帧用于运动估计,这就是所谓的多帧参考技术.例如2帧或3帧刚刚编码好的参考帧,编码器将选择对每个目标宏块能给出更好的预测帧,并为每一宏块指示是哪一帧被用于预测.

    3、4×4块的整数变换

    H.264与先前的标准相似,对残差采用基于块的变换编码,但变换是整数操作而不是实数运算,其过程和DCT基本相似.这种方法的优点在于:在编码器中和解码器中允许精度相同的变换和反变换,便于使用简单的定点运算方式.也就是说,这里没有"反变换误差". 变换的单位是4×4块,而不是以往常用的8×8块.由于用于变换块的尺寸缩小,运动物体的划分更精确,这样,不但变换计算量比较小,而且在运动物体边缘处的衔接误差也大为减小.为了使小尺寸块的变换方式对图像中较大面积的平滑区域不产生块之间的灰度差异,可对帧内宏块亮度数据的16个4×4块的DC系数(每个小块一个,共16个)进行第二次4×4块的变换,对色度数据的4个4×4块的DC系数(每个小块一个,共4个)进行2×2块的变换.

    H.264为了提高码率控制的能力,量化步长的变化的幅度控制在12.5%左右,而不是以不变的增幅变化.变换系数幅度的归一化被放在反量化过程中处理以减少计算的复杂性.为了强调彩色的逼真性,对色度系数采用了较小量化步长.

    4、统一的VLC

    H.264中熵编码有两种方法,一种是对所有的待编码的符号采用统一的VLC(UVLC :Universal VLC),另一种是采用内容自适应的二进制算术编码(CABAC:Context-Adaptive Binary Arithmetic Coding).CABAC是可选项,其编码性能比UVLC稍好,但计算复杂度也高.UVLC使用一个长度无限的码字集,设计结构非常有规则,用相同的码表可以对不同的对象进行编码.这种方法很容易产生一个码字,而解码器也很容易地识别码字的前缀,UVLC在发生比特错误时能快速获得重同步.

    5、帧内预测

    在先前的H.26x系列和MPEG-x系列标准中,都是采用的帧间预测的方式.在H.264中,当编码Intra图像时可用帧内预测.对于每个4×4块(除了边缘块特别处置以外),每

    个像素都可用17个最接近的先前已编码的像素的不同加权和(有的权值可为0)来预测,即此像素所在块的左上角的17个像素.显然,这种帧内预测不是在时间上,而是在空间域上进行的预测编码算法,可以除去相邻块之间的空间冗余度,取得更为有效的压缩.

    如图4所示,4×4方块中a、b、…、p为16 个待预测的像素点,而A、B、…、P是已编码的像素.如m点的值可以由(J+2K+L+2)/ 4 式来预测,也可以由(A+B+C+D+I+J+K+L)/ 8 式来预测,等等.按照所选取的预测参考的点不同,亮度共有9类不同的模式,但色度的帧内预测只有1类模式.

    6、面向IP和无线环境

    H.264 草案中包含了用于差错消除的工具,便于压缩视频在误码、丢包多发环境中传输,如移动信道或IP信道中传输的健壮性.

    为了抵御传输差错,H.264视频流中的时间同步可以通过采用帧内图像刷新来完成,空间同步由条结构编码(slice structured coding)来支持.同时为了便于误码以后的再同步,在一幅图像的视频数据中还提供了一定的重同步点.另外,帧内宏块刷新和多参考宏块允许编码器在决定宏块模式的时候不仅可以考虑编码效率,还可以考虑传输信道的特性.

    除了利用量化步长的改变来适应信道码率外,在H.264中,还常利用数据分割的方法来应对信道码率的变化.从总体上说,数据分割的概念就是在编码器中生成具有不同优先级的视频数据以支持网络中的服务质量QoS.例如采用基于语法的数据分割(syntax-based data partitioning)方法,将每帧数据的按其重要性分为几部分,这样允许在缓冲区溢出时丢弃不太重要的信息.还可以采用类似的时间数据分割(temporal data partitioning)方法,通过在P帧和B帧中使用多个参考帧来完成.

    在无线通信的应用中,我们可以通过改变每一帧的量化精度或空间/时间分辨率来支持无线信道的大比特率变化.可是,在多播的情况下,要求编码器对变化的各种比特率进行响应是不可能的.因此,不同于MPEG-4中采用的精细分级编码FGS(Fine Granular Scalability)的方法(效率比较低),H.264采用流切换的SP帧来代替分级编码.

H264编码技术

    H.264的目标应用涵盖了目前大部分的视频服务,如有线电视远程监控、交互媒体、数字电视、视标准的整体框架频会议、视频点播、流媒体服务等.H.264为解决不同应用中的网络传输的差异.定义了两层:视频编码层(VCL:Video Coding Layer)负责高效的视频内容表示,网络提取层(NAL:Network AbstractiON Layer)负责以网络所要求的恰当的方式对数据进行打包和传送。

(如图所示: 标准的整体框架).

    基本层次(Baseline Profile):该层次使用了H.264的除了B-Slices,CABAC以及交织编码模式外所有的特性.该层次主要使用于低时延的实时应用场合.

    主要层次(Main Profile):包含Baseline profile的所有特性,并包括了B-slices,CABAC以及交织编码模式.它主要针对对时延要求不高,当压缩率和质量要求较高的场合.

    扩展层次(Profile X):支持所有Baseline profile的特性,但不支持CABAC以及基于宏块的自适应帧场编码.该层次主要针对的时各种网络视频流传输方面的应用.

H264层次构成

    H264标准是由JVT(Joint VIDEO Team,视频联合工作组)组织提出的新一代数字视频编码标准.JVT于2001年12月在泰国Pattaya成立.它由ITU-T的VCEG(视频编码专家组)和ISO/IEC的MPEG(活动图像编码专家组)两个国际标准化组织的专家联合组成.JVT的工作目标是制定一个新的视频编码标准,以实现视频的高压缩比、高图像质量、良好的网络适应性等目标H264标准.H264标准将作为MPEG-4标准的一个新的部分(MPEG-4 part.10)而获得批准,是一个面向未来IP和无线环境下的新数字视频压缩编码标准.

    H264标准的主要特点如下:

    1.更高的编码效率:同H.263等标准的特率效率相比,能够平均节省大于50%的码率.

    2.高质量的视频画面:H.264能够在低码率情况下提供高质量的视频图像,在较低带宽上提供高质量的图像传输是H.264的应用亮点.

    3.提高网络适应能力:H.264可以工作在实时通信应用(如视频会议)低延时模式下,也可以工作在没有延时的视频存储或视频流服务器中.

    4.采用混合编码结构:同H.263相同,H.264也使用采用DCT变换编码加DPCM的差分编码的混合编码结构,还增加了如多模式运动估计、帧内预测、多帧预测、基于内容的变长编码、4x4二维整数变换等新的编码方式,提高了编码效率.

    5.H.264的编码选项较少:在H.263中编码时往往需要设置相当多选项,增加了编码的难度,而H.264做到了力求简洁的"回归基本",降低了编码时复杂度.

    6.H.264可以应用在不同场合:H.264可以根据不同的环境使用不同的传输和播放速率,并且提供了丰富的错误处理工具,可以很好的控制或消除丢包和误码.

    7.错误恢复功能:H.264提供了解决网络传输包丢失的问题的工具,适用于在高误码率传输的无线网络中传输视频数据.

    8.较高的复杂度:264性能的改进是以增加复杂性为代价而获得的.据估计,H.264编码的计算复杂度大约相当于H.263的3倍,解码复杂度大约相当于H.263的2倍.

    H264标准各主要部分有Access Unit delimiter(访问单元分割符),SEI(附加增强信息),primary coded picture(基本图像编码),Redundant Coded Picture(冗余图像编码).还有Instantaneous Decoding Refresh(IDR,即时解码刷新)、Hypothetical Reference Decoder(HRD,假想码流调度器)、Hypothetical Stream Scheduler(HSS,假想参考解码).

H.264解码

    由于目前蓝光格式的统一,使得市面上绝大多数的高清视频均是采用H.264的格式编码,它又分为四个最主要步骤,分别是流处理,逆变换,动态补偿,去方块滤波,这四步也是资源消耗的主要四个部分.

    H.264解码的四个步骤中的第一步"CAVLC/CABAC解码"是最为消耗运算资源,这方面远高于其他三步(简单的说,CAVLC/CABAC是H.264编码规范中两种不同的算法,都是为了提高压缩比,其中CABAC比CAVLC压缩率更高,但解码时自然也要求更高).

    如果所有四个步骤全采用处理器纯软件解码运算,当碰上HDDVD版本的高码率H.264视频,处理器的负载会非常巨大,即使能流畅播放高清视频,也会因为处理器压力过重而影响其他同时开启的应用程序的执行效率.

    如果让处理器解码"CAVLC/CABAC解码"和"反向转换(Inverse TransformatiON)"两部分,由显示核心承担"运动补偿"和"解码去块"功能,则可以在一定程度上降低处理器的压力. 不过对于使用单核处理器或低端双核处理器的用户来说,这依然无法很好的应付这类视频;其次,碰上编码率更高的视频,依然会给处理器造成很大的处理难度,导致视频播放的不确定性,可能消费者会遇到某些视频可以流畅播放,但是有些视频却丢帧的情况.

    通过以上两点可以看出,由显示核心承担全部的H.264视频解码和处理过程,让其解码运算可以基本不依赖处理器将是最为经济、便捷的方法.如果能实现这一点,以后消费者就无需过分担心自己的处理器性能如何,不同的视频编码率导致的负载差距过大等等问题,只要选择一颗能支持"H.264全解码"的显示核心,就能无所顾忌的播放所有高清视频,而采用了高清加速引擎的英特尔GMA X4500HD芯片组则能够轻松全程解码H.264格式的高清视频,再加上高级去交错技术、电影模式检测、细节增强技术、ProcAMP技术和最新的显示连接技术则能够从图像品质、色彩饱和度以及高清接口等方面提升用户的高清体验.

H.264视频解码器在C6416 DSP上的实现

    摘要:介绍了最新视频压缩标准H.264,并实现了适合TI C6416 DSP内核的H.264视频解码器算法,在NVDK C6416板卡上进行测试,达到了实时的解码效果.该优化算法,结合DSP处理平台和网络技术,构成新的多媒体通信终端设备,具有广泛的应用前景.

    关键词:H.264 视频压缩 数字信号算是器(DSP) NVDK

    多媒体通信终端设备具有广泛的应用前景,可以应用于视频会议、可视电话、PDA、数字电视等各个领域,所以高效、实用的多媒体终端设备一直是通信领域研究的主要方向之一.

    多媒体通信终端的实现主要有两点:一方面需要快速、稳定的处理器作为媒体信号处理的平台,另一方面需要适合多媒体通信的协议标准和软件算法,尤其是对音视频信号的压缩处理算法.两者的结合才能产生高效的多媒全通信设备.目前随着数字信号处理器(DSP)的高速发展,为实现高效的音视频信号处理提供了可能性;另一方面,最新的低码率视频压缩标准H.264的出台,提供了适合通信的视频标准和算法指导.因此,将两者结合,把H.264算法在DSP上实现,对于多媒体通信的研究具有一定的意义和价值.

    本文介绍了H.264解码器算法的DSP实现.在设计中,采用了ATEME公司的网络视频开发平台(NVDKC6416)作为DSP处理平台,实现了H.264的优化解码算法.对于QCIF视频序列,解码速度达50~60帧/秒.

    1 网络视频开发平台NVDK简介

    NVDK是TI的第三方ATEME公司推出的基于TIC6400系列DSP评估开发套件,是一套适用于图像、视频信号处理的高速DSP开发平台.该套件为诸如视频基础设施及网络化视频设备等高级视频应用制造商提供了方便,提高了数字视频应用项目的开发速度.

    1.1 NVDK C6416体系结构

    NVDK C6416由TMS320C6416 DSP内核、10/100Mbps的以太网子卡、音频/视频接口盒、PCI总线、存储器单元、扩展接口及独立电源等构成.其功能结构框图如图1所示.

    1.2 NVDK C6416的主要特点

    NVDK作为网络及视频开发套件,把很多音视频接口及网络接口直接做在板卡上,给采用TI C6000系列DSP芯片作为处理单元的开发用户提供了便利的前端平台.它为项目演示、算法实现、原理制作、数据仿真、FPGA开发和软件优化提供了完整的DSP开发平台.其主要特点如下:

    ·C6416 DSP内核:600MHz时钟频率及8指令并行结构,最高可以达到4800MIPS的处理能力.

    ·视频特点:在输入端,NVDK能够捕获PAL制或NTSC制的模拟视频信号,可以采用复合视频(CVBS)或者S-video视频信号输入,输入模拟视频信号被数字化为YUV422数字视频格式.在输出端,NVDK在支持复合视频(CVBS)以及S-Video输出的同时,还提供了SVGA输出模式,视频采集提供FULL、CIF和QCIF三种图像格式,视频输出提供FULL和CIF两种图像格式.

    ·音频特点:提供两路双声道音频输出,CD音质的输入输出立体声接口,另外还提供一路单声道的麦克风输入.

    ·主接口:提供了PCI接口,允许与PC机相连.该板既可以以PCI模式运行,也可以单独脱机工作.

    ·网络接口:以太网接口为视频码流的网络传输带来了方便.

    ·外部扩展存储器:256M 64位宽扩展内存SDRAM和8M 32位宽扩展内存SDRAMB及4MB FLASH ROM提供了跤的内存空间和灵活的内存分配方案.

    2 H.264视频压缩标准

    H.264是由ITU-T视频编码专家组(VCEG)和ISO/IEC移动图像专家组(MPEG)共同提出的最新国际视频编码标准.它在H.264、H.263视频压缩标准的基础上,进行了进一步的改进和扩展.其目的是为了进一步降低编码率,提高压缩效率,同时提供一个友好的网络接口,使得视频码流更适合在网络上传送.由于该标准可以提供更低的码率,所以更适合应用于多媒体通信领域.

    H.264主要有以下新特点:

    ·网络适配层NAL(Network Abstraction Layer).

    传统的视频编码编完的视频码流在任何应用领域下(无论用于存储、传输等)都是统一的码流模式,视频码流仅有视频编码层(Video Coding Layer).而H.264根据不同应用增加不同的NAL片头,以适应不同的网络应用环境,减少码流的传输差错.

    ·帧内预测编码模式(Intra Prediction Coding).

    帧内预测编码合理地利用了I帧的空间冗余度,从而大大降低了I 帧的编码码流.

    ·自适应块大小编码模式(Adqptive Block Size Coding).

    H.264允许使用16×16、16×8、8×16、8×8、8×4、4×8、4×4等子块预测和编码模式,采用更小的块和自适应编码的方式,使得预测残差的数据量减少,进一步降低了码率.

    ·高精度亚像素运动估计(High precision sub-pel Motion Estimation).

    H.264中明确提出了运行估计采用亚像素运动估计的方法,并制定1/4像素和1/8像素可选的运动估计方法.亚像素运动估计,提高了预测精度,同时降低了残差的编码码率.

    ·多帧运动补偿技术(Multi-frame Motion Compensation).

    传统的视频压缩编码采用一个(P帧)或两个(B帧)解码帧作为当前帧预测的参考帧.在H.264中,最多允许5个参考帧,通过在更多的参考帧里进行运动估计和补偿,找到列差更小的预测块,降低编码码率.

    ·整形变换编码(Inter Transform Coding).

    H.264采用整形变换代替DCT变换,整形变换采用定点运算代替浮点运算.采用这种变换,不仅可以降低编解码的时间,而且,为该算法在多媒体算是平台上实现带来了方便.在这一点上,H.264视频编码标准更适合作为多媒体终端的编解码标准.

    ·两种可选择熵编码CAVLC和CABAC.

    CAVLC(Context-based Adaptive Variable Length Coding):基于内容的自适应变长编码.

    CABAC(Context-basedAdaptive Binary Arithmetic Coding):自适应二进制算术编码.

    以往的视频压缩标准中,都采用Huffman编码与变长编码相结合的方法进行熵编码.Huffman编码虽然是一种很好用的熵编码方法,但是其编码效率并不是最高的,而且,Huffman编码的抗差错性能很低.H.264中采用了两种可以选择的熵编码方法:CAVLC编码抗差错能力比较高,但是编码效率不是很高;CABAC编码是一种高效率的熵编码方法,但是计算复杂很高.两者各有优缺点,所以针对不同的应用,选择不同的编码方法.

    3 H.264解码器算法的DSP实现和优化

    3.1 在PC机上实现H.264算法并进行优化

    ITU-T官方提供的H.264的核心算法不仅在代码结构上需要改进,而且在具体的核心算法上也需要做大的改动,才能达到实时的要求.这一步需要做的具体工作包括:去处冗余代码、规范程序结构、全局和局部变量的调整和重新定义、结构体的调整等.

    3.2 PC机H.264代码的DSP化

    C6000开发工具Code Composer Studio有自己的ANSIC编译器和优化器,并有自己的语法规则和定义,所以在DSP上实现H.264的算法要把PC机上C语言编写的H.264代码进行改动,使其完全符合DSP中C的规则.

    这些改动包括:去除所有的文件操作;去除可视化界面的操作;合理安排内存空间的预留和分配;规范数据类型--因为C6416是定点DSP芯片,只支持四种数据类型:short型(16 bit)、int(32bits)、long型(40bits)和double型(64bits),因此必须对数据进行重新规范,把浮点数的运算部分近似用定点表示,或用定点实现浮点运算;根据内存的分配定义远近程常量和变量;把常用的数据在数据结构中提取出来,以near型数据定义在DSP内部存储空间,以减少对EMIF端口的读取,从而提高速度.

    3.3 H.264的DSP算法优化

    通过把PC机H.264代码DSP化,可以在DSP上实现H.264的编解码算法,但是,这样实现的算法运行效率很低,因为所有的代码都是由C语言编写,并没有完全利用DSP的各种性能.所以必须结合DSP本身的特点,对其进一步优化,才能实现H.264视频解码器算法对视频图像的实时处理.

    对DSP代码的优化共分为三个层次:项目级优化、C程序级优化、汇编程序级优化.

    (1)项目级优化:主要是通过选择CCS提供的编译优化参数,根据H.264系统的要求进行优化,通过不断地对各个参数(-mw -pm -o3 -mt等)的选择、搭配、调整,改善循环、多重循环体的性能,进行软件流水,从而提高软件的并行性.

    (2)C程序级优化:主要是针对采用的DSP的具体特点进行代码的功能精简、数据结构的优化、循环的优化、代码的并行化处理.在这里主要工作包括以下部分:去除掉SNR计算、帧率及其他辅助信息的程序模块.函数及数据映射区域的调整,把经常用的数据存储在片内存储器中,频繁调用的程序尽可能映射在相邻或相近的存储区域.C函数的并行化处理,针对并行化效果差的函数,尤其是多重循环体,要进行循环拆解,将多重循环拆解为单重循环.减少存储区数据的读取和存储,尤其是片外存储区域数据的调用,以减少时间.数据结构的重定义和调整.

    下面以数据结构的调整说明如何合理利用DSP特性进行软件优化.

    数据结构是指数据的类型及其在内存空间的分配方式,不同的数据结构,对程序的性能有不同的影响.因此,数据结构的调整对程序在DSP上并行执行是必不可少的步骤.

    在H.264解码器内核代码中,数组mpr[i][j]用来存放一个宏块的预测系数,数据类型是int型,其中i、j是该系数的坐标.但是预测系数实际上只有8位位宽,所以,定义成byte型就足够了.这样一方面节省了内存空间,另一方面,用byte类型可以直接使用LDW指令代替LDB指令,一次读取4个数据,节省了读取时间.因此H.264中对系数的读取都是以块为单位的,而内核中的mpr数据结构显然不能充分利用DSP的特性,所以数据存储结构也需要调整,把mpr中每一个块分配到一个连续的内存空间有利于数据的传送,如图2所示.这样,每一次确定了一个块以后,只要更改一维的信息就能确定系数的位置,而原始的结构对每一个系数都有确定两位系数.通过这样的数据调整,可以明显地提高程序的运行速度.

    (3)汇编程序级优化.汇编级的优化包括两部分:采用线性汇编语言进行优化和直接用汇编语言进行优化.由于系统编译器的局限性,并不能将全部的函数都很好地优化,这样就需要统计比较耗时的C语言函数,用汇编语言重新编写.这些函数包括:插值函数、帧内预测函数、整形反亦换等函数.

    下面以差值函数中的一段来说明汇编编写带来的性能提高.

    横向1/2插值源代码:for(j=0;j

    for(i=0;i

    for(result=0,x=-2;x<4;x++)

    result+=mref[ref_frame][y_pos+j][x_pos+i+x]

    *COEF[x+2];

    block[i][j]=max(0,min(255,(result+16)/32));

    }

    }

    该段代码采用一个六阶滤波器来插值1/2位置的像素值,共插出16个值(一个块).源代码采用三重循环,内层循环是插值滤波器,如果直接用编译器把源泉代码编译成汇编的话,内部循环都要反复读取一些内存数据.采用汇编自己编写,则可以改进算法,大大降低函数的运行时间.

    如图3所示,在插值第一个半像素位置时,要在内存中读取1~6像素的值,插值第二个半像素位置时,要读取2~7点的值,这样,就反复读取了2~5像素点的值,而且,插值一个点需要进行6次乘法、5次加法.用汇编语言编写,手工排流水线,可以降低数据的读取次数,同时减少了乘、加法指令数.首先,采用LDNW指令直接读取8个数据到寄存器中,每次插值直接使用寄存器而不再去内存中读取数据.另外,采用DOTPSU4乘累加命令代替MPL指令,将四次乘法和3次加法用一条指令来代替,减少了指令数目.

    通过以上各种优化方法,最终实现了基于C6416内核的H.264 baseline解码器算法.

    4 算法性能的评测及前景展望

    在NVDK C6416环境下,测试了解码器算法,对QCIF测试序列,已经能够达到50~60帧/秒的解码速度,远远达到了实时性解码的目的.

    在NVDK C6416板卡上实现的H.264视频解码器具有功能强、使用灵活等特点,有广泛的应用前景.该优化的算法不仅适用于NVDK板,对于所有的C64开发板都具有通用性,只要根据板卡的内存分配,重新配置内存参数文件,便可以把该算法移植到新的开发板中.该H.264视频解码器与网络平台相连接便可以应用于视频会议、可视电话、无线流媒体通信等应用领域.

基于ADSP-BF533处理器的H.264解码器

    H.264是ITU T的VCEG和ISO/IEC的MPEG联合成立的联合视频组JVT(Joint VIDEO Tearn)共同制定的新视频编码标准,定位于覆盖整个视频应用领域.H.264标准采用了基于可变大小宏块的运动补偿、多帧参考、整数变换、基于1/4像素精度的运动估计、去块效应滤波器等新技术,因而获得更好的压缩性能,同时也导致了运算量的大幅度增加.

    Blackfin处理器采用了ADI公司和英特尔公司共同开发的微信号结构,在结构中加人专门的视频处理指令,工作频率高达756 MHz,能完成12OOM次/s乘加操作.与采用超标量结构或超长指令集的DSP(如TI的C6000系列)相比,Blackfin处理器在功耗、成本方面具有很大的优势,非常适合嵌入式的视频应用.

    1 H.264视频编码标准

    H.264视频编解码器的基本结构与早期的编码标准(H.263、MPEG4等)相似,都是由运动补偿、变换、量化、熵编码、环路去块效应滤波器等功能单元组成的.H.264标准的改进主要体现在各功能模块内部.H_264的重大改进表现在以下几个方面:

    ①高精度的基于1/4像素精度的运动预测.

    ②多种宏块划分模式.每个宏块(16×16像素)的亮度分量有7种分区方法:16×16、16×8、8×16、8×8、8×4、4×8、4×4.

    ③多帧预测.在帧间编码时,可选5个不同的参考帧.

    ④整数变换.采用基于4×4像素块的整数变换代替DCT变换.

    ⑤H_264/AVC支持两种熵编码方法,即CAVLC(基于上下文的自适应可变长编码)和CABAC(基于上下文的自适应算术编码).CAVLC的抗差错能力比较高,而编码效率比CABAC低;CABAC编码效率高,但需要的计算量和存储容量更大.

    ⑥帧内预测编码.H.264采用了多种设计合理的帧内预测模式,大大降低了I帧的编码率.

    ⑦网络适配层NAL(Network Abstraction Layer)为视频编码层提供一个与网络无关的统一接口,使视频编码数据能适应不同的网络应用环境.

    H.264分为7种不同的框架(profile)--Baselineprofile、Main profiIe、Extended profile、High profik、High10 profik、High4:2:2 profile和High 4;4:4,分别代表不同的技术限制和算法集合.其中baseline prome的使用是不收版权费的.

    2 基于ADSP-BF533的软硬件实现平台

    硬件平台采用ADI公司的ADSP-BF533 EZ-kit Lite评估板.此评估板包括l块ADSP-BF533处理器,32MB SDRAM,2 MB? Flash,ADVl836音频编解码器外接4输入/6输出音频接口,ADV7183视频解码器和ADV7171视频编码器外接3输入/3输出视频接口,1个UART接口,1个USB调试接口,1个JTAG调试接口.评估板系统结构框图如图1所示.

    评估板上采用的ADSP-BF533处理器,工作频率高达756 MHz.该处理器有以下特点:双16位乘法累加器;双40位算术逻辑单元(ALU);4个8位视频ALU;1个40

    位移位器;专用的视频信号处理指令;148 KB的片内存储器(16 KB可作为指令Cache,32 KB可作为数据Cache);动态电源管理功能等.Blackfin处理器还包括丰富的外设和接口:EBIU接口(4个128 MB SDRAM接口,4个l MB异步存储器接口),3个定时/计数器,1个UART,1个SPI接口,2个同步串行接口,1路并行外设接口(支持ITU一656数据格式)等等.Blackfin处理器在结构上充分体现了对媒体应用(特别是视频应用)算法的支持.

    软件验证采用如下方式:首先,通过DSP仿真器将H.264编码文件拷贝到评估板的存储器里.然后,软件从存储器中读取编码文件的数据,进行解码操作.最后,将解码的数据通过PPI接口输出到ADV7171芯片,ADV7171芯片将输入的视频数据编码为PAL格式输出到显示器上二进行显示.

    Blackfin处理器的软件开发平台是VisualDSP++4.0.

    3 H 264实时解码器软件设计

    3.1软件总体设计

    为了实现实时解码的要求,需要优化程序的设计.优化流程如下:

    ①在PC机上进行算法的验证和评估、优化程序的流程设计和数据结构设计.

    ②将程序代码移植到Blackfin处理器.在Visual-DSP++集成开发环境里进行编译,删除PC平台相关的代码,添加DSP平台相关的代码.

    ③进行基于DSP平台的优化操作.设置速度优化的编译参数,进行C语言级的优化,用汇编指令改写最耗时的函数,通过使用专用的向量指令和并行指令减少函数的执行时间.

    3.2 在PC机上实现并优化解码器程序

    解码器程序参考了JM9.6,并在以下方面作了优化:

    ①由于只支持Baseline profile,删除有关B帧、SI片、SP片和数据分割等不支持特性的冗余程序代码;

    ②修正JM9.6,每次处理一个Slice时都要分配内存,读取其中信息,再释放内存,合理安排内存空间的分配和释放;

    ③将I帧、P帧分别独立解码,宏块解码也按预测模式和预测方向分成不同的解码模块,以省去中间的重复判断,提高解码速度;

    ④优化CAVLC码表的查询方法.

    3.3 程序移植

    VisualDSP++是一款支持Blackfin处理器的集成开发、调试环境,包括VisuaIDSP++内核(VDK)、C/C++编译器、高级图形绘制工具、调试工具、器件模拟器等多种功能;能够很好地支持在Blackfin处理器上用C/C++语言进行开发工作.

    移植的第一步是除去所有的编译环境不支持的函数(例如某些时间相关的函数),将文件操作修改为读取文件数据缓存的操作,删除SNR信息收集和信息打印输出等DSP平台实现不需要的代码.第二步是添加与硬件相关的代码.这些代码包括系统初始化代码、输出模块代码、中断服务程序和解码速率控制程序等程序代码.

    移植完毕后,就实现了基于ADSP-BF533处理器的H_264解码器;但速度达不到实时解码的要求,还需要进行优化.

    3.4 基于DSP平台的优化

    基于DSP平台的优化分为系统级优化、C程序级优化和汇编级优化.

    (1)系统级优化

    打开编译器中的优化开关,设置为速度最优化;打开自动内联开关;打开"Interprocedural optimization"(过程间优化)开关;使用VisualDSP++编译器的PGO(Profile-Guided Optimization)优化编译技术.

    (2)C程序级优化

    C程序级的优化主要是针对BIackfin处理器的具体特点进行优化:

    ①编写链接描述文件,将经常用的数据存储在片内存储器,例如CAVLC熵解码的码表;启用指令Cache和数据Cache,设置好启用Cache机制的指令地址和数据地址.

    ②将除法操作转换为乘法操作或者采用查表法计算.

    ③减少对片外存储器的访问次数.对于经常访问的片外存储器区域,设置Cache使能,并可设置Cache锁定,防止被缓存的数据被替换,减少Cache未命中的几率.

    ④对于能够用较短的数据类型表达的数据改用较短的数据类型表达,例如原定义为int类型的4×4逆整数变换的输人数据,实际上可以定义为short类型.

    (3)汇编级优化

    汇编级优化通常遵循以下原则:

    ① 使用寄存器代替局部变量.如果局部变量用来保存计算的中间结果,那么用寄存器

    代替局部变量可以省掉很多访问内存的时问.

    ② 使用硬件循环代替软件循环Blackfin处理器有专用的硬件支持两级嵌套的零开销

    硬件循环.用硬件循环代替软件循环可避免堵塞流水线,提高速度.

    ③ 使用并行指令和向量指令.使用并行指令和向量指令,可以充分利用Blackfin处理器的SIMD系统结构的优点和内部硬件资源的并行处理优点,减少指令执行次数和提高指令执行效率.使用1条并行指令同时执行2条或3条非并行指令.向量指令可以同时对多个数据流进行相同的加工操作.

    ④ 使用视频处理指令.视频处理应用可以使用Blackfin处理器专用的视频处理指令,提高执行效率.

    将最耗时的一些函数用汇编语言改写,充分利用Blackfin处理器的S1MD结构的优点和硬件上的并行性,在一个指令周期内执行多个操作,减少函数执行需要的指令周期.最耗时的函数有宏块解码函数decode_one_macroblock、逆整数变换函数itrans、去块效应滤波函数EdgeLoop、滤波门限计算函数Get_Strength等函数.

    下面以4×4矩阵逆整数变换函数itrans和1/4像素插值滤波get_block(),说明用汇编指令优化带来的性能提高.4×4矩阵的逆整数变换函数itrans采用的是2级蝶形运算,先对4×4矩阵的每一行分别做行逆变换,再对每一列做列逆变换.一维变换采用如图2所示的蝶形算法.

    Blackfin处理器的SIMD结构支持向量操作,最多可以在1个周期内完成4个16位的加法操作.它的并行指令能同时进行算术运算和两个数据的装载/存储操作.例如上述的蝶形运算可以用如下指令实现(设寄存器IO中保存了输人数据y[4][4]的地址,I2中保存了系数数组cof[2]={0x7fff,0x4000}的地址,Il中保存了临时变量tmp[4][4]的地址,R2和R1保存的是中问结果):

    R7=[IO++];

    Al=R6.I*R7.1,AO=R6.1*R7.1(IS)┃│I R5=

    [10++]┃┃[││++]=R2;

    R4.h =(A1一一R5.1*R6.1),R4.1=(AO+=R5.1*R6.1)(IS)││W[I1++]=R1.h;

    R7.1=R6.1*R5.h(IS)1 W[11++]=R1.1;

    R5=R7>>>1(v);

    A1=R6.1*R5.h,AO-R6.1*R5.1(IS);

    R3.h一(A1+一R6.1*R7.1), R3.1一(AO =R6.1*R7.h)(IS);

    R2=R4+l+R3,R1=R4一│ 一R3:

    完成一次一维逆变换只需8条指令,算上函数调用的开销和其他一些辅助指令,完成一个4×4矩阵的逆整数变换时总共需要82条指令周期.表1是优化前、后的比较.

    get_block函数对像素矩阵进行1/4像素插值操作.先用六阶滤波器进行1/2像素插值,然后用线性内插法进行l/4像素插值.

    l/2像素b计算方法为:b=round((E一5F+20G+20H一5I+j)/32).示意图如图3所示.E、F、G、H、I、J是整数像素,b是G和H之问的1/2像素.

    像素的亮度值为unsigned char类型,先利用并行指令可以在1个指令周期内将8个像素的亮度值读到寄存器,然后利用视频专用指令将4个字节解包到1个寄存器对(R1:O或R3:2)中去,利用向量指令在1个周期内进行2次乘加操作.通过视频专用指令、向量指令和并行指令的使用,减少了函数指令的指令周期数.

    4 实验结果

    在EZKit533开发板上测试了解码器算法,对CIF格式(352×288)的foreman测试序列,可以达到45~50帧/s的解码速度;对CIF格式的mobile测试序列,能够达到40帧~44帧的解码速度.如果增加解码速率控制模块,可以稳定地实现以30帧/s的速率播放CIF测试序列.实验结果证明,在Blackiln处理器上实现H.264实时解码器是可行的.ADI公司甚至声称可以在600 Mtz的BF533处理器上实现D1(720×576)格式的视频实时解码器.

H.264解码器中CABAC硬件加速器的实现

    H.264是由国际电信联盟(ITU)和国际标准化组织(ISO)共同制定的新一代视频编码标准,该标准采用一系列先进的编码技术,在编码效率、网络适应性等诸多方面都超越了以往的视频标准.H.264有两种熵编码方案:一种是从可变长编码方案发展而来的基于上下文的自适应可变长编码CAVLC;另一种是从算术编码发展而来的基于上下文的自适应二进制算术编码CABAC.与CAVLC相比,CABAC可以节省约7%的码流,但增加了10%的计算时间.在解高清码流时,用软件来做CABAC这样复杂的熵解码,无法完成实时解码的任务,因此,设计硬件加速器是非常必要的.

    CABAC解码算法

    在H.264解码器的输入码流中,数据的基本单位是句法元素(Syntax Element),码流是由一个个句法元素依次衔接而成的.每个句法元素由若干比特组成,表示某个特定的物理意义.在H.264定义的码流中,句法元素被组织成有层次的结构,分别描述序列(Sequence)、图像(Picture)、片(Slice)、宏块(Macroblock)、子宏块(Subblock)五个层次的信息,CABAC主要负责对片层以下的句法元素进行解码.

    CABAC解码的总体过程可以分为三个步骤:初始化、二进制算术解码归一化、反二进制.

    初始化

    该过程在每一个片开始时执行,包括上下文模型变量(CONtext Variable)的初始化和解码引擎(Decoding Engine)的初始化.

    二进制算术解码和归一化

    二进制算术解码是CABAC解码的核心部分,该过程实现1bit数据的解码,对每个句法元素进行解码都需要调用该过程.H.264中二进制算术解码有三种模式:规则解码(Decode Decision)、旁路解码(Decode Bypass)和结束解码(Decode Terminate).对不同句法元素进行解码时,分别调用这三种模式的一种或多种.

    反二进制化

    CABAC定义了四种二进制化方法:一元码(Unary)、截断一元码(Truncated Unary)、K阶指数哥伦布码(kth order Exp-Golomb)和定长码(Fixed-Length).一个句法元素可以对应一种或两种上述二进制化方法,但特殊的是,句法元素mb_type和sub_mb_type的反二进制化独立于上述四种方法,它们通过查表来实现.

    CABAC硬件加速器的架构设计

    H.264解码器的软/硬件划分

    H.264解码过程采用软/硬件联合的解码方案,整个解码器由32位CPU、DSP结构的运算单元和硬件加速器组成.CABAC熵解码部分,主要是一些判断和分支操作,数据接口、吞吐量不大,这些任务由软件和硬件加速器共同完成.本文设计的CABAC解码模块就是一个CABAC硬件加速器.

    CABAC硬件加速器的总体构架

    CABAC硬件加速器的总体架构如图1所示.其总体架构分为两层:顶层是CABAC_TOP;底层有7个模块,包括CABAC_Center_ Control_Unit、Context、 Neighbor_MB_Information, Context_Init、AC_next_ state_LPS、 AC_next_state_MPS和RangeLPS.

    CABAC_Center_Control_Unit模块负责上下文模型变量的初始化,解句法元素,更新Context,并将解出的残差数据传给IQ&IDCT模块;Context模块是双口RAM,存放459个上下文模型变量,可同时对一个地址的上下文模型变量进行读操作并对另外一个地址的上下文模型变量进行写操作;Neighbor_MB_Information模块是SRAM,存放宏块信息,CABAC解码器在解析当前宏块中的句法元素时,需要参考上面和左面宏块的信息,因此,需要在该SRAM内保存图像中当前宏块的上一行宏块和该行之前宏块的信息,每解完一个宏块更新该SRAM;Context_Init模块是一块片内ROM,用于初始化变量;3个查找表模块AC_next_state_LPS、AC_next_ state_MPS和RangeLPS由组合逻辑实现,用于二进制算术解码过程中的查表运算.

    CABAC的硬件化分析

    本设计的目标是使整个H.264解码器的芯片能够对高清图像(1920×1088)进行实时解码.假设芯片工作在166MHz的频率下,图像播放速率是25fps,则平均解一个宏块的时间是823个时钟周期.考虑到H.264熵解码部分的运算总体上是串行解码,并行性较差,因此CABAC硬件加速器需要在3个时钟周期内完成1bit数据的解码.假设视频图像的压缩比为20:1,YUV为4:2:0取样,因为取样值是8bit,则每个像素为8bit×1.5=12bit.CABAC的解码率约为1:1.2,所以CABAC要解的码流是(1920×1088×12bit/20)×1.2,约1.43Mb.芯片工作频率是166MHz,每3个时钟解出1bit,则解码数据率约为55.3Mbps,本设计在解码时CABAC占用了90%,约为49.8Mbps.因此解码速度为49.8/1.43,约34.7fps,即1s可以解34.7帧,则解1帧(1920×1088)大约需要28.8ms.

    为了达到该目标,CABAC硬件加速器的设计必须对核心的二进制算术解码进行优化.根据归一化算法的特点,即循环的次数可由输入的codIRange、codIOffset和查表得到的codIRangeLPS事先判断出来,因此可以合并二进制化和归一化这两个步骤,使其在1个时钟周期内完成.由于篇幅有限,下面仅以三种模式中的规则解码为例,说明二进制算术解码和归一化的硬件化,旁路解码和结束解码可参考H.264协议.

    规则解码的二进制算术解码和归一化过程主要包括比较、减法、查表、移位操作.在H.264中,为了减少计算的复杂度,CABAC首先建立一个64×4的二维表格rangeTabLPS[64][4],存放预先计算好的乘法结果.表格的入口参数是pStateIdx和qCodIRangeIdx,其中qCodIRangeIdx由变量codIRange量化而来,量化方法是(codIRange>>6)&3.其Verilog HDL实现如下:

    建立了概率模型和乘法模型后,在递进计算过程中CABAC必须保存一下变量:当前区间的下限codIOffset、当前区间的大小codIRange、当前MPS(大概率符号)字符valMPS、LPS(小概率符号)的概率编号pStateIdx.transIdxLPS[pStateIdx]和transIdxMPS[pStateIdx]是两个深度为64项的表格,其中pStateIdx的取值为0~63.接下来是归一化判断,当codIRange小于0x0100时,需进行归一化.这样就能在1个时钟周期内完成二进制化和归一化两个步骤,其Verilog HDL实现如下:

    CABAC的加速策略

    状态机的设计

    二进制算术解码的状态机是本设计的核心,该部分效率的高低将直接影响到CABAC硬件加速器的解码速度.在CABAC模块没有被启动时,状态机将一直停留在初始状态,当一个新片开始时,初始化解码引擎;当收到CPU发出的解码请求时,首先进入预解码状态,读取上下文模型变量,然后在下一个时钟进入二进制算术解码状态,完成1bit数据的解码.在CABAC解码过程中,系统会根据句法元素的种类和当前数据的位置选择解码模式.

    流水线的设计

    CABAC对1bit数据进行解码的过程可分为两个步骤:读取上下文模型变量、解码并更新上下文模型变量.本设计采用两级流水线结构,在对当前数据进行解码的同时,可读取下个数据的上下文模型变量,因此加快了解码速度.

    码流读取的双缓冲设计

    在进行解码的时候,为了提高传输效率,采用双缓冲的形式.在总线给其中一个缓冲传输数据的时候,解码器可从另外一个缓冲里读取数据进行解码,从而使传输和解码同时进行,有效提高了传输效率.

    设计结果与性能仿真

    在设计完成后,利用JVT提供的标准测试码流进行测试,通过了仿真验证.结果显示,本设计平均每2个时钟周期可完成1bit数据的解码.

    在SMIC 0.18mm CMOS工艺标准单元库的基础上进行DC(Design Compile)综合,硬件加速器的面积为0.38mm2(不包括片外SRAM所占用的面积),工作频率可达166MHz,达到了预期要求.

    为了显示硬件加速器的优势,选择参考软件JM7.4的函数biari_decode_symbol完成二进制算术解码和归一化.Visual C++6.0编译器的编译结果显示该函数使用了109个汇编指令,因此用软件完成1bit数据的解码至少需要100个时钟周期.而利用本设计完成同样的步骤时,最多只需3个时钟周期,很好地达到了加速器的作用.

    结语

    由于采用了一系列的优化方案,同时,在设计时考虑了解码速度及解码系统中各个模块之间的协调,本文实现了熵解码CABAC的快速解码,能完成高清码流的实时解码任务,在视频解码芯片中有很好的应用价值.

基于H.264的Exp-Golomb解码器ASIC设计

    ITU-T(国际电信联盟)和MPEG(运动图像专家组)联合推出了新一代视频压缩标准H.264/MPEG一4-10 AVC.它在DCT变换、熵编码、去块滤波等方面采用了一系列新技术,在相同的重建图像质量下比H.263和MPEG-4节约了50%的码率,在高码率应用中表现更加优越.同时,它具有良好的网络亲和性,对网络传输具有更好的支持.

    但是,在获得优越性能的同时,H.264编码和解码的计算量和复杂度均有大幅度提升.H.264算法在编码端比H.263复杂3倍以上,在解码端复杂2倍左右.对于较高分辨率的视频源,单纯依靠软件方式实现H.264视频压缩算法,往往不能胜任,尤其难以进行实时解码.因此,采用硬件方式实现H.264视频压缩算法具有重要的意义.

    本文的研究目标是设计H.264标准中的Exp-Golomb解码器,在对其算法进行深入探讨的基础上,提出了一种高效且低成本的ASIC实现方案.

    Exp-Golomb编码原理及解码算法分析

    在H.264基本规范中,除了残差变换系数采用CAVLC编码方式外,其它句法元素均使用Exp-Golomb编码.Exp-Golomb编码是一种有规则的变长编码方式,在各类视频编码标准中被广泛应用.Exp-Golomb编码基于符号的概率统计进行编码,用短码字来表示出现概率高的信息,用长码字来表示出现概率低的信息,码长与被编码数成指数对应关系,从而使总体平均码字最短.与定长编码方式相比,节省了大量存储空间.

    在H.264中采用的是0阶Exp-Golomb编码,编码规则如图1所示.

    Exp-Golomb码字的逻辑结构为:[M zeros][1][INFO].其中M个"0"和中间的"1"称为前缀,INFO是M位的信息值,因此,每个Exp-Golomb码字的长度都为2M+1.每个索引字codenum经过编码都可以对应一个如上结构的码字,它们之间的关系是:

    codenum=2M+INFO-1 (1)

    由式1可知,进行Exp-Golomb解码可先探测出码字前连续"O"的个数,再取出后缀,经该公式计算即可得到codenum值.在H.264中存在四种Exp-Golomb码:无符号型ue(v)、有符号型se(v)、映射型me(v)和截断型te(v).因此,对于解出的codenum值,根据句法元素类型的不同有四种映射方式,如表2所示.根据相应描述完成映射后,输出syntax即为解码值.

    Exp-Golomb解码器硬件结构设计

    基于以上解码算法设计的Exp-Golomb解码器硬件结构如图1所示.整个系统主要由以下模块组成:输入码流缓冲移位模块、码长检测模块、codenum生成模块以及句法元素映射模块.系统上电复位后,首先由码流缓冲移位模块提供待解码字,然后由码长检测模块中的首一检测器探测出连续"0"的个数,即时计算得出当前码长送至累加器.同时,首一检测的结果和待解码字一起送至codenum计算模块,经移位、相减得到codenum值.最后将codenum送至四个映射单元处理,最终解码句法元素由选择器输出至寄存器.整个解码流程用一个时钟周期完成.下文将详细叙述各功能子模块的硬件结构.

    输入码流缓冲移位模块

    输入码流缓冲移位模块是实现H.264实时解码的关键模块.由于在每个变长解码流程中,码长不可能事先确定,所以在解出码值的同时必须定位下一个码字.这就要求该模块具有快速响应和并行输出的特点.由于H.264中定义Exp-Golomb码最大码长不超过32,设计中采用两个32位寄存器,一个32位桶形移位器及一个累加器的组合来实现该功能,如图1左端所示.其中,寄存器Rn负责从外部模块读取数据,并和寄存器R1一起作为桶形移位器的输入;在每个解码周期,桶形移位器移出已解码流的同时还要装载新的待解码流;而累加器则计数已处理码长,传送桶形移位器移位长度,判断并控制R0的读取和R1的更新.这样就为后续处理单元提供了连续不间断的码流.

    码长检测模块

    该模块的主要组成部件是一个16位的首一检测器,其功能是检测出输入序列中第一个"1"之前连续"0"的个数.码长(2M+1)的获取只需将首一检测的结果与一个"1"位进行位拼接即可实现,无需额外电路.另外,考虑到响应速度和路径延时,首一检测器的设计采用分组并行探测方式,其硬件结构如图2所示.输入的16位码流分成4组,每组4位均通过一个4输入与门,得到4位输出信号后送至优先编码器1,从而判断出首"1"所在区间.同时与门的四个输出还作为选择器MUX的控制信号,片选出存在首"1"的4位数据,并将其送至优先编码器2,判断出首"1"的具体位置.最后将两个编码器的输出进行位拼接即可得到首"1"前连续"O"的个数M.

    codenum计算模块和句法元素映射模块

    codenum计算模块用于实现公式1的功能,设计中采用一个16位的桶形移位器结合一个16位减法器实现.桶形移位器根据首一检测结果,重新定位码流指针,正确输出码字中[1][INFO]部分,最后将[1][INFO]减去1即可得到codenum值.

    关于句法元素映射模块,由于H.264中定义了四种:Exp-Golomb码,如前文表2所描述,存在四种不同的映射方式,本设计中采用四块组合映射逻辑加一个多选器实现,具体结构如图1右端所示.其中ue直接等于codenum,se与te的映射则分别采用包含二选一电路的简单组合逻辑实现,而me的实现较复杂,需查找H.264标准中定义的运动矢量、量化参数的映射表格,设计中采用ROM结构实现查表.

    综合、仿真结果与性能分析

    在上述硬件架构下,使用Verilog HDL进行Exp-Golomb解码器电路设计,并在Xilinx公司的ISE 8.2开发环境下进行了功能验证,选择Virtex 2系列的XC2V250器件.使用Synplify 7.7软件进行逻辑优化与综合,系统时钟频率可达104MHz.ISE完成布局布线后,通过ModelSim 5.8调用JM86生成的测试向量进行后仿真,最后与软件的计算结果相比较,验证了设计的正确性.

    使用Synopsys公司的Design Compiler工具在0.18μm的SIMC CMOS工艺条件下,对RTL代码进行综合优化,时钟频率最高可以达到200MHz.通过设置不同的面积、时序及功耗约束条件,缩短关键路径的延时,综合出等效门数2276门、时钟频率为162MHz的最优设计.在此工作频率下,该Exp-Golomb硬件解码器电路解出一个句法元素只需耗用单个时钟周期,因此本设计可满足H.264高清晰度视频实时解码的要求.

    结语

    本文在分析H.264标准中Exp-Golomb解码算法的基础上,提出了一种高效、省面积的Exp-Golomb解码器架构.在Xilinx公司的ISE 8.2开发环境下使用Virtex 2平台对设计进行了验证,使用Synopsys公司的DC工具在SMIC 0.18μm CMOS工艺条件下,对设计进行了面积和时间的优化,在162MHz时钟频率下工作时,电路等效门数为2276门,达到了预期目标,为下一步工作打下了良好的基础.

H.264解码器中一种新颖的去块效应滤波器设计

    图像的编解码技术是多媒体技术的关键,H.264/AVC是国际上最先进的视频压缩技术,其主要特点是采用小尺寸整数余弦变换、1/4像素的运动估计精度、多参考帧预测,基于上下文可变长度编码和环路内去块效应滤波器等技术.由于去块效应滤波器大约占整个解码器1/3的运算量,因此该部分的设计成为整个解码器设计的瓶颈,在此研究了一种新颖的环路内去块效应滤波器设计.设计中采用5阶流水线的去块效应模块,利用混合滤波顺序与打乱的存储更新机制的方法提高了流水线畅顺性,滤波一个16×16大小的宏块仅需要198个时钟周期.

    1 H.264/AVC的去块效应

    在基于块的视频编码方法中,各个块的编解码是互相独立的,由于预测、补偿、变化、量化等引起块与块之间的边界处会产生不连续,因此新版H.264/AVC标准采用了环路内去块滤波器来解决每个16×16宏块重建后的边界扭曲问题.去块效应滤波有两种方法:后处理去块效应滤波;环路内去块效应滤波.H.264/AVC采用环路内去块效应滤波(见图1),即滤波后的帧作为后面预测的参考帧.与之前的H.263或MPEG的滤波器相比较,新版H.264标准采用的滤波器基于更小的4×4的基本宏块,基本宏块的边界根据片级/宏块级的特性与根据像素穿过滤波边界的渐变度,对需要滤波的宏块边界进行有条件的滤波.重建帧的每个像素都需要从外部存储器中重调出来以进行滤波处理或作为相邻像素来判断当前像素是否需要进行滤波.显然,这些操作需要消耗巨大的存储器带宽,对像素值进行修改.

    本文设计的去块效应滤波模块采用流水线技术来提高系统吞吐量.理想流水线的高效率实现基于相邻的滤波操作没有数据性.文献[3,4]采用了非流水线的架构,因此无法提高系统的吞吐量.而对于流水线架构,如若不优化滤波顺序与存储器访问次序,则所产生的数据与结构冒险也将大大降低流水线的效率.有人使用双端口的片上SRAM来减少片外存储器的带宽,增加了系统的吞吐量,但是双端口存储器面积较大且增加功耗.与流水线的滤波器相比,非流水线滤波器的操作(包括条件判断、查表、像素计算等)是顺序化的,即每个时钟仅处理一个操作类型,因此它所能达到的最大系统频率要低很多.

    采用不同的边界滤波顺序,会大大的影响去块效应滤波器的性能.在H.264/AVC标准中,每个宏块的滤波顺序得到了描述,只要保持滤波数据依赖性,H.264/AVC标准所描述的滤波顺序可以被改进.其滤波顺序包括两类:顺序滤波和混合滤波.但是其滤波顺序以及相应的存储更新机制都是针对非流水线结构的,因此如果直接将之应用于本文的流水线设计,就有可能引发严重的竞争与冒险从而降低流水线的性能.

    2 去块效应滤波器的存储管理与滤波算法

    H.264/AvC标准基于4×4宏块作为滤波的基本宏块,它有5种滤波强度,分别是Bs=0,1,2,3,4.滤波方式分为强滤波、标准滤波和直通3种方式,其中强滤波影响边界两边的共6个像素,标准滤波影响边界两边的共4个像素,直通方式不修改边界两侧的像素.H.264/AVC标准规定先对垂直边界进行滤波,然后再对水平边界进行滤波,只有对垂直与水平边界全部滤波完成后,才可以对下一个宏块进行滤波.同一个宏块中,先对亮度部分进行滤波,再对色度部分进行滤波;色度部分滤波时,先对C6部分进行滤波,再对Cr部分进行滤波,对整个16×16宏块的滤波顺序如图2所示.

    (1)边界滤波强度与像素滤波的存储器

    按照H.264/AVC的标准,需要对被滤波的边界两侧的像素进行有条件的滤波.该条件决定于边界强度BS与像素穿越边界的倾斜度.边界强度BS:0,1,2,3或4,在进行滤波之前被赋给相应的边界.BS=4表示强滤波,BS=0表示不需要进行滤波,即直通方式;否则,BS=1,2,3表示中等强度的滤波,色度部分边界的滤波强度与对应亮度部分是相同的.滤波每条水平或垂直边界需要被提供边界两边的8个像素,p0~p3&q0~q3;需要更新的像素共6个或4个:p0~p2&q0~q2或声p0,p1&q0,q1.

    对一个16×16宏块进行滤波需要提供左边相邻像素、右边相邻像素和本宏块的像素.对于宏块边界,比如最左边界与最右边界而言,p0~p3与q0~q3来自不同的模块(即分别来自相邻宏块的像素与本宏块的像素);对于非16×16宏块的边界滤波,像素p0~p3与q0~q3均来自16×16宏块本身,因此至少需要4个存储单元:左相邻像素存储单元、上相邻像素存储单元、本身模块的像素存储单元和转换缓冲单元,每个存储单元的带宽是32位.

    当滤波从垂直边界向水平边界变换时,为了方便滤波过程中的存储器访问,这里利用额外的转换缓冲器BUF0~BUF3来缓存中间滤波数据,采用转换缓冲器后获取一行或一列像素的值(即p0~p3&q0~q3)只需要1个时钟周期,否则需要4个时钟周期.

    (2)滤波算法

    环路滤波的基本思想是:判断该边界是图像的真实边界还是编码所形成的块效应边界;对真实边界不滤波,对伪边界根据像素穿越边界的渐变度和编码方式进行滤波;根据滤波强度,选择不同的滤波系数对边界两侧像素进行滤波操作.滤波强度Bs=0的边界将不会进行滤波,而滤波强度Bs不为0的边界,依赖于获取的量化参数α与β,进行阈值判断,对邻近的像素进行有条件的滤波.当滤波强度Bs不是0,并且下面3个条件成立时,才对邻近像素进行滤波.

    直接计算α,β是非常困难,而且消耗了很多硬件资源,因此通过查找表(LUT)获取α,β的操作.像素的计算可以被分成下述两种类型:

    (1)Bs=4

    如果以下的两个条件成立,一个非常强的4抽头或5抽头滤波器将被用来对邻近像素进行滤波,修改像素p0,p1,p2.

    否则,若式(2)中有一个不成立,将不会对p1与p2进行滤波,只会对p0进行弱强度的滤波.对于色度部分边界的滤波,如果式(2)成立,只会对p0与q0进行滤波.

    (2)Bs=1~3

    亮度像素p0与q0的计算如下:

    而d_0是在裁减操作中被定义的:

    式中:c0来自于c1,而c1是通过查找两维的LUT表获取的.

    像素p1仅在式(3)成立的时候进行修改,同p0与q0修改的方式相同;而像素p2与q2对于滤波强度Bs不为4的情况下,不进行滤波.在色度分量进行滤波时,只有对p0与q0进行滤波,滤波的方式与亮度滤波的方式相同.

    3 流水线滤波架构

    3.1 流水线分析

    流水线技术适合于连续的批处理任务,当一个N阶流水线被灌满以后,系统在一个周期内可以并行处理N个任务,由此提高了整组任务的处理速度并增大了系统吞吐能力.如果相邻的滤波操作没有数据竞争,并且所有的阶段都被很好地进行了平衡,则滤波过程能够被进行流水线操作化并可将速度提高N倍数.然而,如若存在竞争与冒险问题,则无法实现.此时的主要任务是如何均衡流水线的各个阶段,如何把总的操作尽可能平均的分配给不同的流水线阶段,如何避免或消除竞争与冒险,以便获得一个比较平衡畅顺的流水线架构.按照去块效应滤波器模块的实现算法,大多数的关键路径位于以下操作中.

    (1)查找表操作:取得α,β,c1参数.α,β参数均需在查找表操作之前进行基于量化参数与片级偏移参数的计算中使用.当Bs=1,2,3时,为获取c1进行LUT操作,该操作比获取α,β的LUT操作大3倍.

    (2)当Bs=4时,需用4或5抽头的滤波器进行滤波,原来的p,q像素值需要进行移位、相加等操作,以得到最后的结果.

    3.2 流水线架构

    基于上述分析,这里提出了5阶流水线以提高吞吐量,见图3.由于整个任务被分配到不同的阶段实现,降低滤波的平均时间.

    4 阶流水线每个阶段的任务

    阶流水线每个阶段的任务为:获取像素与滤波强度;阈值判断;预滤波;二次滤波;回写.操作类型转换与可重新配置路径设计:首先进行操作类型的变换,使用加法与移位操作硬件替换了原来所有的乘法与除法硬件.当Bs=4时,滤波被3,4,5抽头的滤波器执行,尽管应用不同抽头数目的滤波器,仍考虑硬件复用以及输入数据路径重新配置.由于设计中的表达式采用两输入加法,因而可以公用加法的中间结果.此外,通过重新配置在不同滤波抽头系数时的加法器的输入,达到共享资源的目的.同理,当Bs=1,2,3时,通过输入路径的重新配置,同样达到共享加法与减法器,达到共享资源的目的,资源使用前后对比见表1.

    5 流水线竞争与混合滤波顺序

    5.1 流水线竞争的原因

    (1)数据竞争:当目的结果需要用作源操作数时;

    (2)结构竞争:由于有限的存储器带宽,大量而频繁的像素访问需要以及存储器的低效率管理而引起;

    (3)控制竞争:相邻边界的滤波是相对独立的,当一条边界进入它的流水线阶段时,它不能够停止,直到它的第5阶段新像素值回写存储器操作结束.控制竞争,由于分支语句或延迟等待引起的.

    5.2 一种新颖的混合滤波顺序

    传统的设计按照H.264/AVC标准使用了基本的顺序滤波,没有考虑到相邻滤波边界的数据重用与数据相互依赖性以及存储器的读与写访问延时,因此这里提出了新颖的滤波方法.新颖的滤波顺序仍然遵守先左后右,先上后下的原则,但是考虑了相邻边界的数据依赖性与重用性,解决了数据冒险与结构冒险问题,避免了流水线的延迟.滤波包括亮度部分与色度部分,共48条边界,滤波顺序按照如图4所示的从小到大的数字进行.

    5.3 新颖的存储更新策略

    考虑到外部存储器的带宽是32位的,为了配合这里提出的边界滤波顺序,避免由于存储器的带宽限制而引起的结构竞争从而导致流水线出现延迟,这里提出了新颖的存储器更新机制,即给不同的4×4宏块分配不同的时隙进行像素回写.

    去块效应模块被分配在整个解码模块的最后一步实现,而其它的重建步骤、像帧内滤波模块、帧间滤波模块均以4×4宏块为基本单位来进行流水线处理,但是由于去块效应滤波模块中不同边界之间的数据依赖关系,因而它是以整个16×16宏块为基本单位进行滤波的.此外,只有整个16×16宏块的像素重建完毕之后.才可以进行该宏块的滤波,因而使用了2个SRAM,一个为像素重建提供像素;另一个为像素滤波提供像素,当一个宏块被处理完毕,两个SRAM交换角色,这样避免在两个SRAM之间传递数据导致的时间与功耗开销.使用仿真工具对整个去块效应顶层模块DF_top进行了仿真,仿真部分结果如图5所示.

    6 结 语

    使用硬件描述语言完成了设计,并在FPGA平台上得到验证.设计采用流水线技术,混合滤波方法,配合新颖的存储器更新机制等方案,实时滤波频率上限约为200 MHz,吞吐量为滤波每个16×16宏块需要198个时钟周期.使用HJTC,CMOS工艺,使用Syn-opsys Co.的DC工具进行综合,时序分析以及功耗分析,结论是时序满足收敛要求,并且完成单个宏块的滤波消耗的能量大约为2μW,功耗得到了很大的降低.

H.264可扩展视频编解码器(SVC)应用详解

    编解码器被用于压缩视频,以减小传输视频流所需要的带宽,或者,降低把视频文件存档所需要的存储空间.这种压缩的代价就是增大计算要求:压缩比越高,对计算能力的要求就越高.

    在带宽与计算要求之间做出折中,对于定义承载编码视频流所需要的最小信道带宽以及编码设备的最小指标均有影响.在传统的像广播电视机这样的视频系统中,解码器的最小规范(在机顶盒的情形下)易于被定义.

    然而,目前视频被越来越多地由各种各样的应用所采用,相应地,有各种各样的客户设备,这些设备包括从计算机观看互联网视频,到便携式数字助理(PDA)以及小巧的蜂窝电话.针对这些设备的视频流必需是不同的.

    为了更好地兼容特定的观看设备以及信道带宽,必须采用不同的设置对视频流多次编码.每一个设置的组合必须向用户产生一个满足视频流传输所需带宽的视频流以及对观看设备进行解码的能力.如果原始解压视频流不可用,那么,编码视频流必须首先被解码,然后采用新的设置进行解码.这种做法是十分昂贵的.

    在理想的情形下,视频仅仅以高效率的编解码器被编码一次.如果经过解码的话,得到的视频流会产生全分辨率的视频.此外,在理想的情形下,如果较低分辨率或带宽的视频流需要被进一步延伸至网络之中,以锁定较低性能的设备,那么,可以不必采取附加的处理,就能够发送一小部分的编码视频.这种较小的视频流便于解码并产生较低分辨率的视频.以这种方式,编码视频流自身就能够适应它需要经过的信道带宽以及目标设备的性能.这些就是可扩展视频编解码器的品质所在.

    H.264 可扩展视频编解码器

    扩展至H.264的可扩展视频编解码器(H.264 SVC),被设计来传递上述理想情形的各种好处.它以H.264先进视频编解码器标准(H.264 AVC)为基础,并高度利用了原始编解码器的各种工具以及概念.然而,它产生的编码视频是空间上临时可扩展的,并且是在视频质量方面可扩展的.也就是说,它能够产生不同帧速率、分辨率或质量等级的解码视频.

    SVC扩展引入了一种原始H.264 AVC编解码器-在编码视频内的各层-不存在的概念.基础层对视频流的最低临时、空间和品质表现进行编码.增强各层利用基础层作为起点,对附加信息进行编码,从而在解码过程中把编码结果用于重构高质量、高分辨率或;临时的视频版本.

    通过对基本层以及仅仅是所需要的后来增强层进行解码,解码器能够以所希望的特征产生一种视频流.图1所示为H.264 SVC流的分层结构.在编码的过程中,要利用仅仅对较低级各层的参考,小心地解码一个特殊层.以这种方式,编码流可以在任意点被删节,但是,仍然维持有效的、可解码的视频流.

    图1:H.264 SVC分层结构.

    这种分层方法让所生成的一个编码流能够被删节以限制所消耗的带宽或者降低解码计算的要求.删节过程完全通过从编码视频流提取所需要的各层而构成.这个过程甚至能够在网络中执行.

    也就是说,随着视频流从高带宽转换为较低带宽的网络(例如,通过WiFi链路从以太网转换至手持),要针对可用的带宽调节视频流的大小.在上述例子中,要针对无线链路的带宽调节视频流的大小以及手持解码器的解码能力.图2显示了个人电脑把低带宽的视频流转为为移动设备视频流的例子.

    图2:调节等级以降低带宽和分辨率.

    H.264 SVC揭秘

    为了实现临时的可扩展性,H.264 SVC链接其参考帧以及预测帧,这与传统的H.264 AVC编码器稍微不同.SVC采用分层预测结构,如图3所示,而不是传统的内帧(I帧)、双向帧(B帧)以及预测帧(P帧)的关系.

    图3:传统的I、P和B帧的关系.

    分层结构定义最终视频流的临时分层.图4描述了可能的分层结构.在这个特殊的例子中,各帧仅仅根据上次出现的各帧进行预测.这就确保该结构不仅仅展示临时的可扩展性,而且显示了低的延迟.

    图4:在SVC中的分层预测帧.

    这个方案具有四个嵌套的临时层:T0 (基础层)、T1、T2和T3.由T1和T2各层构成的帧仅仅由T0层中的各帧预测.在T3层中的各帧仅仅由T1或T2各层中的各帧来预测.

    为了以3.75帧每秒的速度播放编码帧,仅仅构成T0的各帧需要被解码.所有的其它各帧可以被丢弃.为了以7.5fps的速度播放,要对构成T0以及T1的各层进行解码.在T2和T3中的各帧被丢弃.类似地,如果构成T0、T1和T2的各帧被解码,所得到的视频流将以15fps的速度播放.如果所有帧均被解码,那么,完全的30fps视频流被恢复.

    相比之下,在H.264 SVC(对于Baseline Profile来说,仅仅双向预测帧被应用)中,不管需要的显示率是什么,所有帧均需被解码.为了转换至一个低带宽网络,整个视频流均需要被解码,不需要的帧可以被丢弃,然后,重新编码.

    在H.264 SVC中的空间可扩展性遵循类似的原则.在这一情形下,较低分辨率的各帧被编码为基础帧.经解码和上行采样的基础帧被用于对较高阶各层进行预测.重构原始场景细节所需要的附加信息被编码为一个独立的增强层.在某些情形下,重用运动信息能够进一步增加编码效率.

    同时联播与SVC

    在H.264 SVC中存在于可扩展性相关的开销.正如我们在图3中所看到的那样,参考帧与预测帧之间的距离在时间(例如从T0至T1)上比传统的帧结构要长.在具有高运动图像的场景中,这能够导致效率稍低的压缩.为了对视频流各层级结构进行管理,也存在相关的开销.

    整体而言,跟不具备可扩展性的全分辨率以及全帧速率视频构成的H.264视频流相比,具有三层临时可扩展性以及三层空间可扩展性的SVC视频可能要大20%以上.如果采用H.264 编解码器对可扩展性进行仿真,就需要多个编码视频流,从而导致更高的带宽要求或贯穿网络的昂贵解码和二次编码.

    SVC的额外好处:

    误码恢复

    误码恢复的传统实现方法是把附加的信息添加至视频流之中,以便监测和校正误码.SVC的分层方法意味着不需要增加大的开销,就可以在较小的基本层上执行高级别的误码监测和校正.如果要把相同程度的误码监测和校正功能应用于AVC视频流中,那就需要把整个视频流保护起来,从而导致视频流更大.如果在SVC视频流中监测出误码,那么,就可以逐渐让分辨率和帧速率退化,直至-如果需要的话-只有高度受保护的基础层才可以使用.按照这一方式,在噪声条件下的退化要比在H.264 AVC环境下更让人可以接受.

    存储管理

    因为SVC视频流或文件即使在被删节的情况下仍然可被解码,SVC既可以在传输过程之中、也可以在文件被存储之后采用.把被分解的文件存储在光盘上并取消增强层,就可以在不对存储在文件中的视频流进一步处理的情况下,压缩文件的大小.这对于需要"要么全部管、要么不管"的方法进行光盘管理的AVC文件来说是不可能的.

    内容管理

    SVC视频流或文件固有地包含较低分辨率以及帧速率的视频流.这些视频流可以被用于加速视频分析的应用或分类各种算法.临时可扩展性也使得视频流易于以快速进退的方式搜索.

    H.264 SVC的典型应用是监控系统(Stretch公司在这个领域提供市场领先的解决方案,请访问其网站了解更多的细节).以IP摄像机把视频馈入视频内容被存储的控制间的情况为例,在视频流上要运行基本运动监测分析.在控制间显示器上,以摄像机最大的分辨率(1280 x 720)观看馈入的视频,并以D1 (720 x 480)的分辨率存储在保存光盘空间上.第一反应团队也在现场反应车内的移动终端上接入视频流.那些显示器的分辨率是CIF (352 x 240),而视频流的伺服速率为7fps.

    在利用H.264 AVC实现的过程中,首要约束可能就是该摄像机伺服多个视频流.在这个例子中,一个分辨率为1280x720,而另一个分辨率为720 x 480.在就给摄像机增加了额外的成本,但是,让视频流可以在控制间被直接记录,与此同时,另一个视频流被解码和显示.

    如果没有这一功能,那就需要采用昂贵的解码、重定尺寸以及重新编码步骤.D1流也可以被解码并重新调节大小,以转换为CIF分辨率,从而馈入在视频流上运行的视频分析(工具)上.CIF分辨率在时间上骤减以实现每秒7帧以及重新编码,以便让第一反应车通过无线链路加以利用.图5显示了利用H.264 AVC可能实现的一个系统.

    图5:H.264 AVC的视频监控应用.

    利用H.264 SVC编解码器,就可以放宽对摄像机伺服多个视频流的要求,降低系统复杂性,压缩摄像机与控制间之间的网络带宽.完整的1280 x 720视频流现在可以被存储在网络视频刻录机(NVR)上,这些文件可以被方便地分解,以创建D1(或CIF)视频流,从而在给定的时期之后把光盘空间腾空出来.CIF视频流可以直接由NVR伺服,以实现分析工作,而降低了帧速率的第二视频流可以被提供给第一反应车使用.图6显示了H.264 SVC的一种可能的实现方案.

    图6:H.264 SVC视频监控应用.

    因此,根本没有必要在视频流本身上进行操作,在业已存储的文件上进行操作就足够了.其优势是明显的:

    压缩网络带宽;

    具有灵活的存储管理;

    取消了昂贵的解码以及二次编码的步骤;

    如果需要的话,在NVR上的高清晰度视频可以用来归档;

    本文小结

    可扩展视频编解码器已经被开发了许多年.广播行业严格地受到业已建立的各种标准的控制,因此在采用这一技术上一直反应迟缓.处理器、传感器以及显示技术的进步正在点爆各种视频应用.互联网以及IP技术正无缝地把视频伺服至更为不同和远程的由显示设备构成的社群.可扩展视频编解码器----如H.264 SVC满足了许多这些系统的需求,并且它们可能促使视频被广泛采纳为通信媒介的催化剂.

现在有0人对本文发表评论 查看所有评论
 

更多最新词条 传递函数通常用于单输入、单输出的模拟电路,主要用在信号处理... 随着现在人对防范意识的不断提高,安防设备的重要性也日益提... Flash程序主要用as语言进行编写的一种程序,主要应用在动画等... GCC是一个用于linux系统下编程的编译器。虽然我们称Gcc是C语... WIFI天线主要是为了增强无线网络信号。 带通滤波器是可以由一个低通滤波器和一个高通滤波器组合产生... 数字家庭通过3C融合来实现。“3C”是计算机(Computer)、通... 交流电经过整流之后变成直流电,但是它的电压不稳定,供电电压... GPS天线主要是应用于全球定位系统(GPS)中,现在的GPS厂商可... MLCC基础知识及分类封装介绍、MLCC测试方法及多层陶瓷贴片电... 关于我们 | 广告服务 | 服务项目 | 付款方式 | 联系我们 | 友情链接 | 投诉 建议 合作 | 网站地图 | 加入收藏
Copyright © 2007-2009 WEEQOO.COM Corp.All Rights Reserved. 版权所有 经营许可证编号:浙B2-20050339 法律声明
维库电子旗下网站:维库电子市场网 | ChinaICMart | 维库电子开发网 | 维库电子人才网
总部:杭州市下城区朝晖路182号国都发展大厦1号楼80A
电话:0571-85889139-8016 QQ:467090989 | MSN:dzsc076@hotmail.com | 邮箱:weeqoomaster@21cn.com
H.264 - 维库电子开发网 通信电路:电子音乐门铃对讲双用机电路图 - 维库电子开发网 光敏电阻:简易的光控开关电路图 - 维库电子开发网 通用定时控制器电路-电子开发网 超声波测距仪的制作-电子开发网 PCB设计方法和技巧(5)a-电子开发网 过孔的作用及原理-1电子开发网 PCB Layout and SI 问答-电子开发网(转) 特性阻抗之诠释与测试1-电子开发网 科学网—科学家开发出新型电子“皮肤” 基于MATLAB 的DSP 调试方法-电子开发网 嵌入式系统高可用性应用软件设计 无忧电子开发网 PCB布线- 技术文章 - 中国电子顶级开发网 国内最顶级的开发... h虹口启动"电子书包"试点 数字化学习时代即将来临-虹口 电子书包—上海频道-东方网 国内电子报纸网址大全h 印制电路板设计原则和抗干扰措施-1电子开发网 静态时序分析(Static Timing Analysis)基础与应用(上)-电子开发网 LM331在AD转换电路中应用 无忧电子开发网 电子电路设计的基础知识[芯片介绍]_老古开发网 扫盲帖:电感式DC-DC升压器原理 中国电子开发网(www.ourdev.cn) 开发人脉资源的六大方法h 收集的英语学习资源网站 - 专业英语学习 - 中国电子顶级开发网 国内最顶级的开发者论坛-..... 静态时序分析(Static Timing Analysis)基础及应用(下)-page 2-电子开发网 收集的英语学习资源网站 - 专业英语学习 - 中国电子顶级开发网 国内最顶级的开发者论坛-...