1. 程式人生 > >TAVS2.2中的m_puhInteDir變數分析

TAVS2.2中的m_puhInteDir變數分析

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