以下是网学网为您推荐的硕士毕业论文-探优化H.264解码器,希望本篇文章对您学习有所帮助。
1.引言
H.264 标准是由ITU-T 的视频编码专家组(VCEG)和ISO/IEC 的活动图像专家组共同成立的联合视频小组(JVT)于2003 年3 月公布的。与以往标准相比,在同等画面质量下H.264 能将码率降低50%左右。H.264/AVC 解码器包括熵解码,重排序,反量化,反变换,运动补偿和环路去块效应滤波。在解码环中引入的高度自适应去块滤波系统是H.264在相对码率较低的情况下依旧能保持较好的主观视觉效果的重要因素之一,是H.264 中的重要组成部分。中国硕士网学网提供大量免费工商管理硕士论文,如有业务需求请咨询网站客服人员!
本文依据H.264 去方块滤波算法的特点,对算法的实现进行了结构上的优化,并采用MMX 技术对其中执行时间最多、执行次数最多的部分代码进行优化。在保证解码质量的前提下,节省了硬件资源,提高了解码速度。
2.去方块滤波器的算法分析
由于H.264 中的整数变换和运动估计的最小块是基于4×4 大小的,因此块滤波系统在滤波的时候也应以4×4 点的块为单元处理。
滤波系统按照光栅扫描顺序依次对已解码的每个宏块进行滤波。对宏块内部进行滤波时按照先亮度块后色度块,先进行垂直边界的水平滤波然后进行水平边界的垂直滤波的顺序进行,如图1 所示,图中的标有数字的线为需要滤波的边界。
对于不同的BS 值,滤波器采取不同的滤波模式,有条件地选择不同的滤波器修正边界两边的样点值。最多有6 个样点值将在滤波过程中得到调整,以去除块效应。
3.去方块滤波器的优化
3.1 边界滤波强度判断
流程的改进经分析发现该解码器的去块滤波算法中的函数逻辑关系复杂、跳转、判断以及函数调用情况频繁;函数的循环体中存在着大量不必要的重复计算和很多用不到的数据,如在传统JM 模型的Bs 判断中,对所有BS 值分别进行16 次判断(由于边界有16 个点,所以对每个点都做了滤波强度判断),这明显造成程序冗余因为当BS=3,4 时,只取决于预测模式是否为帧内模式和模块是否为边缘模块即可。根据C 代码优化方法,通过改变函数结构以及函数调用等情况,得到了图3 所示的改进的BS 判断流程。
3.2 宏块滤波顺序的调整
如果按照基本的滤波顺序运行去方块滤波程序,就没有充分利用相邻4×4 数据之间的相关性。比如完成“1”滤波后需要将其右侧方块的数据写回事先分配的内存中,等到要进行“5”之前再从内存中读取将这个方块的数据。对于每一个方块都要从内存中读取数据,完成滤波后还需要将数据写回至相应的地址,如此频繁读取内存,对内存的带宽要求比较高,同时增加了解码的时间。因此提出了一种改进的滤波顺序.
3.3使用多媒体指令集(MMX)对像
素级滤波计算进行优化从上面的算法分析可以看出,环路滤波部分算法不很复杂但是计算量密集,例如对滤波条件的判断和完成对像素值的修改的过程。所以在保证图像质量的基础上,尽可能的加快运算速度,就成为当前研究的新热点。MMX(Microprocessor Media Extension)是Intel公司为提高PC 机多媒体功能和通信能力而推出的一项单指令多数据流(Single InstructionMultiple Data,SIMD)技术,是对IA(Intel Architecture)指令集的扩展,他通过在“奔腾(Pentium)”处理器中增加8 个64 位寄存器和57 条新指令来实现。将多个数据组织入MMX 寄存器中,用指令进行统一处理,就可达到单指令多数据的目的。SIMD 技术的执行模式。
3.3.1数据重排(内存读取的优化)
为实现多路数据的并行处理,应将各路数据中进行相同操作的数据放在同一个寄存器的不同位置,使得单一指令可对多路数据并行操作。在并行操作实现的过程中,若数据的原始排序不能满足并行操作,就须对原始数据进行重排序。