H.266/VVC-VTM代码学习-帧内预测03-DC模式下计算预测像素值xPredIntraDc、xGetPredValDc
H.266/VVC专栏传送
上一篇:H.266/VVC-VTM代码学习-帧内预测02-获取参考像素并对其滤波xFillReferenceSamples、xFilterReferenceSamples
下一篇:H.266/VVC-VTM代码学习-帧内预测04-Planar模式下计算预测像素值xPredIntraPlanar
目录
前言
VTM是H.266/VVC视频编码标准的参考软件,研究VTM代码给研究人员解释了VVC编码标准的详细标准规范与细节。
本文是笔者对VTM代码的一点学习记录,成文于笔者刚开始接触VVC期间,期间很多概念和理论框架还很不成熟,若文中存在错误欢迎批评指正,也欢迎广大视频编码学习者沟通交流、共同进步。
VTM代码的下载及编译请参考博文:
【视频编码学习】H.266/VVC参考软件VTM配置运行(VTM-6.0版本)
本文涉及的代码存在于工程下的/lib/CommonLib/SourceFiles/IntraPrediction.cpp文件中。
一、主要函数
1.函数代码
(1)入口函数 IntraPrediction::xPredIntraDc
void IntraPrediction::xPredIntraDc( const CPelBuf &pSrc, PelBuf &pDst, const ChannelType channelType, const bool enableBoundaryFilter )
{
//生成DC值
const Pel dcval = xGetPredValDc( pSrc, pDst );
//填充DC值
pDst.fill( dcval );
}
(2)计算DC值函数IntraPrediction::xGetPredValDc
Pel IntraPrediction::xGetPredValDc( const CPelBuf &pSrc, const Size &dstSize )
{
CHECK( dstSize.width == 0 || dstSize.height == 0, "Empty area provided" );
int idx, sum = 0;
Pel dcVal;
const int width = dstSize.width;
const int height = dstSize.height;
//最后求均值时的除数
//若width == height,则为2*width
//若width != height,则为max(width, height)
const auto denom = (width == height) ? (width << 1) : std::max(width,height);
//除法用移位操作实现,对应的移位位数
const auto divShift = floorLog2(denom);
//四舍五入除法在移位前补充的对应偏移值
const auto divOffset = (denom >> 1);
//宽大于高时,sum计算宽的参考像素总值
if ( width >= height )
{
for( idx = 0; idx < width; idx++ )
{
sum += pSrc.at(m_ipaParam.multiRefIndex + 1 + idx, 0);
}
}
//高大于宽时,sum计算高的参考像素总值
if ( width <= height )
{
for( idx = 0; idx < height; idx++ )
{
sum += pSrc.at(m_ipaParam.multiRefIndex + 1 + idx, 1);
}
}
//宽等于高时,经历以上两个循环,sum计算宽与高的参考像素总值
//四舍五入求均值
dcVal = (sum + divOffset) >> divShift;
return dcVal;
}
2.逻辑结构
(1)入口函数
1.调用函数得到当前块的DC值。
2.调用函数将当前块DC值填充至当前块的所有预测位置。
(2)计算DC值函数
1.宽大于高时,计算上方参考像素行的像素平均值作为DC值。
2.高大于宽时,计算左侧参考像素列的像素平均值作为DC值。
3.高等于宽时,计算上方和左侧所有参考像素的平均值作为DC值。
4.注意,以上操作均未用到左下方和右上方的参考像素。
上一篇:H.266/VVC-VTM代码学习-帧内预测02-获取参考像素并对其滤波xFillReferenceSamples、xFilterReferenceSamples
下一篇:H.266/VVC-VTM代码学习-帧内预测04-Planar模式下计算预测像素值xPredIntraPlanar

浙公网安备 33010602011771号