m_puhInterDir
m_puhInterDir表示的是当前的Inter CU的参考方向,可分为:
单向(INTER_FORWARD,INTER_BACKWARD, INTER_UNI)
双向(INTER_DUAL, INTER_BID, INTER_SYM)
调用: getInterDir(Idx)
设置: setInterDirSubParts()
m_puhInterDir定义在LibCommon中,在LibEncoder和LibDecoder中使用:
- LibEncoder中,由于编码端CTU的具体划分方式不定,无法一整个CTU共用一个m_puhInterDir指针。因此,每个CU会存放一个m_puhInterDir指针 ,而且在TAVS中,没有PU和TU概念了(还保存有PU相关的变量代码接口,如PU_idx等),因此每个CU的PU_idx恒等于0,在对m_puhInterDir进行赋值的时候,setInterDirSubParts函数中的uiAbsPartIdx参数始终为0(主要在predInterSearch、predffineInterSearch、predSkipSearch、predHmvpSearch函数中被调用)。
- LibDecoder中,CTU的划分方式可以确定下来,因此整个CTU使用一个m_puhInterDir指针。此时调用setInterDirSubParts()时的参数uiAbsPartIdx不再恒等于零,而是当前CU左上角4x4块在当前CTU内的Z-order索引(在decodeInterDirRD、decodePredInfo函数中被调用)。uiAbsPartIdx参数则在xDecodeCU函数中被修改并循环调用xDecodeCU