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