Changeset 494 in SHVCSoftware for trunk/source/Lib/TLibEncoder/TEncSearch.cpp
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/SHM-4.0-dev (added) merged: 444-493
- Property svn:mergeinfo changed
-
trunk/source
- Property svn:mergeinfo changed
/branches/SHM-4.0-dev/source (added) merged: 445-471,473-479,481-486,488-493
- Property svn:mergeinfo changed
-
trunk/source/Lib/TLibEncoder/TEncSearch.cpp
r442 r494 3092 3092 { 3093 3093 #endif 3094 #if N0383_IL_CONSTRAINED_TILE_SETS_SEI 3095 if (!(pcCU->isInterLayerReference(uhInterDirNeighbours[uiMergeCand], cMvFieldNeighbours[0 + 2*uiMergeCand], cMvFieldNeighbours[1 + 2*uiMergeCand]) && m_disableILP)) 3096 { 3097 #endif 3094 3098 UInt uiCostCand = MAX_UINT; 3095 3099 UInt uiBitsCand = 0; … … 3115 3119 uiMergeIndex = uiMergeCand; 3116 3120 } 3121 #if N0383_IL_CONSTRAINED_TILE_SETS_SEI 3122 } 3123 #endif 3117 3124 #if REF_IDX_ME_ZEROMV 3118 3125 } … … 3221 3228 Int numValidMergeCand = 0 ; 3222 3229 3223 #if N0383_IL_CONSTRAINED_TILE_SETS_SEI3224 Bool disableILP = false;3225 if (pcCU->getPic()->getLayerId() == (m_pcEncCfg->getNumLayer() - 1) && m_pcEncCfg->getInterLayerConstrainedTileSetsSEIEnabled() && pcCU->getPic()->getPicSym()->getTileSetIdxMap(pcCU->getAddr()) >= 0)3226 {3227 if (pcCU->getPic()->getPicSym()->getTileSetType(pcCU->getAddr()) == 2)3228 {3229 disableILP = true;3230 }3231 if (pcCU->getPic()->getPicSym()->getTileSetType(pcCU->getAddr()) == 1)3232 {3233 Int currCUaddr = pcCU->getAddr();3234 Int frameWitdhInCU = pcCU->getPic()->getPicSym()->getFrameWidthInCU();3235 Int frameHeightInCU = pcCU->getPic()->getPicSym()->getFrameHeightInCU();3236 Bool leftCUExists = (currCUaddr % frameWitdhInCU) > 0;3237 Bool aboveCUExists = (currCUaddr / frameWitdhInCU) > 0;3238 Bool rightCUExists = (currCUaddr % frameWitdhInCU) < (frameWitdhInCU - 1);3239 Bool belowCUExists = (currCUaddr / frameWitdhInCU) < (frameHeightInCU - 1);3240 Int currTileSetIdx = pcCU->getPic()->getPicSym()->getTileIdxMap(currCUaddr);3241 // Check if CU is at tile set boundary3242 if ( (leftCUExists && pcCU->getPic()->getPicSym()->getTileIdxMap(currCUaddr-1) != currTileSetIdx) ||3243 (leftCUExists && aboveCUExists && pcCU->getPic()->getPicSym()->getTileIdxMap(currCUaddr-frameWitdhInCU-1) != currTileSetIdx) ||3244 (aboveCUExists && pcCU->getPic()->getPicSym()->getTileIdxMap(currCUaddr-frameWitdhInCU) != currTileSetIdx) ||3245 (aboveCUExists && rightCUExists && pcCU->getPic()->getPicSym()->getTileIdxMap(currCUaddr-frameWitdhInCU+1) != currTileSetIdx) ||3246 (rightCUExists && pcCU->getPic()->getPicSym()->getTileIdxMap(currCUaddr+1) != currTileSetIdx) ||3247 (rightCUExists && belowCUExists && pcCU->getPic()->getPicSym()->getTileIdxMap(currCUaddr+frameWitdhInCU+1) != currTileSetIdx) ||3248 (belowCUExists && pcCU->getPic()->getPicSym()->getTileIdxMap(currCUaddr+frameWitdhInCU) != currTileSetIdx) ||3249 (belowCUExists && leftCUExists && pcCU->getPic()->getPicSym()->getTileIdxMap(currCUaddr+frameWitdhInCU-1) != currTileSetIdx) )3250 {3251 disableILP = true; // Disable ILP in tile set boundary CU3252 }3253 }3254 }3255 #endif3256 3257 3230 for ( Int iPartIdx = 0; iPartIdx < iNumPart; iPartIdx++ ) 3258 3231 { … … 3305 3278 { 3306 3279 #if N0383_IL_CONSTRAINED_TILE_SETS_SEI 3307 if (pcCU->getSlice()->getRefPic( eRefPicList, iRefIdxTemp )->isILR(pcCU->getLayerId()) && disableILP)3280 if (pcCU->getSlice()->getRefPic( eRefPicList, iRefIdxTemp )->isILR(pcCU->getLayerId()) && m_disableILP) 3308 3281 { 3309 3282 continue; … … 3529 3502 } 3530 3503 #if N0383_IL_CONSTRAINED_TILE_SETS_SEI 3531 if (pcPic->isILR(pcCU->getLayerId()) && disableILP)3504 if (pcPic->isILR(pcCU->getLayerId()) && m_disableILP) 3532 3505 { 3533 3506 testIter = false; … … 3550 3523 } 3551 3524 #if N0383_IL_CONSTRAINED_TILE_SETS_SEI 3552 if (pcPic->isILR(pcCU->getLayerId()) && disableILP)3525 if (pcPic->isILR(pcCU->getLayerId()) && m_disableILP) 3553 3526 { 3554 3527 testRefIdx = false; … … 4119 4092 4120 4093 // prediction pattern 4094 #if O0194_WEIGHTED_PREDICTION_CGS 4095 // Bug Fix (It did not check WP for BSlices) 4096 if ( pcCU->getSlice()->getPPS()->getUseWP()) 4097 #else 4121 4098 if ( pcCU->getSlice()->getPPS()->getUseWP() && pcCU->getSlice()->getSliceType()==P_SLICE ) 4099 #endif 4122 4100 { 4123 4101 xPredInterLumaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cMvCand, iSizeX, iSizeY, pcTemplateCand, true ); … … 4128 4106 } 4129 4107 4108 #if O0194_WEIGHTED_PREDICTION_CGS 4109 if ( pcCU->getSlice()->getPPS()->getUseWP()) 4110 ///< Bug Fix (It did not check WP for BSlices) 4111 #else 4130 4112 if ( pcCU->getSlice()->getPPS()->getUseWP() && pcCU->getSlice()->getSliceType()==P_SLICE ) 4113 #endif 4131 4114 { 4132 4115 xWeightedPredictionUni( pcCU, pcTemplateCand, uiPartAddr, iSizeX, iSizeY, eRefPicList, pcTemplateCand, iRefIdx );
Note: See TracChangeset for help on using the changeset viewer.