Changeset 207 in SHVCSoftware for branches/SHM-2.0-dev/source
- Timestamp:
- 16 May 2013, 07:43:35 (12 years ago)
- Location:
- branches/SHM-2.0-dev/source/Lib/TLibCommon
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/SHM-2.0-dev/source/Lib/TLibCommon/TComDataCU.cpp
r175 r207 2532 2532 #if SVC_MVP 2533 2533 // BL collocated 2534 TComDataCU *pcColCU = 0; 2535 UInt uiCUAddrBase, uiAbsPartAddrBase ; 2536 TComMvField cMvFieldBaseColCU[2]; 2537 if(m_layerId) 2538 { 2539 pcColCU = getBaseColCU( xP + nPSW/2, yP + nPSH/2, uiCUAddrBase, uiAbsPartAddrBase ); 2540 2534 TComDataCU *pcColCU = NULL; 2535 UInt uiCUAddrBase = 0, uiAbsPartAddrBase = 0; 2536 #if AVC_BASE 2537 if( !this->getSlice()->getVPS()->getAvcBaseLayerFlag() || AVC_SYNTAX ) 2538 #endif 2539 { 2540 TComMvField cMvFieldBaseColCU[2]; 2541 if(m_layerId) 2542 { 2543 pcColCU = getBaseColCU( xP + nPSW/2, yP + nPSH/2, uiCUAddrBase, uiAbsPartAddrBase ); 2544 2541 2545 #if INTRA_BL 2542 if( pcColCU && pcColCU->isIntraBL( uiAbsPartAddrBase ) ) 2543 { 2544 pcColCU = NULL; 2545 } 2546 #endif 2547 2548 if(pcColCU && !pcColCU->isIntra( uiAbsPartAddrBase ) ) 2549 { 2550 abCandIsInter[iCount] = true; 2551 2552 // get interDir 2553 puhInterDirNeighbours[iCount] = pcColCU->getInterDir( uiAbsPartAddrBase ); 2554 2555 pcMvFieldNeighbours[(iCount << 1)].setMvField( TComMv(0,0), -1); 2556 pcMvFieldNeighbours[(iCount << 1) + 1].setMvField( TComMv(0,0), -1); 2557 2558 if( puhInterDirNeighbours[iCount] & 1 ) 2559 { 2560 pcColCU->getMvField( pcColCU, uiAbsPartAddrBase, REF_PIC_LIST_0, cMvFieldBaseColCU[0]); 2561 scaleBaseMV( pcMvFieldNeighbours[iCount<<1], cMvFieldBaseColCU[0] ); 2562 } 2563 2564 if ( getSlice()->isInterB() && puhInterDirNeighbours[iCount] & 2 ) 2565 { 2566 pcColCU->getMvField( pcColCU, uiAbsPartAddrBase, REF_PIC_LIST_1, cMvFieldBaseColCU[1] ); 2567 scaleBaseMV( pcMvFieldNeighbours[(iCount<<1)+1], cMvFieldBaseColCU[1] ); 2568 } 2569 2570 if( puhInterDirNeighbours[iCount] > 0 ) 2571 { 2572 if ( mrgCandIdx == iCount ) 2546 if( pcColCU && pcColCU->isIntraBL( uiAbsPartAddrBase ) ) 2547 { 2548 pcColCU = NULL; 2549 } 2550 #endif 2551 2552 if(pcColCU && !pcColCU->isIntra( uiAbsPartAddrBase ) ) 2553 { 2554 abCandIsInter[iCount] = true; 2555 2556 // get interDir 2557 puhInterDirNeighbours[iCount] = pcColCU->getInterDir( uiAbsPartAddrBase ); 2558 2559 pcMvFieldNeighbours[(iCount << 1)].setMvField( TComMv(0,0), -1); 2560 pcMvFieldNeighbours[(iCount << 1) + 1].setMvField( TComMv(0,0), -1); 2561 2562 if( puhInterDirNeighbours[iCount] & 1 ) 2573 2563 { 2574 return; 2564 pcColCU->getMvField( pcColCU, uiAbsPartAddrBase, REF_PIC_LIST_0, cMvFieldBaseColCU[0]); 2565 scaleBaseMV( pcMvFieldNeighbours[iCount<<1], cMvFieldBaseColCU[0] ); 2575 2566 } 2576 iCount ++; 2567 2568 if ( getSlice()->isInterB() && puhInterDirNeighbours[iCount] & 2 ) 2569 { 2570 pcColCU->getMvField( pcColCU, uiAbsPartAddrBase, REF_PIC_LIST_1, cMvFieldBaseColCU[1] ); 2571 scaleBaseMV( pcMvFieldNeighbours[(iCount<<1)+1], cMvFieldBaseColCU[1] ); 2572 } 2573 2574 if( puhInterDirNeighbours[iCount] > 0 ) 2575 { 2576 if ( mrgCandIdx == iCount ) 2577 { 2578 return; 2579 } 2580 iCount ++; 2581 } 2577 2582 } 2578 2583 } -
branches/SHM-2.0-dev/source/Lib/TLibCommon/TypeDef.h
r187 r207 103 103 104 104 // Hooks 105 #if !AVC_BASE || AVC_SYNTAX106 105 #define SVC_MVP 1 ///< motion hook for merge mode as an example 107 #if !AVC_ SYNTAX106 #if !AVC_BASE && !AVC_SYNTAX 108 107 #define SVC_BL_CAND_INTRA 0 ///< Intra Base Mode Prediction hook as an example 109 #endif110 108 #endif 111 109
Note: See TracChangeset for help on using the changeset viewer.