`
fanxiaojun
  • 浏览: 54989 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

视频解码标准的实现及优化

阅读更多

1.引言 
        多媒体和网络通信技术的飞速发展,视频、图像、计算机视觉、多媒体数据库和计算机网络技术日益融合,使视频处理成为一个多学科的激动人心的领域,遍及国民经济和社会生活的各个方面。目前,视频处理处于多媒体通信的核心地位,而视频数据的巨大数据量成为其存储和传输的瓶颈。因此,视频数据的压缩成为解决多媒体通信问题的关键。 
       多媒体通信的实现主要有两点:一方面需要快速、稳定的处理器作为多媒体信号处理的平台,另一方面需要适合多媒体通信的协议标准和软件算法,尤其是对视频信号的压缩处理算法。两者结合才能产生高效的多媒体通信设备。

2.硬件平台的建立 
2.1 ADSP-BF5xx处理器 
        Blackfin系列DSP是美国Intel公司和ADI公司进行了战略性合作,发挥各自在RISC(精 简指令集)和DSP上的优势,合作开发出的体现高性能体系结构的定点DSP产品。 
        Blackfin系列DSP在一个芯片和一个开发平台上融合了DSP信号处理、RISC的控制处理和视频处理功能,具有高度的并行处理和强大的DMA(直接存储器访问)能力,具有专用的视频指令和硬件支持、高效的程序效率、动态的功耗管理和方便的开发工具、领先的内存管理,并支持包括ucLinux在内的嵌入式操作系统。适用于音频、视频和通信领域。
         Blackfin系列DSP支持一整套软硬件开发工具,包括ADI公司的仿真器和Blackfin系列DSP开发环境下的Visual DSP++ 4.0。程序员通过Blackfin系列DSP的Visual DSP++ 4.0项目管理环境,开发和调试一个应用程序。Visual DSP++ 4.0是一套使用方便的管理系统,它是各种用于开发DSP应用的DSP工程管理的工具组合。其主要结构包括:①集成了Visual DSP++ 4.0内核的集成编译和调试环境(IDDE);②带实时运行库的C/C++优化编译器;③汇编器和链接器;④仿真软件和程序例程。
          基于实时视频处理系统对DSP芯片性能的要求,以及Blackfin系列芯片的特点,我们采用Blackfin系列DSP中的ADSP-BF561作为DSP处理器。
 
2.2 基于ADSP-BF561的解码器平台 
        我们基于ADSP-BF561搭建的解码器平台如图1所示。输入的模拟视频信号经视频芯片ADV7183A转化为数字信号,此信号从ADSP-BF561的PPI2口进入ADSP-BF561。音频信号经AD1836 CODEC后从ADSP-BF561的SPORTS0口进入ADSP-BF561。解码后的码流中,音频信息仍经AD1836 CODEC后从ADSP-BF561的SPORTS0口输出,而视频信息则经ADV7179转换后从ADSP-BF561的PPI1口输出。此系统采用uclinux作为嵌入式操作系统,通过Flash启动,支持串口及网络传输。解码过程中的原始图像、参考帧等数据存储在SDRAM中。  


3.AVS视频解码标准的实现 
3.1 视频编解码标准简介 
          当前视频编解码标准主要包括两个系列,一个是MPEG系列,一个是H.26X系列。其中MPEG系列标准由ISO/IEC组织(国际标准化组织)制定,H.26X系列标准由ITU-T(际电信联盟)定。MPEG系列标准包括MPEG1、MPEG2、MPEG4等,主要应用于视频存储(DVD)、广播电视、特网或无线网上的流媒体等;ITU-T的标准包括H.261、H.262、H.263、H.264等,主要应用于实时视频通信领域,如电视会议。两个组织也共同制定了一些标准,H.262标准等同于MPEG-2的视频编解码标准,而目前最热门的H.264标准是MPEG-4的第10部分。AVS则是中国具有自主知识产权的视频编解码标准,主要面向于高清晰度电视、高密度光存储媒体等应用中的视频压缩。 

3.2 AVS视频编解码标准 
       目前,视频编解码技术正处于更新换代的关键时刻,国际标准H.264以其各方面较优的质量在很大程度上超越了原有的MPEG-4,成为下一阶段视频编解码的首选国际标准。与此同时,我国抓住数字视频编解码标准更新换代的历史机遇,在长期参与国际标准制订的基础上,并在相关部门的支持下,提出了具有自主知识产权的数字视频编解码技术标准AVS(Audio Video Coding Standard)。 
         国家信息产业部科学技术司于2002年6月批准成立数字视频编解码技术标准工作组,简称AVS工作组。在2002年的最初几次会议中,视频组专家统一了以当前国际上最先进的MPEG-4 AVC/H.264框架为起点,自主制订适合既定应用的中国标准。强调自主知识产权,同时充分考虑实现复杂度。工作组联合了众多大学、科研单位和公司参与了编解码方案的制订,经过7次AVS正式工作会议和3次视频组附加会议,历经一年半的时间,审议了182个提案,先后采纳了41项提案,最终完成了AVS标准的第一部分(系统)和第二部分(视频)的草案最终稿(FCD),配套的验证软件也已完成。
       AVS的主要创新在于提出了一批具体的优化技术,在较低的复杂度下实现了与国际标准相当的技术性能,而且并未使用国际标准背后的大量复杂的专利。 

3.3 AVS关键技术 
       AVS视频编码标准中具有特征性的核心技术主要包括:8×8整数变换(DCT/IDCT)、量化、帧内预测、1/4精度像素插值、特殊的帧间预测运动补偿、二维熵编码、去块效应环内滤波等。 

3.3.1 DCT/IDCT变换 
        DCT/IDCT属于变换编码,由于DCT/IDCT变换存在快速算法,易于硬件实现,因此DCT变换成为当前视频编解码国际标准之中的首选正交变换,在视频编解码技术中得到了广泛应用。目前为止,视频编解码大都采用了基于DCT/IDCT变换的处理办法,AVS解码标准中采用的是8×8的DCT/IDCT变换。 
        对于大尺寸的二维数值矩阵,倘若采用普通的DCT/IDCT变换来进行,其所花费的时间将是让人难以忍受甚至无法达到实用的。为了克服这一难点,人们提出了很多的快速算法。常用的方法是先将二维DCT/IDCT变换转换为两个一维DCT/IDCT变换,然后根据一维DCT/IDCT变换的蝶型图来实现DCT/IDCT变换的快速算法。8×8一维DCT/IDCT变换快速算法的蝶型图如图2所示。其中,正向为DCT变换的蝶型图,逆向为IDCT变换的蝶型图。 

3.3.2 帧内预测  
        S的帧内预测技术沿袭了MPEG-4 AVC/H.264帧内预测的思路,用相邻块的像素预测当前块,采用代表空间域纹理方向的多种预测模式。但AVS亮度和色度帧内预测都是以8×8块为单位的。亮度块采用5种预测模式,色度块采用4种预测模式,而这4种模式中又有3种和亮度块的预测模式相同。在质量相当的前提下,AVS采用较少的预测模式,使方案更加简洁, 实现的复杂度大为降低。 

3.3.3 帧间预测   
       帧间运动补偿是混合编解码技术框架中最重要的部分之一。AVS标准采用了16×16、16×8、8×16和8×8的块模式进行运动补偿,而去除了MPEG-4 AVC/H.264标准中的8×4、4×8、4×4的块模式,目的是能更好地刻画物体运动,提高运动搜索的准确性。实验表明,对于高分辨率视频,AVS选用的块模式已经能足够精细地表达物体的运动。较少的块模式,能降低运动矢量和块模式传输的开销,从而提高压缩效率、降低编解码实现的复杂度。 

3.3.4 去块效应滤波技术  
        块效应是在视频编解码中人眼察觉到的小块边界处的不连续,它是由视频编解码中的分块编解码引起的,使得图像的主观质量下降,码率越低,块效应越明显。 
        AVS视频解码的去块滤波算法是一种基于块边缘的环路滤波算法。在去块效应滤波时,先判断边界是图像的真实边界还是方块效应所形成的边界(假边界)。对真实边界不进行滤波处理,而对假边界则要根据周围图像块的性质和编解码方法采用不同强度的滤波。

3.4 AVS视频解码标准在ADSP-BF561上的实现  
       将AVS视频解码程序在DSP上实现,主要需完成以下两部分工作: 
       (1)将AVS视频解码参考程序(用C/C++语言实现)在PC机上运行和调试。 
       (2)在PC机端调试完成的AVS视频解码程序,移植到DSP端。
        由于ADSP-BF561的C/C++编译器支持标准C/C++编译,因此,在PC机上的C/C++代码并不用做较大的修改就可以移植到ADSP-BF561上。但值得注意的是,原有的视频编解码程序由于是基于PC机开发的参考程序,程序的结构并不适合DSP嵌入式系统。所以在将代码从PC端移移植到DSP端的时候, 需要注意内存分配、语法规则等问题。 

4.AVS视频解码标准在ADSP-BF561上的优化 
       通过把PC机上的AVS视频解码程序DSP化,可以在ADSP-BF561上实现AVS视频解码算法,但是,这样实现的算法运行效率很低,并不能达到要求,因为所有的代码都是由C/C++语言编写,并没有完全利用ADSP-BF561的各种性能,所以必须结合ADSP-BF561本身的特点,对其进一步优化。由于AVS解码程序复杂度较高,我们在开始优化之前首先需对其进行性能分析,找出AVS视频解码算法的瓶颈所在,便于我们更好地开展优化工作。我们在参考前人所做的相关性能分析的基础上,通过使用Visual DSP++ 4.0提供的profiling工具,对视频编解码的性能进行了分析,确定了代码中的低效率段。 
       通过分析我们会发现,IDCT变换、运动估计、模式选择及去块效应滤波部分占程序总运算量的比重很大,是AVS视频解码标准的瓶颈,因此这部分函数是程序优化的重点。这样,我们就对AVS视频解码标准的整体性能有了初步的了解,同时也找到了影响其性能的瓶颈所在,下一步便可以开始对其进行优化了。 
      对AVS解码程序进行了以下三个层次的优化:系统级优化(基于硬件结构的优化)、算法级优化、指令及汇编级优化。 

4.1 系统级优化  
       通过选择Visual DSP++ 4.0提供的编译优化选项,根据AVS视频解码的要求对优化选项进行选择和配置,可以达到明显的优化效果。但是需要注意的是,一旦选用了最高级别的优化,可能会影响程序的正确性,导致程序运行出现问题。因此,我们必须在充分了解编译参数的情况下选择合适的优化方案。 
        另外,与PC机相比,ADSP-BF561的程序数据存储空间非常有限。因此,对于视频解码这种需要处理大量数据的程序而言,必须合理安排数据和程序的存储方式,实现对存储器的优化,以便提高程序执行的效率。否则,大量数据的反复搬移会阻碍程序运行效率的提高。因此,我们在充分分析代码的基础上,把被反复调用的程序段放在片内程序存储区中,把频繁用到的数据段放在片内数据存储区中,把不常用到的程序段和数据段放在片外存储器中,以避免对程序或数据进行不必要的反复搬移。 
        在AVS视频解码程序运行过程中,由于一帧图像的数据量很大,故而将参考帧和当前帧数据放到片外,需要用到当前块和参考块数据时,再将它们从外存搬运到内存中,以便提高效率。 

4.2 算法级优化  
       算法级优化主要是利用视频编解码的自身特点,采用快速高效算法,从算法上挖掘潜力,提高运行速度,达到优化目的。例如,如前所述的将二维IDCT变换改为通过两次一维IDCT变换来完成,并进一步利用蝶型图等快速算法来显著地提高编解码效率等。 

4.3 指令及汇编级优化 
        指令及汇编级优化主要是针对ADSP-BF561的具体特点,进行代码的功能精简、数据结构优化、循环的优化、代码的并行化处理等。在整个算法实现的过程中,汇编算法的优化一定要与相对应的芯片的结构相联系。如寄存器的分配,乘法和加法运算的溢出等都要详细地考虑。在优化程序时将耗时函数抽取出来,用线性汇编改写,充分利用丰富的媒体处理指令,最大限度地利用ADSP-BF561的并行性。 
      a ) 使代码线性化 
     这样有利于DSP的流水线满负荷运行,更充分发挥ADSP-BF561的数据处理能力。
     b)减少对片外存储器的访问次数 
      片外存储器相对于片内存储器是低速设备,片外存储器的读取时间是片内存储器的几倍至十几倍对于片外存储器的数据,应尽可能做到一次读取,完成多次计算。 
     c)使用硬件循环代替软件循环 
       ADSP-BF561具有两组零开销硬件循环寄存器,通过使用硬件计数器代替软件指令来判断循环条件,执行循环。这样就保证了流水线的畅通,避免了不必要的时钟开销,提高了速度。 
     d)使用专用指令 
      ADSP-BF561提供了求最大值、最小值、绝对值及大量视频专用指令,通过使用这些指令,能大大提高代码的执行速度。例如,进行模式选择时会调用绝对差值求和函数(SAD),该函数虽然较简单,但调用频繁,对其进行汇编优化,能较大提高模式选择的速度。对于绝对差值求和函数(SAD),通过使用ADSP-BF561的专用视频指令SAA,可以大大提高运算速度。 
     e)使用并行指令和向量指令 
      ADSP-BF561中每条通用指令都可以和一条或两条存储器访问指令并列执行,这样有利于ADSP-BF561的流水线满负荷运行,更充分发挥ADSP-BF561的数据处理能力。向量指令可以同时完成两条或两条以上的运算,大大提高了运行效率。 
      用ADSP-BF561汇编语言编写的对应函数的优化程序经调试运行后,IDCT部分效率提高了大约15倍,去块滤波部分效率提高了大约6~7倍。对于模块中的其它部分函数,也同样取得了良好的优化结果,说明我们的优化工作确实达到了良好的效果。部分函数优化前后性能对比如表1所示。 
     在表1中,inv_transform_B8()、DeblockVBs2_Luma()和DeblockVBs1_Luma()分别表示AVS标准中所采用的IDCT函数、BS = 2时亮度块的滤波函数和BS = 1时亮度块的滤波函数;inv_transform_B8_asm()、DeblockVBs2_Luma_asm()和DeblockVBs1_ Luma_asm()是在相同的实验条件下,用ADSP-BF561汇编语言编写的对应函数的优化程序。第二列表示优化前的时钟数,第四列表示优化后的时钟数。  

5.结  论  
       本文选择我国具有自主知识产权的视频编解码技术标准AVS作为编解码算法的框架,以ADSP-BF561为基础进行了AVS视频解码标准的实现。并针对ADSP-BF561处理器的硬件特点,对AVS视频解码标准的具体代码进行了优化,使整个AVS解码标准代码的运行效率有了显著的提高。

分享到:
评论

相关推荐

    论文研究-基于ADSP-BF561的AVS视频解码标准的实现与优化 .pdf

    基于ADSP-BF561的AVS视频解码标准的实现与优化,杨飞,,AVS是我国自主开发的音视频编解码标准。本文首先介绍了视频编解码基本理论和AVS视频解码标准,介绍了基于ADSP-BF561处理器的硬件环境��

    论文研究-基于H.264的多视点立体视频解码器优化算法研究.pdf

    与平面(单视点)视频相比,多视点立体视频的数据量成倍地增加,对解码速度以及播放的流畅性影响很大,成为限制其广泛...最终达到了一定的解码优化效果, 并实现了播放器对264格式8视点立体视频文件的解码及播放功能。

    音视频-编解码-H263编码标准在DSP上的实现与优化.pdf

    音视频-编解码-H263编码标准在DSP上的实现与优化.pdf

    《MPEG-4_H.264视频编解码工程实践》配套CD代码

    主要内容包括:视频编解码原理及视频图像的捕获与显示、基于Visual C++2005分析MPEG-4/H.264编解码原理、基于TI DSP设计和优化开源工程(Xvid/x264/ffmpeg)、视频算法的标准接口xDAIS开发和视频监控中心软件设计等...

    基于H.264视频编解码DSP实现与优化

    基于H.264视频编解码DSP实现与优化,摘要:H.264是最新的视频编码国际标准,是图像通信研究领域的热点问题之一,利用高性能数字信号处理器来实现H.264:实时编解码是一种快速有效的方法,有助于H.264视频标准的...

    MPEG-4H.264视频编解码工程实践源码

    《MPEG-4/H.264视频编解码工程实践》介绍了基于Visual C++2005及TI DSP平台进行视频算法优化的实现过程和技术难点,并提供了书中所有源代码。主要内容包括:视频编解码原理及视频图像的捕获与显示、基于Visual C++...

    音视频-编解码-H264视频编码算法并行性研究及其在多核DSP上的实现.pdf

    H.264是国际上最广泛使用的视频编解码标准之一,广泛应用于视频会议、视频监控、数字电视、流媒体等领域。 H.264视频编码算法的特点是高压缩比、低比特率、低延迟、抗干扰能力强等。然而,H.264视频编码算法的计算...

    Qt + FFmpeg RTSP视频流解码,延迟0.2s以内!

    实现了一路Qt + FFmpeg RTSP视频流的解码,调用FFmpeg API实现,版本为FFmpeg 4.1.2。实测视频延迟为200ms 以内,已达到商业使用标准。

    音视频编码解码资料(花钱购买)

    |--------- x264视频编解码在linux下实现的源码 |--------- [pdf文档] h264中文协议(中英文对照)9 |--------- T-REC-H.264 |--------- H264新手入门(H264乐园聊天记录 |--------- h24-tw(台湾教程) |-------...

    Visual C++音频视频处理技术及工程实践(分卷0)

    15.4.2 ffmpeg-h264-vc工程实现H.264视频解码 612 15.5 本章小结 613 第16章 打造自己的DVR监控系统 615 16.1 DVR监控系统分析与设计 616 16.1.1 监控系统分类 616 16.1.2 监控系统组成 617 16.1.3 基于压缩板卡的...

    计算机毕业设计 - H.264视频编解码,保证可靠运行,计算机毕业生可参考,免费资源下载

    通过采用H.264标准,该项目实现了对视频数据的高效编码和解码,从而显著降低了视频传输和存储所需的带宽和空间。 在编码过程中,项目采用了先进的运动估计、变换编码、量化等技术,有效去除了视频信号中的冗余信息...

    单片机与DSP中的H.264视频解码器在C6416 DSP上的实现

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

    基于CEVA平台的WMV视频解码器优化

    针对VC-1标准下的WMV视频解码,提出了一种基于CEVA平台下的优化方案。该方案对运动补偿、去方块滤波、反量化、反变换的算法结构进行优化后,再利用CEVA的SIMD(单指令多数据处理)和VLIW(超长指令字)技术实现DSP...

    H.265标准——解码端

    H.265是ITU-T VCEG 继H.264之后所制定的新的视频编码标准。H.265标准围绕着现有的视频编码标准H.264,保留原来的某些技术,同时对一些相关的技术加以改进。新技术使用先进的技术用以改善码流、编码质量、延时和算法...

    H264编解码器系统设计以及优化

    实现并优化了标准C版本的H264标准高清解码器,目前该解码器支持 Main profile级别选项,Baseline profile以及 High Profile级别的部分选项。实验表明,在输出同样质量重建图像的情况下,与各开源标准解码器相比,...

    Visual C++ 音频/视频 处理技术及工程实践(分卷3)

    15.4.2 ffmpeg-h264-vc工程实现H.264视频解码 612 15.5 本章小结 613 第16章 打造自己的DVR监控系统 615 16.1 DVR监控系统分析与设计 616 16.1.1 监控系统分类 616 16.1.2 监控系统组成 617 16.1.3 基于压缩板卡的...

    Visual C++音频视频处理技术及工程实践(含源码2/2)

    15.4.2 ffmpeg-h264-vc工程实现H.264视频解码 612 15.5 本章小结 613 第16章 打造自己的DVR监控系统 615 16.1 DVR监控系统分析与设计 616 16.1.1 监控系统分类 616 16.1.2 监控系统组成 617 16.1.3 基于压缩...

    Visual C++音频视频处理技术及工程实践地址

    15.4.2 ffmpeg-h264-vc工程实现H.264视频解码 612 15.5 本章小结 613 第16章 打造自己的DVR监控系统 615 16.1 DVR监控系统分析与设计 616 16.1.1 监控系统分类 616 16.1.2 监控系统组成 617 16.1.3 基于压缩...

    Visual C++音频视频处理技术及工程实践(分卷7)

    15.4.2 ffmpeg-h264-vc工程实现H.264视频解码 612 15.5 本章小结 613 第16章 打造自己的DVR监控系统 615 16.1 DVR监控系统分析与设计 616 16.1.1 监控系统分类 616 16.1.2 监控系统组成 617 16.1.3 基于压缩板卡的...

    Visual C++音频/视频处理技术及工程实践(分卷2)

    15.4.2 ffmpeg-h264-vc工程实现H.264视频解码 612 15.5 本章小结 613 第16章 打造自己的DVR监控系统 615 16.1 DVR监控系统分析与设计 616 16.1.1 监控系统分类 616 16.1.2 监控系统组成 617 16.1.3 基于压缩板卡的...

Global site tag (gtag.js) - Google Analytics