Deblocking的相关代码在TComLoopFilter.h和TComLoopFilter.cpp中。让我比较惊讶的是,TComLoopFilter.h中只声明了一个类TComLoopFilter,用一个类就搞定编解码两端的deblocking操作。能同时搞定编解码器的另一个类是TComTrQuant,同时解决了编解码两端的变换/量化/反量化/反变换功能。与它俩不同的是,SAO在TComSampleAdaptiveOffset.h中定义了一个TComSampleAdaptiveOffset类,供解码器使用;因为SAO在编码端的操作较解码端复杂,所以在TEncSampleAdaptiveOffset.h中定义了它的派生类TEncSampleAdaptiveOffset供编码器使用。TComLoopFilter在编码器中仅有单个实例。
还有一个与deblocking有关的一个类放在TypeDef.h中,代码如下:
/// parameters for deblocking filter
typedef struct _LFCUParam
{
Bool bInternalEdge; ///< indicates internal edge
Bool bLeftEdge; ///< indicates left edge
Bool bTopEdge; ///< indicates top edge
} LFCUParam;
在整个HM中,上面的LFCUP