Void TComDataCU::getPartIndexAndSize( UInt uiPartIdx, UInt& ruiPartAddr, Int& riWidth, Int& riHeight, UInt uiAbsPartIdx ) { switch ( m_pePartSize[uiAbsPartIdx] ) { case SIZE_2Nx2N: riWidth = getWidth(uiAbsPartIdx); riHeight = getHeight(uiAbsPartIdx); ruiPartAddr = 0; break; case SIZE_2NxN: riWidth = getWidth(uiAbsPartIdx); riHeight = getHeight(uiAbsPartIdx) >> 1; ruiPartAddr = ( uiPartIdx == 0 )? 0 : m_uiNumPartition >> 1; break; case SIZE_Nx2N: riWidth = getWidth(uiAbsPartIdx) >> 1; riHeight = getHeight(uiAbsPartIdx); ruiPartAddr = ( uiPartIdx == 0 )? 0 : m_uiNumPartition >> 2; break; case SIZE_NxN: riWidth = getWidth(uiAbsPartIdx) >> 1; riHeight = getHeight(uiAbsPartIdx) >> 1; ruiPartAddr = ( m_uiNumPartition >> 2 ) * uiPartIdx; break; case SIZE_2NxnU: riWidth = getWidth(uiAbsPartIdx); riHeight = ( uiPartIdx == 0 ) ? getHeight(uiAbsPartIdx) >> 2 : ( getHeight(uiAbsPartIdx) >> 2 ) + ( getHeight(uiAbsPartIdx) >> 1 ); ruiPartAddr = ( uiPartIdx == 0 ) ? 0 : m_uiNumPartition >> 3; break; case SIZE_2NxnD: riWidth = getWidth(uiAbsPartIdx); riHeight = ( uiPartIdx == 0 ) ? ( getHeight(uiAbsPartIdx) >> 2 ) + ( getHeight(uiAbsPartIdx) >> 1 ) : getHeight(uiAbsPartIdx) >> 2; ruiPartAddr = ( uiPartIdx == 0 ) ? 0 : (m_uiNumPartition >> 1) + (m_uiNumPartition >> 3); break; case SIZE_nLx2N: riWidth = ( uiPartIdx == 0 ) ? getWidth(uiAbsPartIdx) >> 2 : ( getWidth(uiAbsPartIdx) >> 2 ) + ( getWidth(uiAbsPartIdx) >> 1 ); riHeight = getHeight(uiAbsPartIdx); ruiPartAddr = ( uiPartIdx == 0 ) ? 0 : m_uiNumPartition >> 4; break; case SIZE_nRx2N: riWidth = ( uiPartIdx == 0 ) ? ( getWidth(uiAbsPartIdx) >> 2 ) + ( getWidth(uiAbsPartIdx) >> 1 ) : getWidth(uiAbsPartIdx) >> 2; riHeight = getHeight(uiAbsPartIdx); ruiPartAddr = ( uiPartIdx == 0 ) ? 0 : (m_uiNumPartition >> 2) + (m_uiNumPartition >> 4); break; default: assert (uiAbsPartIdx); break; } }