Void TDecEntropy::decodePredInfo ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, TComDataCU* pcSubCU ) { if( pcCU->isIntra( uiAbsPartIdx ) ) // If it is Intra mode, encode intra prediction mode. { decodeIntraDirModeLuma ( pcCU, uiAbsPartIdx, uiDepth ); if (pcCU->getPic()->getChromaFormat()!=CHROMA_400) { decodeIntraDirModeChroma( pcCU, uiAbsPartIdx, uiDepth ); if (enable4ChromaPUsInIntraNxNCU(pcCU->getPic()->getChromaFormat()) && pcCU->getPartitionSize( uiAbsPartIdx )==SIZE_NxN) { UInt uiPartOffset = ( pcCU->getPic()->getNumPartitionsInCtu() >> ( pcCU->getDepth(uiAbsPartIdx) << 1 ) ) >> 2; decodeIntraDirModeChroma( pcCU, uiAbsPartIdx + uiPartOffset, uiDepth+1 ); decodeIntraDirModeChroma( pcCU, uiAbsPartIdx + uiPartOffset*2, uiDepth+1 ); decodeIntraDirModeChroma( pcCU, uiAbsPartIdx + uiPartOffset*3, uiDepth+1 ); }
Void TEncEntropy::encodePredInfo( TComDataCU* pcCU, UInt uiAbsPartIdx ) { if( pcCU->isIntra( uiAbsPartIdx ) ) // If it is Intra mode, encode intra prediction mode. { encodeIntraDirModeLuma ( pcCU, uiAbsPartIdx,true ); if (pcCU->getPic()->getChromaFormat()!=CHROMA_400) { encodeIntraDirModeChroma( pcCU, uiAbsPartIdx ); if (enable4ChromaPUsInIntraNxNCU(pcCU->getPic()->getChromaFormat()) && pcCU->getPartitionSize( uiAbsPartIdx )==SIZE_NxN) { UInt uiPartOffset = ( pcCU->getPic()->getNumPartitionsInCtu() >> ( pcCU->getDepth(uiAbsPartIdx) << 1 ) ) >> 2; encodeIntraDirModeChroma( pcCU, uiAbsPartIdx + uiPartOffset ); encodeIntraDirModeChroma( pcCU, uiAbsPartIdx + uiPartOffset*2 ); encodeIntraDirModeChroma( pcCU, uiAbsPartIdx + uiPartOffset*3 ); }