HEVC/H265 HM10.0 分析(二)TComDataCU.cpp

來源:互聯網
上載者:User

以下分析TComDataCU.cpp。這個cpp是很重要的,要分幾次分析完,這是分析TComDataCU.cpp(一)。

Void TComDataCU::getPartPosition( UInt partIdx, Int& xP, Int& yP, Int& nPSW, Int& nPSH){  UInt col = m_uiCUPelX;  UInt row = m_uiCUPelY;  switch ( m_pePartSize[0] )  {  case SIZE_2NxN:    nPSW = getWidth(0);          nPSH = getHeight(0) >> 1;     xP   = col;    yP   = (partIdx ==0)? row: row + nPSH;    break;  case SIZE_Nx2N:    nPSW = getWidth(0) >> 1;     nPSH = getHeight(0);          xP   = (partIdx ==0)? col: col + nPSW;    yP   = row;    break;  case SIZE_NxN:    nPSW = getWidth(0) >> 1;     nPSH = getHeight(0) >> 1;     xP   = col + (partIdx&0x1)*nPSW;    yP   = row + (partIdx>>1)*nPSH;    break;  case SIZE_2NxnU:    nPSW = getWidth(0);    nPSH = ( partIdx == 0 ) ?  getHeight(0) >> 2 : ( getHeight(0) >> 2 ) + ( getHeight(0) >> 1 );    xP   = col;    yP   = (partIdx ==0)? row: row + getHeight(0) - nPSH;    break;  case SIZE_2NxnD:    nPSW = getWidth(0);    nPSH = ( partIdx == 0 ) ?  ( getHeight(0) >> 2 ) + ( getHeight(0) >> 1 ) : getHeight(0) >> 2;    xP   = col;    yP   = (partIdx ==0)? row: row + getHeight(0) - nPSH;    break;  case SIZE_nLx2N:    nPSW = ( partIdx == 0 ) ? getWidth(0) >> 2 : ( getWidth(0) >> 2 ) + ( getWidth(0) >> 1 );    nPSH = getHeight(0);    xP   = (partIdx ==0)? col: col + getWidth(0) - nPSW;    yP   = row;    break;  case SIZE_nRx2N:    nPSW = ( partIdx == 0 ) ? ( getWidth(0) >> 2 ) + ( getWidth(0) >> 1 ) : getWidth(0) >> 2;    nPSH = getHeight(0);    xP   = (partIdx ==0)? col: col + getWidth(0) - nPSW;    yP   = row;    break;  default:    assert ( m_pePartSize[0] == SIZE_2Nx2N );    nPSW = getWidth(0);          nPSH = getHeight(0);          xP   = col ;    yP   = row ;    break;  }}

在 2N*N, 2N*nU,2N*nD 中,上面部分的partIdx 為0,下面部分為1;

在N*2N,nL*2N,nR*2N中, 左邊部分的partIdx為0,右邊部分為1;

在N*N中, 按四叉樹的結構,partIdx 分別為0,1,2,3;

在2N*2N中, partIdx只能為0;

xP,yP的值是CU塊左上方的絕對位置值,nPSW,nPSH是當前CU塊的寬度和高度,記住,CU是可以嵌套的,CU包含CU,所以有xP,yP,nPSW,nPSH就能夠唯一的確定CU塊,

限於時間關係,今天先分析至此。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.