Changeset 822 in SHVCSoftware for branches/SHM-dev
- Timestamp:
- 8 Jul 2014, 13:51:04 (10 years ago)
- Location:
- branches/SHM-dev/source/Lib
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/SHM-dev/source/Lib/TLibCommon/TComDataCU.cpp
r815 r822 3481 3481 3482 3482 #if SVC_EXTENSION 3483 TComDataCU* TComDataCU::getBaseColCU( UInt refLayerIdc, UInt uiCuAbsPartIdx, UInt &uiCUAddrBase, UInt &uiAbsPartIdxBase, Int iMotionMapping )3483 TComDataCU* TComDataCU::getBaseColCU( UInt refLayerIdc, UInt uiCuAbsPartIdx, UInt &uiCUAddrBase, UInt &uiAbsPartIdxBase, Bool motionMapping ) 3484 3484 { 3485 3485 UInt uiPelX = getCUPelX() + g_auiRasterToPelX[ g_auiZscanToRaster[uiCuAbsPartIdx] ]; 3486 3486 UInt uiPelY = getCUPelY() + g_auiRasterToPelY[ g_auiZscanToRaster[uiCuAbsPartIdx] ]; 3487 3487 3488 return getBaseColCU( refLayerIdc, uiPelX, uiPelY, uiCUAddrBase, uiAbsPartIdxBase, iMotionMapping );3489 } 3490 3491 TComDataCU* TComDataCU::getBaseColCU( UInt refLayerIdc, UInt uiPelX, UInt uiPelY, UInt &uiCUAddrBase, UInt &uiAbsPartIdxBase, Int iMotionMapping )3488 return getBaseColCU( refLayerIdc, uiPelX, uiPelY, uiCUAddrBase, uiAbsPartIdxBase, motionMapping ); 3489 } 3490 3491 TComDataCU* TComDataCU::getBaseColCU( UInt refLayerIdc, UInt pelX, UInt pelY, UInt &uiCUAddrBase, UInt &uiAbsPartIdxBase, Bool motionMapping ) 3492 3492 { 3493 3493 TComPic* baseColPic = m_pcSlice->getBaseColPic(refLayerIdc); 3494 3494 3495 uiPelX = (UInt)Clip3<UInt>(0, m_pcPic->getPicYuvRec()->getWidth() - 1, uiPelX);3496 uiPelY = (UInt)Clip3<UInt>(0, m_pcPic->getPicYuvRec()->getHeight() - 1, uiPelY);3495 UInt uiPelX = (UInt)Clip3<UInt>(0, m_pcPic->getPicYuvRec()->getWidth() - 1, pelX + 8); 3496 UInt uiPelY = (UInt)Clip3<UInt>(0, m_pcPic->getPicYuvRec()->getHeight() - 1, pelY + 8); 3497 3497 3498 3498 #if !LAYER_CTB … … 3519 3519 #if REF_IDX_MFM 3520 3520 // offset for collocated block in the motion mapping 3521 if( iMotionMapping == 1 ) 3522 { 3523 Bool unequalPictureSizeFlag = g_posScalingFactor[refLayerIdc][0] != 65536 || g_posScalingFactor[refLayerIdc][1] != 65536; //the condition should be updated according to the WD. 3524 3521 if( motionMapping ) 3522 { 3525 3523 // actually, motion field compression is performed in the Void TComPic::compressMotion() function, but with (+4) the rounding may have effect on the picture boundary check. 3526 if( unequalPictureSizeFlag)3524 if( m_pcPic->isSpatialEnhLayer(refLayerIdc) ) 3527 3525 { 3528 3526 iBX = ( ( iBX + 4 ) >> 4 ) << 4; … … 3531 3529 else 3532 3530 { 3533 iBX += 4; 3534 iBY += 4; 3531 // copy motion field from the top left sample for 1x scaling ratio 3532 iBX = pelX; 3533 iBY = pelY; 3535 3534 } 3536 3535 } … … 3587 3586 { 3588 3587 // check BL mode 3589 UInt 3588 UInt uiCUAddrBase = 0, uiAbsPartAddrBase = 0; 3590 3589 // the right reference layerIdc should be specified, currently it is set to m_layerId-1 3591 TComDataCU* pcTempCU = getBaseColCU(m_layerId - 1, uiAbsPartIdx, uiCUAddrBase, uiAbsPartAddrBase, 0);3590 TComDataCU* pcTempCU = getBaseColCU(m_layerId - 1, uiAbsPartIdx, uiCUAddrBase, uiAbsPartAddrBase, false ); 3592 3591 3593 3592 if( pcTempCU->getPredictionMode( uiAbsPartAddrBase ) != MODE_INTRA ) -
branches/SHM-dev/source/Lib/TLibCommon/TComDataCU.h
r713 r822 469 469 Bool xCheckZeroMVILRMvdL1Zero(Int iRefList, Int iRefIdx, Int MvpIdx); 470 470 #endif 471 TComDataCU* getBaseColCU( UInt refLayerIdc, UInt uiCuAbsPartIdx, UInt &uiCUAddrBase, UInt &uiAbsPartIdxBase, Int iMotionMapping = 0);472 TComDataCU* getBaseColCU( UInt refLayerIdc, UInt uiPelX, UInt uiPelY, UInt &uiCUAddrBase, UInt &uiAbsPartIdxBase, Int iMotionMapping = 0);471 TComDataCU* getBaseColCU( UInt refLayerIdc, UInt uiCuAbsPartIdx, UInt &uiCUAddrBase, UInt &uiAbsPartIdxBase, Bool motionMapping = false ); 472 TComDataCU* getBaseColCU( UInt refLayerIdc, UInt pelX, UInt pelY, UInt &uiCUAddrBase, UInt &uiAbsPartIdxBase, Bool motionMapping = false ); 473 473 Void scaleBaseMV( UInt refLayerIdc, TComMvField& rcMvFieldEnhance, TComMvField& rcMvFieldBase ); 474 474 #endif -
branches/SHM-dev/source/Lib/TLibCommon/TComPic.cpp
r820 r822 260 260 Void TComPic::copyUpsampledMvField(UInt refLayerIdc, TComPic* pcPicBase) 261 261 { 262 UInt numPartitions 263 UInt widthMinPU 264 UInt heightMinPU 265 Int unitNum 262 UInt numPartitions = 1<<(g_uiMaxCUDepth<<1); 263 UInt widthMinPU = g_uiMaxCUWidth/(1<<g_uiMaxCUDepth); 264 UInt heightMinPU = g_uiMaxCUHeight/(1<<g_uiMaxCUDepth); 265 Int unitNum = max (1, (Int)((16/widthMinPU)*(16/heightMinPU)) ); 266 266 267 267 for(UInt cuIdx = 0; cuIdx < getPicSym()->getNumberOfCUsInFrame(); cuIdx++) //each LCU … … 277 277 278 278 TComDataCU *pcColCU = 0; 279 pcColCU = pcCUDes->getBaseColCU(refLayerIdc, pelX + 8, pelY + 8, baseCUAddr, baseAbsPartIdx, 1);279 pcColCU = pcCUDes->getBaseColCU(refLayerIdc, pelX, pelY, baseCUAddr, baseAbsPartIdx, true); 280 280 281 281 if( pcColCU && (pcColCU->getPredictionMode(baseAbsPartIdx) != MODE_NONE) && (pcColCU->getPredictionMode(baseAbsPartIdx) != MODE_INTRA) ) //base layer unit not skip and invalid mode … … 306 306 } 307 307 } 308 memset( pcCUDes->getPartitionSize(), SIZE_2Nx2N, sizeof(Char)*numPartitions );308 memset( pcCUDes->getPartitionSize(), SIZE_2Nx2N, sizeof(Char)*numPartitions ); 309 309 } 310 310 } -
branches/SHM-dev/source/Lib/TLibDecoder/TDecTop.cpp
r821 r822 185 185 m_cIlpPic[i] = NULL; 186 186 } 187 } 187 } 188 188 #endif 189 189 } … … 1597 1597 1598 1598 #if POC_RESET_IDC_DECODER 1599 pcPic->setCurrAuFlag( true );1599 pcPic->setCurrAuFlag( true ); 1600 1600 #endif 1601 1601
Note: See TracChangeset for help on using the changeset viewer.