上海妇科疾病研究所 上海女性不孕医院 上海引产医院 无痛引产痛不痛 上海人流医院 白癜风治疗医院 上海小儿脑瘫医院 上海女子医院
基于ADSP-BF561处理的H.264视频编码器设计[多图]-Blackfin-技术中心-国内专业ADI仿真器,Blackfin开发板,DSP芯片,软件算法,解决方案提供商-北京四维卓信电子有限公司
用户名: 密码:
主页 设为首页 加入收藏
      产品中心       技术中心       下载中心        社区新闻        诚聘英才       大学计划        关于我们       技术论坛
  您的当前位置:ADSP开源社区 >> 技术中心 >> Blackfin 今天是:
技术中心  
SigmaDSP
SHARC
A2B音频总线
Blackfin
ADI操作系统
ADSP-218X
TigerSAHRC
ADI DSP仿真器
产品导航
ADI DSP仿真器
SigmaDSP开发板
ADI A2B总线开发板
SHARC DSP开发板
销售网络
Blackfin  
基于ADSP-BF561处理的H.264视频编码器设计[多图]
[ 作者:admin ] [ 来源:ADSP开源社区 ] [ 发布时间:2011-5-23 ]

0 引言
  H.264/AVC是ITU-TVCEG和ISO/IEC MPEG联合制定的最新视频编码国际规则,是目前图像通信研究领域的热点疑问之一。H.264的视频编码层(VCL)采用了许多新技能,因而使得编码性能大幅度提高。与以往的视频编解码规则相比,在相同的码率下,H.264具有更佳的图像质量,这使得H.264在无线通信和网络传输等低码率视频运用 领域得到了更为广泛的运用 。但这是以复杂度的成本添加为代价的,故使H.264在实时视频编码及传输运用 中面临巨大的挑战。而用高性能数字信号处理器(DSP) 来实现H.264实时编码器是一种高速有效的要领,有助于H.264视频规则的快速推广和运用 。ADSP-BF561处理器性能卓越,具有600 MHz的主频,且集成了一套通用的数字图像处理外围设备接口,从而为多媒体和图像运用 建立了一个圆满的系统级片上处理方案。本文针对低码率视频传输的须要,研究并实现基于H.264规则的视频编码系统,同时探讨H.264软件编码器在DSP上的实现及优化要领。
  1 H.264编码算法及ADSP-BF561简介
  在实际开发流程中,针对H.264的算法特性和ADSP-BF561双核处理器的结构特征,本文做了大量优化工作,从而在保证编码精度的同时,大幅度提高了编码速度。下面简要介绍H.264视频编码算法和ADSP-BF561双核处理器系统。
  1.1 H.264编码算法
  H.264是ISO和ITU联合制定的新一代视频编码规则,具有很高的压缩比和很好的鲁棒性。其整体框架如图1所示。
基于ADSP-BF5619处理的H.264视频编码器设计[多图]图片1
  查看原图(大图)
  在继承了原有视频编码规则的基础上,H.264作了多方面的改良,包括引入4×4子块和16x16子块共9种模式的帧内预测。帧内模式的引入是为了与变换编码一起用于消除空间上的冗余,进而大大提高编码效率。在帧间模式中,H.264可支撑多尺寸的运动估计和补偿。其帧间预测时块的大小不是固定的8x8,而是可以从4×4到16x16,并且包括长宽不等的块(共7种类型),同时支撑多参考帧,故可大大提高预测性能。此外,H.264还采用整数DCT变换来降低计算量,同时采用自适应算术编码来提高编码效率,并可运用 滤波器消除低比特量化带来的块效应等。事实上,H.264的效率比现有的编码技能可提高 50%。

1.2 ADSP-BF561芯片结构
  ADSP-BF561是一种双核750 MHz处理器,具有对称多处理(SMP)系统结构。其SMP结构在信号处理和控制功能的集成和分割方面能够为用户提供较高的性能和较大的设计灵活性。 ADSP-BF561的系统结构如图2所示,它包含coreA和coreB两个核,每个核的处理频率可达750MHz。两个核都有各自独立的32KB L1指令存储器(16KB Cache/SRAM)和64KB L1数据存储器(32KB Cache/SDRAM),并可共享128KB L2存储器。两内核访问不同内存时,其速率有明显差异,其中访问L1存储器最快,L2次之,而访问片外内存和设备则最慢。
  由于访问存储器速率的差异。双核之间执行 数据交换最好在L1段直接执行 ,而且须要运用 IMDMA控制器。这个DMA控制器的主要功能是在双核之间的L1存储器之间执行 数据交换。运用 IMDMA控制器可以在访问速率比较慢的片外内存或者对L2执行 数据处理操作时,提高数据处理的速率,进而提高编码效率。
基于ADSP-BF5619处理的H.264视频编码器设计[多图]图片2
  查看原图(大图)
  2 H.264视频编码算法的优化与实现
  对编码器的优化主要是对P帧编码流程的优化和对ADSP-BF561双核处理系统的优化,合理的流程有利于各种模块的独立性和完整性,同时有利于以后只针对某个模块的优化或升级处理。而运用 ADSP-BF561的双核协调处理优势可以进一步提高其速度。
  2.1 P帧编码流程的优化
  由于H.264编码算法比较庞大,对程序细节上执行 优化事实上无法带来明显的效率提高,所以应对程序流程本身执行 调整。在H.264编码器JM86版本中,I帧、P帧的编码采用同一模块,这样就有大量帧内、帧间宏块的重复判断,故使编码速度受限。Micro_h264编码软件模型针对这一缺点执行 了处理,将I帧、P帧的编码提取出来分别独立编码。但是遗憾的是,micro_h264编码软件模型对一帧图像的宏块执行 编码是按照宏块在图像中的光栅扫描顺序一一执行 的,没有考虑到宏块在一帧图像中的不同位置有着不同的特征,而且对这些宏块采用统一模式执行 编码,也会产生很多判断条件,这不但不利于DSP的流水操作,也不利于模块的优化。本文针对这一个缺点对micro h264的P帧编码流程执行 优化。

根据宏块在一帧图像中位置的不同,可以对不同位置的宏块分别独立执行 编码。同时,根据子块在宏块中的不同位置,也可以对其执行 独立编码。
  一帧图像被分成多个宏块时,不同位置的宏块有不同的特征。因此,可以根据宏块在一帧图像中的不同位置来对宏块执行 分类,以将具有相同编码特征的宏块归为一类,这样,可以将帧图像的宏块分成五类。图3所示是其宏块分类图。
  通过对宏块执行 分类,可对不同的宏块调用不同的函数来对其独立编码,从而减少很多不必要的判断,这样就不会打断DSP的流水操作,达到提高速度之目的,同时在执行 优化时也更具针对性。
  本编码器在P帧编码时,只用了一帧参考帧,并且改良了micro_h264编码器软件模型所运用的对宏块编码模式逐一遍历的算法,而是采用宏块编码模式高速挑选算法。P帧编码的流程图如图4所示。
基于ADSP-BF5619处理的H.264视频编码器设计[多图]图片3
  查看原图(大图)
基于ADSP-BF5619处理的H.264视频编码器设计[多图]图片4
  查看原图(大图)
  运行平台的不同,软件结构也应该根据各自的特性做些调整。较低复杂度的编码器可将多个不同类宏块独立出来单独处理,这样可以省去许多中间的重复判断,不仅能提高编码速度,同时程序结构也显得更为清晰,而且,由于各个模块的相对独立,也有利于程序的扩展。虽然这样在一定程度上添加了代码量,但却能有效地提高编码速度。
  2.2 ADSP-BF561双核处理系统的优化
  为了保证编码器的稳定工作,本文把内核定位在600 MHz,如果能在600 MHz的基础上实现4CIF格式的实时编码,那么,提高内核处理频率就能支撑更高质量的4CIF格式的视频编码处理。为了实现25帧图像的实时编码,每帧须要的时钟周期数为600 MHz/25=24MHz,即须要在24 MHz时钟周期数内编码一帧。大约相当于在6 MHz内执行 一帧CIF格式的视频处理,显然,如果运用一个核是很难做到实时编码处理的。本文不同于大多数双核系统的一个核运行操作系统,而另一个核运行其它软件的工作方式,是将编码器放在两个核内同时执行 处理。

在ADSP-BF561开发板上实现这个编码算法时,其主要的难点是两个核之间如何 通信以及协调工作。双核同时运行一个视频编码程序时,须要对数据执行 共享和交换。虽然,运用片外内存或者L2共享存储器来执行 宏块数据交换的实现要领比较基本,且不须要执行 数据的拷贝,但是,大量访问低速率存储器的操作将极大地影响程序执行的速率,进而影响编码器的编码效率,所以,无法采用共享内存来执行 宏块数据的交换。本文采用的是IMDMA在双核各自的L1数据段直接执行 数据交换,而且在编码处理的同时执行 内存数据的交换,从而防止了大量访问低速率的存储空间操作,减少了程序执行的时间。而由于消息交换数据量很小,可以运用共享存储器,因此,可以采用访问速率相对较快的L2存储器来执行 存取。事实上,笔者已经经过优化编程在BF561开发板上实现了上述编码算法。其双核编码主流程如图5所示。
基于ADSP-BF5619处理的H.264视频编码器设计[多图]图片5
  查看原图(大图)
  3 试验结果与数据剖析
  经过优化,H.264的编码性能有了较大的提高,实现了在BF561芯片上对4CIF格式视频的实时编码处理。同时,笔者还在 VisualDSP++5.0编译环境下分别对原编码器和双核编码器实现的编码结果执行 了测试,其结果如表1所列。事实上,编码速度基本取决于图像画面的运动情况和颜色能无法 丰厚。从上面的数据可以看出,对于不同序列,其编码速度也不同。Claire序列的编码速度之所以很快,是因为图像背景静止,只有肩部和头部有运动,所以编码数据量较表1对不同序列的优化结果(25f/s CIF格式)少,编码速度较高。另外,如果图像比较基本,其编码速度也会较高,从而节约编码时间。
基于ADSP-BF5619处理的H.264视频编码器设计[多图]图片6
  查看原图(大图)
  试验结果表明,采用本文的优化要领可以节约大量的H.264视频编码数据处理的时间,能较好地满足4CIF视频序列实时编码的要求。而对于很复杂的图像,也可以在一定的量化参数下实现4CIF的实时编码。
4 结束语
  本文重点研究了基于ADSP-BF561双核处理器的H.264视频编码算法的优化及其实现要领。同时针对ADSP-BF561双核处理器的体系结构,对编码的关键部分执行 了算法流程的调整,并通过BF561双核之间的数据交换和协调工作,在双核上实现了4CIF格式视频数据的实时编码。实践证明,运用 VisualDSP++5.0仿真软件,在ADSP-BF561开发板上实现25f/s的H.264 4CIF视频编码系统,可以满足人们对视频传输的需求。



联系我们 | 关于我们 | 免责声明 | 诚征英才 | 友情链接
Copyright 2019 All rights reserved  本网页版权属Open ADSP所有
北京海淀区中关村大街32号新中发市场3659 邮编100100
电话 18611096839 
粤ICP备14035876号-1