本文首先介绍系数扫描模式的初始化。
直接给出代码及相应的注释:
// scanning order table
UInt* g_auiSigLastScan[ 3 ][ MAX_CU_DEPTH ]; //!< [pattern][depth]
const UInt g_sigLastScan8x8[ 3 ][ 4 ] =
{
{0, 2, 1, 3}, //!< right-up diagonal
{0, 1, 2, 3}, //!< horizontal
{0, 2, 1, 3} //!< vertical
};
UInt g_sigLastScanCG32x32[ 64 ];
Void initSigLastScan(UInt* pBuffD, UInt* pBuffH, UInt* pBuffV, Int iWidth, Int iHeight, Int iDepth)
{
const UInt uiNumScanPos = UInt( iWidth * iWidth );
UInt uiNextScanPos = 0;
/*
** 在这里需要先作如下说明,以免对接下来代码中的一些处理会有疑惑。
** 首先,在初始化时,总共有2x2,4x4,8x8,16x16,32x32,64x64,128x128这7种情况,当然,我们实际使用
** 的就只有4x4,8x8,16x16,32x32这4种,其余的几种至少目前的draft中