有时候我们想禁用掉HM的去方块滤波,测试下去方块滤波的效果,很容易就想到要修改配置文件,根据注释,容易找到:
LoopFilterDisable : 1 # Disable deblocking filter (0=Filter, 1=No Filter)
但是运行完程序后就会发现,这个参数改为0或者改为1结果根本就是一样的(如果用过JM的也会发现相同的问题)。那么这到底是为什么呢?难道是程序的bug?其实不然,HM的编写者还不至于犯下这种低级错误。
仔细分析代码后就能找到答案:我们可以找到配置文件LoopFilterDisable这个参数在HM中对应的变量被赋值的地方,在TEncSlice.initEncSlice中有这么一段:
if ( m_pcCfg->getDeblockingFilterMetric() )
{
rpcSlice->setDeblockingFilterOverrideFlag(true);
rpcSlice->setDeblockingFilterDisable(false);
rpcSlice->setDeblockingFilterBetaOffsetDiv2( 0 );
rpcSlice->setDeblockingFilterTcOffsetDiv2( 0 );
} else
if (rpcSlice-&g