手机端
or

欢迎您加入我爱方案网QQ群

1.智能产品外包服务群(311606115)
2.嵌入式项目开发群(491609563)

基于达芬奇平台的H.264滤波器优化设计

沈道宁; 陈耀武| H.264编解码,环内自适应去块滤波器,TMS320DM6437芯片,滤波强度,判断| 2010-12-27
918 收藏
分享到: 
每日精选
热门推荐

【中心议题】

  •        *给出了一种H.264滤波器在达芬奇平台下的优化设计  
  •        *分析了具体的优化措施及结果

【解决方案】

  •        *对算法本身特别是滤波强度判断部分的优化
  •        *利用达芬奇平台的特点提出了整套优化方案

1 概述

H.264/AVC是由国际电信联盟和国际标准联盟共同制定的视频编解码标准,除了拥有更良好的压缩比外,H.264算法还引入了环内自适应去块滤波器。环内自适应的去块滤波器可以很好地去除块效应,使图像在视觉上更加连续。

去块滤波器针对不同的块边缘滤波强度(BS)采用不同的策略进行滤波。去块滤波的运算量占据了H.264解码器整体运算量的1/3。所以,对去块滤波的优化成为H.264编解码优化的重点。H.264滤波器之所以在DSP平台运算复杂度高,是因为其自身具有以下特点:

(1)需要对每个4×4块的BS进行判断,而判定BS的流程复杂,分支跳转比较多;(2)由于去块滤波是对于重建图像进行滤波,一般的数据搬运方式开销过大;(3)对每个边缘样点都进行滤波操作,循环次数较多,cache miss严重;(4)去块滤波操作中跳转较多不易进行并行运算,限幅和滤波运算复杂度高,运行效率较低。

虽然对于流水线排布进行了详尽的设计,但对BS判断、cache优化没有充分优化。虽然利用宏块的相关性信息对BS判断进行了优化,但仍然不够深入。本设计根据去块滤波器的特点,基于TI达芬奇系列TMS320DM6437处理器的特性,利用宏块信息的相关性,去除了BS判断和滤波器部分判断跳转冗余,通过C代码及线性汇编的编写调整了流水排布并增强了并行性,通过数据传输优化和增加cache命中率等方法,H.264的去块滤波器进行优化。实验结果表明,该方法大大提高了运算效率。

2 BS判断优化

H.264标准的去块滤波器中,去块滤波BS的判断则取决于块的编码信息。具体的判断标准

如表1所示。因为H.264编码模式是基于宏块,所以BS判断流程也根据宏块的编码模式分为帧内模式和帧间模式2种。因为图像边界会给判断流程带来额外的分支,所以DSP难以进行

并行处理。本文设计了如图1的流程:首先不考虑图像边界和外部宏块的情况,然后再统一根据边界情况进行修正。因为边界及相邻宏块情况是已知的,最后BS修正步骤的判断相对简单,判断流程的优化重心主要在帧内模式和帧间模式的判断上,所以下文会分别对这两部分进行介绍。

 

2.1 帧内模式的判断优化设计

由表1可知,当一个宏块为帧内编码时,它的BS只能342,BS34仅取决于该边缘是否为宏块缘,所以,可以直接将宏块边缘的BS4,其余的赋3。因BSBS为连续数组且每个元素的数据类型为cha,所以可以通过_mem864位数据的直接操作达到同

8个滤波强度进行赋值。mem8C6000提供intrinsics函数之一,intrinsics是直接与C6000汇编指令映的在线函数,可以一次性读取操作多个数据,大大提高DSP的处理效率。利用intrinsics可以更快地完成边缘滤波强的赋值工作。

2.2 帧间模式的预判优化设计

由表1可知,在帧间模式下,宏块内部的BS基本为3: 0,1,2,而对于BS12的判断分支比较多,DSP很难进行并行处理,所以,本文设计了一种逆向判断的结构:BS初始值全部赋为0,开始判断BS1的情况,然后通过BS2的情况进行修正,具体如图2所示。BS1BS2的判断流程可以进行一步优化。0,1,2,而对于BS12的判断分支比较多,DSP很难进行并行处理,所以,本文设计了一种逆向判断的结构:BS初始值全部赋为0,开始判断BS1的情况,然后通过BS2的情况进行修正,具体如图2所示。BS1BS2的判

断流程可以进行一步优化。

2.2.1 BS=1的判断流程

有别于通常对每条BS逐个进行条件判断,本文设计的方案根据块之间相互关系对判断进行简化。H.264/AVC块尺寸的范围很广(16×16~4×4),但根据数据统计,在编码的平坦区域,帧间预测的分割以大块(16×1616×88×16)为主,其比例大约为60%。对于同一个帧间预测块而言,里面的每个4×4块的编码信息是一致的,根据表1可知,在大分割块内部的滤波BS均为0。所以,对于大分割块的帧间预测模式来说,只需要对大分割块边界的滤波BS进行判

断即可。这样可以避免大分割块内部的无用条件判断。

2.2.2 BS=2的预判流程

由表1可知,当边界两边的任何一个图像块对残差编码时,该边缘滤波强度为2。传统的判断方式是逐个边界进行判断和比较,不仅判断次数过多(一个宏块32次判断),也造成了大量的信息冗余(每次判断需要判断24×4)。本设计的优化方案没有对边界逐条判断,而是通过对增加赋值减少判断的方式达到消减上述冗余的效果。

 

举例说明,如图3所示,图中每一个格子均为一个4×4,粗黑框围起的部分为一个待判断BS的宏块,0123块为宏块的上边缘邻近宏块,491419块为宏块的左边缘邻近宏块。假设块11对残差编码,则将该块周围的4条边的BS(abcd)均赋2。如果块12也对残差编码,则将该块周围的4条边的BS(aefg)2。如果宏块外部相邻块14对残差编码,则只有宏块边界hBS2。从上面可以看出,只有当2个相邻块均对残差编码时,该方案会产生对两相邻块中间的BS的重复赋值。但此方案只需要进行24次判断且每个4×4块只需要判断一次是否对残差编码,减少了判断带来的不必要的性能消耗。同时更便于DSP对其进行并行处理。

3 内存优化

DM6437的存储空间有片内和片外2种。片内存储空间L1L2读写速度快,但是空间十分有限;片外存储空间L3容量很大,重建后图像信息一般会暂时存放在L3,但是L3读写数据通过EMIF时序控制,有较大的时钟延迟。

由于去块滤波是针对重建之后的图像进行滤波,为了让整个滤波过程高速运行,最好在做该像素滤波操作之前将数据从L3搬运至L1,但一般的memcopy等数据搬运手段效率很低,因此可以应用DM6437提供的增强型直接存储器存取(EDMA)完成数据搬运工作,将图像信息搬运至L1之中。EDMA负责数据的读写,其操作独立于CPU运行之外,可以在不影响CPU运算的情况下,利用ping-pong机制将数据从L3搬运至L1,具体如图4所示。

4 cache优化

在利用EDMA搬运数据时,本设计并未采取逐个搬运宏块的方式,而是采取了多宏块搬运滤波的方式,即一次性搬运多个宏块,并在一次滤波程序中对多个宏块滤波。多宏块并行可以进一步提高程序的运行速度,因为它具有以下优点:

(1)多宏块滤波即一次调用函数对多个宏块滤波,从宏观角度讲,不需要每个宏块都从cache中选取,大大提高了cache的命中率。

(2)多宏块搬运数据可以减少EDMA搬运的次数,减少EDMA准备启动的时间,从而节省数据搬运因EDMA启动带来的不必要的消耗。

(3)多宏块同时滤波更有利于流水线的排布以及进行并行运算。但多宏块滤波也存在它的缺陷,那就是片内资源消耗成倍增加。DM6437处理器拥有32 KB可配置的L1D,128 KB可配置的2L2。经过计算,编解码过程中对于D1H.264流所需要的瞬时数据峰值不超过10 KB,这意味着片内资源可以支持多个宏块搬运并滤波。

 

5 C代码线性汇编代码优化

为了方便编译优化器更好地编排软件流水,也为了进一步改善编译后的汇编的运行效率,需要首先对C代码结构进行优化。由于边界滤波函数内部需要多次循环,可以利用UNROLL这个Pragma Directive,向编译器建议做循环展开。此外,可以对滤波代码结构进行调整,BS值为4的滤波函数为例,滤波函数的伪代码可以调整成:

if(样点需要滤波){

p0q0进行3拍滤波;

if(p0需要4拍或5拍滤波)

p0及内部样点进行4拍或5拍滤波;

if(q0需要4拍或5拍滤波)

q0及内部样点进行4拍或5拍滤波;}

该方法虽然可能会造成重复的滤波操作,但却减少了跳转次数,达芬奇DSP中一个跳转指令要占5个指令周期和3拍滤波的运算复杂度持平。该方法可以避免不必要的跳转和嵌套的条件判断,使代码的运行更加规整,有利于DSP对其进行并行处理。

为了进一步提高滤波器的性能,可将部分运算量较大的C代码改编成线性汇编语言。相比C6000汇编代码,线性汇编不需要给出汇编代码必需的所有信息。在利用线性汇编编写代码之后,既可以依靠手动修改代码优化也可以依靠汇编优化器进行优化。汇编优化器会根据具体情况进行优化,产生代码的效率可以达到手工汇编的95%~100%。在TIC6000 DSP应用中,大多数都是应用线性汇编来进行关键部分C代码优化的。如果对线性汇编的优化效率仍不满意,还可以手动进行调整。

6 实现结果

本测试结果建立在TMS320DM6437 EVM,测试码流为D1分辨率标准码流Foreman,对比滤波器为x264基本档次编码器中的去块滤波器。优化前后的性能如表2和图5所示,其中,PMB代表每个宏块的数据,PF代表单帧的周期,从表2中可以看出,BS判断部分提高的性能最明显,由于改进的BS判断算法更适合DSP的流水排布,优化后的效率达到优化前的7倍左右,边界滤波函数的优化效果为3倍左右,整体滤波优化效果是优化前的4.25,由此可见,本改进和优化方案可以大大提高去块滤波器在DSP平台的效率。

7 结束语

本文主要设计了达芬奇系列DSP平台下的去块滤波法的优化和实现方法,着重对BS判断的流程进行了针DSP平台的优化处理,并充分利用了达芬奇系列芯片的性,对数据搬运等方面进行了优化。实验结果表明,本设计H.264/AVC标准中去块滤波的优化效果明显,特别是BS

断部分的效率节省了约86%。本设计应用于TMS32DM6437平台的H.264标清编解码器,适用于整体编解码构,具有很强的可操作性和实用性。

深圳市中电网络技术有限公司 Copyright© www.52solution.com 粤ICP备10202284号