H.266/VVC代码学习44:ALF一些重要函数功能

1 表层函数

deriveClassification:计算每个4x4亮度像素的分类;
deriveStatsForFiltering:计算ALF中slice级和CTU级的协方差;
deriveStatsForCcAlfFiltering:计算CCALF中slice级和CTU级的协方差(代码中并非在表层);
alfEncoderslice级,通过协方差处理和RDO得到各通道最佳系数值和嵌位值,作为APS的候选;
alfEncoderCtbCTU级,每个CTU通过RDO决定采用何种滤波器,获得CTU级滤波开关和滤波种类选择;
alfReconstructor:进行ALF得到滤波后的图像;

deriveCcAlfFilterslice级,计算出最佳CCALF系数,作为APS的候选;
xSetupCcAlfAPSslice级,载入APS参数信息;
applyCcAlfFilter:进行CCALF得到滤波后的图像。

2 内层重要函数

getBlkStatsCTU级,计算协方差;
getFrameStatsslice级,计算slice级的协方差;
getUnfilteredDistortion:计算未进行ALF的代价;
getFilterCoeffAndCost:计算ALF滤波系数并得到进行ALF的代价;
deriveCtbAlfEnableFlagsCTU级,决定CTU是否开启ALF并得到此CTU最优代价;
reconstructCoeffAPSsslice级,将当前ALF系数存进APS中
reconstructCoeff:将当前系数存进候选ALF系数中

deriveStatsForCcAlfFiltering:计算CCALF中slice级和CTU级的协方差;
deriveCcAlfFilterCoeff:计算CCALF滤波系数;
computeLog2BlockSizeDistortion:计算CCALF进行前或进行后的代价
determineControlIdcValuesCTU级,决定CTU是否开启CCALF;

3 一些关键函数

setEnableFlagslice级,设置当前通道是否可用ALF
setCtuEnableFlagCTU级,设置当前CTU是否可用ALF
setCtuAlternativeChromaCTU级,设置当前色度通道使用的ALF滤波器种类;

m_filter7x7Blk:即filterBlk<ALF_FILTER_7>,进行亮度ALF滤波;
m_filter5x5Blk:即filterBlk<ALF_FILTER_5>,进行色度ALF滤波;
m_filterCcAlfCb:即filterBlkCcAlf<CC_ALF_Cb>,进行Cb分量的CCALF滤波;
m_filterCcAlfCr:即filterBlkCcAlf<CC_ALF_Cr>,进行Cr分量的CCALF滤波。

猜你喜欢

转载自blog.csdn.net/weixin_42979679/article/details/102956316
今日推荐