Changeset 1084 in 3DVCSoftware for trunk/source/Lib
- Timestamp:
- 24 Oct 2014, 11:44:58 (10 years ago)
- Location:
- trunk/source/Lib
- Files:
-
- 45 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/Lib/TAppCommon/program_options_lite.h
r1039 r1084 378 378 std::string cDescBuffer; 379 379 380 #if !FIX_TICKET_62381 cNameBuffer .resize( name.size() + 10 );382 cDescBuffer.resize( desc.size() + 10 );383 #endif384 385 380 storage.resize(uiMaxNum); 386 381 for ( unsigned int uiK = 0; uiK < uiMaxNum; uiK++ ) 387 382 { 388 389 #if FIX_TICKET_62390 383 cNameBuffer .resize( name.size() + 10 ); 391 384 cDescBuffer.resize( desc.size() + 10 ); 392 #endif393 385 394 386 Bool duplicate = (uiK != 0); -
trunk/source/Lib/TLibCommon/CommonDef.h
r1067 r1084 61 61 #if H_MV 62 62 #define NV_VERSION "12.1" ///< Current software version 63 #define HM_VERSION "1 4.0" ///<63 #define HM_VERSION "15.0" ///< 64 64 #else 65 65 #define NV_VERSION "14.0" ///< Current software version -
trunk/source/Lib/TLibCommon/ContextTables.h
r1039 r1084 51 51 #define NUM_SPLIT_FLAG_CTX 3 ///< number of context models for split flag 52 52 #define NUM_SKIP_FLAG_CTX 3 ///< number of context models for skip flag 53 #if MTK_SINGLE_DEPTH_MODE_I009553 #if H_3D_SINGLE_DEPTH 54 54 #define NUM_SINGLEDEPTH_FLAG_CTX 1 55 55 #define NUM_SINGLE_DEPTH_VALUE_DATA_CTX 1 … … 153 153 { CNU, CNU, CNU, }, 154 154 }; 155 #if MTK_SINGLE_DEPTH_MODE_I0095155 #if H_3D_SINGLE_DEPTH 156 156 static const UChar 157 157 INIT_SINGLEDEPTH_FLAG[3][NUM_SINGLEDEPTH_FLAG_CTX] = … … 450 450 static const UChar INIT_DBBP_FLAG[3][DBBP_NUM_FLAG_CTX] = 451 451 { 452 #if SEC_DBBP_EXPLICIT_SIG_I0077 453 { CNU }, 454 { CNU }, 455 { CNU }, 456 #else 457 { 161 }, 458 { 161 }, 459 { 161 }, 460 #endif 461 }; 462 #endif 463 464 #endif 452 { CNU }, 453 { CNU }, 454 { CNU }, 455 }; 456 #endif 457 458 #endif -
trunk/source/Lib/TLibCommon/SEI.h
r964 r1084 161 161 UInt m_bpSeqParameterSetId; 162 162 Bool m_rapCpbParamsPresentFlag; 163 Boolm_cpbDelayOffset;164 Boolm_dpbDelayOffset;163 UInt m_cpbDelayOffset; 164 UInt m_dpbDelayOffset; 165 165 UInt m_initialCpbRemovalDelay [MAX_CPB_CNT][2]; 166 166 UInt m_initialCpbRemovalDelayOffset [MAX_CPB_CNT][2]; -
trunk/source/Lib/TLibCommon/TComDataCU.cpp
r1066 r1084 60 60 61 61 m_skipFlag = NULL; 62 #if MTK_SINGLE_DEPTH_MODE_I009562 #if H_3D_SINGLE_DEPTH 63 63 m_singleDepthFlag = NULL; 64 64 m_apSingleDepthValue = NULL; … … 185 185 186 186 m_skipFlag = new Bool[ uiNumPartition ]; 187 #if MTK_SINGLE_DEPTH_MODE_I0095187 #if H_3D_SINGLE_DEPTH 188 188 m_singleDepthFlag = new Bool[ uiNumPartition ]; 189 189 m_apSingleDepthValue = (Pel*)xMalloc(Pel, uiNumPartition); … … 335 335 336 336 if ( m_skipFlag ) { delete[] m_skipFlag; m_skipFlag = NULL; } 337 #if MTK_SINGLE_DEPTH_MODE_I0095337 #if H_3D_SINGLE_DEPTH 338 338 if ( m_singleDepthFlag ) { delete[] m_singleDepthFlag; m_singleDepthFlag = NULL; } 339 339 if ( m_apSingleDepthValue ) { xFree(m_apSingleDepthValue); m_apSingleDepthValue = NULL; } … … 503 503 TComDataCU * pcFrom = pcPic->getCU(getAddr()); 504 504 m_skipFlag[ui] = pcFrom->getSkipFlag(ui); 505 #if MTK_SINGLE_DEPTH_MODE_I0095505 #if H_3D_SINGLE_DEPTH 506 506 m_singleDepthFlag[ui] = pcFrom->getSingleDepthFlag(ui); 507 507 m_apSingleDepthValue[ui] = pcFrom->getSingleDepthValue(ui); … … 563 563 { 564 564 memset( m_skipFlag + firstElement, false, numElements * sizeof( *m_skipFlag ) ); 565 #if MTK_SINGLE_DEPTH_MODE_I0095565 #if H_3D_SINGLE_DEPTH 566 566 memset( m_singleDepthFlag + firstElement, false, numElements * sizeof( *m_singleDepthFlag ) ); 567 567 memset( m_apSingleDepthValue + firstElement, 0, numElements * sizeof( *m_apSingleDepthValue ) ); … … 754 754 m_puhTransformSkip[2][ui] = 0; 755 755 m_skipFlag[ui] = false; 756 #if MTK_SINGLE_DEPTH_MODE_I0095756 #if H_3D_SINGLE_DEPTH 757 757 m_singleDepthFlag[ui] = false; 758 758 m_apSingleDepthValue[ui] = 0; … … 933 933 { 934 934 m_skipFlag[ui] = false; 935 #if MTK_SINGLE_DEPTH_MODE_I0095935 #if H_3D_SINGLE_DEPTH 936 936 m_singleDepthFlag[ui] = false; 937 937 m_apSingleDepthValue[ui]= 0; … … 958 958 m_puhTransformSkip[2][ui] = pcCU->getTransformSkip(uiPartOffset+ui,TEXT_CHROMA_V); 959 959 m_skipFlag[ui] = pcCU->getSkipFlag(uiPartOffset+ui); 960 #if MTK_SINGLE_DEPTH_MODE_I0095960 #if H_3D_SINGLE_DEPTH 961 961 m_singleDepthFlag[ui] = pcCU->getSingleDepthFlag(uiPartOffset+ui); 962 962 m_apSingleDepthValue[ui] = pcCU->getSingleDepthValue(uiPartOffset+ui); … … 1111 1111 1112 1112 m_skipFlag=pcCU->getSkipFlag() + uiPart; 1113 #if MTK_SINGLE_DEPTH_MODE_I00951113 #if H_3D_SINGLE_DEPTH 1114 1114 m_singleDepthFlag = pcCU->getSingleDepthFlag() + uiPart; 1115 1115 m_apSingleDepthValue = pcCU->getSingleDepthValue() + uiPart; … … 1252 1252 1253 1253 m_skipFlag = pcCU->getSkipFlag () + uiAbsPartIdx; 1254 #if MTK_SINGLE_DEPTH_MODE_I00951254 #if H_3D_SINGLE_DEPTH 1255 1255 m_singleDepthFlag = pcCU->getSingleDepthFlag () + uiAbsPartIdx; 1256 1256 m_apSingleDepthValue = pcCU->getSingleDepthValue () + uiAbsPartIdx; … … 1331 1331 Int sizeInChar = sizeof( Char ) * uiNumPartition; 1332 1332 memcpy( m_skipFlag + uiOffset, pcCU->getSkipFlag(), sizeof( *m_skipFlag ) * uiNumPartition ); 1333 #if MTK_SINGLE_DEPTH_MODE_I00951333 #if H_3D_SINGLE_DEPTH 1334 1334 memcpy( m_singleDepthFlag + uiOffset, pcCU->getSingleDepthFlag(), sizeof( *m_singleDepthFlag ) * uiNumPartition ); 1335 1335 memcpy( m_apSingleDepthValue + uiOffset, pcCU->getSingleDepthValue(), sizeof( *m_apSingleDepthValue ) * uiNumPartition); … … 1455 1455 1456 1456 memcpy( rpcCU->getSkipFlag() + m_uiAbsIdxInLCU, m_skipFlag, sizeof( *m_skipFlag ) * m_uiNumPartition ); 1457 #if MTK_SINGLE_DEPTH_MODE_I00951457 #if H_3D_SINGLE_DEPTH 1458 1458 memcpy( rpcCU->getSingleDepthFlag() + m_uiAbsIdxInLCU, m_singleDepthFlag, sizeof( *m_singleDepthFlag ) * m_uiNumPartition ); 1459 1459 memcpy( rpcCU->getSingleDepthValue() + m_uiAbsIdxInLCU, m_apSingleDepthValue, sizeof( *m_apSingleDepthValue ) * m_uiNumPartition); … … 1574 1574 Int sizeInChar = sizeof( Char ) * uiQNumPart; 1575 1575 memcpy( rpcCU->getSkipFlag() + uiPartOffset, m_skipFlag, sizeof( *m_skipFlag ) * uiQNumPart ); 1576 #if MTK_SINGLE_DEPTH_MODE_I00951576 #if H_3D_SINGLE_DEPTH 1577 1577 memcpy( rpcCU->getSingleDepthFlag() + uiPartOffset, m_singleDepthFlag, sizeof( *m_singleDepthFlag ) * uiQNumPart ); 1578 1578 memcpy( rpcCU->getSingleDepthValue() + uiPartOffset, m_apSingleDepthValue, sizeof( *m_apSingleDepthValue ) * uiQNumPart); … … 2497 2497 memset( m_skipFlag + absPartIdx, skip, m_pcPic->getNumPartInCU() >> ( 2 * depth ) ); 2498 2498 } 2499 #if MTK_SINGLE_DEPTH_MODE_I00952499 #if H_3D_SINGLE_DEPTH 2500 2500 Void TComDataCU::setSingleDepthFlagSubParts( Bool singleDepth, UInt absPartIdx, UInt depth ) 2501 2501 { … … 2677 2677 } 2678 2678 2679 #if HS_DMM_SIGNALLING_I01202680 2679 if( isDimMode( getLumaIntraDir( uiAbsPartIdx ) ) ) 2681 #else2682 if( isDimMode( getLumaIntraDir( uiAbsPartIdx ) ) && !isDimDeltaDC( getLumaIntraDir( uiAbsPartIdx ) ) )2683 #endif2684 2680 { 2685 2681 return true; … … 2694 2690 // check prediction mode 2695 2691 UInt uiLumaPredMode = getLumaIntraDir( uiAbsPartIdx ); 2696 #if HS_DMM_SIGNALLING_I01202697 2692 if( uiLumaPredMode == PLANAR_IDX || ( getDimType( uiLumaPredMode ) == DMM1_IDX ) ) 2698 #else2699 if( uiLumaPredMode == PLANAR_IDX || ( getDimType( uiLumaPredMode ) == DMM1_IDX && !isDimDeltaDC( uiLumaPredMode ) ) )2700 #endif2701 2693 return true; 2702 2694 … … 3373 3365 for(Int iLoop = 0; iLoop < 2; iLoop ++ ) 3374 3366 { 3375 #if !SEC_SIMP_SHIFTED_DV_I00863376 // IvDcShift (Derived from spatial Iv neighboring blocks)3377 if( iLoop == 1 )3378 {3379 Int iFirDispCand = -1;3380 TComMvField mvIvDcShift[2];3381 UChar dirIvDcShift;3382 3383 if (xGetPosFirstAvailDmvCand(MRG_IVSHIFT, iFirDispCand))3384 {3385 TComMv cMv;3386 cMv = m_mergCands[iFirDispCand].m_cMvField[0].getMv();3387 cMv.setHor(cMv.getHor()+4);3388 if(m_pcSlice->getVPS()->getViewSynthesisPredFlag(m_pcSlice->getLayerIdInVps()))3389 {3390 cMv.setVer(0);3391 }3392 #if !(NTT_BUG_FIX_TK54)3393 clipMv( cMv );3394 #endif3395 3396 dirIvDcShift = m_mergCands[iFirDispCand].m_uDir;3397 mvIvDcShift[0].setMvField(cMv, m_mergCands[iFirDispCand].m_cMvField[0].getRefIdx() );3398 mvIvDcShift[1].setMvField(m_mergCands[iFirDispCand].m_cMvField[1].getMv(), m_mergCands[iFirDispCand].m_cMvField[1].getRefIdx() );3399 m_mergCands[MRG_IVSHIFT].setCand(mvIvDcShift, dirIvDcShift, false, false);3400 3401 if( mrgCandIdx == iCount )3402 {3403 return true;3404 }3405 iCount++;3406 break;3407 }3408 }3409 #endif3410 3411 3367 /// iLoop = 0 --> IvMCShift 3412 3368 /// iLoop = 1 --> IvDCShift (Derived from IvDC) … … 3455 3411 } 3456 3412 3457 #if !SEC_SIMP_SHIFTED_DV_I00863458 inline Bool TComDataCU::xGetPosFirstAvailDmvCand(Int iCount, Int& posFirstAvailDmvCand )3459 {3460 for ( Int currListPos = 0; currListPos < iCount; currListPos++ )3461 {3462 if ( !m_mergCands[currListPos].m_bAvailable || ( currListPos == MRG_IVMC ) || ( currListPos == MRG_IVDC ) || ( m_mergCands[currListPos].m_iVspFlag != 0 ))3463 {3464 continue;3465 }3466 else if((m_mergCands[currListPos].m_bAvailable) && (m_mergCands[currListPos].m_cMvField[0].getRefIdx() != -1 ) && (getSlice()->getViewIndex() != getSlice()->getRefPic(RefPicList(0), m_mergCands[currListPos].m_cMvField[0].getRefIdx())->getViewIndex()))3467 {3468 posFirstAvailDmvCand = currListPos;3469 return true;3470 }3471 }3472 return false;3473 }3474 #endif3475 3476 3413 #endif 3477 3414 … … 3921 3858 Void TComDataCU::getInterMergeCandidates( UInt uiAbsPartIdx, UInt uiPUIdx, TComMvField* pcMvFieldNeighbours, UChar* puhInterDirNeighbours 3922 3859 #endif 3923 #if H_3D_VSP && !FIX_TICKET_793924 , InheritedVSPDisInfo* inheritedVSPDisInfo3925 #endif3926 3860 #if H_3D_SPIVMP 3927 3861 , TComMvField* pcMvFieldSP, UChar* puhInterDirSP … … 3951 3885 ////////////////////////////////// 3952 3886 DisInfo cDisInfo = getDvInfo(uiAbsPartIdx); 3953 #if !FIX_TICKET_793954 for(Int i = 0; i < MRG_MAX_NUM_CANDS_MEM; i++)3955 {3956 inheritedVSPDisInfo[i].m_acDvInfo = cDisInfo; // To prevent run-time error, this code must be executed always for merging process.3957 }3958 #endif3959 3887 m_cDefaultDisInfo = cDisInfo; 3960 3888 … … 4177 4105 TComPic * pcTexPic = m_pcSlice->getTexturePic(); 4178 4106 #if H_3D_FCO 4179 #if LGE_FCO_I01164107 #if H_3D_FCO 4180 4108 if (pcTexPic && pcTexPic->getReconMark()) 4181 4109 #else … … 4251 4179 TComMv cMv = cDefaultMvField.getMv() + cMvRounding; 4252 4180 cMv >>= 2; 4253 #if !FIX_TICKET_684254 clipMv( cMv );4255 #endif4256 4181 cMvFieldSaved[eCurrRefPicList].setMvField(cMv, iRefPicList) ; 4257 4182 break; … … 5325 5250 #endif 5326 5251 5327 #if !FIX_TICKET_765328 #if H_3D_VSP5329 inline Void TComDataCU::xInheritVSPDisInfo(TComDataCU* pcCURef, UInt uiAbsPartIdx, Int iCount, InheritedVSPDisInfo* inheritedVSPDisInfo)5330 {5331 inheritedVSPDisInfo[iCount].m_acDvInfo.m_acNBDV = pcCURef->getDvInfo(uiAbsPartIdx).m_acNBDV;5332 inheritedVSPDisInfo[iCount].m_acDvInfo.m_aVIdxCan = pcCURef->getDvInfo(uiAbsPartIdx).m_aVIdxCan;5333 }5334 #endif5335 #endif5336 5252 /** Check whether the current PU and a spatial neighboring PU are in a same ME region. 5337 5253 * \param xN, xN location of the upper-left corner pixel of a neighboring PU … … 5976 5892 Int iColRefViewId = pColCU->getSlice()->getRefPic( eColRefPicList, pColCU->getCUMvField(eColRefPicList)->getRefIdx(uiAbsPartAddr))->getViewIndex(); 5977 5893 iScale = xGetDistScaleFactor( iCurrViewId, iCurrRefViewId, iColViewId, iColRefViewId ); 5978 #if SEC_HLS_CLEANUP_I0100 5894 5979 5895 if ( iScale != 4096 && m_pcSlice->getVPS()->getIvMvScalingFlag(getSlice()->getLayerIdInVps()) ) 5980 #else5981 if ( iScale != 4096 && m_pcSlice->getVPS()->getIvMvScalingFlag() )5982 #endif5983 5896 { 5984 5897 rcMv = cColMv.scaleMv( iScale ); … … 6164 6077 TComMv cMv; 6165 6078 #if MTK_I0093 6166 #if H_3D_FIX_64BIT_SHIFT6167 6079 Int iDisp = getSlice()->getDepthToDisparityB( 0 )[ (Int64) (1 << ( getSlice()->getSPS()->getBitDepthY() - 1 )) ]; 6168 #else6169 Int iDisp = getSlice()->getDepthToDisparityB( 0 )[ 1 << ( getSlice()->getSPS()->getBitDepthY() - 1 ) ];6170 #endif6171 6080 #else 6172 6081 Int iDisp = getSlice()->getDepthToDisparityB( 0 )[ 128 ]; … … 6181 6090 #endif 6182 6091 6183 #if MTK_SINGLE_DEPTH_MODE_I00956092 #if H_3D_SINGLE_DEPTH 6184 6093 Bool TComDataCU::getNeighDepth (UInt uiPartIdx, UInt uiPartAddr, Pel* pNeighDepth, Int index) 6185 6094 { … … 6795 6704 if( getSlice()->getIsDepth() ) 6796 6705 { 6797 #if MTK_I0099_VPS_EX26798 6706 iSubPUSize = 1<<getSlice()->getVPS()->getSubPUMPILog2Size(getSlice()->getLayerId()); 6799 #else6800 iSubPUSize = 1 << getSlice()->getVPS()->getSubPUMPILog2Size();6801 #endif6802 6707 } 6803 6708 -
trunk/source/Lib/TLibCommon/TComDataCU.h
r1039 r1084 110 110 // ------------------------------------------------------------------------------------------------------------------- 111 111 Bool* m_skipFlag; ///< array of skip flags 112 #if MTK_SINGLE_DEPTH_MODE_I0095112 #if H_3D_SINGLE_DEPTH 113 113 Bool* m_singleDepthFlag; ///< array of single depth flags 114 114 Pel* m_apSingleDepthValue; … … 250 250 #if H_3D_IV_MERGE 251 251 Bool xAddIvMRGCand( Int mrgCandIdx, Int& iCount, Int* ivCandDir, TComMv* ivCandMv, Int* ivCandRefIdx ); 252 #if! SEC_SIMP_SHIFTED_DV_I0086253 Bool xGetPosFirstAvailDmvCand( Int iCount, Int& iFirDispCand );254 #endif255 252 #endif 256 253 … … 353 350 Void setSkipFlag ( UInt idx, Bool skip) { m_skipFlag[idx] = skip; } 354 351 Void setSkipFlagSubParts ( Bool skip, UInt absPartIdx, UInt depth ); 355 #if MTK_SINGLE_DEPTH_MODE_I0095352 #if H_3D_SINGLE_DEPTH 356 353 Bool* getSingleDepthFlag () { return m_singleDepthFlag; } 357 354 Bool getSingleDepthFlag (UInt idx) { return m_singleDepthFlag[idx]; } … … 505 502 Bool getDispMvPredCan(UInt uiPartIdx, RefPicList eRefPicList, Int iRefIdx, Int* paiPdmRefIdx, TComMv* pacPdmMv, DisInfo* pDis, Int* iPdm ); 506 503 #endif 507 #if MTK_SINGLE_DEPTH_MODE_I0095504 #if H_3D_SINGLE_DEPTH 508 505 Bool getNeighDepth (UInt uiPartIdx, UInt uiPartAddr, Pel* pNeighDepth, Int index); 509 506 #endif … … 670 667 Void getInterMergeCandidates ( UInt uiAbsPartIdx, UInt uiPUIdx, TComMvField* pcMFieldNeighbours, UChar* puhInterDirNeighbours 671 668 #endif 672 #if H_3D_VSP && !FIX_TICKET_79673 , InheritedVSPDisInfo* inheritedVSPDisInfo674 #endif675 669 #if H_3D_SPIVMP 676 670 , TComMvField* pcMvFieldSP, UChar* puhInterDirSP … … 680 674 681 675 #if H_3D_VSP 682 #if !FIX_TICKET_76683 inline Void xInheritVSPDisInfo(TComDataCU* pcCURef, UInt uiAbsPartIdx, Int iCount, InheritedVSPDisInfo* inheritedVSPDisInfo);684 #endif685 686 676 #if H_3D_SPIVMP 687 677 Bool* getSPIVMPFlag () { return m_pbSPIVMPFlag; } … … 771 761 #endif 772 762 773 #if SHARP_DMM1_I0110763 #if H_3D_DIM 774 764 Bool isDMM1UpscaleMode ( UInt uiWidth ){ Bool bDMM1UpsampleModeFlag = true; UInt uiBaseWidth = 16; if( uiBaseWidth >= uiWidth ){ bDMM1UpsampleModeFlag = false; } return bDMM1UpsampleModeFlag; }; 775 765 UInt getDMM1BasePatternWidth ( UInt uiWidth ){ UInt uiBaseWidth = 16; if( uiBaseWidth >= uiWidth ){ uiBaseWidth = uiWidth; } return uiBaseWidth; } -
trunk/source/Lib/TLibCommon/TComMotionInfo.h
r1039 r1084 79 79 } IDVInfo; 80 80 #endif 81 #if H_3D_VSP && !FIX_TICKET_79 82 typedef struct _InheritedVSPDisCand 83 { 84 DisInfo m_acDvInfo; 85 } InheritedVSPDisInfo; 86 #endif 81 87 82 // ==================================================================================================================== 88 83 // Class definition -
trunk/source/Lib/TLibCommon/TComPicSym.cpp
r872 r1084 38 38 #include "TComPicSym.h" 39 39 #include "TComSampleAdaptiveOffset.h" 40 #include "TComSlice.h" 40 41 41 42 //! \ingroup TLibCommon … … 63 64 ,m_iNumColumnsMinus1 (0) 64 65 ,m_iNumRowsMinus1(0) 65 ,m_apcTComTile(NULL)66 66 ,m_puiCUOrderMap(0) 67 67 ,m_puiTileIdxMap(NULL) … … 101 101 delete [] m_apcTComSlice; 102 102 } 103 m_apcTComSlice = new TComSlice*[m_uiNumCUsInFrame *m_uiNumPartitions];103 m_apcTComSlice = new TComSlice*[m_uiNumCUsInFrame]; 104 104 m_apcTComSlice[0] = new TComSlice; 105 105 m_uiNumAllocatedSlice = 1; … … 148 148 m_apcTComDataCU = NULL; 149 149 150 for(Int i = 0; i < (m_iNumColumnsMinus1+1)*(m_iNumRowsMinus1+1); i++ )151 {152 delete m_apcTComTile[i];153 }154 delete [] m_apcTComTile;155 156 m_apcTComTile = NULL;157 158 150 delete [] m_puiCUOrderMap; 159 151 m_puiCUOrderMap = NULL; … … 173 165 Void TComPicSym::allocateNewSlice() 174 166 { 167 assert ((m_uiNumAllocatedSlice + 1) <= m_uiNumCUsInFrame); 175 168 m_apcTComSlice[m_uiNumAllocatedSlice ++] = new TComSlice; 176 169 if (m_uiNumAllocatedSlice>=2) … … 201 194 } 202 195 203 Void TComPicSym::xCreateTComTileArray() 204 { 205 m_apcTComTile = new TComTile*[(m_iNumColumnsMinus1+1)*(m_iNumRowsMinus1+1)]; 206 for( UInt i=0; i<(m_iNumColumnsMinus1+1)*(m_iNumRowsMinus1+1); i++ ) 207 { 208 m_apcTComTile[i] = new TComTile; 209 } 210 } 211 212 Void TComPicSym::xInitTiles() 213 { 214 UInt uiTileIdx; 215 UInt uiColumnIdx = 0; 216 UInt uiRowIdx = 0; 217 UInt uiRightEdgePosInCU; 218 UInt uiBottomEdgePosInCU; 219 Int i, j; 196 Void TComPicSym::initTiles(TComPPS *pps) 197 { 198 //set NumColumnsMinus1 and NumRowsMinus1 199 setNumColumnsMinus1( pps->getNumTileColumnsMinus1() ); 200 setNumRowsMinus1( pps->getTileNumRowsMinus1() ); 201 202 const Int numCols = pps->getNumTileColumnsMinus1() + 1; 203 const Int numRows = pps->getTileNumRowsMinus1() + 1; 204 const Int numTiles = numRows * numCols; 205 206 // allocate memory for tile parameters 207 m_tileParameters.resize(numTiles); 208 209 if( pps->getTileUniformSpacingFlag() ) 210 { 211 //set width and height for each (uniform) tile 212 for(Int row=0; row < numRows; row++) 213 { 214 for(Int col=0; col < numCols; col++) 215 { 216 const Int tileIdx = row * numCols + col; 217 m_tileParameters[tileIdx].setTileWidth( (col+1)*getFrameWidthInCU()/numCols 218 - (col*getFrameWidthInCU())/numCols ); 219 m_tileParameters[tileIdx].setTileHeight( (row+1)*getFrameHeightInCU()/numRows 220 - (row*getFrameHeightInCU())/numRows ); 221 } 222 } 223 } 224 else 225 { 226 //set the width for each tile 227 for(Int row=0; row < numRows; row++) 228 { 229 Int cumulativeTileWidth = 0; 230 for(Int col=0; col < getNumColumnsMinus1(); col++) 231 { 232 m_tileParameters[row * numCols + col].setTileWidth( pps->getTileColumnWidth(col) ); 233 cumulativeTileWidth += pps->getTileColumnWidth(col); 234 } 235 m_tileParameters[row * numCols + getNumColumnsMinus1()].setTileWidth( getFrameWidthInCU()-cumulativeTileWidth ); 236 } 237 238 //set the height for each tile 239 for(Int col=0; col < numCols; col++) 240 { 241 Int cumulativeTileHeight = 0; 242 for(Int row=0; row < getNumRowsMinus1(); row++) 243 { 244 m_tileParameters[row * numCols + col].setTileHeight( pps->getTileRowHeight(row) ); 245 cumulativeTileHeight += pps->getTileRowHeight(row); 246 } 247 m_tileParameters[getNumRowsMinus1() * numCols + col].setTileHeight( getFrameHeightInCU()-cumulativeTileHeight ); 248 } 249 } 250 251 #if TILE_SIZE_CHECK 252 Int minWidth = 1; 253 Int minHeight = 1; 254 const Int profileIdc = pps->getSPS()->getPTL()->getGeneralPTL()->getProfileIdc(); 255 if ( profileIdc == Profile::MAIN || profileIdc == Profile::MAIN10) 256 { 257 if (pps->getTilesEnabledFlag()) 258 { 259 minHeight = 64 / g_uiMaxCUHeight; 260 minWidth = 256 / g_uiMaxCUWidth; 261 } 262 } 263 for(Int row=0; row < numRows; row++) 264 { 265 for(Int col=0; col < numCols; col++) 266 { 267 const Int tileIdx = row * numCols + col; 268 assert (m_tileParameters[tileIdx].getTileWidth() >= minWidth); 269 assert (m_tileParameters[tileIdx].getTileHeight() >= minHeight); 270 } 271 } 272 #endif 220 273 221 274 //initialize each tile of the current picture 222 for( uiRowIdx=0; uiRowIdx < m_iNumRowsMinus1+1; uiRowIdx++ )223 { 224 for( uiColumnIdx=0; uiColumnIdx < m_iNumColumnsMinus1+1; uiColumnIdx++ )225 { 226 uiTileIdx = uiRowIdx * (m_iNumColumnsMinus1+1) + uiColumnIdx;275 for( Int row=0; row < numRows; row++ ) 276 { 277 for( Int col=0; col < numCols; col++ ) 278 { 279 const Int tileIdx = row * numCols + col; 227 280 228 281 //initialize the RightEdgePosInCU for each tile 229 uiRightEdgePosInCU = 0;230 for( i=0; i <= uiColumnIdx; i++ )231 { 232 uiRightEdgePosInCU += this->getTComTile(uiRowIdx * (m_iNumColumnsMinus1+1) + i)->getTileWidth();233 } 234 this->getTComTile(uiTileIdx)->setRightEdgePosInCU(uiRightEdgePosInCU-1);282 Int rightEdgePosInCTU = 0; 283 for( Int i=0; i <= col; i++ ) 284 { 285 rightEdgePosInCTU += m_tileParameters[row * numCols + i].getTileWidth(); 286 } 287 m_tileParameters[tileIdx].setRightEdgePosInCU(rightEdgePosInCTU-1); 235 288 236 289 //initialize the BottomEdgePosInCU for each tile 237 uiBottomEdgePosInCU = 0;238 for( i=0; i <= uiRowIdx; i++ )239 { 240 uiBottomEdgePosInCU += this->getTComTile(i * (m_iNumColumnsMinus1+1) + uiColumnIdx)->getTileHeight();241 } 242 this->getTComTile(uiTileIdx)->setBottomEdgePosInCU(uiBottomEdgePosInCU-1);290 Int bottomEdgePosInCTU = 0; 291 for( Int i=0; i <= row; i++ ) 292 { 293 bottomEdgePosInCTU += m_tileParameters[i * numCols + col].getTileHeight(); 294 } 295 m_tileParameters[tileIdx].setBottomEdgePosInCU(bottomEdgePosInCTU-1); 243 296 244 297 //initialize the FirstCUAddr for each tile 245 this->getTComTile(uiTileIdx)->setFirstCUAddr( (this->getTComTile(uiTileIdx)->getBottomEdgePosInCU() - this->getTComTile(uiTileIdx)->getTileHeight() +1)*m_uiWidthInCU + 246 this->getTComTile(uiTileIdx)->getRightEdgePosInCU() - this->getTComTile(uiTileIdx)->getTileWidth() + 1); 247 } 248 } 298 m_tileParameters[tileIdx].setFirstCUAddr( (m_tileParameters[tileIdx].getBottomEdgePosInCU() - m_tileParameters[tileIdx].getTileHeight() + 1) * getFrameWidthInCU() + 299 m_tileParameters[tileIdx].getRightEdgePosInCU() - m_tileParameters[tileIdx].getTileWidth() + 1); 300 } 301 } 302 303 Int columnIdx = 0; 304 Int rowIdx = 0; 249 305 250 306 //initialize the TileIdxMap 251 for( i=0; i<m_uiNumCUsInFrame; i++)252 { 253 for( j=0; j < m_iNumColumnsMinus1+1; j++)254 { 255 if(i % m_uiWidthInCU <= this->getTComTile(j)->getRightEdgePosInCU())256 { 257 uiColumnIdx = j;258 j = m_iNumColumnsMinus1+1;259 } 260 } 261 for( j=0; j < m_iNumRowsMinus1+1; j++)262 { 263 if(i /m_uiWidthInCU <= this->getTComTile(j*(m_iNumColumnsMinus1 + 1))->getBottomEdgePosInCU())264 { 265 uiRowIdx = j;266 j = m_iNumRowsMinus1 + 1;267 } 268 } 269 m_puiTileIdxMap[i] = uiRowIdx * (m_iNumColumnsMinus1 + 1) + uiColumnIdx;307 for( Int i=0; i<m_uiNumCUsInFrame; i++) 308 { 309 for( Int col=0; col < numCols; col++) 310 { 311 if(i % getFrameWidthInCU() <= m_tileParameters[col].getRightEdgePosInCU()) 312 { 313 columnIdx = col; 314 break; 315 } 316 } 317 for(Int row=0; row < numRows; row++) 318 { 319 if(i / getFrameWidthInCU() <= m_tileParameters[row*numCols].getBottomEdgePosInCU()) 320 { 321 rowIdx = row; 322 break; 323 } 324 } 325 m_puiTileIdxMap[i] = rowIdx * numCols + columnIdx; 270 326 } 271 327 … … 417 473 418 474 TComTile::TComTile() 475 : m_uiTileWidth (0) 476 , m_uiTileHeight (0) 477 , m_uiRightEdgePosInCU (0) 478 , m_uiBottomEdgePosInCU (0) 479 , m_uiFirstCUAddr (0) 480 419 481 { 420 482 } -
trunk/source/Lib/TLibCommon/TComPicSym.h
r872 r1084 45 45 #include "TComDataCU.h" 46 46 class TComSampleAdaptiveOffset; 47 class TComPPS; 47 48 48 49 //! \ingroup TLibCommon … … 102 103 Int m_iNumColumnsMinus1; 103 104 Int m_iNumRowsMinus1; 104 TComTile** m_apcTComTile;105 std::vector<TComTile> m_tileParameters; 105 106 UInt* m_puiCUOrderMap; //the map of LCU raster scan address relative to LCU encoding order 106 107 UInt* m_puiTileIdxMap; //the map of the tile index relative to LCU raster scan address … … 133 134 Int getNumRowsMinus1() { return m_iNumRowsMinus1; } 134 135 Int getNumTiles() { return (m_iNumRowsMinus1+1)*(m_iNumColumnsMinus1+1); } 135 TComTile* getTComTile ( UInt tileIdx ) { return *(m_apcTComTile + tileIdx); }136 TComTile* getTComTile ( UInt tileIdx ) { return &(m_tileParameters[tileIdx]); } 136 137 Void setCUOrderMap( Int encCUOrder, Int cuAddr ) { *(m_puiCUOrderMap + encCUOrder) = cuAddr; } 137 138 UInt getCUOrderMap( Int encCUOrder ) { return *(m_puiCUOrderMap + (encCUOrder>=m_uiNumCUsInFrame ? m_uiNumCUsInFrame : encCUOrder)); } … … 141 142 UInt getPicSCUEncOrder( UInt SCUAddr ); 142 143 UInt getPicSCUAddr( UInt SCUEncOrder ); 143 Void xCreateTComTileArray(); 144 Void xInitTiles(); 144 Void initTiles(TComPPS *pps); 145 145 UInt xCalculateNxtCUAddr( UInt uiCurrCUAddr ); 146 146 SAOBlkParam* getSAOBlkParam() { return m_saoBlkParams;} -
trunk/source/Lib/TLibCommon/TComPrediction.cpp
r1039 r1084 423 423 424 424 UInt dimType = getDimType ( uiIntraMode ); 425 #if !HS_DMM_SIGNALLING_I0120426 Bool dimDeltaDC = isDimDeltaDC( uiIntraMode );427 #endif428 425 Bool isDmmMode = (dimType < DMM_NUM_TYPE); 429 426 … … 440 437 case( DMM1_IDX ): 441 438 { 442 #if SHARP_DMM1_I0110443 439 dmmSegmentation = pcCU->isDMM1UpscaleMode((UInt)iWidth) ? 444 440 &(g_dmmWedgeLists[ g_aucConvertToBit[pcCU->getDMM1BasePatternWidth((UInt)iWidth)] ][ pcCU->getDmmWedgeTabIdx( dimType, uiAbsPartIdx ) ]) : 445 441 &(g_dmmWedgeLists[ g_aucConvertToBit[iWidth] ][ pcCU->getDmmWedgeTabIdx( dimType, uiAbsPartIdx ) ]); 446 #else447 dmmSegmentation = &(g_dmmWedgeLists[ g_aucConvertToBit[iWidth] ][ pcCU->getDmmWedgeTabIdx( dimType, uiAbsPartIdx ) ]);448 #endif449 442 } break; 450 443 case( DMM4_IDX ): … … 464 457 } 465 458 assert( dmmSegmentation ); 466 #if SHARP_DMM1_I0110467 459 if( dimType == DMM1_IDX && pcCU->isDMM1UpscaleMode((UInt)iWidth) ) 468 460 { … … 475 467 patternStride = dmmSegmentation->getStride (); 476 468 } 477 #else478 biSegPattern = dmmSegmentation->getPattern();479 patternStride = dmmSegmentation->getStride ();480 #endif481 469 } 482 470 #endif … … 495 483 Pel segDC1 = 0; 496 484 Pel segDC2 = 0; 497 #if HS_DMM_SIGNALLING_I0120498 485 if( !pcCU->getSDCFlag( uiAbsPartIdx ) ) 499 #else500 if( dimDeltaDC )501 #endif502 486 { 503 487 Pel deltaDC1 = pcCU->getDimDeltaDC( dimType, 0, uiAbsPartIdx ); … … 568 552 pcCU->getSPAbsPartIdx(uiPartAddr, iSPWidth, iSPHeight, i, iNumSPInOneLine, uiSPAddr[i]); 569 553 } 570 #if SHARP_ARP_CHROMA_I0104571 554 if( pcCU->getARPW( uiPartAddr ) != 0 ) 572 555 { 573 556 return; 574 557 } 575 #endif 558 576 559 // horizontal sub-PU merge 577 560 for (Int i=0; i<iNumSP; i++) … … 745 728 Int uiMinDepth = MAX_INT; 746 729 Int uiMaxDepth = 0; 747 #if SEC_DBBP_DMM4_THRESHOLD_I0076 730 748 731 iSumDepth = pDepthPels[ 0 ]; 749 732 iSumDepth += pDepthPels[ uiWidth - 1 ]; … … 760 743 uiMaxDepth = std::max( uiMaxDepth, (Int)pDepthPels[ uiDepthStride * (uiHeight - 1) ]); 761 744 uiMaxDepth = std::max( uiMaxDepth, (Int)pDepthPels[ uiDepthStride * (uiHeight - 1) + uiWidth - 1 ]); 762 #else 763 for (Int y=0; y<uiHeight; y++) 764 { 765 for (Int x=0; x<uiWidth; x++) 766 { 767 Int depthPel = pDepthPels[x]; 768 iSumDepth += depthPel; 769 770 if( depthPel > uiMaxDepth ) 771 { 772 uiMaxDepth = depthPel; 773 } 774 if( depthPel < uiMinDepth ) 775 { 776 uiMinDepth = depthPel; 777 } 778 } 779 780 // next row 781 pDepthPels += uiDepthStride; 782 } 783 #endif 745 784 746 785 747 // don't generate mask for blocks with small depth range (encoder decision) … … 790 752 791 753 AOF(uiWidth==uiHeight); 792 #if SEC_DBBP_DMM4_THRESHOLD_I0076793 754 Int iMean = iSumDepth >> 2; 794 #else795 Int iSizeInBits = g_aucConvertToBit[uiWidth]+2;796 Int iMean = iSumDepth >> iSizeInBits*2; // iMean /= (uiWidth*uiHeight);797 #endif798 755 799 756 // start again for segmentation … … 842 799 } 843 800 844 #if SHARP_DBBP_SIMPLE_FLTER_I0109845 801 Void TComPrediction::combineSegmentsWithMask( TComYuv* pInYuv[2], TComYuv* pOutYuv, Bool* pMask, UInt uiWidth, UInt uiHeight, UInt uiPartAddr, UInt partSize ) 846 #else847 Void TComPrediction::combineSegmentsWithMask( TComYuv* pInYuv[2], TComYuv* pOutYuv, Bool* pMask, UInt uiWidth, UInt uiHeight, UInt uiPartAddr )848 #endif849 802 { 850 803 Pel* piSrc[2] = {pInYuv[0]->getLumaAddr(uiPartAddr), pInYuv[1]->getLumaAddr(uiPartAddr)}; … … 854 807 855 808 UInt uiMaskStride= MAX_CU_SIZE; 856 #if !SHARP_DBBP_SIMPLE_FLTER_I0109857 Pel filSrc = 0;858 #endif859 809 Pel* tmpTar = 0; 860 810 tmpTar = (Pel *)xMalloc(Pel, uiWidth*uiHeight); … … 880 830 } 881 831 882 #if SHARP_DBBP_SIMPLE_FLTER_I0109883 832 if (partSize == SIZE_Nx2N) 884 833 { … … 917 866 } 918 867 } 919 #else920 for (Int y=0; y<uiHeight; y++)921 {922 for (Int x=0; x<uiWidth; x++)923 {924 Bool t = (y==0)?pMaskStart[y*uiMaskStride+x]:pMaskStart[(y-1)*uiMaskStride+x];925 Bool l = (x==0)?pMaskStart[y*uiMaskStride+x]:pMaskStart[y*uiMaskStride+x-1];926 Bool b = (y==uiHeight-1)?pMaskStart[y*uiMaskStride+x]:pMaskStart[(y+1)*uiMaskStride+x];927 Bool r = (x==uiWidth-1)?pMaskStart[y*uiMaskStride+x]:pMaskStart[y*uiMaskStride+x+1];928 Bool c =pMaskStart[y*uiMaskStride+x];929 930 Pel left, right, top, bottom;931 left = (x==0) ? tmpTar[y*uiWidth+x] : tmpTar[y*uiWidth+x-1];932 right = (x==uiWidth-1) ? tmpTar[y*uiWidth+x] : tmpTar[y*uiWidth+x+1];933 top = (y==0) ? tmpTar[y*uiWidth+x] : tmpTar[(y-1)*uiWidth+x];934 bottom = (y==uiHeight-1) ? tmpTar[y*uiWidth+x] : tmpTar[(y+1)*uiWidth+x];935 936 if(!((l&&r&&c) || (!l&&!r&&!c)))937 {938 filSrc = Clip3( Pel( 0 ), Pel( 255 ), Pel(( left + (tmpTar[y*uiWidth+x] << 1) + right ) >> 2 ));939 }940 else941 {942 filSrc = tmpTar[y*uiWidth+x];943 }944 945 if(!((t&&b&&c) || (!t&&!b&&!c)))946 {947 filSrc = Clip3( Pel( 0 ), Pel( 255 ), Pel(( top + (filSrc << 1) + bottom ) >> 2 ));948 }949 piDst[x] = filSrc;950 }951 piDst += uiDstStride;952 }953 #endif954 868 955 869 if ( tmpTar ) { xFree(tmpTar); tmpTar = NULL; } … … 989 903 } 990 904 991 #if SHARP_DBBP_SIMPLE_FLTER_I0109992 905 if (partSize == SIZE_Nx2N) 993 906 { … … 1056 969 } 1057 970 } 1058 #else 1059 for (Int y=0; y<uiHeightC; y++) 1060 { 1061 for (Int x=0; x<uiWidthC; x++) 1062 { 1063 Bool t = (y==0)?pMaskStart[y*2*uiMaskStride+x*2]:pMaskStart[(y-1)*2*uiMaskStride+x*2]; 1064 Bool l = (x==0)?pMaskStart[y*2*uiMaskStride+x*2]:pMaskStart[y*2*uiMaskStride+(x-1)*2]; 1065 Bool b = (y==uiHeightC-1)?pMaskStart[y*2*uiMaskStride+x*2]:pMaskStart[(y+1)*2*uiMaskStride+x*2]; 1066 Bool r = (x==uiWidthC-1)?pMaskStart[y*2*uiMaskStride+x*2]:pMaskStart[y*2*uiMaskStride+(x+1)*2]; 1067 Bool c =pMaskStart[y*2*uiMaskStride+x*2]; 1068 1069 Pel leftU, rightU, topU, bottomU; 1070 leftU = (x==0) ? tmpTarU[y*uiWidthC+x] : tmpTarU[y*uiWidthC+x-1]; 1071 rightU = (x==uiWidthC-1) ? tmpTarU[y*uiWidthC+x] : tmpTarU[y*uiWidthC+x+1]; 1072 topU = (y==0) ? tmpTarU[y*uiWidthC+x] : tmpTarU[(y-1)*uiWidthC+x]; 1073 bottomU = (y==uiHeightC-1) ? tmpTarU[y*uiWidthC+x] : tmpTarU[(y+1)*uiWidthC+x]; 1074 1075 Pel leftV, rightV, topV, bottomV; 1076 leftV = (x==0) ? tmpTarV[y*uiWidthC+x] : tmpTarV[y*uiWidthC+x-1]; 1077 rightV = (x==uiWidthC-1) ? tmpTarV[y*uiWidthC+x] : tmpTarV[y*uiWidthC+x+1]; 1078 topV = (y==0) ? tmpTarV[y*uiWidthC+x] : tmpTarV[(y-1)*uiWidthC+x]; 1079 bottomV = (y==uiHeightC-1) ? tmpTarV[y*uiWidthC+x] : tmpTarV[(y+1)*uiWidthC+x]; 1080 1081 if(!((l&&r&&c) || (!l&&!r&&!c))) 1082 { 1083 filSrcU = Clip3( Pel( 0 ), Pel( 255 ), Pel(( leftU + (tmpTarU[y*uiWidthC+x] << 1) + rightU ) >> 2 )); 1084 filSrcV = Clip3( Pel( 0 ), Pel( 255 ), Pel(( leftV + (tmpTarV[y*uiWidthC+x] << 1) + rightV ) >> 2 )); 1085 } 1086 else 1087 { 1088 filSrcU = tmpTarU[y*uiWidthC+x]; 1089 filSrcV = tmpTarV[y*uiWidthC+x]; 1090 } 1091 1092 if(!((t&&b&&c) || (!t&&!b&&!c))) 1093 { 1094 filSrcU = Clip3( Pel( 0 ), Pel( 255 ), Pel(( topU + (filSrcU << 1) + bottomU ) >> 2 )); 1095 filSrcV = Clip3( Pel( 0 ), Pel( 255 ), Pel(( topV + (filSrcV << 1) + bottomV ) >> 2 )); 1096 } 1097 1098 piDstU[x] = filSrcU; 1099 piDstV[x] = filSrcV; 1100 } 1101 piDstU += uiDstStrideC; 1102 piDstV += uiDstStrideC; 1103 } 1104 #endif 971 1105 972 if ( tmpTarU ) { xFree(tmpTarU); tmpTarU = NULL; } 1106 973 if ( tmpTarV ) { xFree(tmpTarV); tmpTarV = NULL; } … … 1475 1342 pcCU->clipMv(cMv); 1476 1343 TComPicYuv* pcPicYuvRef = pcCU->getSlice()->getRefPic( eRefPicList, iRefIdx )->getPicYuvRec(); 1477 #if QC_I0129_ARP_FIX1478 1344 xPredInterLumaBlk ( pcCU, pcPicYuvRef, uiPartAddr, &cMv, iWidth, iHeight, rpcYuvPred, bi || ( dW > 0 ), true ); 1479 1345 xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cMv, iWidth, iHeight, rpcYuvPred, bi || ( dW > 0 ), true ); 1480 #else 1481 xPredInterLumaBlk ( pcCU, pcPicYuvRef, uiPartAddr, &cMv, iWidth, iHeight, rpcYuvPred, bi, true ); 1482 xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cMv, iWidth, iHeight, rpcYuvPred, bi, true ); 1483 #endif 1346 1484 1347 if( dW > 0 ) 1485 1348 { … … 1489 1352 TComMv cMVwithDisparity = cMv + cDistparity.m_acNBDV; 1490 1353 pcCU->clipMv(cMVwithDisparity); 1491 #if SHARP_ARP_CHROMA_I01041492 1354 if (iWidth <= 8) 1493 1355 { 1494 1356 pYuvB0->clear(); pYuvB1->clear(); 1495 1357 } 1496 #endif1497 1358 1498 1359 assert ( cDistparity.bDV ); 1499 1360 1500 #if NTT_BUG_FIX_TK541501 1361 TComMv cNBDV = cDistparity.m_acNBDV; 1502 1362 pcCU->clipMv( cNBDV ); 1503 1363 1504 1364 pcPicYuvRef = pcPicYuvBaseCol->getPicYuvRec(); 1505 #if QC_I0129_ARP_FIX1506 1365 xPredInterLumaBlk ( pcCU, pcPicYuvRef, uiPartAddr, &cNBDV, iWidth, iHeight, pYuvB0, true, true ); 1507 #if SHARP_ARP_CHROMA_I01041508 1366 if (iWidth > 8) 1509 #endif 1510 xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cNBDV, iWidth, iHeight, pYuvB0, true, true ); 1511 #else 1512 xPredInterLumaBlk ( pcCU, pcPicYuvRef, uiPartAddr, &cNBDV, iWidth, iHeight, pYuvB0, bi, true ); 1513 xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cNBDV, iWidth, iHeight, pYuvB0, bi, true ); 1514 #endif 1515 #else 1516 pcPicYuvRef = pcPicYuvBaseCol->getPicYuvRec(); 1517 xPredInterLumaBlk ( pcCU, pcPicYuvRef, uiPartAddr, &cDistparity.m_acNBDV, iWidth, iHeight, pYuvB0, bi, true ); 1518 xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cDistparity.m_acNBDV, iWidth, iHeight, pYuvB0, bi, true ); 1519 #endif 1367 xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cNBDV, iWidth, iHeight, pYuvB0, true, true ); 1520 1368 1521 1369 pcPicYuvRef = pcPicYuvBaseRef->getPicYuvRec(); 1522 #if QC_I0129_ARP_FIX1523 1370 xPredInterLumaBlk ( pcCU, pcPicYuvRef, uiPartAddr, &cMVwithDisparity, iWidth, iHeight, pYuvB1, true, true ); 1524 #if SHARP_ARP_CHROMA_I0104 1371 1525 1372 if (iWidth > 8) 1526 #endif 1527 xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cMVwithDisparity, iWidth, iHeight, pYuvB1, true, true ); 1528 #else 1529 xPredInterLumaBlk ( pcCU, pcPicYuvRef, uiPartAddr, &cMVwithDisparity, iWidth, iHeight, pYuvB1, bi, true ); 1530 xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cMVwithDisparity, iWidth, iHeight, pYuvB1, bi, true ); 1531 #endif 1373 xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cMVwithDisparity, iWidth, iHeight, pYuvB1, true, true ); 1374 1532 1375 pYuvB0->subtractARP( pYuvB0 , pYuvB1 , uiPartAddr , iWidth , iHeight ); 1533 1376 … … 1540 1383 } 1541 1384 1542 #if QC_I0051_ARP_SIMP1543 1385 Bool TComPrediction::xCheckBiInterviewARP( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eBaseRefPicList, TComPic*& pcPicYuvCurrTRef, TComMv& cBaseTMV, Int& iCurrTRefPoc ) 1544 1386 { … … 1572 1414 Int iCurrRefPOC = pcPicYuvBaseTRef->getPOC(); 1573 1415 Int iCurrRef = pcCU->getSlice()->getFirstTRefIdx(eRefPicListCurr); 1574 #if MTK_I0072_IVARP_SCALING_FIX 1416 1575 1417 if( iCurrRef >= 0 && iCurrPOC != iCurrRefPOC) 1576 #else1577 if( iCurrRef >= 0)1578 #endif1579 1418 { 1580 1419 pcPicYuvCurrTRef = pcCU->getSlice()->getRefPic(eRefPicListCurr,iCurrRef); … … 1608 1447 return false; 1609 1448 } 1610 #endif1611 1449 1612 1450 Void TComPrediction::xPredInterUniARPviewRef( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eRefPicList, TComYuv*& rpcYuvPred, Bool bi, TComMvField * pNewMvFiled ) … … 1643 1481 pcYuvBaseCol->getCUAddrAndPartIdx( irefPUX, irefPUY, uiLCUAddr, uiAbsPartAddr); 1644 1482 TComDataCU *pColCU = pcPicYuvBaseCol->getCU( uiLCUAddr ); 1645 #if QC_I0051_ARP_SIMP1646 1483 if( pcCU->getSlice()->isInterB() && !pcCU->getSlice()->getIsDepth() ) 1647 1484 { … … 1708 1545 1709 1546 if( !pColCU->isIntra( uiAbsPartAddr ) && !bTMVAvai ) 1710 #else1711 if(!pColCU->isIntra(uiAbsPartAddr))1712 #endif1713 1547 { 1714 1548 TComMvField puMVField; … … 1723 1557 Int iCurrRefPOC = pcPicYuvBaseTRef->getPOC(); 1724 1558 Int iCurrRef = pcCU->getSlice()->getFirstTRefIdx(eRefPicListCurr); 1725 #if MTK_I0072_IVARP_SCALING_FIX1726 1559 if (iCurrRef >= 0 && iCurrRefPOC != iCurrPOC) 1727 #else1728 if( iCurrRef >= 0)1729 #endif1730 1560 { 1731 1561 pcPicYuvCurrTRef = pcCU->getSlice()->getRefPic(eRefPicListCurr,iCurrRef); … … 1754 1584 pcPicYuvCurrTRef = pcCU->getSlice()->getRefPic (eRefPicList, pcCU->getSlice()->getFirstTRefIdx(eRefPicList)); 1755 1585 } 1756 #if QC_I0129_ARP_FIX 1586 1757 1587 xPredInterLumaBlk ( pcCU, pcYuvBaseCol, uiPartAddr, &cTempDMv, iWidth, iHeight, rpcYuvPred, bi || ( dW > 0 && bTMVAvai ), bTMVAvai); 1758 1588 xPredInterChromaBlk( pcCU, pcYuvBaseCol, uiPartAddr, &cTempDMv, iWidth, iHeight, rpcYuvPred, bi || ( dW > 0 && bTMVAvai ), bTMVAvai); 1759 #else 1760 xPredInterLumaBlk ( pcCU, pcYuvBaseCol, uiPartAddr, &cTempDMv, iWidth, iHeight, rpcYuvPred, bi, bTMVAvai); 1761 xPredInterChromaBlk( pcCU, pcYuvBaseCol, uiPartAddr, &cTempDMv, iWidth, iHeight, rpcYuvPred, bi, bTMVAvai); 1762 #endif 1589 1763 1590 if( dW > 0 && bTMVAvai ) 1764 1591 { … … 1771 1598 pcCU->clipMv(cBaseTMV); 1772 1599 pcCU->clipMv(cTempMv); 1773 #if SHARP_ARP_CHROMA_I0104 1600 1774 1601 if (iWidth <= 8) 1775 1602 { 1776 1603 pYuvCurrTRef->clear(); pYuvBaseTRef->clear(); 1777 1604 } 1778 #endif1779 #if QC_I0129_ARP_FIX1780 1605 xPredInterLumaBlk ( pcCU, pcYuvCurrTref, uiPartAddr, &cBaseTMV, iWidth, iHeight, pYuvCurrTRef, true, true); 1781 #if SHARP_ARP_CHROMA_I0104 1606 1782 1607 if (iWidth > 8) 1783 #endif 1784 xPredInterChromaBlk( pcCU, pcYuvCurrTref, uiPartAddr, &cBaseTMV, iWidth, iHeight, pYuvCurrTRef, true, true); 1608 xPredInterChromaBlk( pcCU, pcYuvCurrTref, uiPartAddr, &cBaseTMV, iWidth, iHeight, pYuvCurrTRef, true, true); 1609 1785 1610 xPredInterLumaBlk ( pcCU, pcYuvBaseTref, uiPartAddr, &cTempMv, iWidth, iHeight, pYuvBaseTRef, true, true); 1786 #if SHARP_ARP_CHROMA_I0104 1611 1787 1612 if (iWidth > 8) 1788 #endif 1789 xPredInterChromaBlk( pcCU, pcYuvBaseTref, uiPartAddr, &cTempMv, iWidth, iHeight, pYuvBaseTRef, true, true); 1790 #else 1791 xPredInterLumaBlk ( pcCU, pcYuvCurrTref, uiPartAddr, &cBaseTMV, iWidth, iHeight, pYuvCurrTRef, bi, true); 1792 xPredInterChromaBlk( pcCU, pcYuvCurrTref, uiPartAddr, &cBaseTMV, iWidth, iHeight, pYuvCurrTRef, bi, true); 1793 xPredInterLumaBlk ( pcCU, pcYuvBaseTref, uiPartAddr, &cTempMv, iWidth, iHeight, pYuvBaseTRef, bi, true); 1794 xPredInterChromaBlk( pcCU, pcYuvBaseTref, uiPartAddr, &cTempMv, iWidth, iHeight, pYuvBaseTRef, bi, true); 1795 1796 #endif 1613 xPredInterChromaBlk( pcCU, pcYuvBaseTref, uiPartAddr, &cTempMv, iWidth, iHeight, pYuvBaseTRef, true, true); 1614 1797 1615 pYuvCurrTRef->subtractARP( pYuvCurrTRef , pYuvBaseTRef , uiPartAddr , iWidth , iHeight ); 1798 1616 if(dW == 2) … … 1803 1621 } 1804 1622 } 1805 1806 1623 #endif 1807 1624 … … 2328 2145 Int iRecStride = ( eType == TEXT_LUMA ) ? pRecPic->getStride() : pRecPic->getCStride(); 2329 2146 Int iRefStride = ( eType == TEXT_LUMA ) ? pRefPic->getStride() : pRefPic->getCStride(); 2330 #if SEC_IC_NEIGHBOR_CLIP_I00802331 2147 Int iRefOffset, iHor, iVer; 2332 #else2333 Int iCUPelX, iCUPelY, iRefX, iRefY, iRefOffset, iHor, iVer;2334 2335 iCUPelX = pcCU->getCUPelX() + g_auiRasterToPelX[g_auiZscanToRaster[pcCU->getZorderIdxInCU()]];2336 iCUPelY = pcCU->getCUPelY() + g_auiRasterToPelY[g_auiZscanToRaster[pcCU->getZorderIdxInCU()]];2337 #endif2338 2148 iHor = pcCU->getSlice()->getIsDepth() ? pMv->getHor() : ( ( pMv->getHor() + 2 ) >> 2 ); 2339 2149 iVer = pcCU->getSlice()->getIsDepth() ? pMv->getVer() : ( ( pMv->getVer() + 2 ) >> 2 ); 2340 #if !SEC_IC_NEIGHBOR_CLIP_I00802341 iRefX = iCUPelX + iHor;2342 iRefY = iCUPelY + iVer;2343 #endif2344 2150 if( eType != TEXT_LUMA ) 2345 2151 { … … 2357 2163 Int precShift = std::max(0, (( eType == TEXT_LUMA ) ? g_bitDepthY : g_bitDepthC) - 12); 2358 2164 2359 #if SEC_IC_NEIGHBOR_CLIP_I00802360 2165 if( pcCU->getPUAbove( uiTmpPartIdx, pcCU->getZorderIdxInCU() ) ) 2361 #else2362 if( pcCU->getPUAbove( uiTmpPartIdx, pcCU->getZorderIdxInCU() ) && iCUPelY > 0 && iRefY > 0 )2363 #endif2364 2166 { 2365 2167 iRefOffset = iHor + iVer * iRefStride - iRefStride; … … 2391 2193 } 2392 2194 2393 #if SEC_IC_NEIGHBOR_CLIP_I00802394 2195 if( pcCU->getPULeft( uiTmpPartIdx, pcCU->getZorderIdxInCU() ) ) 2395 #else2396 if( pcCU->getPULeft( uiTmpPartIdx, pcCU->getZorderIdxInCU() ) && iCUPelX > 0 && iRefX > 0 )2397 #endif2398 2196 { 2399 2197 iRefOffset = iHor + iVer * iRefStride - 1; … … 2429 2227 } 2430 2228 2431 #if FIX_TICKET_712432 2229 if( iCountShift == 0 ) 2433 2230 { … … 2436 2233 return; 2437 2234 } 2438 #endif2439 2235 2440 2236 xy += xx >> IC_REG_COST_SHIFT; … … 2553 2349 // find contour for texture luma block 2554 2350 UInt iDC = 0; 2555 #if SEC_DBBP_DMM4_THRESHOLD_I0076 2351 2556 2352 iDC = piRefBlkY[ 0 ]; 2557 2353 iDC += piRefBlkY[ uiWidth - 1 ]; … … 2559 2355 iDC += piRefBlkY[ uiWidth * (uiHeight - 1) + uiWidth - 1 ]; 2560 2356 iDC = iDC >> 2; 2561 #else2562 for( UInt k = 0; k < (uiWidth*uiHeight); k++ )2563 {2564 iDC += piRefBlkY[k];2565 }2566 2567 Int cuMaxLog2Size = g_aucConvertToBit[g_uiMaxCUWidth]+2; //2568 iDC = iDC >> (cuMaxLog2Size - pcCU->getDepth(0))*2; // iDC /= (uiWidth*uiHeight);2569 #endif2570 2357 2571 2358 piRefBlkY = cTempYuv.getLumaAddr(); -
trunk/source/Lib/TLibCommon/TComPrediction.h
r1039 r1084 90 90 #if H_3D_ARP 91 91 Void xPredInterUniARP ( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eRefPicList, TComYuv*& rpcYuvPred, Bool bi=false, TComMvField * pNewMvFiled = NULL ); 92 #if QC_I0051_ARP_SIMP93 92 Bool xCheckBiInterviewARP ( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eBaseRefPicList, TComPic*& pcPicYuvCurrTRef, TComMv& cBaseTMV, Int& iCurrTRefPoc ); 94 #endif95 93 Void xPredInterUniARPviewRef( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eRefPicList, TComYuv*& rpcYuvPred, Bool bi, TComMvField * pNewMvFiled = NULL ); 96 94 #endif … … 179 177 PartSize getPartitionSizeFromDepth(Pel* pDepthPels, UInt uiDepthStride, UInt uiSize); 180 178 Bool getSegmentMaskFromDepth( Pel* pDepthPels, UInt uiDepthStride, UInt uiWidth, UInt uiHeight, Bool* pMask ); 181 #if SHARP_DBBP_SIMPLE_FLTER_I0109182 179 Void combineSegmentsWithMask( TComYuv* pInYuv[2], TComYuv* pOutYuv, Bool* pMask, UInt uiWidth, UInt uiHeight, UInt uiPartAddr, UInt partSize ); 183 #else184 Void combineSegmentsWithMask( TComYuv* pInYuv[2], TComYuv* pOutYuv, Bool* pMask, UInt uiWidth, UInt uiHeight, UInt uiPartAddr = 0 );185 #endif186 180 #endif 187 181 -
trunk/source/Lib/TLibCommon/TComRom.cpp
r1066 r1084 355 355 HALF_PEL, // 8x8 356 356 FULL_PEL, // 16x16 357 #if SHARP_DMM1_I0110358 357 FULL_PEL, // 32x32 359 358 FULL_PEL, // 64x64 360 359 FULL_PEL // 128x128 361 #else362 DOUBLE_PEL, // 32x32363 DOUBLE_PEL, // 64x64364 DOUBLE_PEL // 128x128365 #endif366 360 }; 367 361 … … 374 368 0, 4, 7, 8, 8, 0 }; 375 369 376 #if SHARP_DMM1_I0110377 370 Bool g_wedgePattern[32*32]; 378 #endif379 371 380 372 extern std::vector< std::vector<TComWedgelet> > g_dmmWedgeLists; … … 388 380 389 381 Char g_aucConvertToBit [ MAX_CU_SIZE+1 ]; 390 #if !MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX391 #if H_3D_IC392 UInt g_aICEnableCANDIDATE[10] = { 0, };393 UInt g_aICEnableNUM[ 10 ] = { 0, };394 Int g_lastlayer=0;395 #endif396 #endif397 382 #if ENC_DEC_TRACE 398 383 FILE* g_hTrace = NULL; … … 676 661 if( !g_dmmWedgeLists.empty() ) return; 677 662 678 #if SHARP_DMM1_I0110679 663 for( UInt ui = g_aucConvertToBit[DIM_MIN_SIZE]; ui < (g_aucConvertToBit[DIM_MAX_SIZE]); ui++ ) 680 #else681 for( UInt ui = g_aucConvertToBit[DIM_MIN_SIZE]; ui < (g_aucConvertToBit[DIM_MAX_SIZE]+1); ui++ )682 #endif683 664 { 684 665 UInt uiWedgeBlockSize = ((UInt)DIM_MIN_SIZE)<<ui; … … 764 745 switch( eWedgeRes ) 765 746 { 766 #if !SHARP_DMM1_I0110767 case( DOUBLE_PEL ): { uiBlockSize = (uiWidth>>1); break; }768 #endif769 747 case( FULL_PEL ): { uiBlockSize = uiWidth; break; } 770 748 case( HALF_PEL ): { uiBlockSize = (uiWidth<<1); break; } -
trunk/source/Lib/TLibCommon/TComRom.h
r1066 r1084 166 166 extern const UChar g_dmm3IntraTabIdxBits[6]; 167 167 168 #if SHARP_DMM1_I0110169 168 extern Bool g_wedgePattern[32*32]; 170 #endif171 169 172 170 extern std::vector< std::vector<TComWedgelet> > g_dmmWedgeLists; … … 230 228 231 229 extern Char g_aucConvertToBit [ MAX_CU_SIZE+1 ]; // from width to log2(width)-2 232 #if !MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX233 #if H_3D_IC234 extern UInt g_aICEnableCANDIDATE[10];235 extern UInt g_aICEnableNUM[ 10 ]; //10 layers236 extern Int g_lastlayer;237 #endif238 #endif239 230 240 231 #ifndef ENC_DEC_TRACE -
trunk/source/Lib/TLibCommon/TComSlice.cpp
r1066 r1084 103 103 , m_temporalLayerNonReferenceFlag ( false ) 104 104 , m_enableTMVPFlag ( true ) 105 #if I0044_SLICE_TMVP105 #if H_MV 106 106 , m_availableForTMVPRefFlag ( true ) 107 #endif108 #if H_MV109 107 , m_refPicSetInterLayer0 ( NULL ) 110 108 , m_refPicSetInterLayer1 ( NULL ) … … 142 140 , m_depthToDisparityF ( NULL ) 143 141 #endif 144 #if MTK_SINGLE_DEPTH_MODE_I0095142 #if H_3D_SINGLE_DEPTH 145 143 , m_bApplySingleDepthMode (false) 146 144 #endif … … 650 648 651 649 TComPic** refPicSetStCurr [2] = { RefPicSetStCurr0, RefPicSetStCurr1 }; 652 #if FIX_WARNING653 650 Int numPocStCurr[2] = { (Int)NumPocStCurr0, (Int)NumPocStCurr1 }; 654 #else655 Int numPocStCurr[2] = { NumPocStCurr0, NumPocStCurr1 };656 #endif657 651 658 652 for (Int li = 0; li < ((m_eSliceType==B_SLICE) ? 2 : 1); li++) … … 728 722 729 723 assert( rpsCurrList[li][ orgIdx ] != NULL ); 730 #if DISCARDABLE_PIC_RPS731 724 assert( rpsCurrList[li][ orgIdx ]->getSlice(0)->getDiscardableFlag() == 0 ); // Inter-layer RPS shall not contain picture with discardable_flag = 1. 732 #endif733 725 m_apcRefPicList [li][rIdx] = rpsCurrList [li][ orgIdx ]; 734 726 m_bIsUsedAsLongTerm[li][rIdx] = usedAsLongTerm [li][ orgIdx ] ; … … 1105 1097 } 1106 1098 #endif 1107 #if MTK_SINGLE_DEPTH_MODE_I00951099 #if H_3D_SINGLE_DEPTH 1108 1100 m_bApplySingleDepthMode = pSrc->m_bApplySingleDepthMode; 1109 1101 #endif … … 1881 1873 #if H_MV 1882 1874 m_vpsBaseLayerInternalFlag = true; 1883 #if H_MV_HLS10_GEN_VSP_BASE_LAYER_AVAIL1884 1875 m_vpsBaseLayerAvailableFlag = true; 1885 #endif1886 1876 #endif 1887 1877 … … 1909 1899 { 1910 1900 m_layerSetIdxForOlsMinus1[i] = -1; 1911 #if !H_MV_HLS10_PTL1912 m_profileLevelTierIdx[i] = 0;1913 #endif1914 1901 for ( Int j = 0; j < MAX_VPS_NUH_LAYER_ID_PLUS1; j++) 1915 1902 { 1916 #if H_MV_HLS10_PTL1917 #if H_MV_HLS10_PTL_FIX1918 1903 m_profileTierLevelIdx[i][j] = -1; 1919 #else1920 m_profileTierLevelIdx[i][j] = false;1921 #endif1922 #endif1923 1904 m_outputLayerFlag[i][j] = false; 1924 1905 } … … 1970 1951 m_viewIndex [i] = -1; 1971 1952 m_vpsDepthModesFlag [i] = false; 1972 #if SEC_HLS_CLEANUP_I01001973 1953 m_ivMvScalingFlag[i] = true; 1974 #else1975 m_ivMvScalingFlag = true;1976 #endif1977 #if SEPARATE_FLAG_I00851978 1954 m_bIVPFlag [i] = false; 1979 #endif1980 1955 #endif 1981 1956 … … 1984 1959 m_directDependencyFlag[i][j] = false; 1985 1960 m_directDependencyType[i][j] = -1; 1986 #if H_MV_HLS10_REF_PRED_LAYERS1987 1961 m_dependencyFlag [i][j] = false; 1988 1962 m_idDirectRefLayer[i][j] = -1; 1989 1963 m_idPredictedLayer[i][j] = -1; 1990 1964 m_idRefLayer [i][j] = -1; 1991 #else1992 m_refLayerId[i][j] = -1;1993 #endif1994 1965 m_maxTidIlRefPicsPlus1[i][j] = 7; 1995 1966 } … … 2016 1987 #endif 2017 1988 #endif 2018 #if MTK_I0099_VPS_EX21989 #if H_3D_QTLPC 2019 1990 m_bLimQtPredFlag [ i ] = false; 2020 1991 #endif … … 2028 1999 m_bInterSDCFlag [ i ] = false; 2029 2000 #endif 2030 #if SEPARATE_FLAG_I00852001 #if H_3D 2031 2002 m_bIVPFlag [ i ] = false; 2032 2003 #endif … … 2075 2046 assert( getVpsNumRepFormatsMinus1() <= 255 ); 2076 2047 2077 #if H_MV_HLS10_ADD_LAYERSETS2078 2048 // The value of num_add_layer_sets shall be in the range of 0 to 1023, inclusive. 2079 2049 assert( getNumAddLayerSets() >= 0 && getNumAddLayerSets() <= 1023 ); 2080 #endif2081 2050 return true; 2082 2051 } … … 2111 2080 { 2112 2081 2113 #if H_MV_HLS10_REF_PRED_LAYERS2114 2082 for( Int i = 0; i <= getMaxLayersMinus1(); i++ ) 2115 2083 { … … 2181 2149 } 2182 2150 m_numIndependentLayers = k; 2183 #else // H_MV_HLS10_GEN 2184 2185 for( Int i = 0; i <= getMaxLayersMinus1(); i++ ) 2186 { 2187 Int iNuhLId = getLayerIdInNuh( i ); 2188 m_numDirectRefLayers[ iNuhLId ] = 0; 2189 for( Int j = 0; j < i; j++ ) 2190 { 2191 if( getDirectDependencyFlag(i , j) ) 2192 { 2193 m_refLayerId[ iNuhLId ][m_numDirectRefLayers[ iNuhLId ]++ ] = getLayerIdInNuh( j ); 2194 } 2195 } 2196 } 2197 2198 for (Int i = 0 ; i < MAX_NUM_LAYER_IDS; i++ ) 2199 { 2200 m_numRefLayers[i] = 0; 2201 } 2202 2203 for (Int currLayerId = 0; currLayerId <= 62; currLayerId++ ) 2204 { 2205 for (Int i = 0 ; i < MAX_NUM_LAYER_IDS; i++ ) 2206 { 2207 m_recursiveRefLayerFlag[currLayerId][i] = 0; 2208 } 2209 } 2210 2211 for( Int i = 0; i <= getMaxLayersMinus1(); i++ ) 2212 { 2213 Int iNuhLId = getLayerIdInNuh( i ); 2214 xSetRefLayerFlags( iNuhLId ); 2215 for( Int j = 0; j < 63; j++ ) 2216 { 2217 m_numRefLayers[ iNuhLId ] += m_recursiveRefLayerFlag[ iNuhLId ][ j ]; 2218 } 2219 } 2220 2221 for( Int i = 0; i <= getMaxLayersMinus1(); i++ ) // Bug in spec "<" instead of "<=" 2222 { 2223 Int iNuhLId = getLayerIdInNuh( i ); 2224 Int predIdx = 0; 2225 for( Int j = iNuhLId + 1; j < 63; j++ ) 2226 { 2227 if( m_recursiveRefLayerFlag[ j ][ iNuhLId ] ) 2228 { 2229 m_predictedLayerId[ iNuhLId ][ predIdx++ ] = j; 2230 } 2231 } 2232 m_numPredictedLayers[ iNuhLId ] = predIdx; 2233 } 2234 2235 Bool countedLayerIdxFlag[ MAX_NUM_LAYERS ]; 2236 for( Int i = 0; i <= getMaxLayersMinus1(); i++ ) 2237 { 2238 countedLayerIdxFlag[ i ] = 0; 2239 } 2240 for( Int i = 0, k = 0; i <= getMaxLayersMinus1(); i++ ) 2241 { 2242 Int iNuhLId = getLayerIdInNuh( i ); 2243 if( m_numDirectRefLayers[ iNuhLId ] == 0 ) 2244 { 2245 m_treePartitionLayerIdList[ k ][ 0 ] = iNuhLId; 2246 m_numLayersInTreePartition[ k ] = 1; 2247 2248 for( Int j = 0; j < m_numPredictedLayers[ iNuhLId ]; j++ ) 2249 { 2250 if( !countedLayerIdxFlag[ getLayerIdInVps( m_predictedLayerId[ iNuhLId ][ j ] ) ] ) 2251 { 2252 m_treePartitionLayerIdList[ k ][ m_numLayersInTreePartition[ k ] ] = m_predictedLayerId[ iNuhLId ][ j ]; 2253 m_numLayersInTreePartition[ k ]++; 2254 countedLayerIdxFlag[ getLayerIdInVps( m_predictedLayerId[ iNuhLId ][ j ] ) ] = 1; 2255 } 2256 } 2257 k++; 2258 2259 m_numIndependentLayers = k; 2260 } 2261 } 2262 #endif // H_MV_HLS10_GEN 2263 } 2264 2265 #if !H_MV_HLS10_REF_PRED_LAYERS 2266 Int TComVPS::getRefLayerId( Int layerIdInNuh, Int idx ) 2267 { 2268 assert( idx >= 0 && idx < m_numDirectRefLayers[layerIdInNuh] ); 2269 Int refLayerIdInNuh = m_refLayerId[ layerIdInNuh ][ idx ]; 2270 assert ( refLayerIdInNuh >= 0 ); 2271 return refLayerIdInNuh; 2272 } 2273 #endif 2151 } 2152 2274 2153 2275 2154 Int TComVPS::getScalabilityId( Int layerIdInVps, ScalabilityType scalType ) … … 2309 2188 for ( i = 0; i < iNumViews ; i++ ) 2310 2189 { 2311 #if H_3D_FIX_UNINIT2312 2190 m_bCamParPresent[i] = false; 2313 #endif2314 2191 m_bCamParInSliceHeader[i] = false; 2315 2192 m_aaaiCodedScale[i] = new Int*[ 2 ]; … … 2424 2301 { 2425 2302 assert( lsIdx >= 0 ); 2426 #if H_MV_HLS10_ADD_LAYERSETS2427 2303 assert( lsIdx <= getNumLayerSets() ); 2428 #else2429 assert( lsIdx <= getVpsNumLayerSetsMinus1() );2430 #endif2431 2304 return (Int) m_layerSetLayerIdList[ lsIdx ].size(); 2432 2305 } … … 2452 2325 } 2453 2326 2454 #if !H_MV_HLS10_REF_PRED_LAYERS2455 Bool TComVPS::getInDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps, Int depth /*= 0 */ )2456 {2457 #if H_MV_HLS10_REF_PRED_LAYERS2458 // TBD: Remove getInDirectDependencyFlag entirely.2459 return getDependencyFlag( depLayeridInVps, refLayeridInVps );2460 #else2461 assert( depth < 65 );2462 Bool dependentFlag = getDirectDependencyFlag( depLayeridInVps, refLayeridInVps );2463 2464 for( Int i = 0; i < depLayeridInVps && !dependentFlag; i++ )2465 {2466 if ( getDirectDependencyFlag( depLayeridInVps, i ) )2467 {2468 dependentFlag = getInDirectDependencyFlag( i, refLayeridInVps, depth++ );2469 }2470 }2471 return dependentFlag;2472 #endif2473 }2474 #endif2475 2327 2476 2328 Void TComVPS::deriveLayerSetLayerIdList() … … 2501 2353 for( Int j = 0; j < getNumLayersInIdList( lsIdx ); j++ ) 2502 2354 { 2503 #if H_MV_HLS10_NESSECARY_LAYER2504 2355 if ( getNecessaryLayerFlag( i , j )) 2505 2356 { 2506 #endif2507 2357 m_targetDecLayerIdLists[i].push_back( m_layerSetLayerIdList[ lsIdx ][ j ] ); 2508 #if H_MV_HLS10_NESSECARY_LAYER 2509 } 2510 #endif 2358 } 2511 2359 2512 2360 if( getOutputLayerFlag( i, j )) … … 2557 2405 } 2558 2406 2559 #if !H_MV_HLS10_ADD_LAYERSETS2560 Void TComVPS::inferDbpSizeLayerSetZero( TComSPS* sps, Bool encoder )2561 {2562 for( Int j = 0; j <= getMaxSubLayersInLayerSetMinus1( 0 ); j++ )2563 {2564 Int maxDecPicBufferingMinus1 = sps->getMaxDecPicBuffering( j ) - 1;2565 Int numReorderPics = sps->getNumReorderPics ( j );2566 Int maxLatencyIncreasePlus1 = sps->getMaxLatencyIncrease( j );2567 2568 if ( encoder )2569 {2570 assert( getDpbSize()->getMaxVpsDecPicBufferingMinus1(0, 0, j ) == maxDecPicBufferingMinus1 );2571 assert( getDpbSize()->getMaxVpsNumReorderPics (0, j ) == numReorderPics );2572 assert( getDpbSize()->getMaxVpsLatencyIncreasePlus1 (0, j ) == maxLatencyIncreasePlus1 );2573 }2574 else2575 {2576 getDpbSize()->setMaxVpsDecPicBufferingMinus1(0, 0, j, maxDecPicBufferingMinus1 );2577 getDpbSize()->setMaxVpsNumReorderPics (0, j, numReorderPics );2578 getDpbSize()->setMaxVpsLatencyIncreasePlus1 (0, j, maxLatencyIncreasePlus1 );2579 }2580 }2581 }2582 #endif2583 2407 Bool TComVPS::getAltOutputLayerFlagVar( Int i ) 2584 2408 { … … 2594 2418 } 2595 2419 2596 #if !H_MV_HLS10_MAXNUMPICS 2597 Int TComVPS::getMaxNumPics( Int layerId ) 2598 { 2599 Int maxNumPics = MAX_INT; 2600 for( Int olsIdx = 0; olsIdx < getNumOutputLayerSets(); olsIdx++) 2601 { 2602 Int lsIdx = olsIdxToLsIdx( olsIdx ); 2603 for( Int j = 0; j < getNumLayersInIdList( lsIdx ); j++ ) 2604 { 2605 if( getLayerSetLayerIdList(lsIdx, j ) == layerId ) 2606 { 2607 Int maxSL = getMaxSubLayersInLayerSetMinus1( lsIdx ); 2608 maxNumPics = std::min( maxNumPics, getDpbSize()->getMaxVpsDecPicBufferingMinus1( olsIdx , j, maxSL ) ); 2609 } 2610 } 2611 } 2612 assert( maxNumPics != MAX_INT ); 2613 return maxNumPics; 2614 } 2615 #endif 2616 2617 #if !H_MV_HLS10_REF_PRED_LAYERS 2618 Void TComVPS::xSetRefLayerFlags( Int currLayerId ) 2619 { 2620 for( Int j = 0; j < getNumDirectRefLayers( currLayerId ); j++ ) 2621 { 2622 Int refLayerId = m_refLayerId[ currLayerId ][ j ]; 2623 m_recursiveRefLayerFlag[ currLayerId ][ refLayerId ] = 1; 2624 for( Int k = 0; k < MAX_NUM_LAYER_IDS; k++ ) 2625 { 2626 m_recursiveRefLayerFlag[ currLayerId ][ k ] = m_recursiveRefLayerFlag[ currLayerId ][ k ] || m_recursiveRefLayerFlag[ refLayerId ][ k ]; 2627 } 2628 } 2629 } 2630 2631 #endif 2632 2633 #if H_MV_HLS10_PTL_FIX 2420 2421 2634 2422 Int TComVPS::inferProfileTierLevelIdx(Int i, Int j) 2635 2423 { … … 2651 2439 return ptlIdx; 2652 2440 } 2653 #endif 2654 2655 #if H_MV_HLS10_ADD_LAYERSETS 2441 2656 2442 Void TComVPS::deriveAddLayerSetLayerIdList(Int i) 2657 2443 { … … 2676 2462 } 2677 2463 2678 #endif 2679 2680 #if H_MV_HLS10_NESSECARY_LAYER 2464 2681 2465 Void TComVPS::deriveNecessaryLayerFlags(Int olsIdx) 2682 2466 { … … 2709 2493 } 2710 2494 } 2711 #endif 2712 2713 #if H_MV_HLS10_ADD_LAYERSETS 2495 2714 2496 Void TComVPS::printPTL() 2715 2497 { … … 2757 2539 #endif 2758 2540 2759 #if H_MV_HLS10_AUX2760 2541 vector<Int> viewOrderIndex; 2761 2542 vector<Int> auxId; 2762 2543 vector<Int> dependencyId; 2763 2544 vector<Int> viewId; 2764 #endif2765 2545 for (Int i = 0; i <= getMaxLayersMinus1(); i++ ) 2766 2546 { 2767 2547 fullArray.push_back( getMaxLayersMinus1() + 1 ); 2768 2548 range.push_back( i ); 2769 #if H_MV_HLS10_AUX2770 2549 viewOrderIndex.push_back( getViewIndex ( i ) ); 2771 2550 dependencyId .push_back( getDependencyId( i ) ); … … 2774 2553 #if H_3D 2775 2554 depthId.push_back( getDepthId( i ) ); 2776 #endif2777 2555 #endif 2778 2556 } … … 2787 2565 } 2788 2566 2789 #if H_MV_HLS10_AUX2790 2567 Void TComVPS::printScalabilityId() 2791 2568 { … … 2825 2602 std::cout << std::endl; 2826 2603 } 2827 #endif2828 2604 2829 2605 Void TComVPS::printLayerSets() … … 2880 2656 } 2881 2657 2882 #endif2883 2658 2884 2659 #endif // H_MV … … 2910 2685 , m_pcmLog2MaxSize ( 5) 2911 2686 , m_uiPCMLog2MinSize ( 7) 2912 #if !MTK_I0099_VPS_EX22913 #if H_3D_QTLPC2914 , m_bUseQTL (false)2915 , m_bUsePC (false)2916 #endif2917 #endif2918 2687 , m_bitDepthY ( 8) 2919 2688 , m_bitDepthC ( 8) … … 2964 2733 #endif 2965 2734 2966 #if !H_MV_HLS10_PPS2967 m_numScaledRefLayerOffsets = 0;2968 2969 for (Int i = 0; i < MAX_NUM_SCALED_REF_LAYERS; i++ )2970 {2971 m_scaledRefLayerId [i] = -1;2972 }2973 2974 for (Int i = 0; i < MAX_NUM_LAYERS; i++ )2975 {2976 m_scaledRefLayerLeftOffset [i] = 0;2977 m_scaledRefLayerTopOffset [i] = 0;2978 m_scaledRefLayerRiFghtOffset [i] = 0;2979 m_scaledRefLayerBottomOffset [i] = 0;2980 }2981 #endif2982 2735 #endif 2983 2736 } … … 3120 2873 , m_entropyCodingSyncEnabledFlag (false) 3121 2874 , m_loopFilterAcrossTilesEnabledFlag (true) 3122 , m_uniformSpacingFlag (0) 3123 , m_iNumColumnsMinus1 (0) 3124 , m_puiColumnWidth (NULL) 3125 , m_iNumRowsMinus1 (0) 3126 , m_puiRowHeight (NULL) 3127 , m_iNumSubstreams (1) 2875 , m_uniformSpacingFlag (false) 2876 , m_numTileColumnsMinus1 (0) 2877 , m_numTileRowsMinus1 (0) 2878 , m_numSubstreams (1) 3128 2879 , m_signHideFlag(0) 3129 2880 , m_cabacInitPresentFlag (false) … … 3158 2909 TComPPS::~TComPPS() 3159 2910 { 3160 if( m_iNumColumnsMinus1 > 0 && m_uniformSpacingFlag == 0 )3161 {3162 if (m_puiColumnWidth) delete [] m_puiColumnWidth;3163 m_puiColumnWidth = NULL;3164 }3165 if( m_iNumRowsMinus1 > 0 && m_uniformSpacingFlag == 0 )3166 {3167 if (m_puiRowHeight) delete [] m_puiRowHeight;3168 m_puiRowHeight = NULL;3169 }3170 2911 delete m_scalingList; 3171 2912 } … … 3186 2927 // allocate some memory and initialize with default mapping 3187 2928 m_iNumDepthmapValues[i] = ((1 << m_uiDepthViewBitDepth)-1)+1; 3188 #if !FIX_TICKET_773189 m_iBitsPerDepthValue[i] = numBitsForValue(m_iNumDepthmapValues[i]);3190 #endif3191 2929 m_iDepthValue2Idx[i] = (Int*) xMalloc(Int, m_iNumDepthmapValues[i]); 3192 2930 m_iIdx2DepthValue[i] = (Int*) xMalloc(Int, m_iNumDepthmapValues[i]); … … 3277 3015 // update DLT variables 3278 3016 m_iNumDepthmapValues[layerIdInVps] = iNumDepthValues; 3279 #if !FIX_TICKET_77 3280 m_iBitsPerDepthValue[layerIdInVps] = numBitsForValue(m_iNumDepthmapValues[layerIdInVps]); 3281 #endif 3282 } 3283 3284 #if H_3D_DELTA_DLT 3017 } 3018 3285 3019 Void TComDLT::getDeltaDLT( Int layerIdInVps, Int* piDLTInRef, UInt uiDLTInRefNum, Int* piDeltaDLTOut, UInt *puiDeltaDLTOutNum ) 3286 3020 { … … 3347 3081 setDepthLUTs(layerIdInVps, aiIdx2DepthValue, uiNumDepthValues); 3348 3082 } 3349 #endif3350 3083 3351 3084 #endif … … 3354 3087 Void TComSPS::inferRepFormat( TComVPS* vps, Int layerIdCurr ) 3355 3088 { 3356 #if H_MV_HLS10_MULTILAYERSPS3357 3089 if ( getMultiLayerExtSpsFlag() ) 3358 #else3359 if ( layerIdCurr > 0 )3360 #endif3361 3090 { 3362 3091 Int repFormatIdx = getUpdateRepFormatFlag() ? getSpsRepFormatIdx() : vps->getVpsRepFormatIdx( vps->getLayerIdInVps( layerIdCurr ) ) ; … … 3374 3103 setBitDepthC ( repFormat->getBitDepthVpsChromaMinus8() + 8 ); 3375 3104 setQpBDOffsetC ( (Int) (6* ( getBitDepthC() -8 ) ) ); 3376 #if H_MV_HLS10_GEN_VSP_CONF_WIN3377 3105 Window &spsConf = getConformanceWindow(); 3378 3106 … … 3383 3111 spsConf.setWindowTopOffset ( repFormat->getConfWinVpsTopOffset() ); 3384 3112 spsConf.setWindowBottomOffset( repFormat->getConfWinVpsBottomOffset() ); 3385 #endif 3386 3387 #if H_MV_HLS10_MULTILAYERSPS 3113 3388 3114 if ( getMultiLayerExtSpsFlag() && getUpdateRepFormatFlag() ) 3389 #else3390 if ( getLayerId() > 0 && getUpdateRepFormatFlag() )3391 #endif3392 3115 { 3393 3116 assert( getChromaFormatIdc() <= repFormat->getChromaFormatVpsIdc() ); … … 3423 3146 const std::vector<Int>& targetDecLayerIdList = vps->getTargetDecLayerIdList( vps->olsIdxToLsIdx( targetOptLayerSetIdx )); 3424 3147 3425 #if H_MV_HLS10_MULTILAYERSPS3426 3148 if ( getMultiLayerExtSpsFlag() ) 3427 #else3428 if (getLayerId() > 0 )3429 #endif3430 3149 { 3431 3150 Int layerIdx = 0; … … 3445 3164 Int maxDecPicBufferingMinus1 = vps->getDpbSize()->getMaxVpsDecPicBufferingMinus1( targetOptLayerSetIdx, layerIdx, i ) ; 3446 3165 3447 #if H_MV_HLS10_MULTILAYERSPS3448 3166 // This preliminary fix needs to be checked. 3449 3167 Int maxNumReorderPics = vps->getDpbSize()->getMaxVpsNumReorderPics( targetOptLayerSetIdx, i ); 3450 3168 Int maxLatencyIncreasePlus1 = vps->getDpbSize()->getMaxVpsLatencyIncreasePlus1( targetOptLayerSetIdx, i ); 3451 #endif3452 3169 if ( encoder ) 3453 3170 { 3454 3171 assert( getMaxDecPicBuffering( i ) - 1 == maxDecPicBufferingMinus1 ); 3455 #if H_MV_HLS10_MULTILAYERSPS3456 3172 // This preliminary fix needs to be checked. 3457 3173 assert( getNumReorderPics( i ) == maxNumReorderPics ); 3458 3174 assert( getMaxLatencyIncrease( i ) == maxLatencyIncreasePlus1 ); 3459 #endif3460 3175 3461 3176 } 3462 3177 else 3463 3178 { 3464 #if !H_MV_HLS10_MULTILAYERSPS3465 setMaxDecPicBuffering(i, maxDecPicBufferingMinus1 + 1 );3466 #else3467 3179 // This preliminary fix needs to be checked. 3468 3180 setMaxDecPicBuffering( maxDecPicBufferingMinus1 + 1 , i); 3469 3181 setNumReorderPics ( maxNumReorderPics, i ); 3470 3182 setMaxLatencyIncrease( maxLatencyIncreasePlus1 - 1 , i); 3471 #endif3472 3183 } 3473 3184 } … … 3477 3188 Void TComSPS::checkRpsMaxNumPics( TComVPS* vps, Int currLayerId ) 3478 3189 { 3479 #if !H_MV_HLS10_MAXNUMPICS3480 // In spec, when rps is in SPS, nuh_layer_id of SPS is used instead3481 // of nuh_layer_id of slice (currLayerId), this seems to be a bug.3482 #endif3483 3190 for (Int i = 0; i < getRPSList()->getNumberOfReferencePictureSets(); i++ ) 3484 3191 { … … 3486 3193 if ( !rps->getInterRPSPrediction() ) 3487 3194 { 3488 #if H_MV_HLS10_MAXNUMPICS3489 3195 rps->checkMaxNumPics( vps->getVpsExtensionFlag(), MAX_INT, getLayerId(), getMaxDecPicBuffering( getSpsMaxSubLayersMinus1() ) - 1 ); // INT_MAX to be replaced by DpbSize 3490 #else 3491 rps->checkMaxNumPics( vps->getVpsExtensionFlag(), vps->getMaxNumPics( currLayerId ), 3492 getLayerId(), getMaxDecPicBuffering( getSpsMaxSubLayersMinus1() ) - 1 ); 3493 #endif 3494 } 3495 } 3496 } 3497 3498 #if H_MV_HLS10_MULTILAYERSPS 3196 } 3197 } 3198 } 3199 3499 3200 Void TComSPS::inferSpsMaxSubLayersMinus1(Bool atPsActivation, TComVPS* vps) 3500 3201 { … … 3517 3218 } 3518 3219 } 3519 #endif3520 3220 #endif 3521 3221 … … 3880 3580 { 3881 3581 TComVPS* vps = getVPS(); 3882 #if H_MV_HLS10_REF_PRED_LAYERS3883 3582 Int refLayerIdx = vps->getLayerIdInVps( vps->getIdDirectRefLayer( getLayerId(), i ) ); 3884 #else3885 Int refLayerIdx = vps->getLayerIdInVps( vps->getRefLayerId( getLayerId(), i ) );3886 #endif3887 3583 3888 3584 Bool refLayerPicFlag = ( vps->getSubLayersVpsMaxMinus1( refLayerIdx ) >= getTLayer() ) && ( getTLayer() == 0 ) && … … 3955 3651 Int TComSlice::getRefPicLayerId( Int i ) 3956 3652 { 3957 #if H_MV_HLS10_REF_PRED_LAYERS3958 3653 return getVPS()->getIdDirectRefLayer( getLayerId(), getInterLayerPredLayerIdc( i ) ); 3959 #else3960 return getVPS()->getRefLayerId( getLayerId(), getInterLayerPredLayerIdc( i ) );3961 #endif3962 3654 } 3963 3655 … … 4065 3757 m_bApplyIC = true; 4066 3758 Int refLayer = curLayer-1; 4067 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX 3759 4068 3760 Int ICEnableCandidate = getICEnableCandidate(refLayer); 4069 3761 Int ICEnableNum = getICEnableNum(refLayer); … … 4083 3775 setICEnableCandidate(curLayer, 0); 4084 3776 setICEnableNum(curLayer, 0); 4085 #else4086 if( (refLayer>=0) && (g_aICEnableCANDIDATE[refLayer]>0) )4087 {4088 Double ratio=Double(g_aICEnableNUM[refLayer])/Double(g_aICEnableCANDIDATE[refLayer]);4089 4090 if( ratio > IC_LOW_LATENCY_ENCODING_THRESHOLD)4091 {4092 m_bApplyIC=true;4093 }4094 else4095 {4096 m_bApplyIC=false;4097 }4098 }4099 g_aICEnableNUM[curLayer]=0;4100 g_aICEnableCANDIDATE[curLayer]=0;4101 g_lastlayer=getDepth();4102 #endif4103 3777 } 4104 3778 } … … 4210 3884 4211 3885 #if H_3D_DDD 4212 #if LGE_FCO_I01163886 #if H_3D_FCO 4213 3887 if( getIsDepth() && getViewIndex() > 0 && getVPS()->getMPIFlag(layerIdInVPS)) 4214 3888 #else … … 4696 4370 , m_nonPackedConstraintFlag(false) 4697 4371 , m_frameOnlyConstraintFlag(false) 4698 #if H_MV _HLS10_PTL4372 #if H_MV 4699 4373 , m_max12bitConstraintFlag ( false ) 4700 4374 , m_max10bitConstraintFlag ( false ) … … 4712 4386 } 4713 4387 4714 #if H_MV _HLS10_PTL_INFER_FIX4388 #if H_MV 4715 4389 Bool ProfileTierLevel::getV2ConstraintsPresentFlag() 4716 4390 { … … 4757 4431 copyV2ConstraintFlags ( ptlRef ); 4758 4432 } 4759 4760 4433 #endif 4761 4434 … … 4767 4440 4768 4441 #if H_MV 4769 #if !H_MV_HLS10_PTL_INFER_FIX4770 Void TComPTL::copyLevelFrom( TComPTL* source )4771 {4772 getGeneralPTL()->setLevelIdc( source->getGeneralPTL()->getLevelIdc() );4773 for( Int subLayer = 0; subLayer < 6; subLayer++ )4774 {4775 setSubLayerLevelPresentFlag( subLayer, source->getSubLayerLevelPresentFlag( subLayer ) );4776 getSubLayerPTL( subLayer )->setLevelIdc( source->getSubLayerPTL( subLayer )->getLevelIdc() );4777 }4778 }4779 #else4780 4442 Void TComPTL::inferGeneralValues(Bool profilePresentFlag, Int k, TComPTL* refPTL) 4781 4443 { … … 4865 4527 } 4866 4528 4867 #endif4868 4529 #endif 4869 4530 //! \} … … 4908 4569 4909 4570 m_vpsVuiBspHrdPresentFlag = false; 4910 #if H_MV_HLS10_VPS_VUI_BSP4911 4571 m_vpsVuiBspHrdParameters = NULL; 4912 #else4913 m_vpsVuiBspHrdParameters = new TComVpsVuiBspHrdParameters();4914 #endif4915 4572 } 4916 4573 … … 4958 4615 } 4959 4616 4960 #if !H_MV_HLS10_VPS_VUI_BSP 4961 Void TComVpsVuiBspHrdParameters::checkLayerInBspFlag( TComVPS* vps, Int h ) 4962 { 4963 // It is a requirement of bitstream conformance that bitstream partition with index j shall not include 4964 // direct or indirect reference layers of any layers in bitstream partition i for any values of i and j 4965 // in the range of 0 to num_bitstream_partitions[ h ] ?1, inclusive, such that i is less than j. 4966 4967 for ( Int partJ = 0; partJ < getNumBitstreamPartitions( h ); partJ++ ) 4968 { 4969 for ( Int partI = 0; partI < partJ; partI++ ) 4970 { 4971 for ( Int layerJ = 0; layerJ < vps->getMaxLayersMinus1(); layerJ++ ) 4972 { 4973 if ( m_layerInBspFlag[ h ][partJ][layerJ ] ) 4974 { 4975 for ( Int layerI = 0; layerI < vps->getMaxLayersMinus1(); layerI++ ) 4976 { 4977 if ( m_layerInBspFlag[ h ][partI][layerI] ) 4978 { 4979 assert( !vps->getInDirectDependencyFlag( layerI, layerJ ) ); 4980 } 4981 } 4982 } 4983 } 4984 } 4985 } 4986 4987 // --------------- 4988 // To be added: 4989 // When vps_base_layer_internal_flag is equal to 0 and layer_in_bsp_flag[ h ][ i ][ 0 ] is equal to 1 for any value of h in the 4990 // range of 1 to vps_num_layer_sets_minus1, inclusive, and any value of i in the range of 0 to num_bitstream_partitions[ h ] - 1, 4991 // inclusive, the value of layer_in_bsp_flag[ h ][ i ][ j ] for at least one value of j in the range of 1 to 4992 // NumLayersInIdList[ h ] - 1, inclusive, shall be equal to 1. 4993 // --------------- 4994 4995 4996 // When num_bitstream_partitions[ h ] is equal to 1 for any value of h in the range 1 to vps_num_layer_set_minus1, inclusive, 4997 // the value of layer_in_bsp_flag[ h ][ 0 ][ j ] should be equal to 0 for at least one value of j in the range 0 to 4998 // NumLayersInIdList[ h ] ? 1, inclusive. 4999 5000 5001 if ( getNumBitstreamPartitions( h ) == 1 ) 5002 { 5003 Bool atLeastOneZero = false; 5004 for ( Int j = 0; j <= vps->getNumLayersInIdList( h ) - 1; j++ ) 5005 { 5006 atLeastOneZero = atLeastOneZero || !getLayerInBspFlag( h, 0, j ); 5007 } 5008 assert( atLeastOneZero ); 5009 } 5010 5011 5012 // For any value of h in the range 1 to vps_num_layer_set_minus1, inclusive, the value of layer_in_bsp_flag[ h ][ i ][ j ] 5013 // shall be equal to 1 for at most one value of i in the range of 0 to num_bitstream_partitions[ h ] ? 1, inclusive. 5014 5015 for ( Int j = 0; j <= vps->getNumLayersInIdList( h ) - 1; j++ ) 5016 { 5017 Int numLayerInBsp = 0; 5018 for ( Int i = 0; i <= getNumBitstreamPartitions( h ) - 1; i++ ) 5019 { 5020 numLayerInBsp += ( getLayerInBspFlag( h, i, j ) ? 1 : 0 ); 5021 } 5022 assert( numLayerInBsp <= 1 ); 5023 } 5024 5025 } 5026 5027 Void TComVpsVuiBspHrdParameters::checkBspCombHrdAndShedIdx( TComVPS* vps, Int h, Int i, Int j ) 5028 { 5029 // bsp_comb_hrd_idx 5030 assert( getBspCombSchedIdx(h, i, j ) >= 0 ); 5031 assert( getBspCombSchedIdx(h, i, j ) <= getVpsNumBspHrdParametersMinus1() ); 5032 5033 // bsp_comb_sched_idx 5034 assert( getBspCombSchedIdx(h, i, j ) >= 0 ); 5035 5036 //* This check needs to activated, when HighestTid is available here 5037 // assert( getBspCombSchedIdx(h, i, j ) <= vps->getHrdParameters( getBspCombHrdIdx( h, i, j ) )->getCpbCntMinus1( highestTid ) ); 5038 } 5039 #endif 5040 5041 #if H_MV_HLS10_VPS_VUI_BSP 4617 5042 4618 5043 4619 TComVpsVuiBspHrdParameters::~TComVpsVuiBspHrdParameters() … … 5137 4713 } 5138 4714 5139 #endif5140 4715 5141 4716 Void TComVUI::inferVideoSignalInfo( TComVPS* vps, Int layerIdCurr ) … … 5173 4748 for (Int k = 0; k < MAX_NUM_LAYER_IDS; k++ ) 5174 4749 { 5175 #if H_MV_HLS10_ADD_LAYERSETS5176 4750 m_maxVpsDecPicBufferingMinus1[i][k][j] = MIN_INT; 5177 #else5178 m_maxVpsDecPicBufferingMinus1[i][k][j] = 0;5179 #endif5180 4751 } 5181 4752 } -
trunk/source/Lib/TLibCommon/TComSlice.h
r1066 r1084 45 45 #include "TComRom.h" 46 46 #include "TComList.h" 47 #if H_MV_HLS10_GEN_FIX48 47 #if H_MV 49 48 #include <ios> 50 49 #include <iostream> 51 50 #include <iomanip> 52 #endif53 51 #endif 54 52 //! \ingroup TLibCommon … … 207 205 Bool m_frameOnlyConstraintFlag; 208 206 209 #if H_MV_HLS10_PTL210 207 #if H_MV 211 208 Bool m_max12bitConstraintFlag; … … 220 217 Bool m_inbldFlag; 221 218 #endif 222 #endif223 219 public: 224 220 ProfileTierLevel(); … … 252 248 253 249 #if H_MV 254 #if H_MV_HLS10_PTL255 250 Void setMax12bitConstraintFlag( Bool flag ) { m_max12bitConstraintFlag = flag; } 256 251 Bool getMax12bitConstraintFlag( ) { return m_max12bitConstraintFlag; } … … 281 276 Void setInbldFlag( Bool flag ) { m_inbldFlag = flag; } 282 277 Bool getInbldFlag( ) { return m_inbldFlag; } 283 #endif284 #if H_MV_HLS10_PTL_INFER_FIX285 278 Bool getV2ConstraintsPresentFlag(); 286 279 Bool getInbldPresentFlag(); 287 280 Void copyV2ConstraintFlags( ProfileTierLevel* ptlRef ); 288 281 Void copyProfile( ProfileTierLevel* ptlRef ); 289 #endif290 282 #endif 291 283 }; … … 310 302 ProfileTierLevel* getSubLayerPTL(Int i) { return &m_subLayerPTL[i]; } 311 303 #if H_MV 312 #if H_MV_HLS10_PTL_INFER_FIX313 304 Void inferGeneralValues ( Bool profilePresentFlag , Int k, TComPTL* refPTL );; 314 305 Void inferSubLayerValues( Int maxNumSubLayersMinus1, Int k, TComPTL* refPTL );; 315 #else316 Void copyLevelFrom( TComPTL* source );317 #endif318 306 #endif 319 307 }; … … 501 489 class TComVpsVuiBspHrdParameters 502 490 { 503 #if H_MV_HLS10_VPS_VUI_BSP504 491 505 492 /* Not yet tested */ … … 563 550 Void setHrdParametermeters( Int k, TComHRD* val ) { *(m_hrdParameters + k ) = *val; }; 564 551 TComHRD* getHrdParametermeters( Int k ) { return m_hrdParameters + k; }; 565 #else566 private:567 Int m_vpsNumBspHrdParametersMinus1;568 Bool m_bspCprmsPresentFlag[MAX_NUM_BSP_HRD_PARAMETERS];569 Int m_numBitstreamPartitions[MAX_VPS_OP_SETS_PLUS1];570 Bool m_layerInBspFlag[MAX_VPS_OP_SETS_PLUS1][MAX_NUM_BSP_HRD_PARAMETERS][MAX_NUM_LAYERS];571 Int m_numBspSchedCombinationsMinus1[MAX_VPS_OP_SETS_PLUS1];572 Int m_bspCombHrdIdx[MAX_VPS_OP_SETS_PLUS1][MAX_NUM_BSP_HRD_PARAMETERS][MAX_NUM_BSP_SCHED_COMBINATION];573 Int m_bspCombSchedIdx[MAX_VPS_OP_SETS_PLUS1][MAX_NUM_BSP_HRD_PARAMETERS][MAX_NUM_BSP_SCHED_COMBINATION];574 TComHRD* m_hrdParameters[MAX_NUM_BSP_HRD_PARAMETERS];575 public:576 577 Void setVpsNumBspHrdParametersMinus1( Int val ) { m_vpsNumBspHrdParametersMinus1 = val; }578 Int getVpsNumBspHrdParametersMinus1( ) { return m_vpsNumBspHrdParametersMinus1; }579 580 Void setBspCprmsPresentFlag( Int i, Bool flag ) { m_bspCprmsPresentFlag[i] = flag; }581 Bool getBspCprmsPresentFlag( Int i ) { return m_bspCprmsPresentFlag[i]; }582 583 Void setNumBitstreamPartitions( Int h, Int val ) { m_numBitstreamPartitions[h] = val; }584 Int getNumBitstreamPartitions( Int h ) { return m_numBitstreamPartitions[h]; }585 586 Void setLayerInBspFlag( Int h, Int i, Int j, Bool flag ) { m_layerInBspFlag[h][i][j] = flag; }587 Bool getLayerInBspFlag( Int h, Int i, Int j ) { return m_layerInBspFlag[h][i][j]; }588 Void checkLayerInBspFlag ( TComVPS* vps, Int h );589 590 Void setNumBspSchedCombinationsMinus1( Int h, Int val ) { m_numBspSchedCombinationsMinus1[h] = val; }591 Int getNumBspSchedCombinationsMinus1( Int h ) { return m_numBspSchedCombinationsMinus1[h]; }592 593 Void setBspCombHrdIdx( Int h, Int i, Int j, Int val ) { m_bspCombHrdIdx[h][i][j] = val; }594 Int getBspCombHrdIdx( Int h, Int i, Int j ) { return m_bspCombHrdIdx[h][i][j]; }595 Int getBspCombHrdIdxLen() { return gCeilLog2( getVpsNumBspHrdParametersMinus1() + 1); };596 597 598 Void setBspCombSchedIdx( Int h, Int i, Int j, Int val ) { m_bspCombSchedIdx[h][i][j] = val; }599 Int getBspCombSchedIdx( Int h, Int i, Int j ) { return m_bspCombSchedIdx[h][i][j]; }600 601 Void checkBspCombHrdAndShedIdx( TComVPS* vps, Int h, Int i, Int j );602 603 Void setHrdParametermeters( Int k, TComHRD* val ) { m_hrdParameters[k] = val; };604 TComHRD* getHrdParametermeters( Int k ) { return m_hrdParameters[k]; };605 #endif606 552 }; 607 553 … … 630 576 Bool m_wppNotInUseFlag; 631 577 Bool m_wppInUseFlag [MAX_NUM_LAYERS]; 632 #if H_MV_HLS10_VPS_VUI633 578 Bool m_singleLayerForNonIrapFlag; 634 579 Bool m_higherLayerIrapSkipFlag; 635 #endif636 580 Bool m_ilpRestrictedRefLayersFlag; 637 581 Int m_minSpatialSegmentOffsetPlus1[MAX_NUM_LAYERS][MAX_NUM_LAYERS]; … … 708 652 Bool getWppInUseFlag( Int i ) { return m_wppInUseFlag[i]; } 709 653 710 #if H_MV_HLS10_VPS_VUI711 654 Void setSingleLayerForNonIrapFlag( Bool flag ) { m_singleLayerForNonIrapFlag = flag; } 712 655 Bool getSingleLayerForNonIrapFlag( ) { return m_singleLayerForNonIrapFlag; } … … 714 657 Void setHigherLayerIrapSkipFlag( Bool flag ) { m_higherLayerIrapSkipFlag = flag; } 715 658 Bool getHigherLayerIrapSkipFlag( ) { return m_higherLayerIrapSkipFlag; } 716 #endif717 659 718 660 Void setIlpRestrictedRefLayersFlag( Bool flag ) { m_ilpRestrictedRefLayersFlag = flag; } … … 750 692 Int m_bitDepthVpsLumaMinus8; 751 693 Int m_bitDepthVpsChromaMinus8; 752 #if H_MV_HLS10_GEN_VSP_CONF_WIN753 694 Bool m_conformanceWindowVpsFlag; 754 695 Int m_confWinVpsLeftOffset; … … 756 697 Int m_confWinVpsTopOffset; 757 698 Int m_confWinVpsBottomOffset; 758 #endif759 699 760 700 public: 761 701 762 #if H_MV_HLS10_GEN_VSP_CONF_WIN763 702 TComRepFormat() 764 703 { … … 769 708 m_confWinVpsBottomOffset = 0; 770 709 }; 771 #else772 TComRepFormat() { };773 #endif774 710 775 711 Void setChromaAndBitDepthVpsPresentFlag( Bool flag ) { m_chromaAndBitDepthVpsPresentFlag = flag; } … … 796 732 Int getBitDepthVpsChromaMinus8( ) { return m_bitDepthVpsChromaMinus8; } 797 733 798 #if H_MV_HLS10_GEN_VSP_CONF_WIN799 734 Void setConformanceWindowVpsFlag( Bool flag ) { m_conformanceWindowVpsFlag = flag; } 800 735 Bool getConformanceWindowVpsFlag( ) { return m_conformanceWindowVpsFlag; } … … 811 746 Void setConfWinVpsBottomOffset( Int val ) { m_confWinVpsBottomOffset = val; } 812 747 Int getConfWinVpsBottomOffset( ) { return m_confWinVpsBottomOffset; } 813 #endif814 748 }; 815 749 … … 834 768 835 769 Void setMaxVpsDecPicBufferingMinus1( Int i, Int k, Int j, Int val ) { m_maxVpsDecPicBufferingMinus1[i][k][j] = val; } 836 #if H_MV_HLS10_ADD_LAYERSETS837 770 Int getMaxVpsDecPicBufferingMinus1( Int i, Int k, Int j ) { assert( m_maxVpsDecPicBufferingMinus1[i][k][j] >= 0 ); return m_maxVpsDecPicBufferingMinus1[i][k][j]; } 838 #else839 Int getMaxVpsDecPicBufferingMinus1( Int i, Int k, Int j ) { return m_maxVpsDecPicBufferingMinus1[i][k][j]; }840 #endif841 771 842 772 Void setMaxVpsNumReorderPics( Int i, Int j, Int val ) { m_maxVpsNumReorderPics[i][j] = val; } … … 853 783 #if H_MV 854 784 Bool m_vpsBaseLayerInternalFlag; 855 #if H_MV_HLS10_GEN_VSP_BASE_LAYER_AVAIL856 785 Bool m_vpsBaseLayerAvailableFlag; 857 #endif // H_MV_HLS10_GEN858 786 #endif 859 787 … … 925 853 Int m_layerSetIdxForOlsMinus1 [MAX_VPS_OUTPUTLAYER_SETS]; 926 854 Bool m_outputLayerFlag [MAX_VPS_OUTPUTLAYER_SETS][MAX_VPS_NUH_LAYER_ID_PLUS1]; 927 #if H_MV_HLS10_PTL928 855 Int m_profileTierLevelIdx [MAX_VPS_OUTPUTLAYER_SETS ][MAX_NUM_LAYERS]; 929 #else930 Int m_profileLevelTierIdx [MAX_VPS_OUTPUTLAYER_SETS ];931 #endif932 856 Bool m_altOutputLayerFlag [MAX_VPS_OUTPUTLAYER_SETS]; 933 857 Bool m_repFormatIdxPresentFlag; … … 958 882 // VPS EXTENSION SEMANTICS VARIABLES 959 883 Int m_layerIdInVps [MAX_NUM_LAYERS ]; 960 #if H_MV_HLS10_REF_PRED_LAYERS961 884 Int m_dependencyFlag [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 962 #endif963 885 964 886 Int m_numDirectRefLayers [MAX_NUM_LAYERS]; 965 #if H_MV_HLS10_REF_PRED_LAYERS966 887 Int m_idDirectRefLayer [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 967 #else968 Int m_refLayerId [MAX_NUM_LAYERS][MAX_NUM_LAYERS];969 #endif970 888 971 889 Int m_numRefLayers [MAX_NUM_LAYER_IDS]; 972 #if H_MV_HLS10_REF_PRED_LAYERS973 890 Int m_idRefLayer [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 974 #endif975 891 976 892 977 893 Int m_numPredictedLayers [MAX_NUM_LAYERS ]; 978 #if !H_MV_HLS10_REF_PRED_LAYERS979 Int m_predictedLayerId [MAX_NUM_LAYERS][MAX_NUM_LAYER_IDS];980 #else981 894 Int m_idPredictedLayer [MAX_NUM_LAYERS][MAX_NUM_LAYER_IDS]; 982 #endif983 895 Int m_numIndependentLayers; 984 896 Int m_numLayersInTreePartition [MAX_NUM_LAYER_IDS]; 985 897 Int m_treePartitionLayerIdList [MAX_NUM_LAYERS][MAX_NUM_LAYER_IDS]; 986 #if H_MV_HLS10_REF_PRED_LAYERS987 898 Bool m_recursiveRefLayerFlag [MAX_NUM_LAYER_IDS][MAX_NUM_LAYER_IDS]; 988 #endif989 899 Int m_viewIndex [MAX_NUM_LAYERS ]; 990 900 … … 993 903 std::vector< std::vector< Int> > m_layerSetLayerIdList; 994 904 995 #if H_MV_HLS10_NESSECARY_LAYER996 905 Int m_numNecessaryLayers [MAX_VPS_OUTPUTLAYER_SETS]; 997 906 Bool m_necessaryLayerFlag [MAX_VPS_OUTPUTLAYER_SETS][MAX_NUM_LAYERS]; 998 #endif999 907 1000 908 Int xGetDimBitOffset( Int j ); 1001 #if H_MV_HLS10_REF_PRED_LAYERS1002 909 Void xSetRefLayerFlags( Int currLayerId ); 1003 #endif1004 910 // VPS EXTENSION 2 SYNTAX ELEMENTS 1005 911 #if H_3D_ARP … … 1009 915 #if H_3D_IV_MERGE 1010 916 Bool m_ivMvPredFlag [ MAX_NUM_LAYERS ]; 1011 #if SEC_HLS_CLEANUP_I01001012 917 Bool m_ivMvScalingFlag [ MAX_NUM_LAYERS ]; 1013 #endif1014 918 #if H_3D_SPIVMP 1015 919 Int m_iSubPULog2Size [MAX_NUM_LAYERS ]; 1016 #if MTK_I0099_VPS_EX21017 920 Int m_iSubPUMPILog2Size [MAX_NUM_LAYERS ]; 1018 #else 1019 Int m_iSubPUMPILog2Size; 1020 #endif 1021 #endif 1022 #endif 1023 #if MTK_I0099_VPS_EX2 921 #endif 922 #endif 923 #if H_3D_QTLPC 1024 924 Bool m_bLimQtPredFlag [ MAX_NUM_LAYERS ]; 1025 925 #endif … … 1031 931 #endif 1032 932 Bool m_vpsDepthModesFlag [MAX_NUM_LAYERS ]; 1033 #if SEPARATE_FLAG_I0085933 #if H_3D 1034 934 Bool m_bIVPFlag [MAX_NUM_LAYERS ]; 1035 935 #endif 1036 1037 936 #if H_3D 1038 937 UInt m_uiCamParPrecision; … … 1041 940 Int ***m_aaaiCodedScale ; 1042 941 Int ***m_aaaiCodedOffset; 1043 1044 #if !SEC_HLS_CLEANUP_I01001045 Bool m_ivMvScalingFlag;1046 #endif1047 1048 942 #endif 1049 943 #if H_3D_INTER_SDC … … 1081 975 Void setVpsBaseLayerInternalFlag( Bool flag ) { m_vpsBaseLayerInternalFlag = flag; } 1082 976 Bool getVpsBaseLayerInternalFlag( ) { return m_vpsBaseLayerInternalFlag; } 1083 #if H_MV_HLS10_GEN_VSP_BASE_LAYER_AVAIL1084 977 Void setVpsBaseLayerAvailableFlag( Bool flag ) { m_vpsBaseLayerAvailableFlag = flag; } 1085 978 Bool getVpsBaseLayerAvailableFlag( ) { return m_vpsBaseLayerAvailableFlag; } 1086 979 #endif 1087 #endif1088 980 1089 981 UInt getMaxTLayers () { return m_uiMaxTLayers; } … … 1092 984 #if H_MV 1093 985 UInt getMaxSubLayersMinus1() { return m_uiMaxTLayers - 1; } // For consistency with draft spec 1094 #if H_MV_HLS10_GEN_FIX1095 986 Void setMaxSubLayersMinus1(UInt val) { m_uiMaxTLayers = (val + 1); }; 1096 #endif1097 987 UInt getMaxLayersMinus1() { return m_uiMaxLayersMinus1; }; 1098 988 Void setMaxLayersMinus1(UInt l) { m_uiMaxLayersMinus1 = l; } … … 1134 1024 1135 1025 #if H_MV 1136 #if H_MV_HLS10_PTL1137 1026 TComPTL* getPTL( Int idx = 0 ) { return &m_pcPTL[idx]; } 1138 #else1139 TComPTL* getPTL( Int layerSet = 0 ) { return &m_pcPTL[layerSet]; }1140 #endif1141 1027 #else 1142 1028 TComPTL* getPTL() { return &m_pcPTL; } … … 1218 1104 Void setLayerSetIdxForOlsMinus1( Int outLayerSetIdx, Int val ) { m_layerSetIdxForOlsMinus1[ outLayerSetIdx ] = val; } 1219 1105 Int getLayerSetIdxForOlsMinus1( Int outLayerSetIdx ) { return m_layerSetIdxForOlsMinus1[ outLayerSetIdx ]; } 1220 #if VPS_MISC_UPDATES1221 1106 Int getLayerSetIdxForOlsMinus1Len( Int outLayerSetIdx ) { return gCeilLog2( getNumLayerSets() ); } 1222 #endif1223 1107 1224 1108 Void setOutputLayerFlag( Int outLayerSetIdx, Int i, Bool flag ) { m_outputLayerFlag[ outLayerSetIdx ][ i ] = flag; } … … 1227 1111 Bool inferOutputLayerFlag( Int i, Int j ); 1228 1112 1229 #if H_MV_HLS10_PTL1230 1113 Void setProfileTierLevelIdx( Int i, Int j, Int val ) { m_profileTierLevelIdx[ i ][ j ] = val; } 1231 1114 Int getProfileTierLevelIdx( Int i, Int j ) { return m_profileTierLevelIdx[ i ][ j ]; } 1232 #if H_MV_HLS10_PTL_FIX1233 1115 Int inferProfileTierLevelIdx( Int i, Int j ); 1234 #endif1235 #else1236 Void setProfileLevelTierIdx( Int outLayerSetIdx, Int val ) { m_profileLevelTierIdx[ outLayerSetIdx ] = val; }1237 Int getProfileLevelTierIdx( Int outLayerSetIdx ) { return m_profileLevelTierIdx[ outLayerSetIdx ]; }1238 #endif1239 1116 1240 1117 Void setAltOutputLayerFlag( Int i, Bool flag ) { m_altOutputLayerFlag[i] = flag; } … … 1266 1143 TComDpbSize* getDpbSize( ) { return m_dpbSize;} 1267 1144 1268 #if !H_MV_HLS10_ADD_LAYERSETS1269 Void inferDbpSizeLayerSetZero( TComSPS* sps, Bool encoder );1270 #endif1271 1145 1272 1146 Void setPocLsbNotPresentFlag( Int i, Bool flag ) { m_pocLsbNotPresentFlag[i] = flag; } … … 1299 1173 1300 1174 Int getViewIndex ( Int layerIdInNuh ) { return getScalabilityId( getLayerIdInVps(layerIdInNuh), VIEW_ORDER_INDEX ); } 1301 #if H_MV_HLS10_AUX1302 1175 Int getAuxId ( Int layerIdInNuh ) { return getScalabilityId( getLayerIdInVps(layerIdInNuh), AUX_ID ); } 1303 1176 Int getDependencyId ( Int layerIdInNuh ) { return getScalabilityId( getLayerIdInVps(layerIdInNuh), DEPENDENCY_ID ); } 1304 #endif1305 1177 Int getNumViews(); 1306 1178 1307 #if H_MV_HLS10_REF_PRED_LAYERS1308 1179 Bool getDependencyFlag( Int i, Int j ) { return m_dependencyFlag[i][j]; } 1309 #endif1310 1180 Int getNumDirectRefLayers( Int layerIdInNuh ) { return m_numDirectRefLayers[ layerIdInNuh ]; }; 1311 #if !H_MV_HLS10_REF_PRED_LAYERS1312 Int getRefLayerId ( Int layerIdInNuh, Int idx );;1313 #endif1314 1181 Int getNumRefLayers ( Int i ) { return m_numRefLayers[i]; } 1315 1182 Int getNumPredictedLayers ( Int i ) { return m_numPredictedLayers[i]; } 1316 1183 1317 #if !H_MV_HLS10_REF_PRED_LAYERS1318 Int getPredictedLayerId ( Int i, Int j ) { return m_predictedLayerId[i][j]; }1319 #else1320 1184 Int getIdRefLayer ( Int i, Int j ) { assert( j >= 0 && j < getNumRefLayers ( i )); return m_idRefLayer [i][j]; } 1321 1185 Int getIdPredictedLayer ( Int i, Int j ) { assert( j >= 0 && j < getNumPredictedLayers( i )); return m_idPredictedLayer[i][j]; } 1322 1186 Int getIdDirectRefLayer ( Int i, Int j ) { assert( j >= 0 && j < getNumDirectRefLayers( i )); return m_idDirectRefLayer[i][j]; } 1323 #endif1324 1187 Int getNumIndependentLayers ( ) { return m_numIndependentLayers; } 1325 1188 Int getNumLayersInTreePartition( Int i ) { return m_numLayersInTreePartition[i]; } … … 1328 1191 Int getNumLayerSets( ) { return getVpsNumLayerSetsMinus1() + 1 + getNumAddLayerSets(); }; 1329 1192 1330 #if H_MV_HLS10_ADD_LAYERSETS1331 1193 Int getFirstAddLayerSetIdx() { return getVpsNumLayerSetsMinus1() + 1; } 1332 1194 Int getLastAddLayerSetIdx() { return getFirstAddLayerSetIdx() + getNumAddLayerSets() - 1; } 1333 #endif1334 1195 Bool checkVPSExtensionSyntax(); 1335 1196 Int scalTypeToScalIdx ( ScalabilityType scalType ); 1336 1197 1337 #if H_MV_HLS10_PTL1338 1198 Int getProfileTierLevelIdxLen() { return gCeilLog2( getVpsNumProfileTierLevelMinus1() + 1 ); }; 1339 #else1340 Int getProfileLevelTierIdxLen() { return gCeilLog2( getVpsNumProfileTierLevelMinus1() + 1 ); };1341 #endif1342 1199 Int getVpsRepFormatIdxLen() { return gCeilLog2( getVpsNumRepFormatsMinus1() + 1 ); }; 1343 1200 … … 1350 1207 Void deriveLayerSetLayerIdList(); 1351 1208 1352 #if H_MV_HLS10_ADD_LAYERSETS1353 1209 Int olsIdxToLsIdx( Int i ) { return ( i < getNumLayerSets() ) ? i : getLayerSetIdxForOlsMinus1( i ) + 1 ; }; 1354 #else1355 Int olsIdxToLsIdx( Int i ) { return ( i <= getVpsNumLayerSetsMinus1() ) ? i : getLayerSetIdxForOlsMinus1( i ) + 1 ; };1356 #endif1357 1210 Void initTargetLayerIdLists ( ); 1358 1211 Void deriveTargetLayerIdList ( Int i ); … … 1363 1216 Int getOlsHighestOutputLayerId( Int i ) { return getTargetOptLayerIdList( i ).back(); }; 1364 1217 1365 #if H_MV_HLS10_ADD_LAYERSETS1366 1218 Void deriveAddLayerSetLayerIdList( Int i ); 1367 #endif1368 #if H_MV_HLS10_NESSECARY_LAYER1369 1219 Void deriveNecessaryLayerFlags( Int olsIdx );; 1370 1220 Int getNecessaryLayerFlag( Int i, Int j ) { AOF( i >= 0 && i < getNumOutputLayerSets() ); AOF( j >= 0 && j < getNumLayersInIdList( olsIdxToLsIdx( i ) ) ); return m_necessaryLayerFlag[i][j]; }; 1371 #endif1372 1221 1373 1222 Int getMaxSubLayersInLayerSetMinus1( Int i ); … … 1380 1229 1381 1230 // helpers 1382 #if !H_MV_HLS10_REF_PRED_LAYERS1383 Bool getInDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps, Int depth = 0 );1384 #endif1385 #if !H_MV_HLS10_MAXNUMPICS1386 Int getMaxNumPics( Int layerId );1387 #endif1388 #if H_MV_HLS10_ADD_LAYERSETS1389 1231 Void printPTL(); 1390 1232 Void printLayerDependencies(); 1391 #if H_MV_HLS10_AUX1392 1233 Void printScalabilityId();; 1393 #endif1394 1234 Void printLayerSets();; 1395 1235 … … 1436 1276 xPrintArray( name, 1, idx2, numElemDim2, vec2, printNumber, false ); 1437 1277 } 1438 #endif1439 1278 1440 1279 … … 1470 1309 Int getSubPULog2Size(Int layerIdInVps) { return m_iSubPULog2Size[layerIdInVps]; } 1471 1310 Void setSubPULog2Size(Int layerIdInVps, Int u) { m_iSubPULog2Size[layerIdInVps] = u;} 1472 #if MTK_I0099_VPS_EX21473 1311 Int getSubPUMPILog2Size(Int layerIdInVps) { return m_iSubPUMPILog2Size[layerIdInVps]; } 1474 1312 Void setSubPUMPILog2Size(Int layerIdInVps, Int u) { m_iSubPUMPILog2Size[layerIdInVps] = u;} 1475 #else 1476 Int getSubPUMPILog2Size( ) { return m_iSubPUMPILog2Size; } 1477 Void setSubPUMPILog2Size( Int u ) { m_iSubPUMPILog2Size = u; } 1478 #endif 1479 #endif 1480 #endif 1481 #if MTK_I0099_VPS_EX2 1313 #endif 1314 #endif 1315 #if H_3D_QTLPC 1482 1316 Void setLimQtPredFlag ( Int layerIdInVps, Bool val ) { m_bLimQtPredFlag[ layerIdInVps ] = val; } 1483 1317 Bool getLimQtPredFlag ( Int layerIdInVps ) { return m_bLimQtPredFlag[layerIdInVps];} … … 1493 1327 Void setVpsDepthModesFlag( Int layerIdInVps, Bool val ) { m_vpsDepthModesFlag[ layerIdInVps ] = val; } 1494 1328 Bool getVpsDepthModesFlag( Int layerIdInVps ) { return m_vpsDepthModesFlag[ layerIdInVps ]; } 1495 #if SEPARATE_FLAG_I0085 1329 1496 1330 Void setIVPFlag( Int layerIdInVps, Bool val ) { m_bIVPFlag[ layerIdInVps ] = val; } 1497 1331 Bool getIVPFlag( Int layerIdInVps ) { return m_bIVPFlag[ layerIdInVps ]; } 1498 #endif 1499 1500 #if SEC_HLS_CLEANUP_I0100 1332 1501 1333 Bool getIvMvScalingFlag ( Int layerIdInVps ) { return m_ivMvScalingFlag[ layerIdInVps ]; } 1502 1334 Void setIvMvScalingFlag (Int layerIdInVps, Bool b ) { m_ivMvScalingFlag[ layerIdInVps ] = b; } 1503 #else1504 Bool getIvMvScalingFlag ( ) { return m_ivMvScalingFlag; }1505 Void setIvMvScalingFlag ( Bool b ) { m_ivMvScalingFlag = b; }1506 #endif1507 1335 1508 1336 #if H_3D_INTER_SDC … … 1530 1358 Bool m_bInterViewDltPredEnableFlag[ MAX_NUM_LAYERS ]; 1531 1359 1532 #if !FIX_TICKET_771533 Int m_iBitsPerDepthValue [ MAX_NUM_LAYERS ];1534 #endif1535 1360 Int m_iNumDepthmapValues [ MAX_NUM_LAYERS ]; 1536 1361 Int* m_iDepthValue2Idx [ MAX_NUM_LAYERS ]; … … 1559 1384 UInt getDepthViewBitDepth() { return m_uiDepthViewBitDepth; } 1560 1385 1561 #if !FIX_TICKET_771562 Int getBitsPerDepthValue( Int layerIdInVps ) { return getUseDLTFlag(layerIdInVps)?m_iBitsPerDepthValue[layerIdInVps]:g_bitDepthY; }1563 #endif1564 1386 Int getNumDepthValues( Int layerIdInVps ) { return getUseDLTFlag(layerIdInVps)?m_iNumDepthmapValues[layerIdInVps]:((1 << g_bitDepthY)-1); } 1565 1387 Int depthValue2idx( Int layerIdInVps, Pel value ) { return getUseDLTFlag(layerIdInVps)?m_iDepthValue2Idx[layerIdInVps][value]:value; } 1566 #if RWTH_DLT_CLIP_I00571567 1388 Pel idx2DepthValue( Int layerIdInVps, UInt uiIdx ) { return getUseDLTFlag(layerIdInVps)?m_iIdx2DepthValue[layerIdInVps][ClipY(uiIdx)]:uiIdx; } 1568 #else1569 Pel idx2DepthValue( Int layerIdInVps, UInt uiIdx ) { return getUseDLTFlag(layerIdInVps)?m_iIdx2DepthValue[layerIdInVps][uiIdx]:uiIdx; }1570 #endif1571 1389 Void setDepthLUTs( Int layerIdInVps, Int* idx2DepthValue = NULL, Int iNumDepthValues = 0 ); 1572 #if H_3D_DELTA_DLT1573 1390 Int* idx2DepthValue( Int layerIdInVps ) { return m_iIdx2DepthValue[layerIdInVps]; } 1574 1391 Void getDeltaDLT( Int layerIdInVps, Int* piDLTInRef, UInt uiDLTInRefNum, Int* piDeltaDLTOut, UInt *puiDeltaDLTOutNum ); 1575 1392 Void setDeltaDLT( Int layerIdInVps, Int* piDLTInRef, UInt uiDLTInRefNum, Int* piDeltaDLTIn, UInt uiDeltaDLTInNum ); 1576 #endif1577 1393 }; 1578 1394 #endif … … 1833 1649 Bool m_useAMP; 1834 1650 1835 #if !MTK_I0099_VPS_EX21836 #if H_3D_QTLPC1837 Bool m_bUseQTL;1838 Bool m_bUsePC;1839 #endif1840 #endif1841 1651 // Parameter 1842 1652 Int m_bitDepthY; … … 1880 1690 TComVPS* m_pcVPS; 1881 1691 // SPS 1882 #if H_MV_HLS10_MULTILAYERSPS1883 1692 Int m_spsMaxSubLayersMinus1; 1884 1693 Int m_spsExtOrMaxSubLayersMinus1; 1885 #endif1886 1694 Bool m_spsExtensionPresentFlag; 1887 1695 … … 1901 1709 // SPS Extension 1902 1710 Bool m_interViewMvVertConstraintFlag; 1903 #if !H_MV_HLS10_PPS1904 Int m_numScaledRefLayerOffsets;1905 Int m_scaledRefLayerId [MAX_NUM_SCALED_REF_LAYERS];1906 Int m_scaledRefLayerLeftOffset [MAX_NUM_LAYERS];1907 Int m_scaledRefLayerTopOffset [MAX_NUM_LAYERS];1908 Int m_scaledRefLayerRightOffset [MAX_NUM_LAYERS];1909 Int m_scaledRefLayerBottomOffset[MAX_NUM_LAYERS];1910 #endif1911 1711 #endif 1912 1712 #if H_3D … … 2012 1812 #if H_MV 2013 1813 UInt getSpsMaxSubLayersMinus1() { return ( m_uiMaxTLayers - 1); } 2014 #if H_MV_HLS10_MULTILAYERSPS2015 1814 Void setSpsMaxSubLayersMinus1( UInt val ) { setMaxTLayers( val + 1 ); } 2016 #endif2017 1815 #endif 2018 1816 … … 2047 1845 TComPTL* getPTL() { return &m_pcPTL; } 2048 1846 #if H_MV 2049 #if H_MV_HLS10_MULTILAYERSPS2050 1847 Void setSpsExtOrMaxSubLayersMinus1( Int val ) { m_spsExtOrMaxSubLayersMinus1 = val; } 2051 1848 Int getSpsExtOrMaxSubLayersMinus1( ) { return m_spsExtOrMaxSubLayersMinus1; } … … 2053 1850 2054 1851 Bool getMultiLayerExtSpsFlag() { return ( getLayerId() != 0 && getSpsExtOrMaxSubLayersMinus1() == 7 ); } 2055 #endif2056 1852 Void inferSpsMaxDecPicBufferingMinus1( TComVPS* vps, Int targetOptLayerSetIdx, Int currLayerId, Bool encoder ); 2057 1853 … … 2092 1888 Bool getInterViewMvVertConstraintFlag() { return m_interViewMvVertConstraintFlag;} 2093 1889 2094 #if !H_MV_HLS10_PPS2095 Void setNumScaledRefLayerOffsets( Int val ) { m_numScaledRefLayerOffsets = val; }2096 Int getNumScaledRefLayerOffsets( ) { return m_numScaledRefLayerOffsets; }2097 2098 Void setScaledRefLayerId( Int i, Int val ) { m_scaledRefLayerId[i] = val; }2099 Int getScaledRefLayerId( Int i ) { return m_scaledRefLayerId[i]; }2100 2101 Void setScaledRefLayerLeftOffset( Int j, Int val ) { m_scaledRefLayerLeftOffset[j] = val; }2102 Int getScaledRefLayerLeftOffset( Int j ) { return m_scaledRefLayerLeftOffset[j]; }2103 2104 Void setScaledRefLayerTopOffset( Int j, Int val ) { m_scaledRefLayerTopOffset[j] = val; }2105 Int getScaledRefLayerTopOffset( Int j ) { return m_scaledRefLayerTopOffset[j]; }2106 2107 Void setScaledRefLayerRightOffset( Int j, Int val ) { m_scaledRefLayerRightOffset[j] = val; }2108 Int getScaledRefLayerRightOffset( Int j ) { return m_scaledRefLayerRightOffset[j]; }2109 2110 Void setScaledRefLayerBottomOffset( Int j, Int val ) { m_scaledRefLayerBottomOffset[j] = val; }2111 Int getScaledRefLayerBottomOffset( Int j ) { return m_scaledRefLayerBottomOffset[j]; }2112 #endif2113 1890 // Inference 2114 1891 … … 2119 1896 Void checkRpsMaxNumPics( TComVPS* vps, Int currLayerId ); 2120 1897 2121 #endif2122 #if !MTK_I0099_VPS_EX22123 #if H_3D_QTLPC2124 Void setUseQTL( Bool b ) { m_bUseQTL = b; }2125 Bool getUseQTL() { return m_bUseQTL; }2126 Void setUsePC ( Bool b ) { m_bUsePC = b; }2127 Bool getUsePC () { return m_bUsePC; }2128 #endif2129 1898 #endif 2130 1899 #if H_MV … … 2201 1970 2202 1971 Bool m_loopFilterAcrossTilesEnabledFlag; 2203 Intm_uniformSpacingFlag;2204 Int m_iNumColumnsMinus1;2205 UInt* m_puiColumnWidth;2206 Int m_iNumRowsMinus1;2207 UInt* m_puiRowHeight;2208 2209 Int m_ iNumSubstreams;1972 Bool m_uniformSpacingFlag; 1973 Int m_numTileColumnsMinus1; 1974 Int m_numTileRowsMinus1; 1975 std::vector<Int> m_tileColumnWidth; 1976 std::vector<Int> m_tileRowHeight; 1977 1978 Int m_numSubstreams; 2210 1979 2211 1980 Int m_signHideFlag; … … 2304 2073 Bool getDependentSliceSegmentsEnabledFlag() const { return m_dependentSliceSegmentsEnabledFlag; } 2305 2074 Void setDependentSliceSegmentsEnabledFlag(Bool val) { m_dependentSliceSegmentsEnabledFlag = val; } 2306 Bool getTilesEnabledFlag() const { return m_tilesEnabledFlag; }2307 Void setTilesEnabledFlag(Bool val) { m_tilesEnabledFlag = val; }2308 2075 Bool getEntropyCodingSyncEnabledFlag() const { return m_entropyCodingSyncEnabledFlag; } 2309 2076 Void setEntropyCodingSyncEnabledFlag(Bool val) { m_entropyCodingSyncEnabledFlag = val; } 2310 Void setUniformSpacingFlag ( Bool b ) { m_uniformSpacingFlag = b; } 2311 Bool getUniformSpacingFlag () { return m_uniformSpacingFlag; } 2312 Void setNumColumnsMinus1 ( Int i ) { m_iNumColumnsMinus1 = i; } 2313 Int getNumColumnsMinus1 () { return m_iNumColumnsMinus1; } 2314 Void setColumnWidth ( UInt* columnWidth ) 2315 { 2316 if( m_uniformSpacingFlag == 0 && m_iNumColumnsMinus1 > 0 ) 2317 { 2318 m_puiColumnWidth = new UInt[ m_iNumColumnsMinus1 ]; 2319 2320 for(Int i=0; i<m_iNumColumnsMinus1; i++) 2321 { 2322 m_puiColumnWidth[i] = columnWidth[i]; 2323 } 2324 } 2325 } 2326 UInt getColumnWidth (UInt columnIdx) { return *( m_puiColumnWidth + columnIdx ); } 2327 Void setNumRowsMinus1( Int i ) { m_iNumRowsMinus1 = i; } 2328 Int getNumRowsMinus1() { return m_iNumRowsMinus1; } 2329 Void setRowHeight ( UInt* rowHeight ) 2330 { 2331 if( m_uniformSpacingFlag == 0 && m_iNumRowsMinus1 > 0 ) 2332 { 2333 m_puiRowHeight = new UInt[ m_iNumRowsMinus1 ]; 2334 2335 for(Int i=0; i<m_iNumRowsMinus1; i++) 2336 { 2337 m_puiRowHeight[i] = rowHeight[i]; 2338 } 2339 } 2340 } 2341 UInt getRowHeight (UInt rowIdx) { return *( m_puiRowHeight + rowIdx ); } 2342 Void setNumSubstreams(Int iNumSubstreams) { m_iNumSubstreams = iNumSubstreams; } 2343 Int getNumSubstreams() { return m_iNumSubstreams; } 2077 2078 Void setTilesEnabledFlag (Bool val) { m_tilesEnabledFlag = val; } 2079 Bool getTilesEnabledFlag () const { return m_tilesEnabledFlag; } 2080 Void setTileUniformSpacingFlag (Bool b) { m_uniformSpacingFlag = b; } 2081 Bool getTileUniformSpacingFlag () const { return m_uniformSpacingFlag; } 2082 Void setNumTileColumnsMinus1 (Int i) { m_numTileColumnsMinus1 = i; } 2083 Int getNumTileColumnsMinus1 () const { return m_numTileColumnsMinus1; } 2084 Void setTileColumnWidth (const std::vector<Int>& columnWidth ) { m_tileColumnWidth = columnWidth; } 2085 UInt getTileColumnWidth (UInt columnIdx) const { return m_tileColumnWidth[columnIdx]; } 2086 Void setNumTileRowsMinus1 (Int i) { m_numTileRowsMinus1 = i; } 2087 Int getTileNumRowsMinus1 () const { return m_numTileRowsMinus1; } 2088 Void setTileRowHeight (const std::vector<Int>& rowHeight) { m_tileRowHeight = rowHeight; } 2089 UInt getTileRowHeight (UInt rowIdx) const { return m_tileRowHeight[rowIdx]; } 2090 2091 Void setNumSubstreams (Int numSubstreams) { m_numSubstreams = numSubstreams; } 2092 Int getNumSubstreams () { return m_numSubstreams; } 2344 2093 2345 2094 Void setSignHideFlag( Int signHideFlag ) { m_signHideFlag = signHideFlag; } … … 2537 2286 2538 2287 Bool m_enableTMVPFlag; 2539 #if I0044_SLICE_TMVP2288 #if H_MV 2540 2289 Bool m_availableForTMVPRefFlag; 2541 2290 #endif … … 2599 2348 UInt m_aiDDDShift [MAX_NUM_LAYERS]; 2600 2349 #endif 2601 #if MTK_SINGLE_DEPTH_MODE_I00952350 #if H_3D_SINGLE_DEPTH 2602 2351 Bool m_bApplySingleDepthMode; 2603 2352 #endif 2604 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX2353 #if H_3D_IC 2605 2354 Int *m_aICEnableCandidate; 2606 2355 Int *m_aICEnableNum; … … 2676 2425 TComPic* getTexturePic () { return m_ivPicsCurrPoc[0][ m_viewIndex ]; } 2677 2426 #endif 2678 #if MTK_SINGLE_DEPTH_MODE_I00952427 #if H_3D_SINGLE_DEPTH 2679 2428 Void setApplySingleDepthMode( Bool b ) { m_bApplySingleDepthMode = b; } 2680 2429 Bool getApplySingleDepthMode() { return m_bApplySingleDepthMode; } … … 2877 2626 Void setEnableTMVPFlag ( Bool b ) { m_enableTMVPFlag = b; } 2878 2627 Bool getEnableTMVPFlag () { return m_enableTMVPFlag;} 2879 #if I0044_SLICE_TMVP2628 #if H_MV 2880 2629 Void setAvailableForTMVPRefFlag ( Bool b ) { m_availableForTMVPRefFlag = b; } 2881 2630 Bool getAvailableForTMVPRefFlag () { return m_availableForTMVPRefFlag;} … … 2917 2666 Int* getDepthToDisparityF( Int refViewIdx ) { return m_depthToDisparityF[ refViewIdx ]; }; 2918 2667 Bool getVpsDepthModesFlag () { return getVPS()->getVpsDepthModesFlag( getVPS()->getLayerIdInVps( m_layerId ) ); } 2919 #if SEPARATE_FLAG_I00852920 2668 Bool getIVPFlag () { return getVPS()->getIVPFlag( getVPS()->getLayerIdInVps( m_layerId ) ); } 2921 2669 #endif 2922 #endif 2923 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX 2670 #if H_3D_IC 2924 2671 Void setICEnableCandidate( Int* ICEnableCandidate) { m_aICEnableCandidate = ICEnableCandidate; }; 2925 2672 Void setICEnableNum( Int* ICEnableNum) { m_aICEnableNum = ICEnableNum; }; -
trunk/source/Lib/TLibCommon/TComWedgelet.cpp
r1039 r1084 68 68 m_uiHeight ( rcWedge.m_uiHeight ), 69 69 m_pbPattern( (Bool*)xMalloc( Bool, (m_uiWidth * m_uiHeight) ) ) 70 #if SHARP_DMM1_I011071 70 ,m_pbScaledPattern( g_wedgePattern ) 72 #endif73 71 { 74 72 ::memcpy( m_pbPattern, rcWedge.m_pbPattern, sizeof(Bool) * (m_uiWidth * m_uiHeight)); … … 88 86 89 87 m_pbPattern = (Bool*)xMalloc( Bool, (m_uiWidth * m_uiHeight) ); 90 #if SHARP_DMM1_I011091 88 m_pbScaledPattern = g_wedgePattern; 92 #endif93 89 } 94 90 … … 187 183 switch( m_eWedgeRes ) 188 184 { 189 #if !SHARP_DMM1_I0110190 case( DOUBLE_PEL ): { uiTempBlockSize = m_uiWidth; uhXs = (m_uhXs<<1); uhYs = (m_uhYs<<1); uhXe = (m_uhXe<<1); uhYe = (m_uhYe<<1); } break;191 #endif192 185 case( FULL_PEL ): { uiTempBlockSize = m_uiWidth; uhXs = m_uhXs; uhYs = m_uhYs; uhXe = m_uhXe; uhYe = m_uhYe; } break; 193 186 case( HALF_PEL ): { uiTempBlockSize = (m_uiWidth<<1); uhXs = m_uhXs; uhYs = m_uhYs; uhXe = m_uhXe; uhYe = m_uhYe; } break; 194 187 } 195 196 #if !SHARP_DMM1_I0110197 if( m_eWedgeRes == DOUBLE_PEL) // adjust line-end for DOUBLE_PEL resolution198 {199 if( m_uhOri == 1 ) { uhXs = uiTempBlockSize-1; }200 if( m_uhOri == 2 ) { uhXe = uiTempBlockSize-1; uhYs = uiTempBlockSize-1; }201 if( m_uhOri == 3 ) { uhYe = uiTempBlockSize-1; }202 if( m_uhOri == 4 ) { uhYe = uiTempBlockSize-1; }203 if( m_uhOri == 5 ) { uhXs = uiTempBlockSize-1; }204 }205 #endif206 188 207 189 Bool* pbTempPattern = new Bool[ (uiTempBlockSize * uiTempBlockSize) ]; … … 233 215 switch( m_eWedgeRes ) 234 216 { 235 #if !SHARP_DMM1_I0110236 case( DOUBLE_PEL ): { for( UInt k = 0; k < (m_uiWidth * m_uiHeight); k++ ) { m_pbPattern[k] = pbTempPattern[k]; }; } break;237 #endif238 217 case( FULL_PEL ): { for( UInt k = 0; k < (m_uiWidth * m_uiHeight); k++ ) { m_pbPattern[k] = pbTempPattern[k]; }; } break; 239 218 case( HALF_PEL ): // sub-sampling by factor 2 … … 327 306 } 328 307 329 #if SHARP_DMM1_I0110330 308 Bool* TComWedgelet::getScaledPattern(UInt uiDstSize) 331 309 { 332 Bool *pbSrcPat = this->getPattern(); 333 UInt uiSrcSize = this->getStride(); 334 335 Int scale = (g_aucConvertToBit[uiDstSize] - g_aucConvertToBit[uiSrcSize]); 336 assert(scale>=0); 337 for (Int y=0; y<uiDstSize; y++) 338 { 339 for (Int x=0; x<uiDstSize; x++) 340 { 341 Int srcX = x>>scale; 342 Int srcY = y>>scale; 343 m_pbScaledPattern[y*uiDstSize + x] = pbSrcPat[ srcY*uiSrcSize + srcX ]; 344 } 345 } 346 return m_pbScaledPattern; 347 } 348 #endif 310 Bool *pbSrcPat = this->getPattern(); 311 UInt uiSrcSize = this->getStride(); 312 313 Int scale = (g_aucConvertToBit[uiDstSize] - g_aucConvertToBit[uiSrcSize]); 314 assert(scale>=0); 315 for (Int y=0; y<uiDstSize; y++) 316 { 317 for (Int x=0; x<uiDstSize; x++) 318 { 319 Int srcX = x>>scale; 320 Int srcY = y>>scale; 321 m_pbScaledPattern[y*uiDstSize + x] = pbSrcPat[ srcY*uiSrcSize + srcX ]; 322 } 323 } 324 return m_pbScaledPattern; 325 } 349 326 350 327 TComWedgeNode::TComWedgeNode() -
trunk/source/Lib/TLibCommon/TComWedgelet.h
r1039 r1084 58 58 #define DIM_NO_IDX MAX_UINT 59 59 60 #if HS_DMM_SIGNALLING_I012061 60 __inline UInt getDimType ( Int intraMode ) 62 61 { … … 64 63 return (dimType >= 0 && dimType < DIM_NUM_TYPE) ? (UInt)dimType : DIM_NO_IDX; 65 64 } 66 #else67 __inline UInt getDimType ( Int intraMode ) { Int dimType = (intraMode-DIM_OFFSET)/2; return (dimType >= 0 && dimType < DIM_NUM_TYPE) ? (UInt)dimType : DIM_NO_IDX; }68 #endif69 65 __inline Bool isDimMode ( Int intraMode ) { return (getDimType( intraMode ) < DIM_NUM_TYPE); } 70 #if !HS_DMM_SIGNALLING_I012071 __inline Bool isDimDeltaDC( Int intraMode ) { return (isDimMode( intraMode ) && ((intraMode-DIM_OFFSET)%2) == 1); }72 #endif73 66 #endif 74 67 … … 79 72 enum WedgeResolution 80 73 { 81 #if !SHARP_DMM1_I011082 DOUBLE_PEL,83 #endif84 74 FULL_PEL, 85 75 HALF_PEL … … 106 96 107 97 Bool* m_pbPattern; 108 #if SHARP_DMM1_I0110109 98 Bool* m_pbScaledPattern; 110 #endif111 99 112 100 Void xGenerateWedgePattern(); … … 134 122 Bool getIsCoarse() { return m_bIsCoarse; } 135 123 UInt getAng () { return m_uiAng; } 136 #if SHARP_DMM1_I0110137 124 Bool* getScaledPattern(UInt uiWidth); 138 #endif139 125 140 126 Void setWedgelet( UChar uhXs, UChar uhYs, UChar uhXe, UChar uhYe, UChar uhOri, WedgeResolution eWedgeRes, Bool bIsCoarse = false ); -
trunk/source/Lib/TLibCommon/TComYuv.cpp
r1039 r1084 689 689 UInt iSrc1Stride = pcYuvSrc1->getStride(); 690 690 UInt iDstStride = getStride(); 691 #if QC_I0129_ARP_FIX692 691 Int iIFshift = IF_INTERNAL_PREC - g_bitDepthY; 693 692 Int iOffSet = ( 1 << ( iIFshift - 1 ) ) + IF_INTERNAL_OFFS; 694 #endif695 693 for ( y = uiHeight-1; y >= 0; y-- ) 696 694 { … … 700 698 if( bClip ) 701 699 { 702 #if QC_I0129_ARP_FIX703 700 pDst[x] = ClipY( ( pDst[x] + iOffSet ) >> iIFshift ); 704 #else705 pDst[x] = ClipY( pDst[x] );706 #endif707 701 } 708 702 } … … 727 721 UInt iSrc1Stride = pcYuvSrc1->getCStride(); 728 722 UInt iDstStride = getCStride(); 729 #if QC_I0129_ARP_FIX 723 730 724 Int iIFshift = IF_INTERNAL_PREC - g_bitDepthC; 731 725 Int iOffSet = ( 1 << ( iIFshift - 1 ) ) + IF_INTERNAL_OFFS; 732 #endif 726 733 727 for ( y = uiHeight-1; y >= 0; y-- ) 734 728 { … … 739 733 if( bClip ) 740 734 { 741 #if QC_I0129_ARP_FIX742 735 pDstU[x] = ClipC( ( pDstU[x] + iOffSet ) >> iIFshift ); 743 736 pDstV[x] = ClipC( ( pDstV[x] + iOffSet ) >> iIFshift ); 744 #else745 pDstU[x] = ClipC( pDstU[x] );746 pDstV[x] = ClipC( pDstV[x] );747 #endif748 737 } 749 738 } … … 761 750 { 762 751 subtractARPLuma ( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth , uiHeight ); 763 #if SHARP_ARP_CHROMA_I0104 752 764 753 if (uiWidth > 8) 765 #endif 766 subtractARPChroma( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth>>1 , uiHeight>>1 ); 754 subtractARPChroma( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth>>1 , uiHeight>>1 ); 767 755 } 768 756 … … 823 811 { 824 812 multiplyARPLuma( uiAbsPartIdx , uiWidth , uiHeight , dW ); 825 #if SHARP_ARP_CHROMA_I0104 813 826 814 if (uiWidth > 8) 827 #endif 828 multiplyARPChroma( uiAbsPartIdx , uiWidth >> 1 , uiHeight >> 1 , dW ); 815 multiplyARPChroma( uiAbsPartIdx , uiWidth >> 1 , uiHeight >> 1 , dW ); 829 816 } 830 817 -
trunk/source/Lib/TLibCommon/TypeDef.h
r1066 r1084 111 111 // MTK_ARP_REF_SELECTION_G0053 ARP Reference picture selection in JCT3V-G0053 112 112 // MTK_ALIGN_SW_WD_BI_PRED_ARP_H0085 Align the SW and WD for the bi-prediction ARP PUs by disallowing non-normative fast bi-prediction for ARP PUs, JCT3V-H0085 113 113 // QC_I0051_ARP_SIMP 114 // SHARP_ARP_CHROMA_I0104 115 // MTK_I0072_IVARP_SCALING_FIX 114 116 115 117 #define H_3D_IC 1 // Illumination Compensation, JCT3V-B0045, JCT3V-C0046, JCT3V-D0060 … … 123 125 // SEC_IC_ARP_SIG_G0072, Disabling IC when ARP is enabled, option 1 in JCT3V-G0072, part 2 in JCT3V-G0121 124 126 // MTK_LOW_LATENCY_IC_ENCODING_H0086 Low-latency IC encoding in JCT3V-H0086 125 126 #define MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX 1 // Remove the global variables used in JCT3V-H0086 127 128 129 #define SEC_IC_NEIGHBOR_CLIP_I0080 1 // Clipping of neighboring sample position, JCT3V-I0080 130 127 // MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX 1 // Remove the global variables used in JCT3V-H0086 128 // SEC_IC_NEIGHBOR_CLIP_I0080 // Clipping of neighboring sample position, JCT3V-I0080 131 129 132 130 #if H_3D_NBDV … … 177 175 // SHARP_SIMPLE_MERGE_H0062 Restrict 3D-HEVC merge cand in small PUs 178 176 // MTK_DIS_SPBIP8X4_H0205 Disable bi-prediction for 8x4 and 4x8 sub PU and remove the SPIVMP 2Nx2N restriction 179 // SEC_ADAPT_DISABLE_IVMP Disalbing IVMP merge candidates when IC is enabled, JCT3V-H0070 180 181 #define SEC_SIMP_SHIFTED_DV_I0086 1 // Simplification of Shifted DV candidate, JCT3V-I0086 177 // SEC_ADAPT_DISABLE_IVMP Disabling IVMP merge candidates when IC is enabled, JCT3V-H0070 178 // SEC_SIMP_SHIFTED_DV_I0086 Simplification of Shifted DV candidate, JCT3V-I0086 179 180 182 181 183 182 #define H_3D_TMVP 1 // QC_TMVP_C0047 … … 222 221 // SEC_NO_RESI_DLT_H0105 223 222 // MTK_DLT_CODING_FIX_H0091 224 225 #define MTK_SINGLE_DEPTH_MODE_I0095 1 // Single depth mode proposed in JCT3V-I0095 226 #if MTK_SINGLE_DEPTH_MODE_I0095 227 #define MTK_SINGLE_DEPTH_MODE_CANDIDATE_LIST_SIZE 2 // size of the sample candidate list 228 #endif 229 230 #define H_3D_FIX_UNINIT 1 // Fix uninitialized flag 223 // HS_DMM_SIGNALLING_I0120 224 // SHARP_DMM1_I0110 // LUT size reduction for DMM1 proposed in JCT3V-I0110 225 // FAST_SDC_OFFSET_DECISION_I0084 226 // SEPARATE_FLAG_I0085 227 // H_3D_DELTA_DLT 228 // RWTH_DLT_CLIP_I0057 1 229 230 231 232 #define H_3D_SINGLE_DEPTH 1 // Single depth mode proposed in JCT3V-I0095 233 234 231 235 #define H_3D_INTER_SDC 1 // INTER SDC, Inter simplified depth coding 232 236 // LGE_INTER_SDC_E0156 Enable inter SDC for depth coding … … 245 249 // MTK_DBBP_SIGNALING_H0094 246 250 // H_3D_FIX_DBBP_IVMP Fix . Enable IVMP is always disabled, when DBBP is enabled. The original intention is to disable Sub-PU IVMP when DBBP is enabled, not to disable IVMP itself. 247 248 #define SEC_DBBP_EXPLICIT_SIG_I0077 1 // Remove the partition derivation and signal dbbp_flag only when the partion mode is 2NxN/Nx2N, JCT3V-I0077 249 #define SEC_DBBP_DISALLOW_8x8_I0078 1 // Disallow DBBP in 8x8 CU, JCT3V-I0078 250 #define SHARP_DBBP_SIMPLE_FLTER_I0109 1 // Simple condition and one dimensional dilter for DBBP 251 #define SEC_DBBP_DMM4_THRESHOLD_I0076 1 // Simplification of threshold derivation for DBBP and DMM4, JCT3V-I0076 251 // SEC_DBBP_EXPLICIT_SIG_I0077 1 // Remove the partition derivation and signal dbbp_flag only when the partition mode is 2NxN/Nx2N, JCT3V-I0077 252 // Disallow DBBP in 8x8 CU, JCT3V-I0078 253 // SHARP_DBBP_SIMPLE_FLTER_I0109 1 // Simple condition and one dimensional filter for DBBP 254 // SEC_DBBP_DMM4_THRESHOLD_I0076 Simplification of threshold derivation for DBBP and DMM4, JCT3V-I0076 252 255 253 256 … … 256 259 #define H_3D_FCO 0 // Flexible coding order for 3D 257 260 #if H_3D_FCO 258 #define LGE_FCO_I01161259 #endif 260 261 #define SCU_HS_FAST_INTRA_SDC_I0123 1261 #define H_3D_FCO 1 262 #endif 263 264 #define H_3D_FAST_INTRA_SDC 1 // I0123 262 265 263 266 // OTHERS … … 271 274 #endif 272 275 273 #define MTK_I0099_VPS_EX2 1 ///< JCT3V-I0099, sub-PU size signaling and lim_qt_pred_flag in VPS extension 2274 #define MTK_I0099_FIX 1 ///< Fix the problem of removing encoder only QTL275 276 276 // Rate Control 277 277 #define KWU_FIX_URQ 1 278 278 #define KWU_RC_VIEWRC_E0227 0 ///< JCT3V-E0227, view-wise target bitrate allocation 279 279 #define KWU_RC_MADPRED_E0227 0 ///< JCT3V-E0227, inter-view MAD prediction 280 281 #define SEC_VPS_CLEANUP_I0090 1282 #define SEC_HLS_CLEANUP_I0100 1283 284 #define H_3D_FIX_64BIT_SHIFT 1285 280 #endif // H_3D 286 281 … … 292 287 293 288 // Fixes 294 #define FIX_TICKET_79 1 // Unused VSP code 295 #define FIX_TICKET_75 1 // Bi-pred restriction bug in VSP 296 #define FIX_TICKET_68 1 // MV clipping bug in the sub-PU MPI default MV generation 297 #define FIX_TICKET_71 1 // IC parameters is meaningless in HTM when no training samples are available 298 #define FIX_TICKET_77 1 // Unused variable m_iBitsPerDepthValue 299 #define FIX_TICKET_76 1 // unused functions 300 #define FIX_TICKET_62 1 // buffer overflow for print 301 #define FIX_TICKET_61 1 // layerIdsInSets size check 289 290 ///// ***** SINGLE DEPTH MODE ********* 291 #if H_3D_SINGLE_DEPTH 292 #define SINGLE_DEPTH_MODE_CAND_LIST_SIZE 2 // size of the sample candidate list 293 #endif 302 294 303 295 ///// ***** VIEW SYNTHESIS OPTIMIZAION ********* … … 308 300 #define H_3D_VSO_RM_ASSERTIONS 0 // Output VSO assertions 309 301 #define H_3D_VSO_SYNTH_DIST_OUT 0 // Output of synthesized view distortion instead of depth distortion in encoder output 310 #define H_3D_VSO_FIX 1 // This fix should be enabled after verification311 302 #endif 312 303 … … 321 312 #if H_3D_ARP 322 313 #define H_3D_ARP_WFNR 3 323 #define QC_I0129_ARP_FIX 1324 #define QC_I0051_ARP_SIMP 1325 #define SHARP_ARP_CHROMA_I0104 1326 #define MTK_I0072_IVARP_SCALING_FIX 1327 314 #endif 328 315 329 316 ///// ***** DEPTH INTRA MODES ********* 330 317 #if H_3D_DIM 318 // HHI_DMM4_ENC_I0066 331 319 #define H_3D_DIM_DMM 1 // Depth Modeling Modes 332 320 #define H_3D_DIM_SDC 1 // Simplified Depth Coding method 333 321 #define H_3D_DIM_DLT 1 // Depth Lookup Table 334 #define HS_DMM_SIGNALLING_I0120 1 335 #define SHARP_DMM1_I0110 1 // LUT size reduction for DMM1 proposed in JCT3V-I0110 336 #define FIX_WARNING 1 // fix narrowing conversion of NumPocStCurr0,NumPocStCurr1 at TComSlice.cpp 337 #define FAST_SDC_OFFSET_DECISION_I0084 1 338 #define SEPARATE_FLAG_I0085 1 339 340 #if H_3D_DIM_DLT 341 #define H_3D_DELTA_DLT 1 342 #define RWTH_DLT_CLIP_I0057 1 343 #endif 322 344 323 #define H_3D_DIM_ENC 1 // Depth Intra encoder optimizations, includes: 345 324 // HHI_DEPTH_INTRA_SEARCH_RAU_C0160 346 325 // LG_ZEROINTRADEPTHRESI_A0087 347 #define HHI_DMM4_ENC_I0066 1348 326 #endif 349 327 ///// ***** VIEW SYNTHESIS PREDICTION ********* … … 370 348 #if H_3D_DBBP 371 349 #define DBBP_INVALID_SHORT (-4) 372 #define RWTH_DBBP_PACK_MODE SIZE_2NxN350 #define DBBP_PACK_MODE SIZE_2NxN 373 351 #endif 374 352 … … 389 367 ///////////////////////////////////////////////////////////////////////////////// 390 368 // TBD: Check if integration is necessary. 391 392 393 394 //Added by Qualcomm for HLS 395 #define DISCARDABLE_PIC_RPS 1 ///< JCT3V-G0131: Inter-layer RPS and temporal RPS should not contain picture with discardable_flag equal to 1 396 #define VPS_MISC_UPDATES 1 ///< Misc updates:JCT3V-0240, 397 #define NON_REF_NAL_TYPE_DISCARDABLE 1 ///< JCT3V-G0031: If discardable picture is a non-IRAP, it must be a non-referenced sub-layer picture 398 #define INFERENCE_POC_MSB_VAL_PRESENT 1 ///< JCT3V-H0042: poc_msb_val_present_flag shall be equal to 0 when slice_header_extension_length is (inferred to be ) equal to 0 399 #define INFERENCE_POC_RESET_INFO_PRESENT 1 ///< JCT3V-H0042: Infer the value of poc_reset_info_present_flag to be equal to 0 when no pps extension / pps extension for multilayer. 400 #define I0044_SLICE_TMVP 1 ///< JCT3V-I0044: Regarding slice_temporal_mvp_enabled_flag 401 #define I0045_BR_PR_ADD_LAYER_SET 1 ///< JCT3V-I0045: Signalling of bit-rate and picture rate for additional layer set 402 #define I0045_VPS_VUI_VST_PARAMS 1 ///< JCT3V-I0045: Related to signalling of VST parameters of the base layer. 403 404 405 #define H_MV_HLS10_GEN 0 // General changes (not tested) 406 407 #define H_MV_HLS10_AUX 1 // Auxiliary pictures 408 #define H_MV_HLS10_GEN_FIX 1 409 #define H_MV_FIX_LOOP_GOPSIZE 1 410 #define H_MV_FIX_SUB_LAYERS_MAX_MINUS1 1 411 412 #define H_MV_HLS10_GEN_VSP_CONF_WIN 1 // VPS conformance window 413 #define H_MV_HLS10_GEN_VSP_BASE_LAYER_AVAIL 1 // vps_base_layer_available 414 #define H_MV_HLS10_REF_PRED_LAYERS 1 // reference and predicted layer derivation 415 #define H_MV_HLS10_NESSECARY_LAYER 1 // necessary layers 416 #define H_MV_HLS10_ADD_LAYERSETS 1 // additional layer sets 417 #define H_MV_HLS10_DBP_SIZE 1 // dpb size syntax structure 418 #define H_MV_HLS10_MAXNUMPICS 1 // constraint on number of pictures in rps 419 #define H_MV_HLS10_PTL 1 // profile tier level 420 #define H_MV_HLS10_PTL_FIX 1 // profile tier level fix 421 #define H_MV_HLS10_PTL_INBL_FIX 1 // profile tier level fix 422 #define H_MV_HLS10_PTL_INFER_FIX 1 // fix inference ptl 423 #define H_MV_HLS10_MULTILAYERSPS 1 // multilayer SPS extension 424 #define H_MV_HLS10_VPS_VUI 1 // vsp vui 425 #define H_MV_HLS10_VPS_VUI_BSP 1 // vsp vui bsp 426 #define H_MV_HLS10_PPS 1 // PPS modifications 427 428 #define H_MV_HLS10_VPS_VUI_BSP_STORE 0 // Currently bsp vui bsp hrd parameters are not stored, some dynamic memory allocation with upper bounds is required. 429 430 369 #define H_MV_HLS_PTL_LIMITS 0 431 370 #define H_MV_HLS7_GEN 0 // General changes (not tested) 432 371 #define H_MV_ALIGN_HM_15 1 433 372 434 373 // POC … … 452 391 //#define H_MV_HLS_7_SEI_P0123_25 0 // (SEI/P0123/Alpha channel info) #25 Add alpha channel information SEI message Decision: Adopt. Constrain the bit depth indicated to be equal to the coded bit depth of the aux picture. 453 392 454 // Auxiliary picture related455 //#define H_MV_HLS_8_AUX_NODOC_40 0 // #40 (AUX /NODOC/primary pic) Clarify that an auxiliary picture can be associated with more than one primary picture. Consider if the language associating an alpha auxiliary picture with a primary picture in the semantics of dimension_id[ ][ ] near the AuxId derivation could be moved to the alpha SEI message.456 //#define H_MV_HLS_8_AUX_Q0081_2 0 // #2 (AUX /Q0081/primary) Decision: Remove the constraint that an alpha picture must be accompanied by a primary picture.457 //#define H_MV_HLS_8_AUX_Q0078_44 0 // #44 (AUX /Q0078/concepts Auxiliary picture concepts:458 //#define H_MV_HLS_8_AUX_Q0078_39 0 // #39 (AUX /Q0078/conformance): mechanism for signaling a profile/tier/level conformance point for auxiliary pictures459 460 // Profiles461 //#define H_MV_HLS_8_PRO_NODOC_50 0 // #50 (PROF /NODOC/Monochrome) Add Monochrome 8-bit profile462 //#define H_MV_HLS_8_PRO_NODOC_31 0 // #31 (PROF /NODOC/Profile constraint) Add a profile constraint to the Scalable Main, Scalable Main 10, and Stereo Main profiles against allowing layers with duplicate values of DependencyId (or ViewOrderIdx) when AuxId equal to 0.463 //#define H_MV_HLS_8_PRO_H0126_45 0 // #45 (PROF /H0126/Stereo main) Phrasing used in specifying the Stereo Main profile.464 //#define H_MV_HLS_8_PRO_Q0160_33 0 // #33 (PROF /Q0160/alt_output_flag) v2: Add constraint to stereo main profile that it must contain exactly two texture views, and add a note to state that the constraint implies a restriction that alt_output_flag equal to 0.465 466 393 // DPB 467 394 //#define H_MV_HLS_8_HRD_Q0102_09 0 // #9 (HRD /Q0102/NoOutputOfPriorPicsFlag) It was suggested that also the separate_colour_plane_flag should affect inference of NoOutputOfPriorPicsFlag. Decision (Ed.): Agreed (affects RExt text). … … 491 418 #define SAO_SGN_FUNC 1 492 419 420 #define TILE_SIZE_CHECK 1 421 493 422 #define FIX1172 1 ///< fix ticket #1172 494 423 … … 506 435 #define MAX_NESTING_NUM_LAYER 64 507 436 508 #if H_MV _HLS10_VPS_VUI_BSP437 #if H_MV 509 438 #define MAX_VPS_NUM_HRD_PARAMETERS 1024 439 #else 440 #define MAX_VPS_NUM_HRD_PARAMETERS 1 441 #endif 442 #if H_MV 510 443 #define MAX_NUM_SUB_LAYERS 7 511 444 #define MAX_NUM_SIGNALLED_PARTITIONING_SCHEMES 16 512 #else 513 #define MAX_VPS_NUM_HRD_PARAMETERS 1 514 #endif 515 445 #endif 516 446 #define MAX_VPS_OP_SETS_PLUS1 1024 517 447 #if H_MV 518 #if H_MV_HLS10_ADD_LAYERSETS519 448 #define MAX_VPS_NUM_ADD_LAYER_SETS 1024 520 #endif521 449 #define MAX_VPS_NUH_LAYER_ID_PLUS1 63 522 450 #define MAX_NUM_SCALABILITY_TYPES 16 … … 533 461 #define MAX_VPS_PROFILE_TIER_LEVEL 64 534 462 #define MAX_VPS_ADD_OUTPUT_LAYER_SETS 1024 535 #if H_MV_HLS10_ADD_LAYERSETS536 463 #define MAX_VPS_OUTPUTLAYER_SETS ( MAX_VPS_ADD_OUTPUT_LAYER_SETS + MAX_VPS_OP_SETS_PLUS1 + MAX_VPS_OP_SETS_PLUS1 ) 537 #else538 #define MAX_VPS_OUTPUTLAYER_SETS ( MAX_VPS_ADD_OUTPUT_LAYER_SETS + MAX_VPS_OP_SETS_PLUS1 )539 #endif540 464 #define MAX_NUM_VIDEO_SIGNAL_INFO 16 541 465 #define MAX_NUM_SCALED_REF_LAYERS MAX_NUM_LAYERS-1 542 #if !H_MV_HLS10_VPS_VUI_BSP543 #define MAX_NUM_BSP_HRD_PARAMETERS 100 ///< Maximum value is actually not specified544 #define MAX_NUM_BITSTREAM_PARTITIONS 100 ///< Maximum value is actually not specified545 #define MAX_NUM_BSP_SCHED_COMBINATION 100 ///< Maximum value is actually not specified546 #define MAX_SUB_STREAMS 1024547 #endif548 466 #else 549 467 #define MAX_NUM_LAYER_IDS 64 … … 1016 934 MAINSTILLPICTURE = 3, 1017 935 #if H_MV 1018 #if H_MV_HLS10_PTL1019 936 MULTIVIEWMAIN = 6, 1020 937 #if H_3D 1021 938 MAIN3D = 8, 1022 #endif1023 #else1024 MAINSTEREO = 4,1025 MAINMULTIVIEW = 5,1026 #if H_3D1027 MAIN3D = 6,1028 #endif1029 939 #endif 1030 940 #endif … … 1069 979 #endif 1070 980 VIEW_ORDER_INDEX = 1, 1071 #if H_MV_HLS10_AUX1072 981 DEPENDENCY_ID = 2, 1073 982 AUX_ID = 3, 1074 #endif1075 983 }; 1076 984 #endif -
trunk/source/Lib/TLibDecoder/TDecCAVLC.cpp
r1066 r1084 53 53 } 54 54 // To avoid mismatches 55 #if H_MV_HLS10_GEN_FIX56 55 fprintf( g_hTrace, "=========== Sequence Parameter Set LayerId: %d ===========\n", pSPS->getLayerId() ); 57 56 #else 58 fprintf( g_hTrace, "=========== Sequence Parameter Set ===========\n" );59 #endif60 #else61 57 fprintf( g_hTrace, "=========== Sequence Parameter Set ID: %d ===========\n", pSPS->getSPSId() ); 62 58 #endif … … 70 66 return; 71 67 } 72 #if H_MV_HLS10_GEN_FIX73 68 fprintf( g_hTrace, "=========== Picture Parameter Set LayerId: %d ===========\n", pPPS->getLayerId() ); 74 #else75 fprintf( g_hTrace, "=========== Picture Parameter Set ===========\n" );76 #endif77 69 #else 78 70 fprintf( g_hTrace, "=========== Picture Parameter Set ID: %d ===========\n", pPPS->getPPSId() ); … … 300 292 if( pcPPS->getTilesEnabledFlag() ) 301 293 { 302 READ_UVLC ( uiCode, "num_tile_columns_minus1" ); pcPPS->setNum ColumnsMinus1( uiCode );303 READ_UVLC ( uiCode, "num_tile_rows_minus1" ); pcPPS->setNum RowsMinus1( uiCode );304 READ_FLAG ( uiCode, "uniform_spacing_flag" ); pcPPS->set UniformSpacingFlag( uiCode);305 306 if( !pcPPS->get UniformSpacingFlag())307 { 308 UInt* columnWidth = (UInt*)malloc(pcPPS->getNumColumnsMinus1()*sizeof(UInt));309 for(UInt i=0; i<pcPPS->getNum ColumnsMinus1(); i++)294 READ_UVLC ( uiCode, "num_tile_columns_minus1" ); pcPPS->setNumTileColumnsMinus1( uiCode ); 295 READ_UVLC ( uiCode, "num_tile_rows_minus1" ); pcPPS->setNumTileRowsMinus1( uiCode ); 296 READ_FLAG ( uiCode, "uniform_spacing_flag" ); pcPPS->setTileUniformSpacingFlag( uiCode == 1 ); 297 298 if( !pcPPS->getTileUniformSpacingFlag()) 299 { 300 std::vector<Int> columnWidth(pcPPS->getNumTileColumnsMinus1()); 301 for(UInt i=0; i<pcPPS->getNumTileColumnsMinus1(); i++) 310 302 { 311 303 READ_UVLC( uiCode, "column_width_minus1" ); 312 304 columnWidth[i] = uiCode+1; 313 305 } 314 pcPPS->setColumnWidth(columnWidth); 315 free(columnWidth); 316 317 UInt* rowHeight = (UInt*)malloc(pcPPS->getNumRowsMinus1()*sizeof(UInt)); 318 for(UInt i=0; i<pcPPS->getNumRowsMinus1(); i++) 306 pcPPS->setTileColumnWidth(columnWidth); 307 308 std::vector<Int> rowHeight (pcPPS->getTileNumRowsMinus1()); 309 for(UInt i=0; i<pcPPS->getTileNumRowsMinus1(); i++) 319 310 { 320 311 READ_UVLC( uiCode, "row_height_minus1" ); 321 312 rowHeight[i] = uiCode + 1; 322 313 } 323 pcPPS->setRowHeight(rowHeight); 324 free(rowHeight); 325 } 326 327 if(pcPPS->getNumColumnsMinus1() !=0 || pcPPS->getNumRowsMinus1() !=0) 314 pcPPS->setTileRowHeight(rowHeight); 315 } 316 317 if(pcPPS->getNumTileColumnsMinus1() !=0 || pcPPS->getTileNumRowsMinus1() !=0) 328 318 { 329 319 READ_FLAG ( uiCode, "loop_filter_across_tiles_enabled_flag" ); pcPPS->setLoopFilterAcrossTilesEnabledFlag( uiCode ? true : false ); … … 342 332 } 343 333 } 344 #if !H_MV_HLS10_PPS345 #if H_MV346 if ( pcPPS->getLayerId() > 0 )347 {348 READ_FLAG( uiCode, "pps_infer_scaling_list_flag" ); pcPPS->setPpsInferScalingListFlag( uiCode == 1 );349 }350 351 if( pcPPS->getPpsInferScalingListFlag( ) )352 {353 READ_CODE( 6, uiCode, "pps_scaling_list_ref_layer_id" ); pcPPS->setPpsScalingListRefLayerId( uiCode );354 }355 else356 {357 #endif358 #endif359 334 READ_FLAG( uiCode, "pps_scaling_list_data_present_flag" ); pcPPS->setScalingListPresentFlag( uiCode ? true : false ); 360 335 if(pcPPS->getScalingListPresentFlag ()) … … 362 337 parseScalingList( pcPPS->getScalingList() ); 363 338 } 364 #if !H_MV_HLS10_PPS365 #if H_MV366 }367 #endif368 #endif369 339 READ_FLAG( uiCode, "lists_modification_present_flag"); 370 340 pcPPS->setListsModificationPresentFlag(uiCode); … … 400 370 if ( pcPPS->getPpsMultilayerExtensionFlag() ) 401 371 { 402 #if H_MV_HLS10_PPS403 372 parsePPSMultilayerExtension( pcPPS ); 404 #else405 READ_FLAG( uiCode, "poc_reset_info_present_flag" ); pcPPS->setPocResetInfoPresentFlag( uiCode == 1 );406 READ_FLAG( uiCode, "pps_extension_reserved_zero_flag" );407 #endif408 373 } 409 374 #if !H_3D … … 505 470 READ_CODE(8, uiNumDepthValues, "num_depth_values_in_dlt[i]"); // num_entry 506 471 507 #if !H_3D_DELTA_DLT508 if ( pcDLT->getInterViewDltPredEnableFlag( i ) == false ) // Single-view DLT Diff Coding509 #endif510 472 { 511 473 // The condition if( pcVPS->getNumDepthValues(i) > 0 ) is always true since for Single-view Diff Coding, there is at least one depth value in depth component. … … 555 517 } 556 518 557 #if H_3D_DELTA_DLT558 519 if( pcDLT->getInterViewDltPredEnableFlag( i ) ) 559 520 { … … 571 532 pcDLT->setDepthLUTs(i, aiIdx2DepthValue, uiNumDepthValues); 572 533 } 573 #else 574 // store final DLT 575 pcDLT->setDepthLUTs(i, aiIdx2DepthValue, uiNumDepthValues); 576 #endif 534 577 535 } 578 536 } … … 782 740 READ_CODE( 3, uiCode, "sps_max_sub_layers_minus1" ); pcSPS->setMaxTLayers ( uiCode+1 ); 783 741 assert(uiCode <= 6); 784 #if H_MV_HLS10_MULTILAYERSPS785 742 #if H_MV 786 743 } … … 793 750 { 794 751 #endif 795 #endif796 752 797 753 READ_FLAG( uiCode, "sps_temporal_id_nesting_flag" ); pcSPS->setTemporalIdNestingFlag ( uiCode > 0 ? true : false ); … … 803 759 804 760 parsePTL(pcSPS->getPTL(), 1, pcSPS->getMaxTLayers() - 1); 805 #if H_MV _HLS10_PTL_INFER_FIX761 #if H_MV 806 762 pcSPS->getPTL()->inferGeneralValues ( true, 0, NULL ); 807 763 pcSPS->getPTL()->inferSubLayerValues( pcSPS->getMaxTLayers() - 1, 0, NULL ); 808 #endif809 #if H_MV810 764 } 811 765 #endif … … 813 767 assert(uiCode <= 15); 814 768 #if H_MV 815 #if H_MV_HLS10_MULTILAYERSPS816 769 if ( pcSPS->getMultiLayerExtSpsFlag() ) 817 #else818 if ( pcSPS->getLayerId() > 0 )819 #endif820 770 { 821 771 READ_FLAG( uiCode, "update_rep_format_flag" ); pcSPS->setUpdateRepFormatFlag( uiCode == 1 ); … … 839 789 READ_UVLC ( uiCode, "pic_width_in_luma_samples" ); pcSPS->setPicWidthInLumaSamples ( uiCode ); 840 790 READ_UVLC ( uiCode, "pic_height_in_luma_samples" ); pcSPS->setPicHeightInLumaSamples( uiCode ); 841 #if !H_MV_HLS10_MULTILAYERSPS842 #if H_MV843 }844 #endif845 #endif846 791 READ_FLAG( uiCode, "conformance_window_flag"); 847 792 if (uiCode != 0) … … 855 800 READ_UVLC( uiCode, "conf_win_top_offset" ); conf.setWindowTopOffset ( uiCode ); 856 801 READ_UVLC( uiCode, "conf_win_bottom_offset" ); conf.setWindowBottomOffset( uiCode ); 857 #if H_MV_HLS10_MULTILAYERSPS 858 } 859 #endif 802 } 860 803 #else 861 804 READ_UVLC( uiCode, "conf_win_left_offset" ); conf.setWindowLeftOffset ( uiCode * TComSPS::getWinUnitX( pcSPS->getChromaFormatIdc() ) ); … … 867 810 868 811 #if H_MV 869 #if H_MV_HLS10_MULTILAYERSPS870 812 if ( !pcSPS->getMultiLayerExtSpsFlag() ) 871 #else // H_MV_HLS10_GEN872 if ( pcSPS->getLayerId() == 0 )873 #endif // H_MV_HLS10_GEN874 813 { 875 814 #endif … … 891 830 892 831 #if H_MV 893 #if H_MV_HLS10_MULTILAYERSPS894 832 if ( !pcSPS->getMultiLayerExtSpsFlag()) 895 #else896 if ( pcSPS->getLayerId() == 0 )897 #endif898 833 { 899 834 #endif … … 954 889 { 955 890 #if H_MV 956 #if H_MV_HLS10_MULTILAYERSPS957 891 if ( pcSPS->getMultiLayerExtSpsFlag() ) 958 #else959 if ( pcSPS->getLayerId() > 0 )960 #endif961 892 { 962 893 READ_FLAG( uiCode, "sps_infer_scaling_list_flag" ); pcSPS->setSpsInferScalingListFlag( uiCode == 1 ); … … 1086 1017 READ_FLAG( uiCode, "inter_view_mv_vert_constraint_flag" ); pcSPS->setInterViewMvVertConstraintFlag(uiCode == 1 ? true : false); 1087 1018 1088 #if !H_MV_HLS10_PPS1089 READ_UVLC( uiCode, "num_scaled_ref_layer_offsets" ); pcSPS->setNumScaledRefLayerOffsets( uiCode );1090 1091 for( Int i = 0; i < pcSPS->getNumScaledRefLayerOffsets( ); i++)1092 {1093 READ_CODE( 6, uiCode, "scaled_ref_layer_id" ); pcSPS->setScaledRefLayerId( i, uiCode );1094 1095 Int j = pcSPS->getScaledRefLayerId( i );1096 Int iCode;1097 READ_SVLC( iCode, "scaled_ref_layer_left_offset" ); pcSPS->setScaledRefLayerLeftOffset( j, iCode );1098 READ_SVLC( iCode, "scaled_ref_layer_top_offset" ); pcSPS->setScaledRefLayerTopOffset( j, iCode );1099 READ_SVLC( iCode, "scaled_ref_layer_right_offset" ); pcSPS->setScaledRefLayerRightOffset( j, iCode );1100 READ_SVLC( iCode, "scaled_ref_layer_bottom_offset" ); pcSPS->setScaledRefLayerBottomOffset( j, iCode );1101 READ_FLAG( uiCode, "sps_multilayer_ext_reserved_zero_flag[ i ]" );1102 }1103 #endif1104 1019 } 1105 1020 … … 1107 1022 Void TDecCavlc::parseSPSExtension2( TComSPS* pcSPS, Int viewIndex, Bool depthFlag ) 1108 1023 { 1109 #if !MTK_I0099_VPS_EX2 1110 UInt uiCode; 1111 #if H_3D_QTLPC 1112 //GT: This has to go to VPS 1113 if( depthFlag ) 1114 { 1115 READ_FLAG( uiCode, "use_qtl_flag" ); 1116 pcSPS->setUseQTL( uiCode ); 1117 READ_FLAG( uiCode, "use_pc_flag" ); 1118 pcSPS->setUsePC( uiCode ); 1119 } 1120 #endif 1121 #endif 1122 } 1123 #endif 1124 1125 #if H_MV_HLS10_PPS 1024 1025 } 1026 #endif 1027 1126 1028 Void TDecCavlc::parsePPSMultilayerExtension(TComPPS* pcPPS) 1127 1029 { … … 1134 1036 1135 1037 #endif 1136 #endif1137 1038 1138 1039 Void TDecCavlc::parseVPS(TComVPS* pcVPS) … … 1143 1044 #if H_MV 1144 1045 READ_FLAG( uiCode, "vps_base_layer_internal_flag" ); pcVPS->setVpsBaseLayerInternalFlag( uiCode == 1 ); 1145 #if H_MV_HLS10_GEN_VSP_BASE_LAYER_AVAIL1146 1046 READ_FLAG( uiCode, "vps_base_layer_available_flag" ); pcVPS->setVpsBaseLayerAvailableFlag( uiCode == 1 ); 1147 #else1148 READ_FLAG( uiCode, "vps_reserved_one_bit" ); assert( uiCode == 1 );1149 #endif1150 1047 #else 1151 1048 READ_CODE( 2, uiCode, "vps_reserved_three_2bits" ); assert(uiCode == 3); … … 1162 1059 READ_CODE( 16, uiCode, "vps_reserved_ffff_16bits" ); assert(uiCode == 0xffff); 1163 1060 parsePTL ( pcVPS->getPTL(), true, pcVPS->getMaxTLayers()-1); 1164 #if H_MV_HLS10_PTL_INFER_FIX1165 1061 #if H_MV 1166 1062 pcVPS->getPTL()->inferGeneralValues ( true, 0, NULL ); 1167 1063 pcVPS->getPTL()->inferSubLayerValues( pcVPS->getMaxTLayers() - 1, 0, NULL ); 1168 #endif1169 1064 #endif 1170 1065 UInt subLayerOrderingInfoPresentFlag; … … 1193 1088 READ_CODE( 6, uiCode, "vps_max_layer_id" ); pcVPS->setVpsMaxLayerId( uiCode ); 1194 1089 1195 #if H_MV_HLS10_GEN_FIX1196 1090 READ_UVLC( uiCode, "vps_num_layer_sets_minus1" ); pcVPS->setVpsNumLayerSetsMinus1( uiCode ); 1197 #else1198 READ_UVLC( uiCode, "vps_max_num_layer_sets_minus1" ); pcVPS->setVpsNumLayerSetsMinus1( uiCode );1199 #endif1200 1091 for( UInt opsIdx = 1; opsIdx <= pcVPS->getVpsNumLayerSetsMinus1(); opsIdx ++ ) 1201 1092 { … … 1241 1132 READ_FLAG( uiCode, "cprms_present_flag[i]" ); pcVPS->setCprmsPresentFlag( uiCode == 1 ? true : false, i ); 1242 1133 } 1134 else 1135 { 1136 pcVPS->setCprmsPresentFlag( true, i ); 1137 } 1138 1243 1139 parseHrdParameters(pcVPS->getHrdParameters(i), pcVPS->getCprmsPresentFlag( i ), pcVPS->getMaxTLayers() - 1); 1244 1140 } … … 1286 1182 UInt uiCode; 1287 1183 1288 #if H_MV_HLS10_PTL1289 1184 if( pcVPS->getMaxLayersMinus1() > 0 && pcVPS->getVpsBaseLayerInternalFlag() ) 1290 1185 { 1291 1186 parsePTL( pcVPS->getPTL( 1 ),0, pcVPS->getMaxSubLayersMinus1() ); 1292 1187 1293 #if !H_MV_HLS10_PTL_INFER_FIX1294 // Copy Profile info1295 TComPTL temp = *pcVPS->getPTL( 1 );1296 *pcVPS->getPTL( 1 ) = *pcVPS->getPTL( 0 );1297 pcVPS->getPTL( 1 )->copyLevelFrom( &temp );1298 #else1299 1188 pcVPS->getPTL( 1 )->inferGeneralValues ( false, 1, pcVPS->getPTL( 0 ) ); 1300 1189 pcVPS->getPTL( 1 )->inferSubLayerValues( pcVPS->getMaxSubLayersMinus1(), 1, pcVPS->getPTL( 0 ) ); 1301 #endif 1302 } 1303 #endif 1190 } 1304 1191 1305 1192 READ_FLAG( uiCode, "splitting_flag" ); pcVPS->setSplittingFlag( uiCode == 1 ? true : false ); … … 1375 1262 pcVPS->setRefLayers(); 1376 1263 1377 #if H_MV_HLS10_ADD_LAYERSETS1378 1264 if ( pcVPS->getNumIndependentLayers() > 1 ) 1379 1265 { … … 1388 1274 pcVPS->deriveAddLayerSetLayerIdList( i ); 1389 1275 } 1390 #endif1391 1276 1392 1277 READ_FLAG( uiCode, "vps_sub_layers_max_minus1_present_flag" ); pcVPS->setVpsSubLayersMaxMinus1PresentFlag( uiCode == 1 ); … … 1425 1310 READ_UVLC( uiCode, "vps_num_profile_tier_level_minus1" ); pcVPS->setVpsNumProfileTierLevelMinus1( uiCode ); 1426 1311 1427 #if H_MV_HLS10_PTL1428 1312 Int offsetVal = ( pcVPS->getMaxLayersMinus1() > 0 && pcVPS->getVpsBaseLayerInternalFlag() ) ? 2 : 1; 1429 1313 for( Int i = pcVPS->getVpsBaseLayerInternalFlag() ? 2 : 1; i <= pcVPS->getVpsNumProfileTierLevelMinus1(); i++ ) … … 1431 1315 READ_FLAG( uiCode, "vps_profile_present_flag[i]" ); pcVPS->setVpsProfilePresentFlag( i, uiCode == 1 ); 1432 1316 parsePTL ( pcVPS->getPTL( offsetVal ), pcVPS->getVpsProfilePresentFlag( i ), pcVPS->getMaxTLayers()-1); 1433 #if H_MV_HLS10_PTL_INFER_FIX1434 1317 pcVPS->getPTL( offsetVal )->inferGeneralValues ( pcVPS->getVpsProfilePresentFlag( i ), offsetVal, pcVPS->getPTL( offsetVal - 1 ) ); 1435 1318 pcVPS->getPTL( offsetVal )->inferSubLayerValues( pcVPS->getMaxSubLayersMinus1() , offsetVal, pcVPS->getPTL( offsetVal - 1 ) ); 1436 #else1437 if( !pcVPS->getVpsProfilePresentFlag( i ) )1438 {1439 TComPTL temp = *pcVPS->getPTL( offsetVal );1440 *pcVPS->getPTL( offsetVal ) = *pcVPS->getPTL( offsetVal - 1 );1441 pcVPS->getPTL( offsetVal )->copyLevelFrom( &temp );1442 }1443 #endif1444 1319 offsetVal++; 1445 1320 } 1446 #else 1447 for( Int i = 1; i <= pcVPS->getVpsNumProfileTierLevelMinus1(); i++ ) 1448 { 1449 READ_FLAG( uiCode, "vps_profile_present_flag[i]" ); pcVPS->setVpsProfilePresentFlag( i, uiCode == 1 ); 1450 parsePTL ( pcVPS->getPTL( i ), pcVPS->getVpsProfilePresentFlag( i ), pcVPS->getMaxTLayers()-1); 1451 if( !pcVPS->getVpsProfilePresentFlag( i ) ) 1452 { 1453 TComPTL temp = *pcVPS->getPTL( i ); 1454 *pcVPS->getPTL( i ) = *pcVPS->getPTL( i - 1 ); 1455 pcVPS->getPTL( i )->copyLevelFrom( &temp ); 1456 } 1457 } 1458 #endif 1459 1460 #if !H_MV_HLS10_ADD_LAYERSETS 1461 if ( pcVPS->getNumIndependentLayers() > 1 ) 1462 { 1463 READ_UVLC( uiCode, "num_add_layer_sets" ); pcVPS->setNumAddLayerSets( uiCode ); 1464 } 1465 for (Int i = 0; i < pcVPS->getNumAddLayerSets(); i++) 1466 { 1467 for (Int j = 0; j < pcVPS->getNumIndependentLayers(); j++) 1468 { 1469 READ_CODE( pcVPS->getHighestLayerIdxPlus1Len( j ) , uiCode, "highest_layer_idx_plus1" ); pcVPS->setHighestLayerIdxPlus1( i, j, uiCode ); 1470 } 1471 } 1472 #endif 1321 1473 1322 1474 1323 if (pcVPS->getNumLayerSets() > 1) … … 1484 1333 pcVPS->setLayerSetIdxForOlsMinus1(0, -1); 1485 1334 1486 #if H_MV_HLS10_NESSECARY_LAYER1487 1335 pcVPS->deriveNecessaryLayerFlags( 0 ); 1488 #endif1489 1336 pcVPS->deriveTargetLayerIdList( 0 ); 1490 1337 1491 #if H_MV_HLS10_PTL_FIX1492 1338 if (pcVPS->getVpsBaseLayerInternalFlag() ) 1493 1339 { 1494 1340 pcVPS->setProfileTierLevelIdx(0,0, pcVPS->inferProfileTierLevelIdx(0,0) ); 1495 1341 } 1496 #endif1497 1342 for( Int i = 1; i < pcVPS->getNumOutputLayerSets( ); i++ ) 1498 1343 { 1499 1344 if( i >= pcVPS->getNumLayerSets( ) ) 1500 1345 { 1501 #if !VPS_MISC_UPDATES1502 READ_UVLC( uiCode, "layer_set_idx_for_ols_minus1[i]" ); pcVPS->setLayerSetIdxForOlsMinus1( i, uiCode );1503 #else1504 1346 READ_CODE( pcVPS->getLayerSetIdxForOlsMinus1Len( i ), uiCode, "layer_set_idx_for_ols_minus1[i]" ); pcVPS->setLayerSetIdxForOlsMinus1( i, uiCode ); 1505 #endif1506 1347 } 1507 1348 … … 1520 1361 } 1521 1362 } 1522 #if H_MV_HLS10_NESSECARY_LAYER1523 1363 pcVPS->deriveNecessaryLayerFlags( i ); 1524 #endif1525 1364 pcVPS->deriveTargetLayerIdList( i ); 1526 1365 1527 #if H_MV_HLS10_PTL1528 1366 for ( Int j = 0; j < pcVPS->getNumLayersInIdList( pcVPS->olsIdxToLsIdx(i)); j++ ) 1529 1367 { … … 1532 1370 READ_CODE( pcVPS->getProfileTierLevelIdxLen(), uiCode,"profile_tier_level_idx[ i ][ j ]" ); pcVPS->setProfileTierLevelIdx( i, j, uiCode ); 1533 1371 } 1534 #if H_MV_HLS10_PTL_FIX1535 1372 if (pcVPS->getNecessaryLayerFlag( i, j ) && pcVPS->getVpsNumProfileTierLevelMinus1() == 0 ) 1536 1373 { 1537 1374 pcVPS->setProfileTierLevelIdx( i , j, pcVPS->inferProfileTierLevelIdx( i, j) ); 1538 1375 } 1539 #endif 1540 } 1541 #else 1542 if ( pcVPS->getProfileLevelTierIdxLen() > 0 ) 1543 { 1544 READ_CODE( pcVPS->getProfileLevelTierIdxLen(), uiCode,"profile_level_tier_idx[ i ]" ); pcVPS->setProfileLevelTierIdx( i , uiCode ); 1545 } 1546 #endif 1376 } 1547 1377 1548 1378 if( pcVPS->getNumOutputLayersInOutputLayerSet( i ) == 1 && pcVPS->getNumDirectRefLayers( pcVPS->getOlsHighestOutputLayerId( i ) ) > 0 ) … … 1594 1424 } 1595 1425 1596 #if !H_MV_HLS10_GEN_FIX1597 READ_FLAG( uiCode, "vps_reserved_zero_flag" );1598 #endif1599 1426 parseDpbSize( pcVPS ); 1600 1427 … … 1670 1497 pcRepFormat->inferChromaAndBitDepth(pcPrevRepFormat, false ); 1671 1498 } 1672 #if H_MV_HLS10_GEN_VSP_CONF_WIN1673 1499 READ_FLAG( uiCode, "conformance_window_vps_flag" ); pcRepFormat->setConformanceWindowVpsFlag( uiCode == 1 ); 1674 1500 if ( pcRepFormat->getConformanceWindowVpsFlag() ) … … 1679 1505 READ_UVLC( uiCode, "conf_win_vps_bottom_offset" ); pcRepFormat->setConfWinVpsBottomOffset( uiCode ); 1680 1506 } 1681 #endif1682 1507 } 1683 1508 … … 1705 1530 if( pcVPSVUI->getBitRatePresentVpsFlag( ) || pcVPSVUI->getPicRatePresentVpsFlag( ) ) 1706 1531 { 1707 #if H_MV_HLS10_VPS_VUI1708 1532 for( Int i = pcVPS->getVpsBaseLayerInternalFlag() ? 0 : 1; i < pcVPS->getNumLayerSets(); i++ ) 1709 #else1710 for( Int i = pcVPS->getVpsBaseLayerInternalFlag() ? 0 : 1; i <= pcVPS->getVpsNumLayerSetsMinus1(); i++ )1711 #endif1712 1533 { 1713 1534 for( Int j = 0; j <= pcVPS->getMaxSubLayersInLayerSetMinus1( i ); j++ ) … … 1742 1563 else 1743 1564 { 1744 #if H_MV_HLS10_VPS_VUI1745 1565 pcVPSVUI->setVpsNumVideoSignalInfoMinus1( pcVPS->getMaxLayersMinus1() - pcVPS->getVpsBaseLayerInternalFlag() ? 0 : 1 ); 1746 #else1747 pcVPSVUI->setVpsNumVideoSignalInfoMinus1( pcVPS->getMaxLayersMinus1() );1748 #endif1749 1566 } 1750 1567 … … 1757 1574 } 1758 1575 1759 #if I0045_VPS_VUI_VST_PARAMS1760 1576 if( pcVPSVUI->getVideoSignalInfoIdxPresentFlag() && pcVPSVUI->getVpsNumVideoSignalInfoMinus1() > 0 ) 1761 1577 { … … 1779 1595 } 1780 1596 } 1781 #else 1782 if( pcVPSVUI->getVideoSignalInfoIdxPresentFlag() && pcVPSVUI->getVpsNumVideoSignalInfoMinus1() > 0 ) 1783 { 1784 for( Int i = 1; i <= pcVPS->getMaxLayersMinus1(); i++ ) 1785 { 1786 READ_CODE( 4, uiCode, "vps_video_signal_info_idx" ); pcVPSVUI->setVpsVideoSignalInfoIdx( i, uiCode ); 1787 assert( pcVPSVUI->getVpsVideoSignalInfoIdx( i ) >= 0 && pcVPSVUI->getVpsVideoSignalInfoIdx( i ) <= pcVPSVUI->getVpsNumVideoSignalInfoMinus1() ); 1788 } 1789 } 1790 else 1791 { 1792 for( Int i = 1; i <= pcVPS->getMaxLayersMinus1(); i++ ) 1793 { 1794 pcVPSVUI->setVpsVideoSignalInfoIdx( i, pcVPSVUI->getVideoSignalInfoIdxPresentFlag() ? 0 : i ); 1795 } 1796 } 1797 #endif 1597 1798 1598 READ_FLAG( uiCode, "tiles_not_in_use_flag" ); pcVPSVUI->setTilesNotInUseFlag( uiCode == 1 ); 1799 1599 if( !pcVPSVUI->getTilesNotInUseFlag() ) … … 1811 1611 for( Int j = 0; j < pcVPS->getNumDirectRefLayers( pcVPS->getLayerIdInNuh( i ) ) ; j++ ) 1812 1612 { 1813 #if H_MV_HLS10_REF_PRED_LAYERS1814 1613 Int layerIdx = pcVPS->getLayerIdInVps(pcVPS->getIdDirectRefLayer(pcVPS->getLayerIdInNuh( i ) , j )); 1815 #else1816 Int layerIdx = pcVPS->getLayerIdInVps(pcVPS->getRefLayerId(pcVPS->getLayerIdInNuh( i ) , j ));1817 #endif1818 1614 if( pcVPSVUI->getTilesInUseFlag( i ) && pcVPSVUI->getTilesInUseFlag( layerIdx ) ) 1819 1615 { … … 1833 1629 } 1834 1630 } 1835 #if H_MV_HLS10_VPS_VUI1836 1631 READ_FLAG( uiCode, "single_layer_for_non_irap_flag" ); pcVPSVUI->setSingleLayerForNonIrapFlag( uiCode == 1 ); 1837 1632 READ_FLAG( uiCode, "higher_layer_irap_skip_flag" ); pcVPSVUI->setHigherLayerIrapSkipFlag( uiCode == 1 ); 1838 #else1839 READ_CODE( 3, uiCode, "vps_vui_reserved_zero_3bits" );1840 #endif1841 1633 READ_FLAG( uiCode, "ilp_restricted_ref_layers_flag" ); pcVPSVUI->setIlpRestrictedRefLayersFlag( uiCode == 1 ); 1842 1634 … … 1847 1639 for( Int j = 0; j < pcVPS->getNumDirectRefLayers( pcVPS->getLayerIdInNuh( i ) ); j++ ) 1848 1640 { 1849 #if H_MV_HLS10_REF_PRED_LAYERS1850 1641 if( pcVPS->getVpsBaseLayerInternalFlag() || pcVPS->getIdDirectRefLayer( pcVPS->getLayerIdInNuh( i ), j ) > 0 ) 1851 #else1852 if( pcVPS->getVpsBaseLayerInternalFlag() || pcVPS->getRefLayerId( pcVPS->getLayerIdInNuh( i ), j ) > 0 )1853 #endif1854 1642 { 1855 1643 READ_UVLC( uiCode, "min_spatial_segment_offset_plus1" ); pcVPSVUI->setMinSpatialSegmentOffsetPlus1( i, j, uiCode ); … … 1870 1658 if ( pcVPSVUI->getVpsVuiBspHrdPresentFlag( ) ) 1871 1659 { 1872 #if VPS_MISC_UPDATES1873 1660 assert(pcVPS->getTimingInfo()->getTimingInfoPresentFlag() == 1); 1874 #endif1875 1661 parseVpsVuiBspHrdParameters( pcVPS ); 1876 1662 } … … 1893 1679 1894 1680 TComVpsVuiBspHrdParameters* vpsVuiBspHrdP = pcVPSVUI->getVpsVuiBspHrdParameters(); 1895 #if H_MV_HLS10_VPS_VUI_BSP1896 1681 assert( vpsVuiBspHrdP == NULL ); 1897 1682 vpsVuiBspHrdP = new TComVpsVuiBspHrdParameters; 1898 1683 pcVPSVUI->setVpsVuiBspHrdParameters( vpsVuiBspHrdP ); 1899 #else1900 assert ( vpsVuiBspHrdP );1901 #endif1902 1684 UInt uiCode; 1903 #if H_MV_HLS10_VPS_VUI_BSP1904 1685 READ_UVLC( uiCode, "vps_num_add_hrd_params" ); vpsVuiBspHrdP->setVpsNumAddHrdParams( uiCode ); 1905 1686 vpsVuiBspHrdP->createAfterVpsNumAddHrdParams( pcVPS ); … … 1990 1771 } 1991 1772 } 1992 #else1993 READ_UVLC( uiCode, "vps_num_bsp_hrd_parameters_minus1" ); vpsVuiBspHrdP->setVpsNumBspHrdParametersMinus1( uiCode );1994 for( Int i = 0; i <= vpsVuiBspHrdP->getVpsNumBspHrdParametersMinus1( ); i++ )1995 {1996 if( i > 0 )1997 {1998 READ_FLAG( uiCode, "bsp_cprms_present_flag" ); vpsVuiBspHrdP->setBspCprmsPresentFlag( i, uiCode == 1 );1999 }2000 TComHRD* hrdParameters = vpsVuiBspHrdP->getHrdParametermeters( i );2001 parseHrdParameters( hrdParameters, vpsVuiBspHrdP->getBspCprmsPresentFlag( i ), pcVPS->getMaxSubLayersMinus1() );2002 }2003 for( Int h = 1; h <= pcVPS->getVpsNumLayerSetsMinus1(); h++ )2004 {2005 READ_UVLC( uiCode, "num_bitstream_partitions" ); vpsVuiBspHrdP->setNumBitstreamPartitions( h, uiCode );2006 for( Int i = 0; i < vpsVuiBspHrdP->getNumBitstreamPartitions( h ); i++ )2007 {2008 for( Int j = 0; j < pcVPS->getNumLayersInIdList( h ); j++ )2009 {2010 READ_FLAG( uiCode, "layer_in_bsp_flag" ); vpsVuiBspHrdP->setLayerInBspFlag( h, i, j, uiCode == 1 );2011 }2012 }2013 vpsVuiBspHrdP->checkLayerInBspFlag( pcVPS, h );2014 2015 if( vpsVuiBspHrdP->getNumBitstreamPartitions( h ) )2016 {2017 READ_UVLC( uiCode, "num_bsp_sched_combinations_minus1" ); vpsVuiBspHrdP->setNumBspSchedCombinationsMinus1( h, uiCode );2018 for( Int i = 0; i <= vpsVuiBspHrdP->getNumBspSchedCombinationsMinus1( h ); i++ )2019 {2020 for( Int j = 0; j < vpsVuiBspHrdP->getNumBitstreamPartitions( h ); j++ )2021 {2022 READ_CODE( vpsVuiBspHrdP->getBspCombHrdIdxLen(), uiCode, "bsp_comb_hrd_idx" ); vpsVuiBspHrdP->setBspCombHrdIdx( h, i, j, uiCode );2023 READ_UVLC( uiCode, "bsp_comb_sched_idx" ); vpsVuiBspHrdP->setBspCombSchedIdx( h, i, j, uiCode );2024 vpsVuiBspHrdP->checkBspCombHrdAndShedIdx( pcVPS, h, i, j );2025 }2026 }2027 }2028 }2029 #endif2030 1773 } 2031 1774 … … 2060 1803 for( Int k = 0; k < vps->getNumLayersInIdList( currLsIdx ); k++ ) 2061 1804 { 2062 #if H_MV_HLS10_DBP_SIZE2063 1805 if ( vps->getNecessaryLayerFlag( i, k ) && ( vps->getVpsBaseLayerInternalFlag() || ( vps->getLayerSetLayerIdList(vps->olsIdxToLsIdx(i),k) != 0 ) )) 2064 1806 { … … 2072 1814 } 2073 1815 } 2074 #else2075 READ_UVLC( uiCode, "max_vps_dec_pic_buffering_minus1" ); dpbSize->setMaxVpsDecPicBufferingMinus1( i, k, j, uiCode );2076 #endif2077 1816 } 2078 1817 READ_UVLC( uiCode, "max_vps_num_reorder_pics" ); dpbSize->setMaxVpsNumReorderPics( i, j, uiCode ); … … 2085 1824 for( Int k = 0; k < vps->getNumLayersInIdList( vps->olsIdxToLsIdx( i ) ); k++ ) 2086 1825 { 2087 #if H_MV_HLS10_DBP_SIZE2088 1826 if ( vps->getNecessaryLayerFlag(i, k ) ) 2089 1827 { 2090 #endif2091 1828 dpbSize->setMaxVpsDecPicBufferingMinus1( i, k, j, dpbSize->getMaxVpsDecPicBufferingMinus1( i,k, j - 1 ) ); 2092 #if H_MV_HLS10_DBP_SIZE2093 1829 } 2094 #endif2095 1830 } 2096 1831 dpbSize->setMaxVpsNumReorderPics ( i, j, dpbSize->getMaxVpsNumReorderPics ( i, j - 1 ) ); … … 2106 1841 { 2107 1842 UInt uiCode; 2108 #if SEC_VPS_CLEANUP_I00902109 1843 for( Int i = 1; i <= pcVPS->getMaxLayersMinus1(); i++ ) 2110 #else2111 for( Int i = 0; i <= pcVPS->getMaxLayersMinus1(); i++ )2112 #endif2113 1844 { 2114 1845 #if H_3D_ARP … … 2119 1850 pcVPS->setSubPULog2Size(i, 0); 2120 1851 #endif 2121 #if !SEC_VPS_CLEANUP_I0090 2122 if ( i != 0 ) 2123 #endif 2124 { 2125 #if MTK_I0099_VPS_EX2 1852 { 1853 #if H_3D_IV_MERGE 2126 1854 READ_FLAG( uiCode, "iv_mv_pred_flag[i]"); pcVPS->setIvMvPredFlag ( i, uiCode == 1 ? true : false ); 2127 #if SEC_HLS_CLEANUP_I01002128 1855 READ_FLAG( uiCode, "iv_mv_scaling_flag[i]"); pcVPS->setIvMvScalingFlag ( i, uiCode == 1 ? true : false ); 2129 1856 #endif 2130 #endif2131 1857 if( !( pcVPS->getDepthId( i ) == 1 ) ) 2132 1858 { 2133 1859 #if H_3D_IV_MERGE 2134 #if !MTK_I0099_VPS_EX22135 READ_FLAG( uiCode, "iv_mv_pred_flag[i]"); pcVPS->setIvMvPredFlag ( i, uiCode == 1 ? true : false );2136 #endif2137 1860 if( !pcVPS->getNumDirectRefLayers(i) ) 2138 1861 { … … 2166 1889 else 2167 1890 { 2168 #if !MTK_I0099_VPS_EX22169 #if H_3D_IV_MERGE2170 if(i!=1)2171 {2172 READ_FLAG( uiCode, "iv_mv_pred_flag[i]"); pcVPS->setIvMvPredFlag ( i, uiCode == 1 ? true : false );2173 if( !pcVPS->getNumDirectRefLayers(i) )2174 {2175 assert( !uiCode );2176 }2177 }2178 #endif2179 #if H_3D_SPIVMP2180 if (i!=1)2181 {2182 READ_UVLC (uiCode, "log2_sub_PU_size_minus3[i]"); pcVPS->setSubPULog2Size(i, uiCode+3);2183 }2184 #endif2185 #endif2186 1891 #if H_3D_IV_MERGE 2187 1892 READ_FLAG( uiCode, "mpi_flag[i]" ); pcVPS->setMPIFlag( i, uiCode == 1 ? true : false ); 2188 #endif2189 #if MTK_I0099_VPS_EX22190 1893 READ_UVLC (uiCode, "log2_mpi_sub_PU_size_minus3[i]"); pcVPS->setSubPUMPILog2Size(i, uiCode+3); 2191 1894 #endif 2192 1895 READ_FLAG( uiCode, "vps_depth_modes_flag[i]" ); pcVPS->setVpsDepthModesFlag( i, uiCode == 1 ? true : false ); 2193 #if SEPARATE_FLAG_I00851896 #if H_3D 2194 1897 READ_FLAG( uiCode, "ivp_flag[i]" ); pcVPS->setIVPFlag( i, uiCode == 1 ? true : false ); 2195 1898 #endif 2196 #if MTK_I0099_VPS_EX21899 #if H_3D_QTLPC 2197 1900 READ_FLAG( uiCode, "lim_qt_pred_flag[i]"); pcVPS->setLimQtPredFlag ( i, uiCode == 1 ? true : false ); 2198 1901 #endif … … 2209 1912 2210 1913 READ_UVLC( uiCamParPrecision, "cp_precision" ); 2211 #if SEC_VPS_CLEANUP_I00902212 1914 for (UInt viewIndex=1; viewIndex<pcVPS->getNumViews(); viewIndex++) 2213 #else2214 for (UInt viewIndex=0; viewIndex<pcVPS->getNumViews(); viewIndex++)2215 #endif2216 1915 { 2217 1916 pcVPS->setCamParPresent ( viewIndex, false ); … … 2235 1934 } 2236 1935 } 2237 #if !MTK_I0099_VPS_EX22238 READ_UVLC (uiCode, "log2_sub_PU_MPI_size_minus3"); pcVPS->setSubPUMPILog2Size( uiCode + 3 );2239 #endif2240 #if !SEC_HLS_CLEANUP_I01002241 READ_FLAG( uiCode, "iv_mv_scaling_flag"); pcVPS->setIvMvScalingFlag( uiCode == 1 ? true : false );2242 #endif2243 1936 } 2244 1937 #endif … … 2288 1981 sps->inferScalingList( parameterSetManager->getActiveSPS( sps->getSpsScalingListRefLayerId() ) ); 2289 1982 sps->inferSpsMaxDecPicBufferingMinus1( vps, targetOlsIdx, rpcSlice->getLayerId(), false ); 2290 #if !H_MV_HLS10_ADD_LAYERSETS2291 vps->inferDbpSizeLayerSetZero( sps, false );2292 #endif2293 1983 2294 1984 if ( sps->getVuiParametersPresentFlag() ) … … 2358 2048 esb++; 2359 2049 READ_FLAG( uiCode, "discardable_flag" ); rpcSlice->setDiscardableFlag( uiCode == 1 ); 2360 #if NON_REF_NAL_TYPE_DISCARDABLE2361 2050 if ( uiCode == 1 ) 2362 2051 { … … 2367 2056 rpcSlice->getNalUnitType() != NAL_UNIT_CODED_SLICE_RASL_R); 2368 2057 } 2369 #endif2370 2058 } 2371 2059 … … 2515 2203 rps->checkMaxNumPics( 2516 2204 vps->getVpsExtensionFlag(), 2517 #if H_MV_HLS10_MAXNUMPICS2518 2205 MAX_INT, // To be replaced by MaxDbpSize 2519 #else2520 vps->getMaxNumPics( rpcSlice->getLayerId() ),2521 #endif2522 2206 rpcSlice->getLayerId(), 2523 2207 sps->getMaxDecPicBuffering( sps->getSpsMaxSubLayersMinus1() ) - 1 ); … … 2632 2316 rps->checkMaxNumPics( 2633 2317 vps->getVpsExtensionFlag(), 2634 #if H_MV_HLS10_MAXNUMPICS2635 2318 MAX_INT, // To be replaced by MaxDbpsize 2636 #else2637 vps->getMaxNumPics( rpcSlice->getLayerId() ),2638 #endif2639 2319 rpcSlice->getLayerId(), 2640 2320 sps->getMaxDecPicBuffering( sps->getSpsMaxSubLayersMinus1() ) - 1 ); … … 2655 2335 if (rpcSlice->getSPS()->getTMVPFlagsPresent()) 2656 2336 { 2657 #if I0044_SLICE_TMVP2337 #if H_MV 2658 2338 READ_FLAG( uiCode, "slice_temporal_mvp_enabled_flag" ); 2659 2339 #else … … 2865 2545 } 2866 2546 #if H_3D_IC 2867 #if SEC_HLS_CLEANUP_I01002868 2547 else if( rpcSlice->getViewIndex() && ( rpcSlice->getSliceType() == P_SLICE || rpcSlice->getSliceType() == B_SLICE ) && !rpcSlice->getIsDepth() && vps->getNumDirectRefLayers( layerId ) > 0 ) 2869 #else2870 else if( rpcSlice->getViewIndex() && ( rpcSlice->getSliceType() == P_SLICE || rpcSlice->getSliceType() == B_SLICE ) && !rpcSlice->getIsDepth())2871 #endif2872 2548 { 2873 2549 UInt uiCodeTmp = 0; … … 2883 2559 } 2884 2560 #endif 2885 #if MTK_SINGLE_DEPTH_MODE_I00952561 #if H_3D_SINGLE_DEPTH 2886 2562 if(rpcSlice->getIsDepth()) 2887 2563 { … … 3009 2685 3010 2686 #if H_3D 3011 #if LGE_FCO_I01162687 #if H_3D_FCO 3012 2688 if( rpcSlice->getVPS()->hasCamParInSliceHeader( rpcSlice->getViewIndex() ) && rpcSlice->getIsDepth() ) 3013 2689 #else … … 3090 2766 } 3091 2767 assert( ( m_pcBitstream->getNumBitsRead() - posFollSliceSegHeaderExtLen ) == rpcSlice->getSliceSegmentHeaderExtensionLength() * 8 ); 2768 } 3092 2769 #else 3093 2770 READ_UVLC( uiCode, "slice_header_extension_length" ); … … 3097 2774 READ_CODE(8,ignore,"slice_header_extension_data_byte"); 3098 2775 } 3099 #endif 3100 } 3101 #if INFERENCE_POC_MSB_VAL_PRESENT 3102 else 3103 { 3104 rpcSlice->setSliceSegmentHeaderExtensionLength( 0 ); 3105 rpcSlice->setPocMsbValPresentFlag( false ); 3106 } 3107 #endif 3108 3109 2776 } 2777 #endif 3110 2778 m_pcBitstream->readByteAlignment(); 3111 2779 … … 3198 2866 READ_FLAG( uiCode, "sub_layer_profile_present_flag[i]" ); rpcPTL->setSubLayerProfilePresentFlag(i, uiCode); 3199 2867 #if H_MV 3200 #if !H_MV_HLS10_PTL_INFER_FIX3201 rpcPTL->setSubLayerProfilePresentFlag( i, profilePresentFlag && rpcPTL->getSubLayerProfilePresentFlag(i) );3202 #else3203 2868 // When profilePresentFlag is equal to 0, sub_layer_profile_present_flag[ i ] shall be equal to 0. 3204 2869 assert( profilePresentFlag || !rpcPTL->getSubLayerProfilePresentFlag(i) ); 3205 #endif3206 2870 #else 3207 2871 } … … 3221 2885 for(Int i = 0; i < maxNumSubLayersMinus1; i++) 3222 2886 { 3223 #if H_MV_HLS10_PTL_INFER_FIX3224 2887 #if H_MV 3225 2888 if( rpcPTL->getSubLayerProfilePresentFlag(i) ) 3226 2889 #else 3227 2890 if( profilePresentFlag && rpcPTL->getSubLayerProfilePresentFlag(i) ) 3228 #endif3229 #else3230 if( profilePresentFlag && rpcPTL->getSubLayerProfilePresentFlag(i) )3231 2891 #endif 3232 2892 { … … 3262 2922 ptl->setFrameOnlyConstraintFlag(uiCode ? true : false); 3263 2923 3264 #if H_MV_HLS10_PTL 3265 #if H_MV_HLS10_PTL_INFER_FIX 2924 #if H_MV 3266 2925 if( ptl->getV2ConstraintsPresentFlag() ) 3267 #else3268 if( ptl->getProfileIdc( ) == 4 || ptl->getProfileCompatibilityFlag( 4 ) ||3269 ptl->getProfileIdc( ) == 5 || ptl->getProfileCompatibilityFlag( 5 ) ||3270 ptl->getProfileIdc( ) == 6 || ptl->getProfileCompatibilityFlag( 6 ) ||3271 ptl->getProfileIdc( ) == 7 || ptl->getProfileCompatibilityFlag( 7 ) )3272 #endif3273 2926 { 3274 2927 READ_FLAG( uiCode, "max_12bit_constraint_flag" ); ptl->setMax12bitConstraintFlag ( uiCode == 1 ); … … 3291 2944 READ_CODE(11, uiCode, "XXX_reserved_zero_43bits[32..42]"); 3292 2945 } 3293 #if H_MV_HLS10_PTL_INFER_FIX3294 2946 if( ptl->getInbldPresentFlag() ) 3295 #else3296 if( ( ptl->getProfileIdc() >= 1 && ptl->getProfileIdc() <= 5 ) ||3297 ptl->getProfileCompatibilityFlag( 1 ) || ptl->getProfileCompatibilityFlag( 2 ) ||3298 ptl->getProfileCompatibilityFlag( 3 ) || ptl->getProfileCompatibilityFlag( 4 ) ||3299 ptl->getProfileCompatibilityFlag( 5 ) )3300 #endif3301 2947 { 3302 2948 READ_FLAG( uiCode, "inbld_flag" ); ptl->setInbldFlag( uiCode == 1 ); … … 3331 2977 assert(0); 3332 2978 } 3333 #if MTK_SINGLE_DEPTH_MODE_I00952979 #if H_3D_SINGLE_DEPTH 3334 2980 Void TDecCavlc::parseSingleDepthMode( TComDataCU* /*pcCU*/, UInt /*uiAbsPartIdx*/, UInt /*uiDepth*/ ) 3335 2981 { -
trunk/source/Lib/TLibDecoder/TDecCAVLC.h
r1066 r1084 97 97 #endif 98 98 99 #if H_MV_HLS10_PPS100 99 #if H_MV 101 100 Void parsePPSMultilayerExtension( TComPPS* pcPPS ); 102 #endif103 101 #endif 104 102 … … 126 124 127 125 Void parseSkipFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 128 #if MTK_SINGLE_DEPTH_MODE_I0095126 #if H_3D_SINGLE_DEPTH 129 127 Void parseSingleDepthMode ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 130 128 #endif -
trunk/source/Lib/TLibDecoder/TDecCu.cpp
r1066 r1084 420 420 Int vspFlag[MRG_MAX_NUM_CANDS_MEM]; 421 421 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 422 #if !FIX_TICKET_79423 InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM];424 #endif425 422 #if H_3D_SPIVMP 426 423 Bool bSPIVMPFlag[MRG_MAX_NUM_CANDS_MEM]; … … 434 431 m_ppcCU[uiDepth]->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 435 432 m_ppcCU[uiDepth]->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours 436 #if !FIX_TICKET_79437 , inheritedVSPDisInfo438 #endif439 433 #if H_3D_SPIVMP 440 434 , pcMvFieldSP, puhInterDirSP … … 456 450 m_ppcCU[uiDepth]->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 457 451 #endif 458 #endif459 #if H_3D_VSP && !FIX_TICKET_79460 if(vspFlag[uiMergeIndex])461 {462 pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeIndex].m_acDvInfo, uiAbsPartIdx, 0, uiDepth);463 }464 452 #endif 465 453 pcCU->setInterDirSubParts( uhInterDirNeighbours[uiMergeIndex], uiAbsPartIdx, 0, uiDepth ); … … 546 534 return; 547 535 } 548 #if MTK_SINGLE_DEPTH_MODE_I0095536 #if H_3D_SINGLE_DEPTH 549 537 m_pcEntropyDecoder->decodeSingleDepthMode( pcCU, uiAbsPartIdx, uiDepth ); 550 538 if(!pcCU->getSingleDepthFlag(uiAbsPartIdx)) … … 580 568 m_pcEntropyDecoder->decodeCoeff( pcCU, uiAbsPartIdx, uiDepth, uiCurrWidth, uiCurrHeight, bCodeDQP ); 581 569 setdQPFlag( bCodeDQP ); 582 #if MTK_SINGLE_DEPTH_MODE_I0095570 #if H_3D_SINGLE_DEPTH 583 571 } 584 572 #endif … … 682 670 break; 683 671 case MODE_INTRA: 684 #if MTK_SINGLE_DEPTH_MODE_I0095672 #if H_3D_SINGLE_DEPTH 685 673 if( m_ppcCU[uiDepth]->getSingleDepthFlag(0) ) 686 674 xReconIntraSingleDepth( m_ppcCU[uiDepth], 0, uiDepth ); … … 730 718 } 731 719 } 732 #if MTK_SINGLE_DEPTH_MODE_I0095720 #if H_3D_SINGLE_DEPTH 733 721 Void TDecCu::xReconIntraSingleDepth( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 734 722 { … … 749 737 Pel DepthNeighbours[5]; 750 738 Int index =0; 751 for( Int i = 0; (i < 5) && (index< MTK_SINGLE_DEPTH_MODE_CANDIDATE_LIST_SIZE) ; i++ )739 for( Int i = 0; (i < 5) && (index<SINGLE_DEPTH_MODE_CAND_LIST_SIZE) ; i++ ) 752 740 { 753 741 if(!pcCU->getNeighDepth (0, uiAbsPartIdx, &testDepth, i)) … … 859 847 // get collocated depth block 860 848 UInt uiDepthStride = 0; 861 #if LGE_FCO_I0116849 #if H_3D_FCO 862 850 Pel* pDepthPels = pcCU->getVirtualDepthBlock(pcCU->getZorderIdxInCU(), pcCU->getWidth(0), pcCU->getHeight(0), uiDepthStride); 863 851 #else … … 932 920 933 921 // reconstruct final prediction signal by combining both segments 934 #if SHARP_DBBP_SIMPLE_FLTER_I0109935 922 m_pcPrediction->combineSegmentsWithMask(apSegPredYuv, m_ppcYuvReco[uiDepth], pMask, pcCU->getWidth(0), pcCU->getHeight(0), 0, ePartSize); 936 #else 937 m_pcPrediction->combineSegmentsWithMask(apSegPredYuv, m_ppcYuvReco[uiDepth], pMask, pcCU->getWidth(0), pcCU->getHeight(0)); 938 #endif 939 923 940 924 // inter recon 941 925 xDecodeInterTexture( pcCU, 0, uiDepth ); … … 1311 1295 Int uiTabIdx = pcCU->getDmmWedgeTabIdx(DMM1_IDX, uiAbsPartIdx); 1312 1296 1313 #if SHARP_DMM1_I01101314 1297 WedgeList* pacWedgeList = pcCU->isDMM1UpscaleMode(uiWidth) ? &g_dmmWedgeLists[(g_aucConvertToBit[pcCU->getDMM1BasePatternWidth(uiWidth)])] : &g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])]; 1315 #else1316 WedgeList* pacWedgeList = &g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])];1317 #endif1318 1298 TComWedgelet* pcWedgelet = &(pacWedgeList->at( uiTabIdx )); 1319 1299 1320 1300 uiNumSegments = 2; 1321 1301 1322 #if SHARP_DMM1_I01101323 1302 pbMask = pcCU->isDMM1UpscaleMode( uiWidth ) ? pcWedgelet->getScaledPattern(uiWidth) : pcWedgelet->getPattern(); 1324 1303 uiMaskStride = pcCU->isDMM1UpscaleMode( uiWidth ) ? uiWidth : pcWedgelet->getStride(); 1325 #else1326 pbMask = pcWedgelet->getPattern();1327 uiMaskStride = pcWedgelet->getStride();1328 #endif1329 1304 } 1330 1305 if( getDimType( uiLumaPredMode ) == DMM4_IDX ) -
trunk/source/Lib/TLibDecoder/TDecCu.h
r1039 r1084 123 123 Void setdQPFlag ( Bool b ) { m_bDecodeDQP = b; } 124 124 Void xFillPCMBuffer (TComDataCU* pCU, UInt depth); 125 #if MTK_SINGLE_DEPTH_MODE_I0095125 #if H_3D_SINGLE_DEPTH 126 126 Void xReconIntraSingleDepth( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 127 127 #endif -
trunk/source/Lib/TLibDecoder/TDecEntropy.cpp
r1039 r1084 52 52 m_pcEntropyDecoderIf->parseSkipFlag( pcCU, uiAbsPartIdx, uiDepth ); 53 53 } 54 #if MTK_SINGLE_DEPTH_MODE_I009554 #if H_3D_SINGLE_DEPTH 55 55 Void TDecEntropy::decodeSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 56 56 { … … 152 152 153 153 #if H_3D_DBBP 154 155 #if SEC_DBBP_EXPLICIT_SIG_I0077156 #if SEC_DBBP_DISALLOW_8x8_I0078157 154 if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) && (pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2NxN || pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_Nx2N) && pcCU->getWidth(uiAbsPartIdx) > 8 ) 158 #else159 if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) && (pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2NxN || pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_Nx2N) )160 #endif161 #else162 #if SEC_DBBP_DISALLOW_8x8_I0078163 if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) && pcCU->getWidth(uiAbsPartIdx) > 8 )164 #else165 if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) )166 #endif167 #endif168 155 { 169 156 decodeDBBPFlag(pcCU, uiAbsPartIdx, uiDepth); 170 #if !SEC_DBBP_EXPLICIT_SIG_I0077171 if( pcCU->getDBBPFlag(uiAbsPartIdx) )172 {173 174 // get collocated depth block175 UInt uiDepthStride = 0;176 Pel* pDepthPels = NULL;177 pDepthPels = pcCU->getVirtualDepthBlock(uiAbsPartIdx, pcCU->getWidth(uiAbsPartIdx), pcCU->getHeight(uiAbsPartIdx), uiDepthStride);178 179 AOF( pDepthPels != NULL );180 AOF( uiDepthStride != 0 );181 182 // derive true partitioning for this CU based on depth183 // (needs to be done in parsing process as motion vector predictors are also derived during parsing)184 PartSize eVirtualPartSize = m_pcPrediction->getPartitionSizeFromDepth(pDepthPels, uiDepthStride, pcCU->getWidth(uiAbsPartIdx));185 AOF( eVirtualPartSize != SIZE_NONE );186 187 pcCU->setPartSizeSubParts(eVirtualPartSize, uiAbsPartIdx, uiDepth);188 189 // make sure that DBBP flag is set for both segments190 UInt uiPUOffset = ( g_auiPUOffset[UInt( eVirtualPartSize )] << ( ( pcCU->getSlice()->getSPS()->getMaxCUDepth() - uiDepth ) << 1 ) ) >> 4;191 pcCU->setDBBPFlagSubParts(true, uiAbsPartIdx, 0, uiDepth);192 pcCU->setDBBPFlagSubParts(true, uiAbsPartIdx+uiPUOffset, 1, uiDepth);193 }194 #endif195 157 } 196 158 #endif … … 311 273 Int vspFlag[MRG_MAX_NUM_CANDS_MEM]; 312 274 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 313 #if !FIX_TICKET_79314 InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM];315 #endif316 275 #if H_3D_SPIVMP 317 276 memset(bSPIVMPFlag, false, sizeof(Bool)*MRG_MAX_NUM_CANDS_MEM); … … 320 279 pcSubCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand); 321 280 pcSubCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours 322 #if !FIX_TICKET_79323 , inheritedVSPDisInfo324 #endif325 281 #if H_3D_SPIVMP 326 282 , pcMvFieldSP, puhInterDirSP … … 334 290 pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiSubPartIdx, uiPartIdx, uiDepth ); 335 291 336 #if !FIX_TICKET_79337 if(vspFlag[uiMergeIndex])338 {339 pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeIndex].m_acDvInfo, uiSubPartIdx, uiPartIdx, uiDepth);340 }341 #endif342 292 #else 343 293 #if H_3D … … 360 310 Int vspFlag[MRG_MAX_NUM_CANDS_MEM]; 361 311 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 362 #if !FIX_TICKET_79363 InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM];364 #endif365 312 #if H_3D_SPIVMP 366 313 memset(bSPIVMPFlag, false, sizeof(Bool)*MRG_MAX_NUM_CANDS_MEM); … … 369 316 pcSubCU->getInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 370 317 pcSubCU->xGetInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours 371 #if !FIX_TICKET_79372 , inheritedVSPDisInfo373 #endif374 318 #if H_3D_SPIVMP 375 319 , pcMvFieldSP, puhInterDirSP … … 382 326 ,numValidMergeCand ); 383 327 pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiSubPartIdx, uiPartIdx, uiDepth ); 384 #if !FIX_TICKET_79385 if(vspFlag[uiMergeIndex])386 {387 pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeIndex].m_acDvInfo, uiSubPartIdx, uiPartIdx, uiDepth);388 }389 #endif390 328 #else 391 329 #if H_3D … … 485 423 #endif 486 424 } 487 #if H_3D_VSP && !FIX_TICKET_75488 if ( (pcCU->getInterDir(uiSubPartIdx) == 3) && pcSubCU->isBipredRestriction(uiPartIdx) && (pcCU->getVSPFlag(uiSubPartIdx) == 0))489 #else490 425 if ( (pcCU->getInterDir(uiSubPartIdx) == 3) && pcSubCU->isBipredRestriction(uiPartIdx) ) 491 #endif492 426 { 493 427 pcCU->getCUMvField( REF_PIC_LIST_1 )->setAllMv( TComMv(0,0), ePartSize, uiSubPartIdx, uiDepth, uiPartIdx); -
trunk/source/Lib/TLibDecoder/TDecEntropy.h
r1039 r1084 89 89 public: 90 90 virtual Void parseSkipFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0; 91 #if MTK_SINGLE_DEPTH_MODE_I009591 #if H_3D_SINGLE_DEPTH 92 92 virtual Void parseSingleDepthMode ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0; 93 93 #endif … … 132 132 virtual Void updateContextTables( SliceType eSliceType, Int iQp ) = 0; 133 133 134 virtual ~TDecEntropyIf() {} ;134 virtual ~TDecEntropyIf() {} 135 135 }; 136 136 … … 179 179 Void decodeSplitFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 180 180 Void decodeSkipFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 181 #if MTK_SINGLE_DEPTH_MODE_I0095181 #if H_3D_SINGLE_DEPTH 182 182 Void decodeSingleDepthMode ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) ; 183 183 #endif -
trunk/source/Lib/TLibDecoder/TDecGop.cpp
r976 r1084 248 248 calcAndPrintHashStatus(*rpcPic->getPicYuvRec(), hash); 249 249 } 250 #if !H_MV 251 #if SETTING_PIC_OUTPUT_MARK 252 rpcPic->setOutputMark(rpcPic->getSlice(0)->getPicOutputFlag() ? true : false); 253 #else 254 rpcPic->setOutputMark(true); 255 #endif 256 rpcPic->setReconMark(true); 257 #endif 250 258 } 251 259 -
trunk/source/Lib/TLibDecoder/TDecSbac.cpp
r1066 r1084 52 52 , m_cCUSplitFlagSCModel ( 1, 1, NUM_SPLIT_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels ) 53 53 , m_cCUSkipFlagSCModel ( 1, 1, NUM_SKIP_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 54 #if MTK_SINGLE_DEPTH_MODE_I009554 #if H_3D_SINGLE_DEPTH 55 55 , m_cCUSingleDepthFlagSCModel ( 1, 1, NUM_SINGLEDEPTH_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 56 56 , m_cSingleDepthValueSCModel ( 1, 1, NUM_SINGLE_DEPTH_VALUE_DATA_CTX , m_contextModels + m_numContextModels, m_numContextModels) … … 136 136 m_cCUSplitFlagSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_SPLIT_FLAG ); 137 137 m_cCUSkipFlagSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_SKIP_FLAG ); 138 #if MTK_SINGLE_DEPTH_MODE_I0095138 #if H_3D_SINGLE_DEPTH 139 139 m_cCUSingleDepthFlagSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_SINGLEDEPTH_FLAG ); 140 140 m_cSingleDepthValueSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_SINGLE_DEPTH_VALUE_DATA ); … … 207 207 m_cCUSplitFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SPLIT_FLAG ); 208 208 m_cCUSkipFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SKIP_FLAG ); 209 #if MTK_SINGLE_DEPTH_MODE_I0095209 #if H_3D_SINGLE_DEPTH 210 210 m_cCUSingleDepthFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SINGLEDEPTH_FLAG ); 211 211 m_cSingleDepthValueSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SINGLE_DEPTH_VALUE_DATA ); … … 432 432 #endif 433 433 434 #if !FIX_TICKET_76 435 #if H_3D_DIM_SDC 436 Void TDecSbac::xParseSDCResidualData ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiSegment ) 437 { 438 assert( pcCU->getSlice()->getIsDepth() ); 439 assert( pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2Nx2N ); 440 assert( pcCU->getSDCFlag(uiAbsPartIdx) ); 441 assert( uiSegment < 2 ); 442 443 UInt uiResidual = 0; 444 UInt uiBit = 0; 445 UInt uiAbsIdx = 0; 446 UInt uiSign = 0; 447 Int iIdx = 0; 448 449 #if H_3D_DIM_DLT 450 UInt uiMaxResidualBits = pcCU->getSlice()->getPPS()->getDLT()->getBitsPerDepthValue( pcCU->getSlice()->getLayerIdInVps() ); 451 #else 452 UInt uiMaxResidualBits = g_bitDepthY; 453 #endif 454 assert( uiMaxResidualBits <= g_bitDepthY ); 455 456 m_pcTDecBinIf->decodeBin(uiResidual, m_cSDCResidualFlagSCModel.get( 0, 0, 0 ) ); 457 458 #if H_MV_ENC_DEC_TRAC 459 DTRACE_CU("sdc_residual_flag[i]", uiResidual) 460 #endif 461 462 if (uiResidual) 463 { 464 // decode residual sign bit 465 m_pcTDecBinIf->decodeBinEP(uiSign); 466 #if H_MV_ENC_DEC_TRAC 467 DTRACE_CU("sdc_residual_sign_flag[i]", uiSign) 468 #endif 469 470 // decode residual magnitude 471 // prefix part 472 UInt uiCount = 0; 473 #if H_3D_DIM_DLT 474 UInt uiNumDepthValues = pcCU->getSlice()->getPPS()->getDLT()->getNumDepthValues( pcCU->getSlice()->getLayerIdInVps() ); 475 #else 476 UInt uiNumDepthValues = ((1 << g_bitDepthY)-1); 477 #endif 478 UInt uiPrefixThreshold = ((uiNumDepthValues * 3) >> 2); 479 for ( UInt ui = 0; ui < uiPrefixThreshold; ui++) 480 { 481 m_pcTDecBinIf->decodeBin( uiBit, m_cSDCResidualSCModel.get(0, 0, 0) ); 482 if ( uiBit == 0 ) 483 break; 484 else 485 uiCount++; 486 } 487 // suffix part 488 if ( uiCount == uiPrefixThreshold ) 489 { 490 for ( UInt ui = 0; ui < numBitsForValue(uiNumDepthValues - uiPrefixThreshold); ui++ ) 491 { 492 m_pcTDecBinIf->decodeBinEP( uiBit ); 493 uiAbsIdx |= uiBit << ui; 494 } 495 uiAbsIdx += uiCount; 496 } 497 else 498 { 499 uiAbsIdx = uiCount; 500 } 501 502 #if H_MV_ENC_DEC_TRAC 503 DTRACE_CU("sdc_residual_abs_minus1[i]", uiAbsIdx) 504 #endif 505 506 uiAbsIdx += 1; 507 iIdx =(Int)(uiSign ? -1 : 1)*uiAbsIdx; 508 } 509 510 pcCU->setSDCSegmentDCOffset(iIdx, uiSegment, uiAbsPartIdx); 511 } 512 #endif 513 #endif 434 514 435 #endif 515 436 /** Parse I_PCM information. … … 649 570 #endif 650 571 } 651 #if MTK_SINGLE_DEPTH_MODE_I0095572 #if H_3D_SINGLE_DEPTH 652 573 Void TDecSbac::parseSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 653 574 { … … 671 592 672 593 UInt uiUnaryIdx = 0; 673 UInt uiNumCand = MTK_SINGLE_DEPTH_MODE_CANDIDATE_LIST_SIZE;594 UInt uiNumCand = SINGLE_DEPTH_MODE_CAND_LIST_SIZE; 674 595 if ( uiNumCand > 1 ) 675 596 { … … 781 702 Bool bParseSplitFlag = true; 782 703 783 #if MTK_I0099_VPS_EX2784 704 TComVPS *vps = pcCU->getPic()->getSlice(0)->getVPS(); 785 705 Bool bLimQtPredFlag = vps->getLimQtPredFlag(pcCU->getPic()->getSlice(0)->getLayerId()); 786 #else787 TComSPS *sps = pcCU->getPic()->getSlice(0)->getSPS();788 #endif789 706 TComPic *pcTexture = pcCU->getSlice()->getTexturePic(); 790 707 Bool bDepthMapDetect = (pcTexture != NULL); … … 793 710 Bool rapPic = (pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_W_RADL || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_N_LP || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA); 794 711 795 #if MTK_I0099_VPS_EX2 796 #if LGE_FCO_I0116 712 #if H_3D_FCO 797 713 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFlag && pcTexture->getReconMark()) 798 714 #else 799 715 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFlag) 800 #endif801 #else802 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL() && sps->getUsePC())803 716 #endif 804 717 { … … 843 756 #if H_3D_QTLPC 844 757 Bool bParsePartSize = true; 845 #if MTK_I0099_VPS_EX2846 758 TComVPS *vps = pcCU->getPic()->getSlice(0)->getVPS(); 847 759 Bool bLimQtPredFlag = vps->getLimQtPredFlag(pcCU->getPic()->getSlice(0)->getLayerId()); 848 #else849 TComSPS *sps = pcCU->getPic()->getSlice(0)->getSPS();850 #endif851 760 TComPic *pcTexture = pcCU->getSlice()->getTexturePic(); 852 761 Bool bDepthMapDetect = (pcTexture != NULL); … … 857 766 Bool depthDependent = false; 858 767 UInt uiTexturePart = uiMode; 859 #if MTK_I0099_VPS_EX2 860 #if LGE_FCO_I0116768 769 #if H_3D_FCO 861 770 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFlag && pcTexture->getReconMark()) 862 771 #else 863 772 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFlag ) 864 #endif865 #else866 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL() && sps->getUsePC())867 773 #endif 868 774 { … … 1076 982 { 1077 983 #if H_3D_DIM 1078 #if SEPARATE_FLAG_I00851079 984 if( pcCU->getSlice()->getVpsDepthModesFlag() || pcCU->getSlice()->getIVPFlag() ) 1080 #else1081 if( pcCU->getSlice()->getVpsDepthModesFlag() )1082 #endif1083 985 { 1084 986 parseIntraDepth( pcCU, absPartIdx+partOffset*j, depth ); … … 1222 1124 if( uiIsDimMode ) 1223 1125 { 1224 #if SEPARATE_FLAG_I00851225 1126 if( pcCU->getSlice()->getVpsDepthModesFlag() && pcCU->getSlice()->getIVPFlag() ) 1226 1127 { … … 1228 1129 if( !uiSymbol ) 1229 1130 { 1230 #if HS_DMM_SIGNALLING_I01201231 1131 pcCU->setLumaIntraDirSubParts( DIM_OFFSET, absPartIdx, depth ); 1232 #else1233 pcCU->setLumaIntraDirSubParts( ( 2 * DMM1_IDX + DIM_OFFSET ), absPartIdx, depth );1234 #endif1235 1132 } 1236 1133 else 1237 1134 { 1238 #if HS_DMM_SIGNALLING_I01201239 1135 pcCU->setLumaIntraDirSubParts( ( 1+ DIM_OFFSET ), absPartIdx, depth ); 1240 #else1241 pcCU->setLumaIntraDirSubParts( ( 2 * DMM4_IDX + DIM_OFFSET ), absPartIdx, depth );1242 #endif1243 1136 } 1244 1137 } 1245 1138 else if ( pcCU->getSlice()->getVpsDepthModesFlag() ) 1246 1139 { 1247 #if HS_DMM_SIGNALLING_I01201248 1140 pcCU->setLumaIntraDirSubParts( DIM_OFFSET, absPartIdx, depth ); 1249 #else1250 pcCU->setLumaIntraDirSubParts( ( 2 * DMM1_IDX + DIM_OFFSET ), absPartIdx, depth );1251 #endif1252 1141 } 1253 1142 else if( pcCU->getSlice()->getIVPFlag() ) 1254 1143 { 1255 #if HS_DMM_SIGNALLING_I01201256 1144 pcCU->setLumaIntraDirSubParts( ( 1+ DIM_OFFSET ), absPartIdx, depth ); 1257 #else 1258 pcCU->setLumaIntraDirSubParts( ( 2 * DMM4_IDX + DIM_OFFSET ), absPartIdx, depth ); 1259 #endif 1260 } 1261 #else 1262 m_pcTDecBinIf->decodeBin( uiSymbol, m_cDepthIntraModeSCModel.get( 0, 0, 0 ) ); 1263 if( !uiSymbol ) 1264 { 1265 #if HS_DMM_SIGNALLING_I0120 1266 pcCU->setLumaIntraDirSubParts( DIM_OFFSET, absPartIdx, depth ); 1267 #else 1268 pcCU->setLumaIntraDirSubParts( ( 2 * DMM1_IDX + DIM_OFFSET ), absPartIdx, depth ); 1269 #endif 1270 } 1271 else 1272 { 1273 #if HS_DMM_SIGNALLING_I0120 1274 pcCU->setLumaIntraDirSubParts( ( 1+ DIM_OFFSET ), absPartIdx, depth ); 1275 #else 1276 pcCU->setLumaIntraDirSubParts( ( 2 * DMM4_IDX + DIM_OFFSET ), absPartIdx, depth ); 1277 #endif 1278 } 1279 #endif 1145 } 1280 1146 } 1281 1147 } … … 2190 2056 } 2191 2057 2192 #if HS_DMM_SIGNALLING_I01202193 2058 UInt symbol = 1; 2194 2059 UInt uiNumSegments = isDimMode( pcCU->getLumaIntraDir( absPartIdx ) ) ? 2 : 1; 2195 #else 2196 UInt symbol = 0; 2197 UInt uiNumSegments = 0; 2198 #endif 2199 2200 #if HS_DMM_SIGNALLING_I0120 2060 2201 2061 if( pcCU->isIntra( absPartIdx ) && pcCU->getSDCFlag( absPartIdx )) 2202 2062 { 2203 #else 2204 if( pcCU->isIntra( absPartIdx ) ) 2205 { 2206 UInt dir = pcCU->getLumaIntraDir( absPartIdx ); 2207 uiNumSegments = isDimMode( dir ) ? 2 : 1; 2208 #endif 2063 2209 2064 m_pcTDecBinIf->decodeBin( symbol, m_cDdcFlagSCModel.get( 0, 0, 0 ) ); 2210 #if !HS_DMM_SIGNALLING_I01202211 if( pcCU->getSDCFlag( absPartIdx ) )2212 {2213 #endif2214 2065 assert( pcCU->getPartitionSize( absPartIdx ) == SIZE_2Nx2N ); 2215 2066 pcCU->setTrIdxSubParts( 0, absPartIdx, depth ); 2216 2067 pcCU->setCbfSubParts( 1, 1, 1, absPartIdx, depth ); 2217 2068 } 2218 #if !HS_DMM_SIGNALLING_I01202219 else2220 {2221 pcCU->setLumaIntraDirSubParts( dir + symbol, absPartIdx, depth );2222 }2223 }2224 else2225 {2226 uiNumSegments = 1;2227 symbol = 1;2228 }2229 #endif2230 2231 2069 2232 2070 for( UInt segment = 0; segment < uiNumSegments; segment++ ) … … 2289 2127 m_pcTDecBinIf->decodeBin( uiSymbol, m_cDBBPFlagSCModel.get( 0, 0, 0 ) ); 2290 2128 2291 #if SEC_DBBP_EXPLICIT_SIG_I00772292 2129 PartSize ePartSize = pcCU->getPartitionSize( uiAbsPartIdx ); 2293 2130 AOF( ePartSize == SIZE_2NxN || ePartSize == SIZE_Nx2N ); … … 2295 2132 pcCU->setDBBPFlagSubParts(uiSymbol, uiAbsPartIdx, 0, uiDepth); 2296 2133 pcCU->setDBBPFlagSubParts(uiSymbol, uiAbsPartIdx+uiPUOffset, 1, uiDepth); 2297 #else2298 if( uiSymbol )2299 {2300 pcCU->setDBBPFlagSubParts(true, uiAbsPartIdx, 0, uiDepth);2301 UInt uiCurrPartNumQ = (pcCU->getPic()->getNumPartInCU() >> (2 * uiDepth)) >> 2;2302 pcCU->setDBBPFlagSubParts(true, uiAbsPartIdx + 2*uiCurrPartNumQ, 1, uiDepth);2303 }2304 #endif2305 2134 } 2306 2135 #endif -
trunk/source/Lib/TLibDecoder/TDecSbac.h
r1039 r1084 129 129 130 130 Void parseSkipFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 131 #if MTK_SINGLE_DEPTH_MODE_I0095131 #if H_3D_SINGLE_DEPTH 132 132 Void parseSingleDepthMode ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 133 133 #endif … … 182 182 ContextModel3DBuffer m_cCUSplitFlagSCModel; 183 183 ContextModel3DBuffer m_cCUSkipFlagSCModel; 184 #if MTK_SINGLE_DEPTH_MODE_I0095184 #if H_3D_SINGLE_DEPTH 185 185 ContextModel3DBuffer m_cCUSingleDepthFlagSCModel; 186 186 ContextModel3DBuffer m_cSingleDepthValueSCModel; -
trunk/source/Lib/TLibDecoder/TDecTop.cpp
r1066 r1084 229 229 } 230 230 231 #if ! LGE_FCO_I0116231 #if !H_3D_FCO 232 232 if ( pcSlice->getIsDepth()) 233 233 { … … 669 669 #if H_MV 670 670 sps->inferSpsMaxDecPicBufferingMinus1( vps, m_targetOptLayerSetIdx, getLayerId(), false ); 671 #if !H_MV_HLS10_ADD_LAYERSETS672 vps->inferDbpSizeLayerSetZero( sps, false );673 #endif674 671 // When the value of vps_num_rep_formats_minus1 in the active VPS is equal to 0 675 672 if ( vps->getVpsNumRepFormatsMinus1() == 0 ) … … 679 676 } 680 677 sps->checkRpsMaxNumPics( vps, getLayerId() ); 681 #if H_MV_HLS10_MULTILAYERSPS682 678 683 679 if( sps->getLayerId() != 0 ) … … 686 682 } 687 683 688 #if H_MV_HLS10_MULTILAYERSPS689 684 // It is a requirement of bitstream conformance that, when the SPS is referred to by 690 685 // any current picture that belongs to an independent non-base layer, the value of … … 695 690 assert( sps->getMultiLayerExtSpsFlag() == 0 ); 696 691 } 697 #endif698 692 699 693 if( sps->getMultiLayerExtSpsFlag() ) … … 701 695 sps->setTemporalIdNestingFlag( (sps->getMaxTLayers() > 1) ? vps->getTemporalNestingFlag() : true ); 702 696 } 703 #else704 if( m_layerId > 0 )705 {706 sps->setTemporalIdNestingFlag( (sps->getMaxTLayers() > 1) ? vps->getTemporalNestingFlag() : true );707 }708 #endif709 697 #endif 710 698 … … 730 718 #if H_MV 731 719 m_apcSlicePilot->setVPS(vps); 732 #if H_MV_HLS10_REF_PRED_LAYERS733 720 // The nuh_layer_id value of the NAL unit containing the PPS that is activated for a layer layerA with nuh_layer_id equal to nuhLayerIdA shall be equal to 0, or nuhLayerIdA, or the nuh_layer_id of a direct or indirect reference layer of layerA. 734 721 assert( pps->getLayerId() == m_layerId || pps->getLayerId( ) == 0 || vps->getDependencyFlag( m_layerId, pps->getLayerId() ) ); 735 722 // The nuh_layer_id value of the NAL unit containing the SPS that is activated for a layer layerA with nuh_layer_id equal to nuhLayerIdA shall be equal to 0, or nuhLayerIdA, or the nuh_layer_id of a direct or indirect reference layer of layerA. 736 723 assert( sps->getLayerId() == m_layerId || sps->getLayerId( ) == 0 || vps->getDependencyFlag( m_layerId, sps->getLayerId() ) ); 737 #else738 // The nuh_layer_id value of the NAL unit containing the PPS that is activated for a layer layerA with nuh_layer_id equal to nuhLayerIdA shall be equal to 0, or nuhLayerIdA, or the nuh_layer_id of a direct or indirect reference layer of layerA.739 assert( pps->getLayerId() == m_layerId || pps->getLayerId( ) == 0 || vps->getInDirectDependencyFlag( m_layerId, pps->getLayerId() ) );740 // The nuh_layer_id value of the NAL unit containing the SPS that is activated for a layer layerA with nuh_layer_id equal to nuhLayerIdA shall be equal to 0, or nuhLayerIdA, or the nuh_layer_id of a direct or indirect reference layer of layerA.741 assert( sps->getLayerId() == m_layerId || sps->getLayerId( ) == 0 || vps->getInDirectDependencyFlag( m_layerId, sps->getLayerId() ) );742 #endif743 724 sps->inferRepFormat ( vps , m_layerId ); 744 725 sps->inferScalingList( m_parameterSetManagerDecoder.getActiveSPS( sps->getSpsScalingListRefLayerId() ) ); … … 746 727 #endif 747 728 pps->setSPS(sps); 748 pps->setNumSubstreams(pps->getEntropyCodingSyncEnabledFlag() ? ((sps->getPicHeightInLumaSamples() + sps->getMaxCUHeight() - 1) / sps->getMaxCUHeight()) * (pps->getNum ColumnsMinus1() + 1) : 1);729 pps->setNumSubstreams(pps->getEntropyCodingSyncEnabledFlag() ? ((sps->getPicHeightInLumaSamples() + sps->getMaxCUHeight() - 1) / sps->getMaxCUHeight()) * (pps->getNumTileColumnsMinus1() + 1) : 1); 749 730 pps->setMinCuDQPSize( sps->getMaxCUWidth() >> ( pps->getMaxCuDQPDepth()) ); 750 731 … … 807 788 m_apcSlicePilot->setLayerId( nalu.m_layerId ); 808 789 m_cEntropyDecoder.decodeSliceHeader (m_apcSlicePilot, &m_parameterSetManagerDecoder, m_targetOptLayerSetIdx ); 790 #else 791 m_cEntropyDecoder.decodeSliceHeader (m_apcSlicePilot, &m_parameterSetManagerDecoder); 809 792 #endif 810 793 // set POC for dependent slices in skipped pictures … … 944 927 xResetPocInPicBuffer(); 945 928 } 946 #endif 947 948 #if I0044_SLICE_TMVP 949 if ( m_apcSlicePilot->getTLayer() == 0 && m_apcSlicePilot->getEnableTMVPFlag() == 0 ) 929 930 if ( m_apcSlicePilot->getTLayer() == 0 && m_apcSlicePilot->getEnableTMVPFlag() == 0 ) 950 931 { 951 932 //update all pics in the DPB such that they cannot be used for TMPV ref … … 1043 1024 Bool bNextSlice = pcSlice->isNextSlice(); 1044 1025 1045 UInt uiCummulativeTileWidth; 1046 UInt uiCummulativeTileHeight; 1047 UInt i, j, p; 1048 1049 //set NumColumnsMins1 and NumRowsMinus1 1050 pcPic->getPicSym()->setNumColumnsMinus1( pcSlice->getPPS()->getNumColumnsMinus1() ); 1051 pcPic->getPicSym()->setNumRowsMinus1( pcSlice->getPPS()->getNumRowsMinus1() ); 1052 1053 //create the TComTileArray 1054 pcPic->getPicSym()->xCreateTComTileArray(); 1055 1056 if( pcSlice->getPPS()->getUniformSpacingFlag() ) 1057 { 1058 //set the width for each tile 1059 for(j=0; j < pcPic->getPicSym()->getNumRowsMinus1()+1; j++) 1060 { 1061 for(p=0; p < pcPic->getPicSym()->getNumColumnsMinus1()+1; p++) 1062 { 1063 pcPic->getPicSym()->getTComTile( j * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + p )-> 1064 setTileWidth( (p+1)*pcPic->getPicSym()->getFrameWidthInCU()/(pcPic->getPicSym()->getNumColumnsMinus1()+1) 1065 - (p*pcPic->getPicSym()->getFrameWidthInCU())/(pcPic->getPicSym()->getNumColumnsMinus1()+1) ); 1066 } 1067 } 1068 1069 //set the height for each tile 1070 for(j=0; j < pcPic->getPicSym()->getNumColumnsMinus1()+1; j++) 1071 { 1072 for(p=0; p < pcPic->getPicSym()->getNumRowsMinus1()+1; p++) 1073 { 1074 pcPic->getPicSym()->getTComTile( p * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + j )-> 1075 setTileHeight( (p+1)*pcPic->getPicSym()->getFrameHeightInCU()/(pcPic->getPicSym()->getNumRowsMinus1()+1) 1076 - (p*pcPic->getPicSym()->getFrameHeightInCU())/(pcPic->getPicSym()->getNumRowsMinus1()+1) ); 1077 } 1078 } 1079 } 1080 else 1081 { 1082 //set the width for each tile 1083 for(j=0; j < pcSlice->getPPS()->getNumRowsMinus1()+1; j++) 1084 { 1085 uiCummulativeTileWidth = 0; 1086 for(i=0; i < pcSlice->getPPS()->getNumColumnsMinus1(); i++) 1087 { 1088 pcPic->getPicSym()->getTComTile(j * (pcSlice->getPPS()->getNumColumnsMinus1()+1) + i)->setTileWidth( pcSlice->getPPS()->getColumnWidth(i) ); 1089 uiCummulativeTileWidth += pcSlice->getPPS()->getColumnWidth(i); 1090 } 1091 pcPic->getPicSym()->getTComTile(j * (pcSlice->getPPS()->getNumColumnsMinus1()+1) + i)->setTileWidth( pcPic->getPicSym()->getFrameWidthInCU()-uiCummulativeTileWidth ); 1092 } 1093 1094 //set the height for each tile 1095 for(j=0; j < pcSlice->getPPS()->getNumColumnsMinus1()+1; j++) 1096 { 1097 uiCummulativeTileHeight = 0; 1098 for(i=0; i < pcSlice->getPPS()->getNumRowsMinus1(); i++) 1099 { 1100 pcPic->getPicSym()->getTComTile(i * (pcSlice->getPPS()->getNumColumnsMinus1()+1) + j)->setTileHeight( pcSlice->getPPS()->getRowHeight(i) ); 1101 uiCummulativeTileHeight += pcSlice->getPPS()->getRowHeight(i); 1102 } 1103 pcPic->getPicSym()->getTComTile(i * (pcSlice->getPPS()->getNumColumnsMinus1()+1) + j)->setTileHeight( pcPic->getPicSym()->getFrameHeightInCU()-uiCummulativeTileHeight ); 1104 } 1105 } 1106 1107 pcPic->getPicSym()->xInitTiles(); 1026 UInt i; 1027 pcPic->getPicSym()->initTiles(pcSlice->getPPS()); 1108 1028 1109 1029 //generate the Coding Order Map and Inverse Coding Order Map … … 1192 1112 #endif 1193 1113 #endif 1194 // For generalized B 1195 #if I0044_SLICE_TMVP 1114 #if H_MV 1196 1115 if( m_layerId > 0 && !pcSlice->isIntra() && pcSlice->getEnableTMVPFlag() ) 1197 1116 { … … 1272 1191 1273 1192 #if H_3D_IV_MERGE 1274 #if LGE_FCO_I01161193 #if H_3D_FCO 1275 1194 if( !pcSlice->getIsDepth() && m_pcCamParsCollector ) 1276 1195 #else … … 1727 1646 for (Int i = 0; i < vps->getNumDirectRefLayers( getLayerId() ); i++ ) 1728 1647 { 1729 #if H_MV_HLS10_REF_PRED_LAYERS1730 1648 Int refLayerId = vps->getIdDirectRefLayer( m_layerId, i ); 1731 #else1732 Int refLayerId = vps->getRefLayerId( m_layerId, i );1733 #endif1734 1649 allRefLayersInitilizedFlag = allRefLayersInitilizedFlag && m_layerInitilizedFlag[ refLayerId ]; 1735 1650 } -
trunk/source/Lib/TLibEncoder/TEncCavlc.cpp
r1066 r1084 49 49 { 50 50 #if H_MV_ENC_DEC_TRAC 51 #if H_MV_HLS10_GEN_FIX52 51 fprintf( g_hTrace, "=========== Sequence Parameter Set LayerId: %d ===========\n", pSPS->getLayerId() ); 53 52 #else 54 fprintf( g_hTrace, "=========== Sequence Parameter Set ===========\n" );55 #endif56 #else57 53 fprintf( g_hTrace, "=========== Sequence Parameter Set ID: %d ===========\n", pSPS->getSPSId() ); 58 54 #endif … … 62 58 { 63 59 #if H_MV_ENC_DEC_TRAC 64 #if H_MV_HLS10_GEN_FIX65 60 fprintf( g_hTrace, "=========== Picture Parameter Set LayerId: %d ===========\n", pPPS->getLayerId() ); 66 #else67 fprintf( g_hTrace, "=========== Picture Parameter Set ===========\n" );68 #endif69 61 #else 70 62 fprintf( g_hTrace, "=========== Picture Parameter Set ID: %d ===========\n", pPPS->getPPSId() ); … … 218 210 if( pcPPS->getTilesEnabledFlag() ) 219 211 { 220 WRITE_UVLC( pcPPS->getNum ColumnsMinus1(), "num_tile_columns_minus1" );221 WRITE_UVLC( pcPPS->get NumRowsMinus1(), "num_tile_rows_minus1" );222 WRITE_FLAG( pcPPS->get UniformSpacingFlag(), "uniform_spacing_flag" );223 if( pcPPS->getUniformSpacingFlag() == 0)224 { 225 for(UInt i=0; i<pcPPS->getNum ColumnsMinus1(); i++)226 { 227 WRITE_UVLC( pcPPS->get ColumnWidth(i)-1, "column_width_minus1" );228 } 229 for(UInt i=0; i<pcPPS->get NumRowsMinus1(); i++)230 { 231 WRITE_UVLC( pcPPS->get RowHeight(i)-1, "row_height_minus1" );232 } 233 } 234 if(pcPPS->getNum ColumnsMinus1() !=0 || pcPPS->getNumRowsMinus1() !=0)212 WRITE_UVLC( pcPPS->getNumTileColumnsMinus1(), "num_tile_columns_minus1" ); 213 WRITE_UVLC( pcPPS->getTileNumRowsMinus1(), "num_tile_rows_minus1" ); 214 WRITE_FLAG( pcPPS->getTileUniformSpacingFlag(), "uniform_spacing_flag" ); 215 if( !pcPPS->getTileUniformSpacingFlag() ) 216 { 217 for(UInt i=0; i<pcPPS->getNumTileColumnsMinus1(); i++) 218 { 219 WRITE_UVLC( pcPPS->getTileColumnWidth(i)-1, "column_width_minus1" ); 220 } 221 for(UInt i=0; i<pcPPS->getTileNumRowsMinus1(); i++) 222 { 223 WRITE_UVLC( pcPPS->getTileRowHeight(i)-1, "row_height_minus1" ); 224 } 225 } 226 if(pcPPS->getNumTileColumnsMinus1() !=0 || pcPPS->getTileNumRowsMinus1() !=0) 235 227 { 236 228 WRITE_FLAG( pcPPS->getLoopFilterAcrossTilesEnabledFlag()?1 : 0, "loop_filter_across_tiles_enabled_flag"); … … 249 241 } 250 242 } 251 #if !H_MV_HLS10_PPS252 #if H_MV253 if ( pcPPS->getLayerId() > 0 )254 {255 WRITE_FLAG( pcPPS->getPpsInferScalingListFlag( ) ? 1 : 0 , "pps_infer_scaling_list_flag" );256 }257 258 if( pcPPS->getPpsInferScalingListFlag( ) )259 {260 WRITE_CODE( pcPPS->getPpsScalingListRefLayerId( ), 6, "pps_scaling_list_ref_layer_id" );261 }262 else263 {264 #endif265 #endif266 243 WRITE_FLAG( pcPPS->getScalingListPresentFlag() ? 1 : 0, "pps_scaling_list_data_present_flag" ); 267 244 if( pcPPS->getScalingListPresentFlag() ) … … 269 246 codeScalingList( m_pcSlice->getScalingList() ); 270 247 } 271 #if !H_MV_HLS10_PPS272 #if H_MV273 }274 #endif275 #endif276 248 #if PPS_FIX_DEPTH 277 249 if( pcPPS->getSPS()->getVPS()->getDepthId(pcPPS->getSPS()->getLayerId()) ) … … 313 285 if ( pcPPS->getPpsMultilayerExtensionFlag() ) 314 286 { 315 #if H_MV_HLS10_PPS316 287 codePPSMultilayerExtension( pcPPS ); 317 #else318 WRITE_FLAG( pcPPS->getPocResetInfoPresentFlag( ) ? 1 : 0 , "poc_reset_info_present_flag" );319 WRITE_FLAG( 0, "pps_extension_reserved_zero_flag" );320 #endif321 288 } 322 289 … … 385 352 } 386 353 387 #if H_3D_DELTA_DLT388 354 if( pcDLT->getInterViewDltPredEnableFlag( i ) ) 389 355 { … … 395 361 pcDLT->getDeltaDLT(i, piRefDLT, uiRefNum, aiIdx2DepthValue_coded, &uiNumDepthValues_coded); 396 362 } 397 #endif398 363 399 364 if ( NULL == (puiDltDiffValues = (UInt *)calloc(uiNumDepthValues_coded, sizeof(UInt))) ) 400 365 { 366 // This should be changed to an assertion. 401 367 exit(-1); 402 368 } … … 477 443 { 478 444 WRITE_CODE(uiNumDepthValues_coded, 8, "num_depth_values_in_dlt[i]"); // num_entry 479 480 #if !H_3D_DELTA_DLT481 if ( pcDLT->getInterViewDltPredEnableFlag( i ) == false ) // Single-view DLT Diff Coding482 #endif483 445 { 484 446 // The condition if( uiNumDepthValues_coded > 0 ) is always true since for Single-view Diff Coding, there is at least one depth value in depth component. … … 566 528 if( defaultDisplayWindow.getWindowEnabledFlag() ) 567 529 { 568 WRITE_UVLC(defaultDisplayWindow.getWindowLeftOffset() ,"def_disp_win_left_offset");569 WRITE_UVLC(defaultDisplayWindow.getWindowRightOffset() ,"def_disp_win_right_offset");570 WRITE_UVLC(defaultDisplayWindow.getWindowTopOffset() ,"def_disp_win_top_offset");571 WRITE_UVLC(defaultDisplayWindow.getWindowBottomOffset() ,"def_disp_win_bottom_offset");530 WRITE_UVLC(defaultDisplayWindow.getWindowLeftOffset() / TComSPS::getWinUnitX(pcSPS->getChromaFormatIdc()), "def_disp_win_left_offset"); 531 WRITE_UVLC(defaultDisplayWindow.getWindowRightOffset() / TComSPS::getWinUnitX(pcSPS->getChromaFormatIdc()), "def_disp_win_right_offset"); 532 WRITE_UVLC(defaultDisplayWindow.getWindowTopOffset() / TComSPS::getWinUnitY(pcSPS->getChromaFormatIdc()), "def_disp_win_top_offset"); 533 WRITE_UVLC(defaultDisplayWindow.getWindowBottomOffset()/ TComSPS::getWinUnitY(pcSPS->getChromaFormatIdc()), "def_disp_win_bottom_offset"); 572 534 } 573 535 TimingInfo *timingInfo = pcVUI->getTimingInfo(); … … 691 653 #endif 692 654 WRITE_CODE( pcSPS->getMaxTLayers() - 1, 3, "sps_max_sub_layers_minus1" ); 693 #if H_MV_HLS10_MULTILAYERSPS694 655 #if H_MV 695 656 } … … 700 661 if ( !pcSPS->getMultiLayerExtSpsFlag() ) 701 662 { 702 #endif703 663 #endif 704 664 … … 710 670 WRITE_UVLC( pcSPS->getSPSId (), "sps_seq_parameter_set_id" ); 711 671 #if H_MV 712 #if H_MV_HLS10_MULTILAYERSPS713 672 if ( pcSPS->getMultiLayerExtSpsFlag() ) 714 #else715 if ( pcSPS->getLayerId() > 0 )716 #endif717 673 { 718 674 WRITE_FLAG( pcSPS->getUpdateRepFormatFlag( ) ? 1 : 0 , "update_rep_format_flag" ); … … 735 691 WRITE_UVLC( pcSPS->getPicWidthInLumaSamples (), "pic_width_in_luma_samples" ); 736 692 WRITE_UVLC( pcSPS->getPicHeightInLumaSamples(), "pic_height_in_luma_samples" ); 737 #if !H_MV_HLS10_MULTILAYERSPS738 #if H_MV739 }740 #endif741 #endif742 693 Window conf = pcSPS->getConformanceWindow(); 743 694 … … 750 701 WRITE_UVLC( conf.getWindowBottomOffset() / TComSPS::getWinUnitY(pcSPS->getChromaFormatIdc() ), "conf_win_bottom_offset" ); 751 702 } 752 #if H_MV_HLS10_MULTILAYERSPS753 703 #if H_MV 754 704 } 755 705 #endif 756 #endif757 706 758 707 #if H_MV 759 #if H_MV_HLS10_MULTILAYERSPS760 708 if ( !pcSPS->getMultiLayerExtSpsFlag() ) 761 #else762 if ( pcSPS->getLayerId() == 0 )763 #endif764 709 { 765 710 #endif … … 771 716 WRITE_UVLC( pcSPS->getBitsForPOC()-4, "log2_max_pic_order_cnt_lsb_minus4" ); 772 717 #if H_MV 773 #if H_MV_HLS10_MULTILAYERSPS774 718 if ( !pcSPS->getMultiLayerExtSpsFlag()) 775 #else776 if ( pcSPS->getLayerId() == 0 )777 #endif778 719 { 779 720 #endif … … 806 747 { 807 748 #if H_MV 808 #if H_MV_HLS10_MULTILAYERSPS809 749 if ( pcSPS->getMultiLayerExtSpsFlag() ) 810 #else811 if ( pcSPS->getLayerId() > 0 )812 #endif813 750 { 814 751 WRITE_FLAG( pcSPS->getSpsInferScalingListFlag( ) ? 1 : 0 , "sps_infer_scaling_list_flag" ); … … 917 854 { 918 855 WRITE_FLAG( pcSPS->getInterViewMvVertConstraintFlag() ? 1 : 0, "inter_view_mv_vert_constraint_flag" ); 919 #if !H_MV_HLS10_PPS 920 WRITE_UVLC( pcSPS->getNumScaledRefLayerOffsets( ), "num_scaled_ref_layer_offsets" ); 921 922 for( Int i = 0; i < pcSPS->getNumScaledRefLayerOffsets( ); i++) 923 { 924 WRITE_CODE( pcSPS->getScaledRefLayerId( i ), 6, "scaled_ref_layer_id" ); 925 926 Int j = pcSPS->getScaledRefLayerId( i ); 927 928 WRITE_SVLC( pcSPS->getScaledRefLayerLeftOffset( j ), "scaled_ref_layer_left_offset" ); 929 WRITE_SVLC( pcSPS->getScaledRefLayerTopOffset( j ), "scaled_ref_layer_top_offset" ); 930 WRITE_SVLC( pcSPS->getScaledRefLayerRightOffset( j ), "scaled_ref_layer_right_offset" ); 931 WRITE_SVLC( pcSPS->getScaledRefLayerBottomOffset( j ), "scaled_ref_layer_bottom_offset" ); 932 WRITE_FLAG( 0, "sps_multilayer_ext_reserved_zero_flag[ j ]" ); 933 } 934 #endif 935 } 936 937 938 #if H_MV_HLS10_PPS 856 } 857 858 939 859 Void TEncCavlc::codePPSMultilayerExtension(TComPPS* pcPPS) 940 860 { … … 944 864 WRITE_UVLC( 0, "num_ref_loc_offsets" ); 945 865 } 946 #endif947 866 948 867 #endif … … 951 870 Void TEncCavlc::codeSPSExtension2( TComSPS* pcSPS, Int viewIndex, Bool depthFlag ) 952 871 { 953 #if H_3D_QTLPC 954 #if !MTK_I0099_VPS_EX2 955 //GT: This has to go to VPS 956 if( depthFlag ) 957 { 958 WRITE_FLAG( pcSPS->getUseQTL() ? 1 : 0, "use_qtl_flag"); 959 WRITE_FLAG( pcSPS->getUsePC() ? 1 : 0, "use_pc_flag"); 960 } 961 #endif 962 #endif 963 } 964 965 872 873 } 966 874 #endif 967 875 … … 974 882 #if H_MV 975 883 WRITE_FLAG( pcVPS->getVpsBaseLayerInternalFlag( ) ? 1 : 0 , "vps_base_layer_internal_flag" ); 976 #if H_MV_HLS10_GEN_VSP_BASE_LAYER_AVAIL977 884 WRITE_FLAG( pcVPS->getVpsBaseLayerAvailableFlag( ) ? 1 : 0 , "vps_base_layer_available_flag" ); 978 #else // H_MV_HLS10_GEN979 WRITE_FLAG( 1 , "vps_reserved_one_bit" );980 #endif // H_MV_HLS10_GEN981 885 #else 982 886 WRITE_CODE( 3, 2, "vps_reserved_three_2bits" ); … … 1008 912 assert( pcVPS->getVpsMaxLayerId() < MAX_VPS_NUH_LAYER_ID_PLUS1 ); 1009 913 WRITE_CODE( pcVPS->getVpsMaxLayerId(), 6, "vps_max_layer_id" ); 1010 #if H_MV_HLS10_GEN_FIX1011 914 WRITE_UVLC( pcVPS->getVpsNumLayerSetsMinus1(), "vps_num_layer_sets_minus1" ); 1012 #else1013 WRITE_UVLC( pcVPS->getVpsNumLayerSetsMinus1(), "vps_max_num_layer_sets_minus1" );1014 #endif1015 915 for( UInt opsIdx = 1; opsIdx <= pcVPS->getVpsNumLayerSetsMinus1(); opsIdx ++ ) 1016 916 { … … 1089 989 Void TEncCavlc::codeVPSExtension( TComVPS *pcVPS ) 1090 990 { 1091 #if H_MV_HLS10_PTL1092 991 if( pcVPS->getMaxLayersMinus1() > 0 && pcVPS->getVpsBaseLayerInternalFlag() ) 1093 992 { 1094 993 codePTL( pcVPS->getPTL( 1 ),0, pcVPS->getMaxSubLayersMinus1() ); 1095 994 } 1096 #endif1097 995 1098 996 WRITE_FLAG( pcVPS->getSplittingFlag() ? 1 : 0, "splitting_flag" ); … … 1167 1065 } 1168 1066 1169 #if H_MV_HLS10_ADD_LAYERSETS1170 1067 if ( pcVPS->getNumIndependentLayers() > 1 ) 1171 1068 { … … 1180 1077 1181 1078 } 1182 #endif1183 1079 1184 1080 … … 1218 1114 WRITE_UVLC( pcVPS->getVpsNumProfileTierLevelMinus1( ), "vps_num_profile_tier_level_minus1" ); 1219 1115 1220 #if H_MV_HLS10_PTL1221 1116 Int offsetVal = ( pcVPS->getMaxLayersMinus1() > 0 && pcVPS->getVpsBaseLayerInternalFlag() ) ? 2 : 1; 1222 1117 for( Int i = pcVPS->getVpsBaseLayerInternalFlag() ? 2 : 1; i <= pcVPS->getVpsNumProfileTierLevelMinus1(); i++ ) … … 1226 1121 offsetVal++; 1227 1122 } 1228 #else 1229 for( Int i = 1; i <= pcVPS->getVpsNumProfileTierLevelMinus1(); i++ ) 1230 { 1231 WRITE_FLAG( pcVPS->getVpsProfilePresentFlag( i ) ? 1 : 0, "vps_profile_present_flag[i]" ); 1232 codePTL( pcVPS->getPTL( i ), pcVPS->getVpsProfilePresentFlag( i ), pcVPS->getMaxTLayers() - 1 ); 1233 } 1234 #endif 1235 1236 #if !H_MV_HLS10_ADD_LAYERSETS 1237 if ( pcVPS->getNumIndependentLayers() > 1 ) 1238 { 1239 WRITE_UVLC( pcVPS->getNumAddLayerSets( ), "num_add_layer_sets" ); 1240 } 1241 for (Int i = 0; i < pcVPS->getNumAddLayerSets(); i++) 1242 { 1243 for (Int j = 0; j < pcVPS->getNumIndependentLayers(); j++) 1244 { 1245 WRITE_CODE( pcVPS->getHighestLayerIdxPlus1( i, j ), pcVPS->getHighestLayerIdxPlus1Len( j ) , "highest_layer_idx_plus1" ); 1246 } 1247 } 1248 #endif 1123 1249 1124 1250 1125 if (pcVPS->getNumLayerSets() > 1) … … 1258 1133 1259 1134 1260 #if H_MV_HLS10_PTL_FIX1261 1135 if (pcVPS->getVpsBaseLayerInternalFlag() ) 1262 1136 { 1263 1137 assert( pcVPS->getProfileTierLevelIdx(0,0) == pcVPS->inferProfileTierLevelIdx(0,0) ); 1264 1138 } 1265 #endif1266 1139 1267 1140 … … 1270 1143 if( i >= pcVPS->getNumLayerSets( ) ) 1271 1144 { 1272 #if !VPS_MISC_UPDATES1273 WRITE_UVLC( pcVPS->getLayerSetIdxForOlsMinus1( i ), "layer_set_idx_for_ols_minus1[i]" );1274 #else1275 1145 WRITE_CODE( pcVPS->getLayerSetIdxForOlsMinus1( i ), pcVPS->getLayerSetIdxForOlsMinus1Len( i ) , "layer_set_idx_for_ols_minus1[i]" ); 1276 #endif1277 1146 } 1278 1147 … … 1292 1161 } 1293 1162 1294 #if H_MV_HLS10_PTL1295 1163 for ( Int j = 0; j < pcVPS->getNumLayersInIdList( pcVPS->olsIdxToLsIdx(i)); j++ ) 1296 1164 { … … 1299 1167 WRITE_CODE( pcVPS->getProfileTierLevelIdx( i, j ), pcVPS->getProfileTierLevelIdxLen() ,"profile_tier_level_idx[ i ][ j ]" ); 1300 1168 } 1301 #if H_MV_HLS10_PTL_FIX1302 1169 if (pcVPS->getNecessaryLayerFlag( i, j ) && pcVPS->getVpsNumProfileTierLevelMinus1() == 0 ) 1303 1170 { 1304 1171 assert( pcVPS->getProfileTierLevelIdx( i , j ) == pcVPS->inferProfileTierLevelIdx( i, j ) ); 1305 1172 } 1306 #endif 1307 1308 } 1309 #else 1310 if ( pcVPS->getProfileLevelTierIdxLen() > 0 ) 1311 { 1312 WRITE_CODE( pcVPS->getProfileLevelTierIdx( i ), pcVPS->getProfileLevelTierIdxLen() ,"profile_level_tier_idx[ i ]" ); 1313 } 1314 #endif 1173 1174 } 1315 1175 if( pcVPS->getNumOutputLayersInOutputLayerSet( i ) == 1 && pcVPS->getNumDirectRefLayers( pcVPS->getOlsHighestOutputLayerId( i ) ) > 0 ) 1316 1176 { … … 1362 1222 } 1363 1223 1364 #if !H_MV_HLS10_GEN_FIX1365 WRITE_FLAG( 0, "vps_reserved_zero_flag" );1366 #endif1367 1224 codeDpbSize( pcVPS ); 1368 1225 … … 1441 1298 for( Int k = 0; k < vps->getNumLayersInIdList( currLsIdx ); k++ ) 1442 1299 { 1443 #if H_MV_HLS10_DBP_SIZE1444 1300 if ( vps->getNecessaryLayerFlag( i, k ) && ( vps->getVpsBaseLayerInternalFlag() || ( vps->getLayerSetLayerIdList(vps->olsIdxToLsIdx(i),k) != 0 ) )) 1445 1301 { … … 1453 1309 } 1454 1310 } 1455 #else1456 WRITE_UVLC( dpbSize->getMaxVpsDecPicBufferingMinus1( i, k, j ), "max_vps_dec_pic_buffering_minus1" );1457 #endif1458 1311 } 1459 1312 WRITE_UVLC( dpbSize->getMaxVpsNumReorderPics( i, j ), "max_vps_num_reorder_pics" ); … … 1466 1319 for( Int k = 0; k < vps->getNumLayersInIdList( vps->olsIdxToLsIdx( i ) ); k++ ) 1467 1320 { 1468 #if H_MV_HLS10_DBP_SIZE1469 1321 if ( vps->getNecessaryLayerFlag(i, k ) ) 1470 1322 { 1471 #endif1472 1323 assert( dpbSize->getMaxVpsDecPicBufferingMinus1( i, k, j ) == dpbSize->getMaxVpsDecPicBufferingMinus1( i,k, j - 1 ) ); 1473 #if H_MV_HLS10_DBP_SIZE1474 1324 } 1475 #endif1476 1325 } 1477 1326 assert( dpbSize->getMaxVpsNumReorderPics ( i, j ) == dpbSize->getMaxVpsNumReorderPics ( i, j - 1 ) ); … … 1508 1357 pcRepFormat->inferChromaAndBitDepth(pcPrevRepFormat, true ); 1509 1358 } 1510 #if H_MV_HLS10_GEN_VSP_CONF_WIN1511 1359 WRITE_FLAG( pcRepFormat->getConformanceWindowVpsFlag( ) ? 1 : 0 , "conformance_window_vps_flag" ); 1512 1360 if ( pcRepFormat->getConformanceWindowVpsFlag() ) … … 1517 1365 WRITE_UVLC( pcRepFormat->getConfWinVpsBottomOffset( ), "conf_win_vps_bottom_offset" ); 1518 1366 } 1519 #endif1520 1367 } 1521 1368 … … 1542 1389 if( pcVPSVUI->getBitRatePresentVpsFlag( ) || pcVPSVUI->getPicRatePresentVpsFlag( ) ) 1543 1390 { 1544 #if H_MV_HLS10_VPS_VUI1545 1391 for( Int i = pcVPS->getVpsBaseLayerInternalFlag() ? 0 : 1; i < pcVPS->getNumLayerSets(); i++ ) 1546 #else1547 for( Int i = pcVPS->getVpsBaseLayerInternalFlag() ? 0 : 1; i <= pcVPS->getVpsNumLayerSetsMinus1(); i++ )1548 #endif1549 1392 { 1550 1393 for( Int j = 0; j <= pcVPS->getMaxSubLayersInLayerSetMinus1( i ); j++ ) … … 1579 1422 else 1580 1423 { 1581 #if H_MV_HLS10_VPS_VUI1582 1424 assert( pcVPSVUI->getVpsNumVideoSignalInfoMinus1() == pcVPS->getMaxLayersMinus1() - ( pcVPS->getVpsBaseLayerInternalFlag() ? 0 : 1) ); 1583 #else1584 pcVPSVUI->setVpsNumVideoSignalInfoMinus1( pcVPS->getMaxLayersMinus1() );1585 #endif1586 1425 } 1587 1426 … … 1596 1435 if( pcVPSVUI->getVideoSignalInfoIdxPresentFlag() && pcVPSVUI->getVpsNumVideoSignalInfoMinus1() > 0 ) 1597 1436 { 1598 #if I0045_VPS_VUI_VST_PARAMS1599 1437 for( Int i = pcVPS->getVpsBaseLayerInternalFlag() ? 0 : 1; i <= pcVPS->getMaxLayersMinus1(); i++ ) 1600 1438 { 1601 1439 WRITE_CODE( pcVPSVUI->getVpsVideoSignalInfoIdx( i ), 4, "vps_video_signal_info_idx" ); 1602 1440 } 1603 #else1604 for( Int i = 1; i <= pcVPS->getMaxLayersMinus1(); i++ )1605 {1606 WRITE_CODE( pcVPSVUI->getVpsVideoSignalInfoIdx( i ), 4, "vps_video_signal_info_idx" );1607 assert( pcVPSVUI->getVpsVideoSignalInfoIdx( i ) >= 0 && pcVPSVUI->getVpsVideoSignalInfoIdx( i ) <= pcVPSVUI->getVpsNumVideoSignalInfoMinus1() );1608 }1609 }1610 else1611 {1612 for( Int i = 1; i <= pcVPS->getMaxLayersMinus1(); i++ )1613 {1614 assert( pcVPSVUI->getVpsVideoSignalInfoIdx( i ) == ( pcVPSVUI->getVideoSignalInfoIdxPresentFlag() ? 0 : i ) );1615 }1616 #endif1617 1441 } 1618 1442 WRITE_FLAG( pcVPSVUI->getTilesNotInUseFlag( ) ? 1 : 0 , "tiles_not_in_use_flag" ); … … 1631 1455 for( Int j = 0; j < pcVPS->getNumDirectRefLayers( pcVPS->getLayerIdInNuh( i ) ) ; j++ ) 1632 1456 { 1633 #if H_MV_HLS10_REF_PRED_LAYERS1634 1457 Int layerIdx = pcVPS->getLayerIdInVps(pcVPS->getIdRefLayer(pcVPS->getLayerIdInNuh( i ) , j )); 1635 #else1636 Int layerIdx = pcVPS->getLayerIdInVps(pcVPS->getRefLayerId(pcVPS->getLayerIdInNuh( i ) , j ));1637 #endif1638 1458 if( pcVPSVUI->getTilesInUseFlag( i ) && pcVPSVUI->getTilesInUseFlag( layerIdx ) ) 1639 1459 { … … 1653 1473 } 1654 1474 } 1655 #if H_MV_HLS10_VPS_VUI1656 1475 WRITE_FLAG( pcVPSVUI->getSingleLayerForNonIrapFlag( ) ? 1 : 0 , "single_layer_for_non_irap_flag" ); 1657 1476 WRITE_FLAG( pcVPSVUI->getHigherLayerIrapSkipFlag( ) ? 1 : 0 , "higher_layer_irap_skip_flag" ); 1658 #else1659 WRITE_CODE( 0, 3, "vps_vui_reserved_zero_3bits" );1660 #endif1661 1477 WRITE_FLAG( pcVPSVUI->getIlpRestrictedRefLayersFlag( ) ? 1 : 0 , "ilp_restricted_ref_layers_flag" ); 1662 1478 … … 1667 1483 for( Int j = 0; j < pcVPS->getNumDirectRefLayers( pcVPS->getLayerIdInNuh( i ) ); j++ ) 1668 1484 { 1669 #if H_MV_HLS10_REF_PRED_LAYERS1670 1485 if( pcVPS->getVpsBaseLayerInternalFlag() || pcVPS->getIdRefLayer( pcVPS->getLayerIdInNuh( i ), j ) > 0 ) 1671 #else1672 if( pcVPS->getVpsBaseLayerInternalFlag() || pcVPS->getRefLayerId( pcVPS->getLayerIdInNuh( i ), j ) > 0 )1673 #endif1674 1486 { 1675 1487 WRITE_UVLC( pcVPSVUI->getMinSpatialSegmentOffsetPlus1( i, j ), "min_spatial_segment_offset_plus1" ); … … 1714 1526 assert ( vpsVuiBspHrdP ); 1715 1527 1716 #if H_MV_HLS10_VPS_VUI_BSP1717 1528 WRITE_UVLC( vpsVuiBspHrdP->getVpsNumAddHrdParams( ), "vps_num_add_hrd_params" ); 1718 1529 … … 1760 1571 } 1761 1572 1762 #else // H_MV_HLS10_GEN1763 WRITE_UVLC( vpsVuiBspHrdP->getVpsNumBspHrdParametersMinus1( ), "vps_num_bsp_hrd_parameters_minus1" );1764 for( Int i = 0; i <= vpsVuiBspHrdP->getVpsNumBspHrdParametersMinus1( ); i++ )1765 {1766 if( i > 0 )1767 {1768 WRITE_FLAG( vpsVuiBspHrdP->getBspCprmsPresentFlag( i ) ? 1 : 0 , "bsp_cprms_present_flag" );1769 }1770 TComHRD* hrdParameters = vpsVuiBspHrdP->getHrdParametermeters( i );1771 codeHrdParameters( hrdParameters, vpsVuiBspHrdP->getBspCprmsPresentFlag( i ), pcVPS->getMaxSubLayersMinus1() );1772 }1773 for( Int h = 1; h <= pcVPS->getVpsNumLayerSetsMinus1(); h++ )1774 {1775 WRITE_UVLC( vpsVuiBspHrdP->getNumBitstreamPartitions( h ), "num_bitstream_partitions" );1776 for( Int i = 0; i < vpsVuiBspHrdP->getNumBitstreamPartitions( h ); i++ )1777 {1778 for( Int j = 0; j < pcVPS->getNumLayersInIdList( h ); j++ )1779 {1780 WRITE_FLAG( vpsVuiBspHrdP->getLayerInBspFlag( h, i, j ) ? 1 : 0 , "layer_in_bsp_flag" );1781 }1782 }1783 vpsVuiBspHrdP->checkLayerInBspFlag( pcVPS, h );1784 1785 if( vpsVuiBspHrdP->getNumBitstreamPartitions( h ) )1786 {1787 WRITE_UVLC( vpsVuiBspHrdP->getNumBspSchedCombinationsMinus1( h ), "num_bsp_sched_combinations_minus1" );1788 for( Int i = 0; i <= vpsVuiBspHrdP->getNumBspSchedCombinationsMinus1( h ); i++ )1789 {1790 for( Int j = 0; j < vpsVuiBspHrdP->getNumBitstreamPartitions( h ); j++ )1791 {1792 WRITE_CODE( vpsVuiBspHrdP->getBspCombHrdIdx( h, i, j ), vpsVuiBspHrdP->getBspCombHrdIdxLen(), "bsp_comb_hrd_idx" );1793 WRITE_UVLC( vpsVuiBspHrdP->getBspCombSchedIdx( h, i, j ), "bsp_comb_sched_idx" );1794 1795 vpsVuiBspHrdP->checkBspCombHrdAndShedIdx( pcVPS, h, i, j );1796 }1797 }1798 }1799 }1800 #endif1801 1573 } 1802 1574 #endif … … 1805 1577 Void TEncCavlc::codeVPSExtension2( TComVPS* pcVPS ) 1806 1578 { 1807 #if SEC_VPS_CLEANUP_I00901808 1579 for( Int i = 1; i <= pcVPS->getMaxLayersMinus1(); i++ ) 1809 #else 1810 for( Int i = 0; i <= pcVPS->getMaxLayersMinus1(); i++ ) 1811 #endif 1812 { 1813 #if !SEC_VPS_CLEANUP_I0090 1814 if (i!= 0) 1815 #endif 1816 { 1817 #if MTK_I0099_VPS_EX2 1580 { 1581 { 1818 1582 WRITE_FLAG( pcVPS->getIvMvPredFlag ( i ) ? 1 : 0 , "iv_mv_pred_flag[i]"); 1819 #if SEC_HLS_CLEANUP_I01001820 1583 WRITE_FLAG( pcVPS->getIvMvScalingFlag( i ) ? 1 : 0 , "iv_mv_scaling_flag[i]" ); 1821 #endif 1822 1823 #endif 1584 1824 1585 if ( !( pcVPS->getDepthId( i ) == 1 ) ) 1825 1586 { 1826 1587 #if H_3D_IV_MERGE 1827 #if !MTK_I0099_VPS_EX21828 WRITE_FLAG( pcVPS->getIvMvPredFlag ( i ) ? 1 : 0 , "iv_mv_pred_flag[i]");1829 #endif1830 1588 #if H_3D_SPIVMP 1831 1589 WRITE_UVLC( pcVPS->getSubPULog2Size(i)-3, "log2_sub_PU_size_minus3[i]"); … … 1847 1605 else 1848 1606 { 1849 #if !MTK_I0099_VPS_EX21850 if(i!=1)1851 {1852 WRITE_FLAG( pcVPS->getIvMvPredFlag ( i ) ? 1 : 0 , "iv_mv_pred_flag[i]");1853 }1854 #if H_3D_SPIVMP1855 if (i!=1)1856 {1857 WRITE_UVLC( pcVPS->getSubPULog2Size(i)-3, "log2_sub_PU_size_minus3[i]");1858 }1859 #endif1860 #endif1861 1607 #if H_3D_IV_MERGE 1862 1608 WRITE_FLAG( pcVPS->getMPIFlag( i ) ? 1 : 0 , "mpi_flag[i]" ); 1863 1609 #endif 1864 #if MTK_I0099_VPS_EX21865 1610 WRITE_UVLC( pcVPS->getSubPUMPILog2Size(i)-3, "log2_mpi_sub_PU_size_minus3[i]"); 1866 #endif 1611 1867 1612 WRITE_FLAG( pcVPS->getVpsDepthModesFlag( i ) ? 1 : 0 , "vps_depth_modes_flag[i]" ); 1868 #if SEPARATE_FLAG_I00851613 #if H_3D 1869 1614 WRITE_FLAG( pcVPS->getIVPFlag( i ) ? 1 : 0 , "IVP_flag[i]" ); 1870 1615 #endif 1871 #if MTK_I0099_VPS_EX21872 1616 WRITE_FLAG( pcVPS->getLimQtPredFlag ( i ) ? 1 : 0 , "lim_qt_pred_flag[i]" ); 1873 #endif1874 1617 1875 1618 #if H_3D_INTER_SDC … … 1880 1623 } 1881 1624 WRITE_UVLC( pcVPS->getCamParPrecision(), "cp_precision" ); 1882 #if SEC_VPS_CLEANUP_I00901883 1625 for (UInt viewIndex=1; viewIndex<pcVPS->getNumViews(); viewIndex++) 1884 #else1885 for (UInt viewIndex=0; viewIndex<pcVPS->getNumViews(); viewIndex++)1886 #endif1887 1626 { 1888 1627 WRITE_FLAG( pcVPS->getCamParPresent(viewIndex) ? 1 : 0, "cp_present_flag[i]" ); … … 1902 1641 } 1903 1642 } 1904 #if !MTK_I0099_VPS_EX21905 WRITE_UVLC( pcVPS->getSubPUMPILog2Size( ) - 3, "log2_sub_PU_MPI_size_minus3");1906 #endif1907 #if H_3D_TMVP1908 #if !SEC_HLS_CLEANUP_I01001909 WRITE_FLAG( pcVPS->getIvMvScalingFlag( ) ? 1 : 0 , "iv_mv_scaling_flag" );1910 #endif1911 #endif1912 1643 } 1913 1644 #endif … … 1978 1709 esb++; 1979 1710 WRITE_FLAG( pcSlice->getDiscardableFlag( ) ? 1 : 0 , "discardable_flag" ); 1980 #if NON_REF_NAL_TYPE_DISCARDABLE1981 1711 if (pcSlice->getDiscardableFlag( )) 1982 1712 { … … 1987 1717 pcSlice->getNalUnitType() != NAL_UNIT_CODED_SLICE_RASL_R); 1988 1718 } 1989 #endif1990 1719 } 1991 1720 … … 2148 1877 if (pcSlice->getSPS()->getTMVPFlagsPresent()) 2149 1878 { 2150 #if I0044_SLICE_TMVP1879 #if H_MV 2151 1880 WRITE_FLAG( pcSlice->getEnableTMVPFlag() ? 1 : 0, "slice_temporal_mvp_enabled_flag" ); 2152 1881 #else … … 2308 2037 } 2309 2038 #if H_3D_IC 2310 #if SEC_HLS_CLEANUP_I01002311 2039 else if( pcSlice->getViewIndex() && ( pcSlice->getSliceType() == P_SLICE || pcSlice->getSliceType() == B_SLICE ) && !pcSlice->getIsDepth() && vps->getNumDirectRefLayers( layerId ) > 0 ) 2312 #else2313 else if( pcSlice->getViewIndex() && ( pcSlice->getSliceType() == P_SLICE || pcSlice->getSliceType() == B_SLICE ) && !pcSlice->getIsDepth())2314 #endif2315 2040 { 2316 2041 WRITE_FLAG( pcSlice->getApplyIC() ? 1 : 0, "slice_ic_enable_flag" ); … … 2321 2046 } 2322 2047 #endif 2323 #if MTK_SINGLE_DEPTH_MODE_I00952048 #if H_3D_SINGLE_DEPTH 2324 2049 if(pcSlice->getIsDepth()) 2325 2050 { … … 2385 2110 } 2386 2111 #if H_3D 2387 #if LGE_FCO_I01162112 #if H_3D_FCO 2388 2113 if( pcSlice->getVPS()->hasCamParInSliceHeader( pcSlice->getViewIndex() ) && pcSlice->getIsDepth() ) 2389 2114 #else … … 2575 2300 WRITE_FLAG(ptl->getFrameOnlyConstraintFlag(), "general_frame_only_constraint_flag"); 2576 2301 2577 #if H_MV_HLS10_PTL 2578 #if H_MV_HLS10_PTL_INFER_FIX 2302 #if H_MV 2579 2303 if( ptl->getV2ConstraintsPresentFlag() ) 2580 #else2581 if( ptl->getProfileIdc( ) == 4 || ptl->getProfileCompatibilityFlag( 4 ) ||2582 ptl->getProfileIdc( ) == 5 || ptl->getProfileCompatibilityFlag( 5 ) ||2583 ptl->getProfileIdc( ) == 6 || ptl->getProfileCompatibilityFlag( 6 ) ||2584 ptl->getProfileIdc( ) == 7 || ptl->getProfileCompatibilityFlag( 7 ) )2585 #endif2586 2304 { 2587 2305 WRITE_FLAG( ptl->getMax12bitConstraintFlag( ) ? 1 : 0 , "max_12bit_constraint_flag" ); … … 2604 2322 WRITE_CODE( 0, 11, "XXX_reserved_zero_43bits[32..42]"); 2605 2323 } 2606 #if H_MV_HLS10_PTL_INFER_FIX2607 2324 if( ptl->getInbldPresentFlag() ) 2608 #else2609 if( ( ptl->getProfileIdc() >= 1 && ptl->getProfileIdc() <= 5 ) ||2610 ptl->getProfileCompatibilityFlag( 1 ) || ptl->getProfileCompatibilityFlag( 2 ) ||2611 ptl->getProfileCompatibilityFlag( 3 ) || ptl->getProfileCompatibilityFlag( 4 ) ||2612 ptl->getProfileCompatibilityFlag( 5 ) )2613 #endif2614 2325 { 2615 2326 WRITE_FLAG( ptl->getInbldFlag( ) ? 1 : 0 , "inbld_flag" ); … … 2762 2473 assert(0); 2763 2474 } 2764 #if MTK_SINGLE_DEPTH_MODE_I00952475 #if H_3D_SINGLE_DEPTH 2765 2476 Void TEncCavlc::codeSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx ) 2766 2477 { -
trunk/source/Lib/TLibEncoder/TEncCavlc.h
r1066 r1084 107 107 Void codePPS ( TComPPS* pcPPS ); 108 108 109 #if H_MV_HLS10_PPS110 109 #if H_MV 111 110 Void codePPSMultilayerExtension( TComPPS* pcPPS ); 112 #endif113 111 #endif 114 112 … … 129 127 Void codeCUTransquantBypassFlag( TComDataCU* pcCU, UInt uiAbsPartIdx ); 130 128 Void codeSkipFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 131 #if MTK_SINGLE_DEPTH_MODE_I0095129 #if H_3D_SINGLE_DEPTH 132 130 Void codeSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx ); 133 131 #endif -
trunk/source/Lib/TLibEncoder/TEncCfg.h
r1039 r1084 124 124 Int m_iSourceWidth; 125 125 Int m_iSourceHeight; 126 Int m_conformanceMode;127 126 Window m_conformanceWindow; 128 127 Int m_framesToBeEncoded; … … 229 228 Bool m_bPCMFilterDisableFlag; 230 229 Bool m_loopFilterAcrossTilesEnabledFlag; 231 Int m_iUniformSpacingIdr;230 Bool m_tileUniformSpacingFlag; 232 231 Int m_iNumColumnsMinus1; 233 UInt* m_puiColumnWidth;234 232 Int m_iNumRowsMinus1; 235 UInt* m_puiRowHeight; 233 std::vector<Int> m_tileColumnWidth; 234 std::vector<Int> m_tileRowHeight; 236 235 237 236 Int m_iWaveFrontSynchro; … … 414 413 #if H_3D_DIM 415 414 Bool m_useDMM; 416 #if SEPARATE_FLAG_I0085417 415 Bool m_useIVP; 418 #endif419 416 Bool m_useSDC; 420 417 Bool m_useDLT; 421 418 #endif 422 #if MTK_SINGLE_DEPTH_MODE_I0095419 #if H_3D_SINGLE_DEPTH 423 420 Bool m_useSingleDepthMode; 424 421 #endif … … 426 423 Bool m_useMPI; 427 424 #endif 428 #if !MTK_I0099_VPS_EX2 || MTK_I0099_FIX429 425 #if H_3D_QTLPC 430 426 Bool m_bUseQTL; 431 #if !MTK_I0099_VPS_EX2432 Bool m_bUsePC;433 #endif434 #endif435 427 #endif 436 428 #endif 437 429 public: 438 430 TEncCfg() 439 : m_ puiColumnWidth()440 , m_ puiRowHeight()431 : m_tileColumnWidth() 432 , m_tileRowHeight() 441 433 #if H_MV 442 434 , m_layerId(-1) … … 452 444 453 445 virtual ~TEncCfg() 454 { 455 delete[] m_puiColumnWidth; 456 delete[] m_puiRowHeight; 457 } 446 {} 458 447 459 448 Void setProfile(Profile::Name profile) { m_profile = profile; } … … 678 667 Void setLFCrossTileBoundaryFlag ( Bool val ) { m_loopFilterAcrossTilesEnabledFlag = val; } 679 668 Bool getLFCrossTileBoundaryFlag () { return m_loopFilterAcrossTilesEnabledFlag; } 680 Void set UniformSpacingIdr ( Int i ) { m_iUniformSpacingIdr = i; }681 Int getUniformSpacingIdr () { return m_iUniformSpacingIdr; }669 Void setTileUniformSpacingFlag ( Bool b ) { m_tileUniformSpacingFlag = b; } 670 Bool getTileUniformSpacingFlag () { return m_tileUniformSpacingFlag; } 682 671 Void setNumColumnsMinus1 ( Int i ) { m_iNumColumnsMinus1 = i; } 683 672 Int getNumColumnsMinus1 () { return m_iNumColumnsMinus1; } 684 Void setColumnWidth ( UInt* columnWidth ) 685 { 686 if( m_iUniformSpacingIdr == 0 && m_iNumColumnsMinus1 > 0 ) 687 { 688 Int m_iWidthInCU = ( m_iSourceWidth%g_uiMaxCUWidth ) ? m_iSourceWidth/g_uiMaxCUWidth + 1 : m_iSourceWidth/g_uiMaxCUWidth; 689 m_puiColumnWidth = new UInt[ m_iNumColumnsMinus1 ]; 690 691 for(Int i=0; i<m_iNumColumnsMinus1; i++) 692 { 693 m_puiColumnWidth[i] = columnWidth[i]; 694 printf("col: m_iWidthInCU= %4d i=%4d width= %4d\n",m_iWidthInCU,i,m_puiColumnWidth[i]); //AFU 695 } 696 } 697 } 698 UInt getColumnWidth ( UInt columnidx ) { return *( m_puiColumnWidth + columnidx ); } 673 Void setColumnWidth ( const std::vector<Int>& columnWidth ) { m_tileColumnWidth = columnWidth; } 674 UInt getColumnWidth ( UInt columnIdx ) { return m_tileColumnWidth[columnIdx]; } 699 675 Void setNumRowsMinus1 ( Int i ) { m_iNumRowsMinus1 = i; } 700 676 Int getNumRowsMinus1 () { return m_iNumRowsMinus1; } 701 Void setRowHeight (UInt* rowHeight) 702 { 703 if( m_iUniformSpacingIdr == 0 && m_iNumRowsMinus1 > 0 ) 704 { 705 Int m_iHeightInCU = ( m_iSourceHeight%g_uiMaxCUHeight ) ? m_iSourceHeight/g_uiMaxCUHeight + 1 : m_iSourceHeight/g_uiMaxCUHeight; 706 m_puiRowHeight = new UInt[ m_iNumRowsMinus1 ]; 707 708 for(Int i=0; i<m_iNumRowsMinus1; i++) 709 { 710 m_puiRowHeight[i] = rowHeight[i]; 711 printf("row: m_iHeightInCU=%4d i=%4d height=%4d\n",m_iHeightInCU,i,m_puiRowHeight[i]); //AFU 712 } 713 } 714 } 715 UInt getRowHeight ( UInt rowIdx ) { return *( m_puiRowHeight + rowIdx ); } 677 Void setRowHeight ( const std::vector<Int>& rowHeight) { m_tileRowHeight = rowHeight; } 678 UInt getRowHeight ( UInt rowIdx ) { return m_tileRowHeight[rowIdx]; } 716 679 Void xCheckGSParameters(); 717 680 Void setWaveFrontSynchro(Int iWaveFrontSynchro) { m_iWaveFrontSynchro = iWaveFrontSynchro; } … … 1013 976 Bool getUseDMM () { return m_useDMM; } 1014 977 Void setUseDMM ( Bool b) { m_useDMM = b; } 1015 #if SEPARATE_FLAG_I00851016 978 Bool getUseIVP () { return m_useIVP; } 1017 979 Void setUseIVP ( Bool b) { m_useIVP = b; } 1018 #endif1019 980 Bool getUseSDC () { return m_useSDC; } 1020 981 Void setUseSDC ( Bool b) { m_useSDC = b; } … … 1022 983 Void setUseDLT ( Bool b) { m_useDLT = b; } 1023 984 #endif 1024 #if MTK_SINGLE_DEPTH_MODE_I0095985 #if H_3D_SINGLE_DEPTH 1025 986 Void setUseSingleDepthMode ( Bool bVal ) { m_useSingleDepthMode = bVal; } 1026 987 Bool getUseSingleDepthMode () { return m_useSingleDepthMode; } 1027 988 #endif 1028 #if !MTK_I0099_VPS_EX2 || MTK_I0099_FIX1029 989 #if H_3D_QTLPC 1030 990 Void setUseQTL ( Bool b ) { m_bUseQTL = b; } 1031 991 Bool getUseQTL () { return m_bUseQTL; } 1032 #if !MTK_I0099_VPS_EX21033 Void setUsePC ( Bool b ) { m_bUsePC = b; }1034 Bool getUsePC () { return m_bUsePC; }1035 #endif1036 #endif1037 992 #endif 1038 993 #if H_3D_IV_MERGE -
trunk/source/Lib/TLibEncoder/TEncCu.cpp
r1066 r1084 409 409 410 410 #if H_3D_QTLPC 411 #if MTK_I0099_VPS_EX2412 411 TComVPS *vps = pcPic->getSlice(0)->getVPS(); 413 412 Bool bLimQtPredFalg = vps->getLimQtPredFlag(pcPic->getSlice(0)->getLayerId()); 414 #else415 TComSPS *sps = pcPic->getSlice(0)->getSPS();416 #endif417 413 TComPic *pcTexture = rpcBestCU->getSlice()->getTexturePic(); 418 414 … … 535 531 #if H_3D_QTLPC 536 532 //logic for setting bTrySplit using the partition information that is stored of the texture colocated CU 537 538 #if MTK_I0099_VPS_EX2 539 #if MTK_I0099_FIX 540 #if LGE_FCO_I0116 533 #if H_3D_FCO 541 534 if(depthMapDetect && !bIntraSliceDetect && !rapPic && ( m_pcEncCfg->getUseQTL() || bLimQtPredFalg ) && pcTexture->getReconMark()) 542 535 #else 543 536 if(depthMapDetect && !bIntraSliceDetect && !rapPic && ( m_pcEncCfg->getUseQTL() || bLimQtPredFalg )) 544 #endif545 #else546 if(depthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFalg)547 #endif548 #else549 if(depthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL())550 537 #endif 551 538 { … … 702 689 703 690 #if H_3D_QTLPC 704 #if MTK_I0099_VPS_EX2705 #if MTK_I0099_FIX706 691 if(depthMapDetect && !bIntraSliceDetect && !rapPic && ( m_pcEncCfg->getUseQTL() || bLimQtPredFalg )) 707 #else708 if(depthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFalg)709 #endif710 #else711 if(depthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL())712 #endif713 692 { 714 693 bTrySplitDQP = bTrySplit; … … 734 713 } 735 714 #endif 736 #if MTK_SINGLE_DEPTH_MODE_I0095715 #if H_3D_SINGLE_DEPTH 737 716 rpcTempCU->initEstData( uiDepth, iMinQP, isAddLowestQP ); 738 717 if(rpcBestCU->getSlice()->getApplySingleDepthMode()) … … 1057 1036 rpcBestCU->getCbf( 0, TEXT_CHROMA_V ) != 0 1058 1037 #if H_3D_DIM_ENC 1059 #if HHI_DMM4_ENC_I00661060 1038 || rpcBestCU->getSlice()->getIsDepth() 1061 #else1062 || ( rpcBestCU->getSlice()->getIsDepth() && rpcBestCU->getSlice()->isIRAP() )1063 #endif1064 1039 #endif 1065 1040 ) // avoid very complex intra if it is unlikely 1066 1041 { 1067 #if H HI_DMM4_ENC_I00661042 #if H_3D_DIM 1068 1043 Bool bOnlyIVP = false; 1069 1044 if( rpcBestCU->getSlice()->getIsDepth() && !(rpcBestCU->getSlice()->isIRAP()) && … … 1098 1073 if( rpcTempCU->getWidth(0) > ( 1 << rpcTempCU->getSlice()->getSPS()->getQuadtreeTULog2MinSize() ) ) 1099 1074 { 1100 #if H HI_DMM4_ENC_I00661075 #if H_3D_DIM 1101 1076 xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_NxN, bOnlyIVP ); 1102 1077 #else … … 1590 1565 return; 1591 1566 } 1592 #if MTK_SINGLE_DEPTH_MODE_I00951567 #if H_3D_SINGLE_DEPTH 1593 1568 m_pcEntropyCoder->encodeSingleDepthMode( pcCU, uiAbsPartIdx ); 1594 1569 if(!pcCU->getSingleDepthFlag(uiAbsPartIdx)) … … 1627 1602 m_pcEntropyCoder->encodeCoeff( pcCU, uiAbsPartIdx, uiDepth, pcCU->getWidth (uiAbsPartIdx), pcCU->getHeight(uiAbsPartIdx), bCodeDQP ); 1628 1603 setdQPFlag( bCodeDQP ); 1629 #if MTK_SINGLE_DEPTH_MODE_I00951604 #if H_3D_SINGLE_DEPTH 1630 1605 } 1631 1606 #endif … … 1863 1838 Int vspFlag[MRG_MAX_NUM_CANDS_MEM]; 1864 1839 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 1865 #if !FIX_TICKET_791866 InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM];1867 #endif1868 1840 #if H_3D_SPIVMP 1869 1841 Bool bSPIVMPFlag[MRG_MAX_NUM_CANDS_MEM]; … … 1878 1850 rpcTempCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand ); 1879 1851 rpcTempCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours 1880 #if !FIX_TICKET_791881 , inheritedVSPDisInfo1882 #endif1883 1852 #if H_3D_SPIVMP 1884 1853 , pcMvFieldSP, puhInterDirSP … … 1895 1864 1896 1865 #else 1897 #if FIX_TICKET_791898 1866 rpcTempCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, vspFlag, numValidMergeCand ); 1899 #else1900 rpcTempCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, numValidMergeCand );1901 #endif1902 1867 #endif 1903 1868 … … 1942 1907 #if H_3D_VSP 1943 1908 rpcTempCU->setVSPFlagSubParts( vspFlag[uiMergeCand], 0, 0, uhDepth ); 1944 #if !FIX_TICKET_791945 rpcTempCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeCand].m_acDvInfo, 0, 0, uhDepth );1946 #endif1947 1909 #endif 1948 1910 #if H_3D_DDD … … 2043 2005 2044 2006 rpcTempCU->setSkipFlagSubParts( rpcTempCU->getQtRootCbf(0) == 0, 0, uhDepth ); 2045 #if MTK_SINGLE_DEPTH_MODE_I00952007 #if H_3D_SINGLE_DEPTH 2046 2008 rpcTempCU->setSingleDepthFlagSubParts( false, 0, uhDepth ); 2047 2009 #endif … … 2061 2023 if( rpcTempCU->getSlice()->getVPS()->getInterSDCFlag( rpcTempCU->getSlice()->getLayerIdInVps() ) && rpcTempCU->getSlice()->getIsDepth() && !uiNoResidual ) 2062 2024 { 2063 #if FAST_SDC_OFFSET_DECISION_I00842064 2025 Double dOffsetCost[3] = {MAX_DOUBLE,MAX_DOUBLE,MAX_DOUBLE}; 2065 2026 for( Int uiOffest = 1 ; uiOffest <= 5 ; uiOffest++ ) 2066 #else2067 for( Int uiOffest = -2 ; uiOffest <= 2 ; uiOffest++ )2068 #endif2069 2027 { 2070 #if FAST_SDC_OFFSET_DECISION_I00842071 2028 if( uiOffest > 3) 2072 2029 { … … 2084 2041 } 2085 2042 } 2086 #endif2087 2043 if( rpcTempCU != rpcTempCUPre ) 2088 2044 { … … 2091 2047 } 2092 2048 rpcTempCU->setSkipFlagSubParts( false, 0, uhDepth ); 2093 #if MTK_SINGLE_DEPTH_MODE_I00952049 #if H_3D_SINGLE_DEPTH 2094 2050 rpcTempCU->setSingleDepthFlagSubParts( false, 0, uhDepth ); 2095 2051 #endif … … 2106 2062 } 2107 2063 #endif 2108 #if FAST_SDC_OFFSET_DECISION_I00842109 2064 Int iSdcOffset = 0; 2110 2065 if(uiOffest % 2 == 0) … … 2127 2082 dOffsetCost [uiOffest -1] = rpcTempCU->getTotalCost(); 2128 2083 } 2129 #else2130 m_pcPredSearch->encodeResAndCalcRdInterSDCCU( rpcTempCU,2131 m_ppcOrigYuv[uhDepth],2132 ( rpcTempCU != rpcTempCUPre ) ? m_ppcPredYuvBest[uhDepth] : m_ppcPredYuvTemp[uhDepth],2133 m_ppcResiYuvTemp[uhDepth],2134 m_ppcRecoYuvTemp[uhDepth],2135 uiOffest,2136 uhDepth );2137 #endif2138 2084 2139 2085 xCheckDQP( rpcTempCU ); … … 2253 2199 2254 2200 rpcTempCU->setSkipFlagSubParts( false, 0, uhDepth ); 2255 #if MTK_SINGLE_DEPTH_MODE_I00952201 #if H_3D_SINGLE_DEPTH 2256 2202 rpcTempCU->setSingleDepthFlagSubParts( false, 0, uhDepth ); 2257 2203 #endif … … 2326 2272 } 2327 2273 #endif 2328 2329 2274 #if H_3D_VSO // M4 2330 2275 if( m_pcRdCost->getUseLambdaScaleVSO() ) … … 2332 2277 else 2333 2278 #endif 2334 2335 2279 rpcTempCU->getTotalCost() = m_pcRdCost->calcRdCost( rpcTempCU->getTotalBits(), rpcTempCU->getTotalDistortion() ); 2336 2280 #if H_3D_INTER_SDC … … 2342 2286 if( rpcTempCU->getSlice()->getVPS()->getInterSDCFlag( rpcTempCU->getSlice()->getLayerIdInVps() ) && rpcTempCU->getSlice()->getIsDepth() && ePartSize == SIZE_2Nx2N) 2343 2287 { 2344 #if FAST_SDC_OFFSET_DECISION_I00842345 2288 Double dOffsetCost[3] = {MAX_DOUBLE,MAX_DOUBLE,MAX_DOUBLE}; 2346 2289 for( Int uiOffest = 1 ; uiOffest <= 5 ; uiOffest++ ) 2347 #else 2348 for( Int uiOffest = -2 ; uiOffest <= 2 ; uiOffest++ ) 2349 #endif 2350 { 2351 #if FAST_SDC_OFFSET_DECISION_I0084 2290 { 2352 2291 if( uiOffest > 3) 2353 2292 { … … 2365 2304 } 2366 2305 } 2367 #endif 2306 2368 2307 if( rpcTempCU != rpcTempCUPre ) 2369 2308 { … … 2373 2312 } 2374 2313 rpcTempCU->setSkipFlagSubParts( false, 0, uhDepth ); 2375 #if MTK_SINGLE_DEPTH_MODE_I00952314 #if H_3D_SINGLE_DEPTH 2376 2315 rpcTempCU->setSingleDepthFlagSubParts( false, 0, uhDepth ); 2377 2316 #endif … … 2389 2328 #endif 2390 2329 2391 #if FAST_SDC_OFFSET_DECISION_I00842392 2330 Int iSdcOffset = 0; 2393 2331 if(uiOffest % 2 == 0) … … 2410 2348 dOffsetCost [uiOffest -1] = rpcTempCU->getTotalCost(); 2411 2349 } 2412 #else2413 m_pcPredSearch->encodeResAndCalcRdInterSDCCU( rpcTempCU,2414 m_ppcOrigYuv[uhDepth],2415 ( rpcTempCU != rpcTempCUPre ) ? m_ppcPredYuvBest[uhDepth] : m_ppcPredYuvTemp[uhDepth],2416 m_ppcResiYuvTemp[uhDepth],2417 m_ppcRecoYuvTemp[uhDepth],2418 uiOffest,2419 uhDepth );2420 #endif2421 2350 2422 2351 xCheckDQP( rpcTempCU ); … … 2493 2422 } 2494 2423 } 2495 #if MTK_SINGLE_DEPTH_MODE_I00952424 #if H_3D_SINGLE_DEPTH 2496 2425 Void TEncCu::xCheckRDCostSingleDepth( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize eSize ) 2497 2426 { … … 2560 2489 } 2561 2490 #endif 2491 2562 2492 Void TEncCu::xCheckRDCostInterDBBP( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, Bool bUseMRG ) 2563 2493 { … … 2581 2511 AOF( uiWidth == uiHeight ); 2582 2512 2583 #if SEC_DBBP_DISALLOW_8x8_I0078 2513 #if H_3D_DBBP 2514 // Is this correct here, was under the macro SEC_DBBP_DISALLOW_8x8_I0078, however the function is related to Single Depth Mode 2584 2515 if(uiWidth <= 8) 2585 2516 { … … 2592 2523 // fetch virtual depth block 2593 2524 UInt uiDepthStride = 0; 2594 #if LGE_FCO_I01162525 #if H_3D_FCO 2595 2526 Pel* pDepthPels = rpcTempCU->getVirtualDepthBlock(rpcTempCU->getZorderIdxInCU(), uiWidth, uiHeight, uiDepthStride); 2596 2527 #else … … 2688 2619 2689 2620 // reconstruct final prediction signal by combining both segments 2690 #if SHARP_DBBP_SIMPLE_FLTER_I01092691 2621 m_pcPredSearch->combineSegmentsWithMask(apPredYuv, m_ppcPredYuvTemp[uhDepth], pMask, uiWidth, uiHeight, 0, eVirtualPartSize); 2692 #else2693 m_pcPredSearch->combineSegmentsWithMask(apPredYuv, m_ppcPredYuvTemp[uhDepth], pMask, uiWidth, uiHeight);2694 #endif2695 2696 2622 m_pcPredSearch->encodeResAndCalcRdInterCU( rpcTempCU, m_ppcOrigYuv[uhDepth], m_ppcPredYuvTemp[uhDepth], m_ppcResiYuvTemp[uhDepth], m_ppcResiYuvBest[uhDepth], m_ppcRecoYuvTemp[uhDepth], false ); 2697 2623 … … 2700 2626 } 2701 2627 #endif 2702 2703 #if HHI_DMM4_ENC_I0066 2628 #if H_3D_DIM 2704 2629 Void TEncCu::xCheckRDCostIntra( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize eSize, Bool bOnlyIVP ) 2705 2630 #else … … 2707 2632 #endif 2708 2633 { 2709 UInt uiDepth = rpcTempCU->getDepth( 0 ); 2710 2634 UInt uiDepth = rpcTempCU->getDepth( 0 ); 2711 2635 #if H_3D_VSO // M5 2712 2636 if( m_pcRdCost->getUseRenModel() ) … … 2721 2645 2722 2646 rpcTempCU->setSkipFlagSubParts( false, 0, uiDepth ); 2723 #if MTK_SINGLE_DEPTH_MODE_I00952647 #if H_3D_SINGLE_DEPTH 2724 2648 rpcTempCU->setSingleDepthFlagSubParts( false, 0, uiDepth ); 2725 2649 #endif … … 2733 2657 m_pcPredSearch->preestChromaPredMode( rpcTempCU, m_ppcOrigYuv[uiDepth], m_ppcPredYuvTemp[uiDepth] ); 2734 2658 } 2735 #if H HI_DMM4_ENC_I00662659 #if H_3D_DIM 2736 2660 m_pcPredSearch ->estIntraPredQT ( rpcTempCU, m_ppcOrigYuv[uiDepth], m_ppcPredYuvTemp[uiDepth], m_ppcResiYuvTemp[uiDepth], m_ppcRecoYuvTemp[uiDepth], uiPreCalcDistC, bSeparateLumaChroma, bOnlyIVP ); 2737 2661 #else … … 2751 2675 } 2752 2676 m_pcEntropyCoder->encodeSkipFlag ( rpcTempCU, 0, true ); 2753 #if MTK_SINGLE_DEPTH_MODE_I00952677 #if H_3D_SINGLE_DEPTH 2754 2678 m_pcEntropyCoder->encodeSingleDepthMode( rpcTempCU, 0, true ); 2755 2679 if(!rpcTempCU->getSingleDepthFlag(0)) … … 2768 2692 m_pcEntropyCoder->encodeCoeff( rpcTempCU, 0, uiDepth, rpcTempCU->getWidth (0), rpcTempCU->getHeight(0), bCodeDQP ); 2769 2693 setdQPFlag( bCodeDQP ); 2770 #if MTK_SINGLE_DEPTH_MODE_I00952694 #if H_3D_SINGLE_DEPTH 2771 2695 } 2772 2696 #endif … … 2798 2722 2799 2723 rpcTempCU->setSkipFlagSubParts( false, 0, uiDepth ); 2800 #if MTK_SINGLE_DEPTH_MODE_I00952724 #if H_3D_SINGLE_DEPTH 2801 2725 rpcTempCU->setSingleDepthFlagSubParts( false, 0, uiDepth ); 2802 2726 #endif … … 2817 2741 } 2818 2742 m_pcEntropyCoder->encodeSkipFlag ( rpcTempCU, 0, true ); 2819 #if MTK_SINGLE_DEPTH_MODE_I00952743 #if H_3D_SINGLE_DEPTH 2820 2744 m_pcEntropyCoder->encodeSingleDepthMode( rpcTempCU, 0, true ); 2821 2745 #endif -
trunk/source/Lib/TLibEncoder/TEncCu.h
r1039 r1084 159 159 Void xCheckRDCostInterDBBP( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, Bool bUseMRG = false ); 160 160 #endif 161 #if MTK_SINGLE_DEPTH_MODE_I0095161 #if H_3D_SINGLE_DEPTH 162 162 Void xCheckRDCostSingleDepth ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize ); 163 163 #endif 164 #if H HI_DMM4_ENC_I0066164 #if H_3D_DIM 165 165 Void xCheckRDCostIntra ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize, Bool bOnlyIVP ); 166 166 #else -
trunk/source/Lib/TLibEncoder/TEncEntropy.cpp
r1066 r1084 119 119 m_pcEntropyCoderIf->codeSkipFlag( pcCU, uiAbsPartIdx ); 120 120 } 121 #if MTK_SINGLE_DEPTH_MODE_I0095121 #if H_3D_SINGLE_DEPTH 122 122 Void TEncEntropy::encodeSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD ) 123 123 { … … 185 185 else 186 186 { 187 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX188 187 Int ICEnableCandidate = pcCU->getSlice()->getICEnableCandidate(pcCU->getSlice()->getDepth()); 189 188 Int ICEnableNum = pcCU->getSlice()->getICEnableNum(pcCU->getSlice()->getDepth()); … … 195 194 pcCU->getSlice()->setICEnableCandidate(pcCU->getSlice()->getDepth(), ICEnableCandidate); 196 195 pcCU->getSlice()->setICEnableNum(pcCU->getSlice()->getDepth(), ICEnableNum); 197 #else198 g_aICEnableCANDIDATE[pcCU->getSlice()->getDepth()]++;199 if(pcCU->getICFlag(uiAbsPartIdx))200 {201 g_aICEnableNUM[pcCU->getSlice()->getDepth()]++;202 }203 #endif204 196 } 205 197 if( pcCU->isICFlagRequired( uiAbsPartIdx ) ) … … 273 265 } 274 266 267 m_pcEntropyCoderIf->codePartSize( pcCU, uiAbsPartIdx, uiDepth ); 268 275 269 #if H_3D_DBBP 276 #if! SEC_DBBP_EXPLICIT_SIG_I0077277 PartSize eVirtualPartSize = pcCU->getPartitionSize(uiAbsPartIdx);278 if( pcCU->getDBBPFlag(uiAbsPartIdx) )279 {280 AOF( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) );281 282 // temporarily change partition size for DBBP blocks283 pcCU->setPartSizeSubParts(RWTH_DBBP_PACK_MODE, uiAbsPartIdx, uiDepth);284 }285 #endif286 #endif287 288 m_pcEntropyCoderIf->codePartSize( pcCU, uiAbsPartIdx, uiDepth );289 290 #if H_3D_DBBP291 #if SEC_DBBP_EXPLICIT_SIG_I0077292 #if SEC_DBBP_DISALLOW_8x8_I0078293 270 if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) && (pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2NxN || pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_Nx2N) && pcCU->getWidth(uiAbsPartIdx) > 8 ) 294 #else295 if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) && (pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2NxN || pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_Nx2N) )296 #endif297 #else298 #if SEC_DBBP_DISALLOW_8x8_I0078299 if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) && pcCU->getWidth(uiAbsPartIdx) > 8 )300 #else301 if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) )302 #endif303 #endif304 271 { 305 272 encodeDBBPFlag(pcCU, uiAbsPartIdx, bRD); 306 #if !SEC_DBBP_EXPLICIT_SIG_I0077307 if( pcCU->getDBBPFlag(uiAbsPartIdx) )308 {309 // restore virtual partition size for DBBP blocks310 pcCU->setPartSizeSubParts(eVirtualPartSize, uiAbsPartIdx, uiDepth);311 }312 #endif313 273 } 314 274 #endif -
trunk/source/Lib/TLibEncoder/TEncEntropy.h
r1039 r1084 86 86 virtual Void codeCUTransquantBypassFlag( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0; 87 87 virtual Void codeSkipFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0; 88 #if MTK_SINGLE_DEPTH_MODE_I009588 #if H_3D_SINGLE_DEPTH 89 89 virtual Void codeSingleDepthMode ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0; 90 90 #endif … … 174 174 Void encodeCUTransquantBypassFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false ); 175 175 Void encodeSkipFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false ); 176 #if MTK_SINGLE_DEPTH_MODE_I0095176 #if H_3D_SINGLE_DEPTH 177 177 Void encodeSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD=false ); 178 178 #endif -
trunk/source/Lib/TLibEncoder/TEncGOP.cpp
r1066 r1084 160 160 #endif 161 161 #endif 162 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX163 m_aICEnableCandidate 164 m_aICEnableNum 162 #if H_3D_IC 163 m_aICEnableCandidate = pcTEncTop->getICEnableCandidate(); 164 m_aICEnableNum = pcTEncTop->getICEnableNum(); 165 165 #endif 166 166 #if KWU_FIX_URQ … … 395 395 Void TEncGOP::initGOP( Int iPOCLast, Int iNumPicRcvd, TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut, std::list<AccessUnit>& accessUnitsInGOP) 396 396 { 397 #if H_MV_ALIGN_HM_15 398 xInitGOP( iPOCLast, iNumPicRcvd, rcListPic, rcListPicYuvRecOut, false ); 399 #else 397 400 xInitGOP( iPOCLast, iNumPicRcvd, rcListPic, rcListPicYuvRecOut ); 401 #endif 398 402 m_iNumPicCoded = 0; 399 403 } … … 937 941 pcSlice->setRefPicList ( rcListPic ); 938 942 #endif 939 #if MTK_SINGLE_DEPTH_MODE_I0095943 #if H_3D_SINGLE_DEPTH 940 944 TEncTop* pcEncTop = (TEncTop*) m_pcCfg; 941 945 bool enableSingleDepthMode=false; … … 971 975 #endif 972 976 #endif 973 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX977 #if H_3D_IC 974 978 pcSlice->setICEnableCandidate( m_aICEnableCandidate ); 975 979 pcSlice->setICEnableNum( m_aICEnableNum ); … … 1228 1232 UInt uiRealEndAddress = uiExternalAddress*pcPic->getNumPartInCU()+uiInternalAddress; 1229 1233 1230 UInt uiCummulativeTileWidth;1231 UInt uiCummulativeTileHeight;1232 1234 Int p, j; 1233 1235 UInt uiEncCUAddr; 1234 1236 1235 //set NumColumnsMinus1 and NumRowsMinus1 1236 pcPic->getPicSym()->setNumColumnsMinus1( pcSlice->getPPS()->getNumColumnsMinus1() ); 1237 pcPic->getPicSym()->setNumRowsMinus1( pcSlice->getPPS()->getNumRowsMinus1() ); 1238 1239 //create the TComTileArray 1240 pcPic->getPicSym()->xCreateTComTileArray(); 1241 1242 if( pcSlice->getPPS()->getUniformSpacingFlag() == 1 ) 1243 { 1244 //set the width for each tile 1245 for(j=0; j < pcPic->getPicSym()->getNumRowsMinus1()+1; j++) 1246 { 1247 for(p=0; p < pcPic->getPicSym()->getNumColumnsMinus1()+1; p++) 1248 { 1249 pcPic->getPicSym()->getTComTile( j * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + p )-> 1250 setTileWidth( (p+1)*pcPic->getPicSym()->getFrameWidthInCU()/(pcPic->getPicSym()->getNumColumnsMinus1()+1) 1251 - (p*pcPic->getPicSym()->getFrameWidthInCU())/(pcPic->getPicSym()->getNumColumnsMinus1()+1) ); 1252 } 1253 } 1254 1255 //set the height for each tile 1256 for(j=0; j < pcPic->getPicSym()->getNumColumnsMinus1()+1; j++) 1257 { 1258 for(p=0; p < pcPic->getPicSym()->getNumRowsMinus1()+1; p++) 1259 { 1260 pcPic->getPicSym()->getTComTile( p * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + j )-> 1261 setTileHeight( (p+1)*pcPic->getPicSym()->getFrameHeightInCU()/(pcPic->getPicSym()->getNumRowsMinus1()+1) 1262 - (p*pcPic->getPicSym()->getFrameHeightInCU())/(pcPic->getPicSym()->getNumRowsMinus1()+1) ); 1263 } 1264 } 1265 } 1266 else 1267 { 1268 //set the width for each tile 1269 for(j=0; j < pcPic->getPicSym()->getNumRowsMinus1()+1; j++) 1270 { 1271 uiCummulativeTileWidth = 0; 1272 for(p=0; p < pcPic->getPicSym()->getNumColumnsMinus1(); p++) 1273 { 1274 pcPic->getPicSym()->getTComTile( j * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + p )->setTileWidth( pcSlice->getPPS()->getColumnWidth(p) ); 1275 uiCummulativeTileWidth += pcSlice->getPPS()->getColumnWidth(p); 1276 } 1277 pcPic->getPicSym()->getTComTile(j * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + p)->setTileWidth( pcPic->getPicSym()->getFrameWidthInCU()-uiCummulativeTileWidth ); 1278 } 1279 1280 //set the height for each tile 1281 for(j=0; j < pcPic->getPicSym()->getNumColumnsMinus1()+1; j++) 1282 { 1283 uiCummulativeTileHeight = 0; 1284 for(p=0; p < pcPic->getPicSym()->getNumRowsMinus1(); p++) 1285 { 1286 pcPic->getPicSym()->getTComTile( p * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + j )->setTileHeight( pcSlice->getPPS()->getRowHeight(p) ); 1287 uiCummulativeTileHeight += pcSlice->getPPS()->getRowHeight(p); 1288 } 1289 pcPic->getPicSym()->getTComTile(p * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + j)->setTileHeight( pcPic->getPicSym()->getFrameHeightInCU()-uiCummulativeTileHeight ); 1290 } 1291 } 1292 //intialize each tile of the current picture 1293 pcPic->getPicSym()->xInitTiles(); 1237 pcPic->getPicSym()->initTiles(pcSlice->getPPS()); 1294 1238 1295 1239 // Allocate some coders, now we know how many tiles there are. … … 1814 1758 1815 1759 #if SETTING_NO_OUT_PIC_PRIOR 1760 pcSlice->setNoRaslOutputFlag(false); 1816 1761 if (pcSlice->isIRAP()) 1817 1762 { … … 1821 1766 } 1822 1767 //the inference for NoOutputPriorPicsFlag 1768 // KJS: This cannot happen at the encoder 1823 1769 if (!m_bFirst && pcSlice->isIRAP() && pcSlice->getNoRaslOutputFlag()) 1824 1770 { … … 2492 2438 assert (m_iGopSize > 0); 2493 2439 2494 return;2495 }2496 2497 Void TEncGOP::xInitGOP( Int iPOCLast, Int iNumPicRcvd, TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut )2498 {2499 assert( iNumPicRcvd > 0 );2500 // Exception for the first frame2501 if ( iPOCLast == 0 )2502 {2503 m_iGopSize = 1;2504 }2505 else2506 m_iGopSize = m_pcCfg->getGOPSize();2507 2508 assert (m_iGopSize > 0);2509 2510 2440 return; 2511 2441 } -
trunk/source/Lib/TLibEncoder/TEncGOP.h
r1066 r1084 116 116 #endif 117 117 #endif 118 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX119 Int *m_aICEnableCandidate;120 Int *m_aICEnableNum;118 #if H_3D_IC 119 Int* m_aICEnableCandidate; 120 Int* m_aICEnableNum; 121 121 #endif 122 122 //--Adaptive Loop filter … … 200 200 201 201 Void xInitGOP( Int iPOCLast, Int iNumPicRcvd, TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut, bool isField ); 202 Void xInitGOP ( Int iPOC, Int iNumPicRcvd, TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut );203 202 Void xGetBuffer ( TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut, Int iNumPicRcvd, Int iTimeOffset, TComPic*& rpcPic, TComPicYuv*& rpcPicYuvRecOut, Int pocCurr, bool isField ); 204 203 -
trunk/source/Lib/TLibEncoder/TEncSbac.cpp
r1066 r1084 58 58 , m_cCUSplitFlagSCModel ( 1, 1, NUM_SPLIT_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels ) 59 59 , m_cCUSkipFlagSCModel ( 1, 1, NUM_SKIP_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 60 #if MTK_SINGLE_DEPTH_MODE_I009560 #if H_3D_SINGLE_DEPTH 61 61 , m_cCUSingleDepthFlagSCModel ( 1, 1, NUM_SINGLEDEPTH_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 62 62 , m_cSingleDepthValueSCModel ( 1, 1, NUM_SINGLE_DEPTH_VALUE_DATA_CTX , m_contextModels + m_numContextModels, m_numContextModels) … … 134 134 135 135 m_cCUSkipFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SKIP_FLAG ); 136 #if MTK_SINGLE_DEPTH_MODE_I0095136 #if H_3D_SINGLE_DEPTH 137 137 m_cCUSingleDepthFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SINGLEDEPTH_FLAG ); 138 138 m_cSingleDepthValueSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SINGLE_DEPTH_VALUE_DATA ); … … 214 214 curCost = m_cCUSplitFlagSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_SPLIT_FLAG ); 215 215 curCost += m_cCUSkipFlagSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_SKIP_FLAG ); 216 #if MTK_SINGLE_DEPTH_MODE_I0095216 #if H_3D_SINGLE_DEPTH 217 217 curCost += m_cCUSingleDepthFlagSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_SINGLEDEPTH_FLAG ); 218 218 curCost += m_cSingleDepthValueSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_SINGLE_DEPTH_VALUE_DATA ); … … 255 255 curCost += m_CUTransquantBypassFlagSCModel.calcCost( curSliceType, qp, (UChar*)INIT_CU_TRANSQUANT_BYPASS_FLAG ); 256 256 #if H_3D_DIM 257 #if SEPARATE_FLAG_I0085258 257 if( m_pcSlice->getVpsDepthModesFlag() || m_pcSlice->getIVPFlag() ) 259 #else260 if( m_pcSlice->getVpsDepthModesFlag() )261 #endif262 258 { 263 259 curCost += m_cDepthIntraModeSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_DEPTH_INTRA_MODE ); … … 291 287 292 288 m_cCUSkipFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SKIP_FLAG ); 293 #if MTK_SINGLE_DEPTH_MODE_I0095289 #if H_3D_SINGLE_DEPTH 294 290 m_cCUSingleDepthFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SINGLEDEPTH_FLAG ); 295 291 m_cSingleDepthValueSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SINGLE_DEPTH_VALUE_DATA ); … … 454 450 m_pcBinIf->encodeBinsEP( bins, numBins ); 455 451 } 456 #if MTK_SINGLE_DEPTH_MODE_I0095452 #if H_3D_SINGLE_DEPTH 457 453 Void TEncSbac::codeSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx ) 458 454 { … … 462 458 { 463 459 UInt uiUnaryIdx = (UInt) pcCU->getSingleDepthValue(uiAbsPartIdx); 464 UInt uiNumCand = MTK_SINGLE_DEPTH_MODE_CANDIDATE_LIST_SIZE;460 UInt uiNumCand = SINGLE_DEPTH_MODE_CAND_LIST_SIZE; 465 461 if ( uiNumCand > 1 ) 466 462 { … … 563 559 564 560 #endif 565 566 #if !FIX_TICKET_76567 #if H_3D_DIM_SDC568 Void TEncSbac::xCodeSDCResidualData ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiSegment )569 {570 assert( pcCU->getSlice()->getIsDepth() );571 assert( pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2Nx2N );572 assert( pcCU->getSDCFlag(uiAbsPartIdx) );573 assert( uiSegment < 2 );574 575 Pel segmentDCOffset = pcCU->getSDCSegmentDCOffset(uiSegment, uiAbsPartIdx);576 577 UInt uiResidual = segmentDCOffset == 0 ? 0 : 1;578 UInt uiSign = segmentDCOffset < 0 ? 1 : 0;579 UInt uiAbsIdx = abs(segmentDCOffset);580 581 #if H_3D_DIM_DLT582 UInt uiMaxResidualBits = pcCU->getSlice()->getPPS()->getDLT()->getBitsPerDepthValue( pcCU->getSlice()->getLayerIdInVps() );583 #else584 UInt uiMaxResidualBits = g_bitDepthY;585 #endif586 assert( uiMaxResidualBits <= g_bitDepthY );587 588 // residual flag589 m_pcBinIf->encodeBin( uiResidual, m_cSDCResidualFlagSCModel.get( 0, 0, 0 ) );590 #if H_MV_ENC_DEC_TRAC591 DTRACE_CU("sdc_residual_flag[i]", uiResidual)592 #endif593 594 if (uiResidual)595 {596 // encode sign bit of residual597 m_pcBinIf->encodeBinEP( uiSign );598 #if H_MV_ENC_DEC_TRAC599 DTRACE_CU("sdc_residual_sign_flag[i]", uiSign)600 #endif601 #if H_3D_DIM_DLT602 UInt uiNumDepthValues = pcCU->getSlice()->getPPS()->getDLT()->getNumDepthValues( pcCU->getSlice()->getLayerIdInVps() );603 #else604 UInt uiNumDepthValues = ((1 << g_bitDepthY)-1);605 #endif606 607 assert(uiAbsIdx <= uiNumDepthValues);608 609 // encode residual magnitude610 uiAbsIdx -= 1;611 612 #if H_MV_ENC_DEC_TRAC613 DTRACE_CU("sdc_residual_abs_minus1[i]", uiAbsIdx)614 #endif615 616 // prefix part617 if ( uiAbsIdx == 0 )618 {619 m_pcBinIf->encodeBin( 0, m_cSDCResidualSCModel.get(0, 0, 0) );620 }621 else622 {623 UInt l = uiAbsIdx;624 UInt k = 0;625 UInt uiPrefixThreshold = ((uiNumDepthValues * 3) >> 2);626 while ( l > 0 && k < uiPrefixThreshold )627 {628 m_pcBinIf->encodeBin( 1, m_cSDCResidualSCModel.get(0, 0, 0) );629 l--;630 k++;631 }632 if ( uiAbsIdx < uiPrefixThreshold )633 {634 m_pcBinIf->encodeBin( 0, m_cSDCResidualSCModel.get(0, 0, 0) );635 }636 else637 { // suffix part638 uiAbsIdx -= uiPrefixThreshold;639 UInt uiSuffixLength = numBitsForValue(uiNumDepthValues - uiPrefixThreshold);640 UInt uiBitInfo = 0;641 for ( Int i = 0; i < uiSuffixLength; i++)642 {643 uiBitInfo = ( uiAbsIdx & ( 1 << i ) ) >> i;644 m_pcBinIf->encodeBinEP( uiBitInfo);645 }646 }647 }648 649 }650 }651 #endif652 #endif653 561 #endif 654 562 … … 717 625 PartSize eSize = pcCU->getPartitionSize( uiAbsPartIdx ); 718 626 #if H_3D_QTLPC 719 #if MTK_I0099_VPS_EX2720 627 TComVPS *vps = pcCU->getPic()->getSlice(0)->getVPS(); 721 628 Bool bLimQtPredFlag = vps->getLimQtPredFlag(pcCU->getPic()->getSlice(0)->getLayerId()); 722 #else723 TComSPS *sps = pcCU->getPic()->getSlice(0)->getSPS();724 #endif725 629 TComPic *pcTexture = pcCU->getSlice()->getTexturePic(); 726 630 Bool bDepthMapDetect = (pcTexture != NULL); … … 731 635 Bool depthDependent = false; 732 636 UInt uiTexturePart = eSize; 733 #if MTK_I0099_VPS_EX2 734 #if LGE_FCO_I0116637 638 #if H_3D_FCO 735 639 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && bLimQtPredFlag && pcTexture->getReconMark()) 736 640 #else 737 641 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && bLimQtPredFlag ) 738 #endif739 #else740 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && sps->getUseQTL() && sps->getUsePC() )741 642 #endif 742 643 { … … 1097 998 Bool bCodeSplitFlag = true; 1098 999 1099 #if MTK_I0099_VPS_EX21100 1000 TComVPS *vps = pcCU->getPic()->getSlice(0)->getVPS(); 1101 1001 Bool bLimQtPredFlag = vps->getLimQtPredFlag(pcCU->getPic()->getSlice(0)->getLayerId()); 1102 #else1103 TComSPS *sps = pcCU->getPic()->getSlice(0)->getSPS();1104 #endif1105 1002 TComPic *pcTexture = pcCU->getSlice()->getTexturePic(); 1106 1003 Bool bDepthMapDetect = (pcTexture != NULL); … … 1109 1006 Bool rapPic = (pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_W_RADL || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_N_LP || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA); 1110 1007 1111 #if MTK_I0099_VPS_EX2 1112 #if LGE_FCO_I0116 1008 #if H_3D_FCO 1113 1009 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && bLimQtPredFlag && pcTexture->getReconMark() ) 1114 1010 #else 1115 1011 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && bLimQtPredFlag ) 1116 #endif1117 #else1118 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && sps->getUseQTL() && sps->getUsePC())1119 1012 #endif 1120 1013 { … … 1167 1060 dir[j] = pcCU->getLumaIntraDir( absPartIdx+partOffset*j ); 1168 1061 #if H_3D_DIM 1169 #if SEPARATE_FLAG_I00851170 1062 if( pcCU->getSlice()->getVpsDepthModesFlag() || pcCU->getSlice()->getIVPFlag() ) 1171 #else1172 if( pcCU->getSlice()->getVpsDepthModesFlag() )1173 #endif1174 1063 { 1175 1064 codeIntraDepth( pcCU, absPartIdx+partOffset*j ); … … 1317 1206 } 1318 1207 //mode coding 1319 #if SEPARATE_FLAG_I00851320 1208 if( pcCU->getSlice()->getVpsDepthModesFlag() && pcCU->getSlice()->getIVPFlag()) 1321 1209 { 1322 1210 m_pcBinIf->encodeBin( uiCodeIdx == 0 ? 0 : 1, m_cDepthIntraModeSCModel.get( 0, 0, 0 ) ); 1323 1211 } 1324 #else1325 m_pcBinIf->encodeBin( uiCodeIdx == 0 ? 0 : 1, m_cDepthIntraModeSCModel.get( 0, 0, 0 ) );1326 #endif1327 1212 } 1328 1213 } … … 2368 2253 } 2369 2254 2370 #if HS_DMM_SIGNALLING_I01202371 2255 UInt uiNumSegments = isDimMode( pcCU->getLumaIntraDir( absPartIdx ) ) ? 2 : 1; 2372 2256 UInt dimDeltaDC = 1; 2373 #else 2374 UInt uiNumSegments = 0; 2375 UInt dimDeltaDC = 0; 2376 #endif 2377 2378 #if HS_DMM_SIGNALLING_I0120 2257 2379 2258 if( pcCU->isIntra( absPartIdx ) && pcCU->getSDCFlag( absPartIdx )) 2380 2259 { 2381 #else2382 if( pcCU->isIntra( absPartIdx ) )2383 {2384 UInt dir = pcCU->getLumaIntraDir( absPartIdx );2385 uiNumSegments = isDimMode( dir ) ? 2 : 1;2386 2387 if( pcCU->getSDCFlag( absPartIdx ) )2388 {2389 #endif2390 2260 if( uiNumSegments == 1 ) 2391 2261 { … … 2396 2266 dimDeltaDC = ( pcCU->getSDCSegmentDCOffset( 0, absPartIdx ) || pcCU->getSDCSegmentDCOffset( 1, absPartIdx ) ) ? 1 : 0; 2397 2267 } 2398 #if !HS_DMM_SIGNALLING_I01202399 }2400 else2401 {2402 dimDeltaDC = isDimDeltaDC( dir );2403 }2404 #endif2405 2268 m_pcBinIf->encodeBin( dimDeltaDC, m_cDdcFlagSCModel.get( 0, 0, 0 ) ); 2406 2269 } 2407 #if !HS_DMM_SIGNALLING_I01202408 else //all-zero inter SDC is not allowed2409 {2410 uiNumSegments = 1;2411 dimDeltaDC = 1;2412 }2413 #endif2414 2270 2415 2271 if( dimDeltaDC ) … … 2447 2303 Void TEncSbac::codeDBBPFlag( TComDataCU* pcCU, UInt uiAbsPartIdx ) 2448 2304 { 2449 #if SEC_DBBP_EXPLICIT_SIG_I00772450 2305 PartSize ePartSize = pcCU->getPartitionSize( uiAbsPartIdx ); 2451 2306 AOF( ePartSize == SIZE_2NxN || ePartSize == SIZE_Nx2N ); 2452 #endif2453 2307 AOF( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) ); 2454 2308 AOF( !pcCU->getSlice()->getIsDepth() ); -
trunk/source/Lib/TLibEncoder/TEncSbac.h
r1039 r1084 130 130 Void xCodeDmm1WedgeIdx ( UInt uiTabIdx, Int iNumBit ); 131 131 #endif 132 #if !FIX_TICKET_76133 #if H_3D_DIM_SDC134 Void xCodeSDCResidualData ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiSegment );135 #endif136 #endif137 132 #endif 138 133 … … 155 150 Void codeCUTransquantBypassFlag( TComDataCU* pcCU, UInt uiAbsPartIdx ); 156 151 Void codeSkipFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 157 #if MTK_SINGLE_DEPTH_MODE_I0095152 #if H_3D_SINGLE_DEPTH 158 153 Void codeSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx ); 159 154 #endif … … 224 219 ContextModel3DBuffer m_cCUSplitFlagSCModel; 225 220 ContextModel3DBuffer m_cCUSkipFlagSCModel; 226 #if MTK_SINGLE_DEPTH_MODE_I0095221 #if H_3D_SINGLE_DEPTH 227 222 ContextModel3DBuffer m_cCUSingleDepthFlagSCModel; 228 223 ContextModel3DBuffer m_cSingleDepthValueSCModel; -
trunk/source/Lib/TLibEncoder/TEncSearch.cpp
r1066 r1084 915 915 } 916 916 m_pcEntropyCoder->encodeSkipFlag( pcCU, 0, true ); 917 #if MTK_SINGLE_DEPTH_MODE_I0095917 #if H_3D_SINGLE_DEPTH 918 918 m_pcEntropyCoder->encodeSingleDepthMode(pcCU, 0, true ); 919 919 if(!pcCU->getSingleDepthFlag(uiAbsPartIdx)) … … 921 921 m_pcEntropyCoder->encodePredMode( pcCU, 0, true ); 922 922 } 923 #if MTK_SINGLE_DEPTH_MODE_I0095923 #if H_3D_SINGLE_DEPTH 924 924 else 925 925 { … … 927 927 } 928 928 #endif 929 #if MTK_SINGLE_DEPTH_MODE_I0095929 #if H_3D_SINGLE_DEPTH 930 930 if(!pcCU->getSingleDepthFlag(uiAbsPartIdx)) 931 931 { … … 945 945 } 946 946 } 947 #if MTK_SINGLE_DEPTH_MODE_I0095948 } 949 #endif 950 } 951 #if MTK_SINGLE_DEPTH_MODE_I0095947 #if H_3D_SINGLE_DEPTH 948 } 949 #endif 950 } 951 #if H_3D_SINGLE_DEPTH 952 952 if(!pcCU->getSingleDepthFlag(uiAbsPartIdx)) 953 953 { … … 995 995 } 996 996 } 997 #if MTK_SINGLE_DEPTH_MODE_I0095997 #if H_3D_SINGLE_DEPTH 998 998 } 999 999 #endif … … 1859 1859 dRDCost += dSingleCost; 1860 1860 } 1861 #if MTK_SINGLE_DEPTH_MODE_I00951861 #if H_3D_SINGLE_DEPTH 1862 1862 Void TEncSearch::xIntraCodingSingleDepth( TComDataCU* pcCU, UInt uiAbsPartIdx, TComYuv* pcOrgYuv, TComYuv* pcPredYuv, Dist& ruiDist, Double& dRDCost, Int iTestDepthIdx, Pel *DepthNeighbor ) 1863 1863 { … … 1970 1970 UInt dimType = getDimType ( uiLumaPredMode ); 1971 1971 UInt patternID = pcCU->getDmmWedgeTabIdx(dimType, uiAbsPartIdx); 1972 #if SHARP_DMM1_I01101973 1972 UInt uiBaseWidth = pcCU->isDMM1UpscaleMode(uiWidth) ? pcCU->getDMM1BasePatternWidth(uiWidth) : uiWidth; 1974 1973 if ( patternID >= g_dmmWedgeLists[g_aucConvertToBit[uiBaseWidth]].size() && dimType == DMM1_IDX ) 1975 #else 1976 if ( patternID >= g_dmmWedgeLists[g_aucConvertToBit[uiWidth]].size() && dimType == DMM1_IDX ) 1977 #endif 1978 { 1979 #if SHARP_DMM1_I0110 1974 { 1980 1975 if (g_aucConvertToBit[uiBaseWidth] == 2) // Encoder method. Avoid DMM1 pattern list index exceeds the maximum DMM1 pattern number when SDC split is used. 1981 #else1982 if (g_aucConvertToBit[uiWidth] == 2) // Encoder method. Avoid DMM1 pattern list index exceeds the maximum DMM1 pattern number when SDC split is used.1983 #endif1984 1976 { 1985 1977 patternID = 1349; // Split 32x32 to 16x16. 1349: Maximum DMM1 pattern number when block size is 16x16 … … 2043 2035 Int uiTabIdx = pcCU->getDmmWedgeTabIdx(DMM1_IDX, uiAbsPartIdx); 2044 2036 2045 #if SHARP_DMM1_I01102046 2037 WedgeList* pacWedgeList = pcCU->isDMM1UpscaleMode( uiWidth ) ? &g_dmmWedgeLists[(g_aucConvertToBit[pcCU->getDMM1BasePatternWidth(uiWidth)])] : &g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])]; 2047 #else2048 WedgeList* pacWedgeList = &g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])];2049 #endif2050 2038 TComWedgelet* pcWedgelet = &(pacWedgeList->at( uiTabIdx )); 2051 2039 2052 2040 uiNumSegments = 2; 2053 #if SHARP_DMM1_I01102054 2041 pbMask = pcCU->isDMM1UpscaleMode( uiWidth ) ? pcWedgelet->getScaledPattern( uiWidth ) : pcWedgelet->getPattern(); 2055 2042 uiMaskStride = pcCU->isDMM1UpscaleMode( uiWidth ) ? uiWidth : pcWedgelet->getStride(); 2056 #else2057 pbMask = pcWedgelet->getPattern();2058 uiMaskStride = pcWedgelet->getStride();2059 #endif2060 2043 } 2061 2044 if( getDimType( uiLumaPredMode ) == DMM4_IDX ) … … 2878 2861 pcCU->setChromIntraDirSubParts( uiBestMode, 0, pcCU->getDepth( 0 ) ); 2879 2862 } 2880 #if MTK_SINGLE_DEPTH_MODE_I00952863 #if H_3D_SINGLE_DEPTH 2881 2864 Void 2882 2865 TEncSearch::estIntraPredSingleDepth( TComDataCU* pcCU, … … 2900 2883 Pel DepthNeighbours[5]; 2901 2884 //construction of depth candidates 2902 for( Int i = 0; (i < 5) && (index< MTK_SINGLE_DEPTH_MODE_CANDIDATE_LIST_SIZE) ; i++ )2885 for( Int i = 0; (i < 5) && (index<SINGLE_DEPTH_MODE_CAND_LIST_SIZE) ; i++ ) 2903 2886 { 2904 2887 if(!pcCU->getNeighDepth (0, 0, &testDepth, i)) … … 2983 2966 UInt& ruiDistC, 2984 2967 Bool bLumaOnly 2985 #if H HI_DMM4_ENC_I00662968 #if H_3D_DIM 2986 2969 , Bool bOnlyIVP 2987 2970 #endif … … 3032 3015 Int numModesForFullRD = g_aucIntraModeNumFast[ uiWidthBit ]; 3033 3016 3034 #if H HI_DMM4_ENC_I00663017 #if H_3D_DIM 3035 3018 if( bOnlyIVP ) 3036 3019 { … … 3080 3063 UInt iModeBits = xModeBitsIntra( pcCU, uiMode, uiPU, uiPartOffset, uiDepth, uiInitTrDepth ); 3081 3064 #if H_3D_VSO // M35 3082 #if H_3D_VSO_FIX // This fix should be enabled after verification3083 3065 Double dLambda; 3084 3066 if ( m_pcRdCost->getUseLambdaScaleVSO() ) … … 3092 3074 3093 3075 Double cost = (Double)uiSad + (Double)iModeBits * dLambda; 3094 #else3095 Double cost = (Double)uiSad + (Double)iModeBits * m_pcRdCost->getSqrtLambda();3096 #endif3097 3076 #else 3098 3077 Double cost = (Double)uiSad + (Double)iModeBits * m_pcRdCost->getSqrtLambda(); … … 3135 3114 } 3136 3115 } 3137 #if H HI_DMM4_ENC_I00663116 #if H_3D_DIM 3138 3117 } 3139 3118 #endif … … 3143 3122 if( m_pcEncCfg->getIsDepth() && uiWidth >= DIM_MIN_SIZE && uiWidth <= DIM_MAX_SIZE && uiWidth == uiHeight ) 3144 3123 { 3145 #if HHI_DMM4_ENC_I00663146 #if SEPARATE_FLAG_I00853147 3124 if( bOnlyIVP && m_pcEncCfg->getUseIVP() ) 3148 #else3149 if( bOnlyIVP )3150 #endif3151 3125 { 3152 3126 TComWedgelet* dmm4Segmentation = new TComWedgelet( uiWidth, uiHeight ); … … 3158 3132 pcCU->setDimDeltaDC( DMM4_IDX, 1, uiPartOffset, deltaDC2 ); 3159 3133 3160 #if HS_DMM_SIGNALLING_I01203161 3134 uiRdModeList[ numModesForFullRD++ ] = (DMM4_IDX+DIM_OFFSET); 3162 #else3163 uiRdModeList[ numModesForFullRD++ ] = (2*DMM4_IDX +DIM_OFFSET);3164 if( deltaDC1 != 0 || deltaDC2 != 0 )3165 uiRdModeList[ numModesForFullRD++ ] = (2*DMM4_IDX+1+DIM_OFFSET);3166 #endif3167 3135 dmm4Segmentation->destroy(); delete dmm4Segmentation; 3168 3136 } 3169 3137 else 3170 3138 { 3171 #endif3172 3139 #if H_3D_FAST_DEPTH_INTRA 3173 3140 Int threshold = max(((pcCU->getQP(0))>>3)-1,3); … … 3177 3144 3178 3145 #if H_3D_DIM_DMM 3179 #if SEPARATE_FLAG_I00853180 3146 if( ( m_pcEncCfg->getUseDMM() || m_pcEncCfg->getUseIVP() ) 3181 #else3182 if( m_pcEncCfg->getUseDMM()3183 #endif3184 3147 #if H_3D_FAST_DEPTH_INTRA 3185 3148 && (uiRdModeList[0] != PLANAR_IDX || varCU >= varThreshold) … … 3187 3150 ) 3188 3151 { 3189 #if SEPARATE_FLAG_I00853190 3152 UInt uiStart, uiEnd; 3191 3153 if( m_pcEncCfg->getUseDMM() && m_pcEncCfg->getUseIVP() ) … … 3210 3172 } 3211 3173 for( UInt dmmType = uiStart; dmmType < uiEnd; dmmType++ ) 3212 #else3213 for( UInt dmmType = 0; dmmType < DMM_NUM_TYPE; dmmType++ )3214 #endif3215 3174 { 3216 3175 #if H_3D_FCO 3217 3176 TComPic* picTexture = pcCU->getSlice()->getIvPic(false, pcCU->getSlice()->getViewIndex() ); 3218 #if LGE_FCO_I01163177 #if H_3D_FCO 3219 3178 if ( !picTexture->getReconMark() && (DMM4_IDX == dmmType ) ) 3220 3179 #else … … 3234 3193 xSearchDmm1Wedge( pcCU, uiPartOffset, piOrg, uiStride, uiWidth, uiHeight, uiTabIdx ); 3235 3194 pcCU->setDmmWedgeTabIdxSubParts( uiTabIdx, dmmType, uiPartOffset, uiDepth + uiInitTrDepth ); 3236 #if SHARP_DMM1_I01103237 3195 biSegmentation = pcCU->isDMM1UpscaleMode( uiWidth ) ? 3238 3196 &(g_dmmWedgeLists[(g_aucConvertToBit[pcCU->getDMM1BasePatternWidth(uiWidth)])][uiTabIdx]) : &(g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])][uiTabIdx]); 3239 #else3240 biSegmentation = &(g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])][uiTabIdx]);3241 #endif3242 3197 } break; 3243 3198 … … 3254 3209 if( biSegmentation ) 3255 3210 { 3256 #if SHARP_DMM1_I01103257 3211 if( dmmType == DMM1_IDX && pcCU->isDMM1UpscaleMode( uiWidth ) ){ 3258 3212 xSearchDmmDeltaDCs( pcCU, uiPartOffset, piOrg, piPred, uiStride, biSegmentation->getScaledPattern(uiWidth), uiWidth, uiWidth, uiHeight, deltaDC1, deltaDC2 ); … … 3262 3216 xSearchDmmDeltaDCs( pcCU, uiPartOffset, piOrg, piPred, uiStride, biSegmentation->getPattern(), biSegmentation->getStride(), uiWidth, uiHeight, deltaDC1, deltaDC2 ); 3263 3217 } 3264 #else3265 xSearchDmmDeltaDCs( pcCU, uiPartOffset, piOrg, piPred, uiStride, biSegmentation->getPattern(), biSegmentation->getStride(), uiWidth, uiHeight, deltaDC1, deltaDC2 );3266 #endif3267 3218 pcCU->setDimDeltaDC( dmmType, 0, uiPartOffset, deltaDC1 ); 3268 3219 pcCU->setDimDeltaDC( dmmType, 1, uiPartOffset, deltaDC2 ); 3269 3220 3270 #if HS_DMM_SIGNALLING_I01203271 3221 uiRdModeList[ numModesForFullRD++ ] = (dmmType +DIM_OFFSET); 3272 #else3273 uiRdModeList[ numModesForFullRD++ ] = (2*dmmType +DIM_OFFSET);3274 #if HHI_DMM4_ENC_I00663275 if( deltaDC1 != 0 || deltaDC2 != 0 )3276 #endif3277 uiRdModeList[ numModesForFullRD++ ] = (2*dmmType+1+DIM_OFFSET);3278 #endif3279 3280 3222 if( DMM4_IDX == dmmType ) { biSegmentation->destroy(); delete biSegmentation; } 3281 3223 } 3282 3224 } 3283 3225 } 3284 #if H HI_DMM4_ENC_I00663226 #if H_3D_DIM 3285 3227 } 3286 3228 #endif … … 3295 3237 3296 3238 UInt uiBestPUMode = 0; 3297 #if SCU_HS_FAST_INTRA_SDC_I01233239 #if H_3D_FAST_INTRA_SDC 3298 3240 UInt uiBestPUModeConv = 0; 3299 3241 UInt uiSecondBestPUModeConv = 0; … … 3309 3251 Double dBestPUCost = MAX_DOUBLE; 3310 3252 3311 #if SCU_HS_FAST_INTRA_SDC_I01233253 #if H_3D_FAST_INTRA_SDC 3312 3254 Double dBestPUCostConv = MAX_DOUBLE; 3313 3255 UInt varCU = m_pcRdCost->calcVAR(piOrg, uiStride, uiWidth,uiHeight,pcCU->getDepth(0)); … … 3319 3261 Pel apBestDCOffsets[2] = {0,0}; 3320 3262 #endif 3321 #if SCU_HS_FAST_INTRA_SDC_I01233263 #if H_3D_FAST_INTRA_SDC 3322 3264 for( UInt uiMode = 0; uiMode < numModesForFullRD + rdSDC; uiMode++ ) 3323 3265 #else … … 3326 3268 { 3327 3269 // set luma prediction mode 3328 #if ! SCU_HS_FAST_INTRA_SDC_I01233270 #if !H_3D_FAST_INTRA_SDC 3329 3271 UInt uiOrgMode = uiRdModeList[uiMode]; 3330 3272 #endif 3331 3273 3332 #if SCU_HS_FAST_INTRA_SDC_I01233274 #if H_3D_FAST_INTRA_SDC 3333 3275 UInt uiOrgMode; 3334 3276 if (uiMode < numModesForFullRD) … … 3356 3298 3357 3299 #if H_3D_DIM_SDC 3358 #if SCU_HS_FAST_INTRA_SDC_I01233300 #if H_3D_FAST_INTRA_SDC 3359 3301 Bool bTestSDC = ( m_pcEncCfg->getUseSDC() && pcCU->getSDCAvailable(uiPartOffset) && uiMode >= numModesForFullRD); 3360 3302 #else … … 3364 3306 for( UInt uiSDC=0; uiSDC<=(bTestSDC?1:0); uiSDC++ ) 3365 3307 { 3366 #if SCU_HS_FAST_INTRA_SDC_I01233308 #if H_3D_FAST_INTRA_SDC 3367 3309 if (!uiSDC && uiMode >= numModesForFullRD) continue; 3368 3310 #endif 3369 3311 pcCU->setSDCFlagSubParts( (uiSDC != 0), uiPartOffset, uiDepth + uiInitTrDepth ); 3370 #if FAST_SDC_OFFSET_DECISION_I00843371 3312 Double dOffsetCost[3] = {MAX_DOUBLE,MAX_DOUBLE,MAX_DOUBLE}; 3372 3313 for( Int iOffset = 1; iOffset <= 5; iOffset++ ) 3373 #else 3374 for( Int iSDCDeltaResi = -2; iSDCDeltaResi <= 2; iSDCDeltaResi++ ) 3375 #endif 3376 { 3377 #if FAST_SDC_OFFSET_DECISION_I0084 3314 { 3378 3315 Int iSDCDeltaResi = 0; 3379 3316 if(iOffset % 2 == 0) … … 3385 3322 iSDCDeltaResi = -1 * (iOffset >> 1); 3386 3323 } 3387 #endif3388 3324 if( ( uiSDC == 0 ) && iSDCDeltaResi != 0 ) 3389 3325 { 3390 3326 continue; 3391 3327 } 3392 #if FAST_SDC_OFFSET_DECISION_I00843393 3328 if( iOffset > 3) 3394 3329 { … … 3407 3342 } 3408 3343 #endif 3409 #endif3410 3344 3411 3345 #if H_3D_DIM_ENC || H_3D_DIM_SDC … … 3452 3386 // start encoding with SDC 3453 3387 xIntraCodingSDC(pcCU, uiPartOffset, pcOrgYuv, pcPredYuv, uiPUDistY, dPUCost, ( testZeroResi != 0 ), iSDCDeltaResi ); 3454 #if FAST_SDC_OFFSET_DECISION_I00843455 3388 if ( testZeroResi == 0 && iOffset <= 3 ) 3456 3389 { 3457 3390 dOffsetCost [iOffset -1] = dPUCost; 3458 3391 } 3459 #endif3460 3392 } 3461 3393 else … … 3465 3397 #if H_3D_DIM_ENC 3466 3398 xRecurIntraCodingQT( pcCU, uiInitTrDepth, uiPartOffset, bLumaOnly, pcOrgYuv, pcPredYuv, pcResiYuv, uiPUDistY, uiPUDistC, true, dPUCost, (testZeroResi != 0) ); 3467 #if SCU_HS_FAST_INTRA_SDC_I01233399 #if H_3D_FAST_INTRA_SDC 3468 3400 if( dPUCost < dBestPUCostConv ) 3469 3401 { … … 4017 3949 #if H_3D_VSP 4018 3950 , Int* vspFlag 4019 #if !FIX_TICKET_794020 , InheritedVSPDisInfo* inheritedVSPDisInfo4021 #endif4022 3951 #endif 4023 3952 #if H_3D_SPIVMP … … 4079 4008 pcCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, numValidMergeCand); 4080 4009 pcCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours 4081 #if H_3D_VSP && !FIX_TICKET_794082 , inheritedVSPDisInfo4083 #endif4084 4010 #if H_3D_SPIVMP 4085 4011 , pcMvFieldSP, puhInterDirSP … … 4109 4035 pcCU->getInterMergeCandidates( uiAbsPartIdx, iPUIdx, cMvFieldNeighbours,uhInterDirNeighbours, numValidMergeCand); 4110 4036 pcCU->xGetInterMergeCandidates( uiAbsPartIdx, iPUIdx, cMvFieldNeighbours, uhInterDirNeighbours 4111 #if H_3D_VSP && !FIX_TICKET_794112 , inheritedVSPDisInfo4113 #endif4114 4037 #if H_3D_SPIVMP 4115 4038 , pcMvFieldSP, puhInterDirSP … … 4132 4055 #endif 4133 4056 } 4134 #if H_3D_VSP && !FIX_TICKET_754135 xRestrictBipredMergeCand( pcCU, iPUIdx, cMvFieldNeighbours, uhInterDirNeighbours,vspFlag, numValidMergeCand );4136 #else4137 4057 xRestrictBipredMergeCand( pcCU, iPUIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand ); 4138 #endif4139 4058 4140 4059 #if H_3D_DBBP … … 4164 4083 #if H_3D_VSP 4165 4084 pcCU->setVSPFlagSubParts( vspFlag[uiMergeCand], uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ) ); 4166 #if !FIX_TICKET_794167 pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeCand].m_acDvInfo, uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ) );4168 #endif4169 4085 #endif 4170 4086 … … 4266 4182 * \returns Void 4267 4183 */ 4268 #if H_3D_VSP && !FIX_TICKET_754269 Void TEncSearch::xRestrictBipredMergeCand( TComDataCU* pcCU, UInt puIdx, TComMvField* mvFieldNeighbours, UChar* interDirNeighbours, Int* vspFlag, Int numValidMergeCand )4270 #else4271 4184 Void TEncSearch::xRestrictBipredMergeCand( TComDataCU* pcCU, UInt puIdx, TComMvField* mvFieldNeighbours, UChar* interDirNeighbours, Int numValidMergeCand ) 4272 #endif4273 4185 { 4274 4186 if ( pcCU->isBipredRestriction(puIdx) ) … … 4276 4188 for( UInt mergeCand = 0; mergeCand < numValidMergeCand; ++mergeCand ) 4277 4189 { 4278 #if H_3D_VSP && !FIX_TICKET_754279 if ( (interDirNeighbours[mergeCand] == 3) && (vspFlag[mergeCand] == false) )4280 #else4281 4190 if ( interDirNeighbours[mergeCand] == 3 ) 4282 #endif4283 4191 { 4284 4192 interDirNeighbours[mergeCand] = 1; … … 4902 4810 Int vspFlag[MRG_MAX_NUM_CANDS_MEM]; 4903 4811 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 4904 #if !FIX_TICKET_794905 InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM];4906 #endif4907 4812 UInt uiAbsPartIdx = 0; 4908 4813 Int iWidth = 0; … … 4922 4827 #if H_3D_VSP 4923 4828 , vspFlag 4924 #if !FIX_TICKET_794925 , inheritedVSPDisInfo4926 #endif4927 4829 #endif 4928 4830 #if H_3D_SPIVMP … … 4938 4840 #if H_3D_VSP 4939 4841 pcCU->setVSPFlagSubParts( vspFlag[uiMRGIndex], uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) ); 4940 #if !FIX_TICKET_794941 pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMRGIndex].m_acDvInfo, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) );4942 #endif4943 4842 #endif 4944 4843 #if H_3D_DDD … … 6430 6329 if( bCodeChroma ) 6431 6330 { 6331 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6332 m_pcEntropyCoder->resetBits(); 6432 6333 m_pcEntropyCoder->encodeQtCbf ( pcCU, uiAbsPartIdx, TEXT_CHROMA_U, uiTrMode ); 6433 6334 m_pcEntropyCoder->encodeCoeffNxN( pcCU, pcCoeffCurrU, uiAbsPartIdx, trWidthC, trHeightC, uiDepth, TEXT_CHROMA_U ); 6434 uiSingleBitsU = m_pcEntropyCoder->getNumberOfWrittenBits() - uiSingleBitsY;6335 uiSingleBitsU = m_pcEntropyCoder->getNumberOfWrittenBits(); 6435 6336 6337 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6338 m_pcEntropyCoder->resetBits(); 6436 6339 m_pcEntropyCoder->encodeQtCbf ( pcCU, uiAbsPartIdx, TEXT_CHROMA_V, uiTrMode ); 6437 6340 m_pcEntropyCoder->encodeCoeffNxN( pcCU, pcCoeffCurrV, uiAbsPartIdx, trWidthC, trHeightC, uiDepth, TEXT_CHROMA_V ); 6438 uiSingleBitsV = m_pcEntropyCoder->getNumberOfWrittenBits() - ( uiSingleBitsY + uiSingleBitsU );6341 uiSingleBitsV = m_pcEntropyCoder->getNumberOfWrittenBits(); 6439 6342 } 6440 6343 … … 6517 6420 const Double singleCostY = m_pcRdCost->calcRdCost( uiSingleBitsY, uiNonzeroDistY ); 6518 6421 #endif 6422 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6423 6519 6424 m_pcEntropyCoder->resetBits(); 6520 6425 m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_LUMA, uiTrMode ); … … 6550 6455 else if( checkTransformSkipY ) 6551 6456 { 6457 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6552 6458 m_pcEntropyCoder->resetBits(); 6553 6459 m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_LUMA, uiTrMode ); … … 6606 6512 { 6607 6513 const Double dSingleCostU = m_pcRdCost->calcRdCost( uiSingleBitsU, uiNonzeroDistU ); 6514 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6608 6515 m_pcEntropyCoder->resetBits(); 6609 6516 m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_CHROMA_U, uiTrMode ); … … 6631 6538 else if( checkTransformSkipUV ) 6632 6539 { 6540 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6633 6541 m_pcEntropyCoder->resetBits(); 6634 6542 m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_CHROMA_U, uiTrMode ); … … 6675 6583 { 6676 6584 const Double dSingleCostV = m_pcRdCost->calcRdCost( uiSingleBitsV, uiNonzeroDistV ); 6585 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6677 6586 m_pcEntropyCoder->resetBits(); 6678 6587 m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_CHROMA_V, uiTrMode ); … … 6700 6609 else if( checkTransformSkipUV ) 6701 6610 { 6611 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6702 6612 m_pcEntropyCoder->resetBits(); 6703 6613 m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_CHROMA_V, uiTrMode ); … … 6896 6806 pcCU->setCbfSubParts( uiAbsSumTransformSkipV ? uiSetCbf : 0, TEXT_CHROMA_V, uiAbsPartIdx, pcCU->getDepth(0)+uiTrModeC ); 6897 6807 6898 m_pcEntropyCoder->resetBits();6899 6808 uiSingleBitsU = 0; 6900 6809 uiSingleBitsV = 0; … … 6902 6811 if( uiAbsSumTransformSkipU ) 6903 6812 { 6813 m_pcEntropyCoder->resetBits(); 6904 6814 m_pcEntropyCoder->encodeQtCbf ( pcCU, uiAbsPartIdx, TEXT_CHROMA_U, uiTrMode ); 6905 6815 m_pcEntropyCoder->encodeCoeffNxN( pcCU, pcCoeffCurrU, uiAbsPartIdx, trWidthC, trHeightC, uiDepth, TEXT_CHROMA_U ); … … 6944 6854 if( uiAbsSumTransformSkipV ) 6945 6855 { 6856 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6857 m_pcEntropyCoder->resetBits(); 6946 6858 m_pcEntropyCoder->encodeQtCbf ( pcCU, uiAbsPartIdx, TEXT_CHROMA_V, uiTrMode ); 6947 6859 m_pcEntropyCoder->encodeCoeffNxN( pcCU, pcCoeffCurrV, uiAbsPartIdx, trWidthC, trHeightC, uiDepth, TEXT_CHROMA_V ); 6948 uiSingleBitsV = m_pcEntropyCoder->getNumberOfWrittenBits() - uiSingleBitsU;6860 uiSingleBitsV = m_pcEntropyCoder->getNumberOfWrittenBits(); 6949 6861 6950 6862 curChromaQpOffset = pcCU->getSlice()->getPPS()->getChromaCrQpOffset() + pcCU->getSlice()->getSliceQpDeltaCr(); … … 7388 7300 } 7389 7301 m_pcEntropyCoder->encodeSkipFlag ( pcCU, 0, true ); 7390 #if MTK_SINGLE_DEPTH_MODE_I00957302 #if H_3D_SINGLE_DEPTH 7391 7303 m_pcEntropyCoder->encodeSingleDepthMode ( pcCU, 0, true ); 7392 7304 #endif … … 7845 7757 7846 7758 Pel refDC1 = 0; Pel refDC2 = 0; 7847 #if SHARP_DMM1_I01107848 7759 WedgeList* pacWedgeList = pcCU->isDMM1UpscaleMode( uiWidth ) ? &g_dmmWedgeLists[(g_aucConvertToBit[pcCU->getDMM1BasePatternWidth(uiWidth)])] : &g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])]; 7849 7760 WedgeNodeList* pacWedgeNodeList = pcCU->isDMM1UpscaleMode( uiWidth ) ? &g_dmmWedgeNodeLists[(g_aucConvertToBit[pcCU->getDMM1BasePatternWidth(uiWidth)])] : &g_dmmWedgeNodeLists[(g_aucConvertToBit[uiWidth])]; 7850 #else7851 WedgeList* pacWedgeList = &g_dmmWedgeLists [(g_aucConvertToBit[uiWidth])];7852 WedgeNodeList* pacWedgeNodeList = &g_dmmWedgeNodeLists[(g_aucConvertToBit[uiWidth])];7853 #endif7854 7761 7855 7762 // coarse wedge search … … 7859 7766 { 7860 7767 TComWedgelet* pcWedgelet = &(pacWedgeList->at(pacWedgeNodeList->at(uiNodeId).getPatternIdx())); 7861 #if SHARP_DMM1_I01107862 7768 Bool *pbPattern = pcCU->isDMM1UpscaleMode(uiWidth) ? pcWedgelet->getScaledPattern(uiWidth) : pcWedgelet->getPattern(); 7863 7769 UInt uiStride = pcCU->isDMM1UpscaleMode(uiWidth) ? uiWidth : pcWedgelet->getStride(); 7864 7770 xCalcBiSegDCs ( piRef, uiRefStride, pbPattern, uiStride, refDC1, refDC2 ); 7865 7771 xAssignBiSegDCs( piPred, uiPredStride, pbPattern, uiStride, refDC1, refDC2 ); 7866 #else7867 xCalcBiSegDCs ( piRef, uiRefStride, pcWedgelet->getPattern(), pcWedgelet->getStride(), refDC1, refDC2 );7868 xAssignBiSegDCs( piPred, uiPredStride, pcWedgelet->getPattern(), pcWedgelet->getStride(), refDC1, refDC2 );7869 #endif7870 7772 7871 7773 Dist uiActDist = RDO_DIST_MAX; … … 7903 7805 { 7904 7806 TComWedgelet* pcWedgelet = &(pacWedgeList->at(pacWedgeNodeList->at(uiBestNodeId).getRefineIdx( uiRefId ))); 7905 #if SHARP_DMM1_I01107906 7807 Bool *pbPattern = pcCU->isDMM1UpscaleMode(uiWidth) ? pcWedgelet->getScaledPattern(uiWidth) : pcWedgelet->getPattern(); 7907 7808 UInt uiStride = pcCU->isDMM1UpscaleMode(uiWidth) ? uiWidth : pcWedgelet->getStride(); 7908 7809 xCalcBiSegDCs ( piRef, uiRefStride, pbPattern, uiStride, refDC1, refDC2 ); 7909 7810 xAssignBiSegDCs( piPred, uiPredStride, pbPattern, uiStride, refDC1, refDC2 ); 7910 #else7911 xCalcBiSegDCs ( piRef, uiRefStride, pcWedgelet->getPattern(), pcWedgelet->getStride(), refDC1, refDC2 );7912 xAssignBiSegDCs( piPred, uiPredStride, pcWedgelet->getPattern(), pcWedgelet->getStride(), refDC1, refDC2 );7913 #endif7914 7811 Dist uiActDist = RDO_DIST_MAX; 7915 7812 #if H_3D_VSO -
trunk/source/Lib/TLibEncoder/TEncSearch.h
r1039 r1084 181 181 UInt& ruiDistC, 182 182 Bool bLumaOnly 183 #if H HI_DMM4_ENC_I0066183 #if H_3D_DIM 184 184 , Bool bOnlyIVP 185 185 #endif … … 191 191 TComYuv* pcRecoYuv, 192 192 UInt uiPreCalcDistC ); 193 #if MTK_SINGLE_DEPTH_MODE_I0095193 #if H_3D_SINGLE_DEPTH 194 194 Void estIntraPredSingleDepth ( TComDataCU* pcCU, 195 195 TComYuv* pcOrgYuv, … … 354 354 UInt uiAbsPartIdx, 355 355 UInt stateU0V1Both2 ); 356 #if MTK_SINGLE_DEPTH_MODE_I0095356 #if H_3D_SINGLE_DEPTH 357 357 Void xIntraCodingSingleDepth( TComDataCU* pcCU, UInt uiAbsPartIdx, TComYuv* pcOrgYuv, TComYuv* pcPredYuv, Dist& ruiDist, Double& dRDCost, Int iTestDepthIdx, Pel * DepthNeighbor ); 358 358 #endif … … 429 429 #if H_3D_VSP 430 430 , Int* vspFlag 431 #if !FIX_TICKET_79432 , InheritedVSPDisInfo* inheritedVSPDisInfo433 #endif434 431 #endif 435 432 #if H_3D_SPIVMP … … 443 440 TComMvField* mvFieldNeighbours, 444 441 UChar* interDirNeighbours, 445 #if H_3D_VSP && !FIX_TICKET_75446 Int* vspFlag,447 #endif448 442 Int numValidMergeCand ); 449 443 -
trunk/source/Lib/TLibEncoder/TEncTop.cpp
r1066 r1084 72 72 ContextModel::buildNextStateTable(); 73 73 #endif 74 #if H_MV_HLS10_GEN_FIX75 74 #if H_MV 76 75 m_iNumSubstreams = 0; 77 #endif78 76 #endif 79 77 … … 89 87 m_ivPicLists = NULL; 90 88 #endif 91 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX89 #if H_3D_IC 92 90 m_aICEnableCandidate = NULL; 93 91 m_aICEnableNum = NULL; … … 236 234 for (Int iCIIdx = 0; iCIIdx < CI_NUM; iCIIdx ++ ) 237 235 { 238 #if H_MV_HLS10_GEN_FIX239 236 #if H_MV 240 237 xDelete( false, m_pppcRDSbacCoder, iDepth, iCIIdx); … … 244 241 delete m_pppcBinCoderCABAC[iDepth][iCIIdx]; 245 242 #endif 246 #endif247 243 } 248 244 } … … 250 246 for ( iDepth = 0; iDepth < g_uiMaxCUDepth+1; iDepth++ ) 251 247 { 252 #if H_MV_HLS10_GEN_FIX253 248 #if H_MV 254 249 xDelete( true, m_pppcRDSbacCoder , iDepth); … … 258 253 delete [] m_pppcBinCoderCABAC[iDepth]; 259 254 #endif 260 #endif 261 } 262 263 #if H_MV_HLS10_GEN_FIX 255 } 256 264 257 #if H_MV 265 258 xDelete( true, m_pppcRDSbacCoder ); … … 269 262 delete [] m_pppcBinCoderCABAC; 270 263 #endif 271 #endif272 264 for ( UInt ui = 0; ui < m_iNumSubstreams; ui++ ) 273 265 { … … 276 268 for (Int iCIIdx = 0; iCIIdx < CI_NUM; iCIIdx ++ ) 277 269 { 278 #if H_MV_HLS10_GEN_FIX279 270 #if H_MV 280 271 xDelete(false, m_ppppcRDSbacCoders ,ui, iDepth, iCIIdx); … … 284 275 delete m_ppppcBinCodersCABAC[ui][iDepth][iCIIdx]; 285 276 #endif 286 #endif287 277 } 288 278 } … … 290 280 for ( iDepth = 0; iDepth < g_uiMaxCUDepth+1; iDepth++ ) 291 281 { 292 #if H_MV_HLS10_GEN_FIX293 282 #if H_MV 294 283 xDelete(true, m_ppppcRDSbacCoders ,ui, iDepth); … … 298 287 delete [] m_ppppcBinCodersCABAC[ui][iDepth]; 299 288 #endif 300 #endif 301 } 302 303 304 #if H_MV_HLS10_GEN_FIX 289 } 290 291 305 292 #if H_MV 306 293 xDelete(true, m_ppppcRDSbacCoders, ui); … … 310 297 delete[] m_ppppcBinCodersCABAC[ui]; 311 298 #endif 312 #endif 313 } 314 #if H_MV_HLS10_GEN_FIX 299 } 315 300 #if H_MV 316 301 xDelete(true, m_ppppcRDSbacCoders ) ; … … 332 317 delete[] m_pcRdCosts; 333 318 #endif 334 #endif335 319 336 320 #if !H_MV … … 370 354 371 355 xInitPPSforTiles(); 372 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX356 #if H_3D_IC 373 357 m_aICEnableCandidate = new Int[ 10 ]; 374 358 m_aICEnableNum = new Int[ 10 ]; … … 769 753 #if H_MV 770 754 m_cSPS.setUpdateRepFormatFlag ( false ); 771 #if H_MV_HLS10_MULTILAYERSPS772 755 Bool multiLayerExtensionFlag = ( getLayerId() > 0 ) && ( m_cVPS->getNumRefLayers( getLayerId() ) > 0 ); 773 756 … … 778 761 m_cSPS.setSpsScalingListRefLayerId( m_cVPS->getIdRefLayer( getLayerId(), 0 ) ); 779 762 } 780 #else781 m_cSPS.setSpsInferScalingListFlag ( m_layerId > 0 && m_cVPS->getInDirectDependencyFlag( getLayerIdInVps(), 0 ) );782 m_cSPS.setSpsScalingListRefLayerId ( 0 );783 #endif784 763 m_cSPS.setSpsExtensionPresentFlag ( true ); 785 764 m_cSPS.setSpsMultilayerExtensionFlag ( true ); … … 829 808 m_cSPS.setUseAMP ( m_useAMP ); 830 809 831 #if !MTK_I0099_VPS_EX2832 #if H_3D_QTLPC833 m_cSPS.setUseQTL( m_bUseQTL );834 m_cSPS.setUsePC ( m_bUsePC );835 #endif836 #endif837 838 810 for (i = g_uiMaxCUDepth-g_uiAddCUDepth; i < g_uiMaxCUDepth; i++ ) 839 811 { … … 863 835 for( Int is = 0; is < targetDecLayerIdList.size(); is++ ) 864 836 { 865 #if H_MV_HLS10_ADD_LAYERSETS866 837 if ( m_cVPS->getNecessaryLayerFlag( ols, is ) ) 867 838 { 868 839 m_cSPS.inferSpsMaxDecPicBufferingMinus1( m_cVPS, ols, targetDecLayerIdList[is], true ); 869 840 } 870 #else 871 m_cSPS.inferSpsMaxDecPicBufferingMinus1( m_cVPS, ols, targetDecLayerIdList[is], true ); 872 #endif 873 } 874 } 875 #if !H_MV_HLS10_ADD_LAYERSETS 876 m_cVPS->inferDbpSizeLayerSetZero( &m_cSPS, true ); 877 #endif 841 } 842 } 878 843 #endif 879 844 m_cSPS.setPCMBitDepthLuma (g_uiPCMBitDepthLuma); … … 889 854 { 890 855 TComVUI* pcVUI = m_cSPS.getVuiParameters(); 891 pcVUI->setAspectRatioInfoPresentFlag(getAspectRatioI dc() != -1);856 pcVUI->setAspectRatioInfoPresentFlag(getAspectRatioInfoPresentFlag()); 892 857 pcVUI->setAspectRatioIdc(getAspectRatioIdc()); 893 858 pcVUI->setSarWidth(getSarWidth()); … … 1323 1288 Void TEncTop::xInitPPSforTiles() 1324 1289 { 1325 m_cPPS.set UniformSpacingFlag( m_iUniformSpacingIdr);1326 m_cPPS.setNum ColumnsMinus1( m_iNumColumnsMinus1 );1327 m_cPPS.setNum RowsMinus1( m_iNumRowsMinus1 );1328 if( m_iUniformSpacingIdr == 0)1329 { 1330 m_cPPS.set ColumnWidth( m_puiColumnWidth );1331 m_cPPS.set RowHeight( m_puiRowHeight );1290 m_cPPS.setTileUniformSpacingFlag( m_tileUniformSpacingFlag ); 1291 m_cPPS.setNumTileColumnsMinus1( m_iNumColumnsMinus1 ); 1292 m_cPPS.setNumTileRowsMinus1( m_iNumRowsMinus1 ); 1293 if( !m_tileUniformSpacingFlag ) 1294 { 1295 m_cPPS.setTileColumnWidth( m_tileColumnWidth ); 1296 m_cPPS.setTileRowHeight( m_tileRowHeight ); 1332 1297 } 1333 1298 m_cPPS.setLoopFilterAcrossTilesEnabledFlag( m_loopFilterAcrossTilesEnabledFlag ); 1334 1299 1335 1300 // # substreams is "per tile" when tiles are independent. 1336 if (m_iWaveFrontSynchro 1337 ) 1301 if (m_iWaveFrontSynchro ) 1338 1302 { 1339 1303 m_cPPS.setNumSubstreams(m_iWaveFrontSubstreams * (m_iNumColumnsMinus1+1)); … … 1361 1325 } 1362 1326 1363 if( m_iNumColumnsMinus1 && m_iUniformSpacingIdr==0)1327 if( m_iNumColumnsMinus1 && !m_tileUniformSpacingFlag ) 1364 1328 { 1365 1329 for(Int i=0; i<m_iNumColumnsMinus1; i++) 1366 1330 { 1367 uiCummulativeColumnWidth += m_ puiColumnWidth[i];1331 uiCummulativeColumnWidth += m_tileColumnWidth[i]; 1368 1332 } 1369 1333 … … 1388 1352 } 1389 1353 1390 if( m_iNumRowsMinus1 && m_iUniformSpacingIdr==0)1354 if( m_iNumRowsMinus1 && !m_tileUniformSpacingFlag ) 1391 1355 { 1392 1356 for(Int i=0; i<m_iNumRowsMinus1; i++) 1393 uiCummulativeRowHeight += m_ puiRowHeight[i];1357 uiCummulativeRowHeight += m_tileRowHeight[i]; 1394 1358 1395 1359 if( uiCummulativeRowHeight >= iHeightInCU ) -
trunk/source/Lib/TLibEncoder/TEncTop.h
r1066 r1084 80 80 TComPicLists* m_ivPicLists; ///< access to picture lists of other layers 81 81 #endif 82 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX82 #if H_3D_IC 83 83 Int *m_aICEnableCandidate; 84 84 Int *m_aICEnableNum; … … 150 150 Void xInitPPSforTiles (); 151 151 Void xInitRPS (Bool isFieldCoding); ///< initialize PPS from encoder options 152 #if H_MV_HLS10_GEN_FIX153 152 #if H_MV 154 153 … … 193 192 194 193 #endif 195 #endif196 194 public: 197 195 TEncTop(); … … 209 207 TComPicLists* getIvPicLists() { return m_ivPicLists; } 210 208 #endif 211 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX212 Int *getICEnableCandidate() { return m_aICEnableCandidate; }213 Int *getICEnableNum() { return m_aICEnableNum; }209 #if H_3D_IC 210 Int* getICEnableCandidate() { return m_aICEnableCandidate; } 211 Int* getICEnableNum() { return m_aICEnableNum; } 214 212 #endif 215 213 Void deletePicBuffer (); … … 272 270 Void setIvPicLists ( TComPicLists* picLists) { m_ivPicLists = picLists; } 273 271 #endif 274 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX272 #if H_3D_IC 275 273 Void setICEnableCandidate ( Int* ICEnableCandidate) { m_aICEnableCandidate = ICEnableCandidate; } 276 274 Void setICEnableNum ( Int* ICEnableNum) { m_aICEnableNum = ICEnableNum; } -
trunk/source/Lib/TLibVideoIO/TVideoIOYuv.cpp
r872 r1084 470 470 Bool retval = true; 471 471 472 if ((width==0)||(height==0)) 473 { 474 printf ("\nWarning: writing %d x %d luma sample output picture!", width, height); 475 } 476 472 477 if (m_bitDepthShiftY != 0 || m_bitDepthShiftC != 0) 473 478 { … … 563 568 564 569 Bool retval = true; 570 571 if ((width==0)||(height==0)) 572 { 573 printf ("\nWarning: writing %d x %d luma sample output picture!", width, height); 574 } 565 575 566 576 if (m_bitDepthShiftY != 0 || m_bitDepthShiftC != 0)
Note: See TracChangeset for help on using the changeset viewer.