H.264环路内滤波顾名思义在编码侧开启后解码部分必须跟随开启,因此是该视频编码方案的不可分割的组成部分。
以下整理了Baseline情形下环路滤波的四种情形:
All cases that may exist for Baseline
Bs = 4: either is intra, MB edge
Bs = 3: either is intra, block edge
Bs = 2: both are inter, either is coded
Bs = 1: both are inter neither is coded, different ref pictures, either MV component is no smaller than 4
Bs = 0: o.w.
以T264为例:
环路滤波入口函数以光栅扫描顺序对所有宏块实施deblock_mb。
deblock_mb完成一个宏块的滤波,它包含以下步骤:
1. 水平相邻宏块滤波,即对与mb_xy-1宏块的边界滤波,以及内部3条纵向块边界滤波;
2. 垂直相邻宏块滤波,即对与mb_xy-mb_stride宏块的边界滤波,以及内部3条横向块边界滤波;
每条边界长度均为16个像素,等分成4份,每个对应一个最小块大小的边界,以此为单元进行滤波。
对每条边界调用get_strength,获得这4个部分的Bs值。