Changeset 210 in 3DVCSoftware for trunk/source/Lib
- Timestamp:
- 11 Dec 2012, 18:52:43 (12 years ago)
- Location:
- trunk/source/Lib
- Files:
-
- 43 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/Lib/TLibCommon/CommonDef.h
r208 r210 58 58 59 59 #define HM_VERSION "6.1" 60 #define NV_VERSION "5.0 .1" ///< Current software version60 #define NV_VERSION "5.0" ///< Current software version 61 61 62 62 // ==================================================================================================================== … … 185 185 // VPS constants 186 186 // ==================================================================================================================== 187 #if QC_MVHEVC_B0046 188 #define MAX_LAYER_NUM MAX_VIEW_NUM 189 #endif 187 190 #if VIDYO_VPS_INTEGRATION 188 191 #define MAX_LAYER_NUM MAX_VIEW_NUM … … 480 483 NAL_UNIT_CODED_SLICE, 481 484 #if H0566_TLA 485 #if QC_REM_IDV_B0046 486 NAL_UNIT_RESERVED, 487 #else 482 488 NAL_UNIT_CODED_SLICE_IDV, 489 #endif 483 490 NAL_UNIT_CODED_SLICE_TLA, 484 491 NAL_UNIT_CODED_SLICE_CRA, … … 508 515 NAL_UNIT_RESERVED_23, 509 516 NAL_UNIT_UNSPECIFIED_24, 510 #if VIDYO_VPS_INTEGRATION 517 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 511 518 NAL_UNIT_VPS, 512 519 #else -
trunk/source/Lib/TLibCommon/NAL.h
r100 r210 51 51 NalRefIdc m_nalRefIDC; ///< nal_ref_idc 52 52 #endif 53 #if VIDYO_VPS_INTEGRATION 53 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 54 54 unsigned m_layerId; 55 55 unsigned m_temporalId; ///< temporal_id … … 69 69 NalUnitType nalUnitType, 70 70 Bool nalRefFlag, 71 #if !VIDYO_VPS_INTEGRATION 71 #if !VIDYO_VPS_INTEGRATION & !QC_MVHEVC_B0046 72 72 Int viewId, 73 73 Bool isDepth, … … 78 78 :m_nalUnitType (nalUnitType) 79 79 ,m_nalRefFlag (nalRefFlag) 80 #if !VIDYO_VPS_INTEGRATION 80 #if !VIDYO_VPS_INTEGRATION & !QC_MVHEVC_B0046 81 81 ,m_viewId (viewId) 82 82 ,m_isDepth (isDepth) … … 139 139 return m_nalUnitType == NAL_UNIT_CODED_SLICE_IDR 140 140 #if H0566_TLA 141 #if !QC_REM_IDV_B0046 141 142 || m_nalUnitType == NAL_UNIT_CODED_SLICE_IDV 143 #endif 142 144 || m_nalUnitType == NAL_UNIT_CODED_SLICE_CRA 143 145 || m_nalUnitType == NAL_UNIT_CODED_SLICE_TLA -
trunk/source/Lib/TLibCommon/TComDataCU.cpp
r205 r210 4331 4331 { 4332 4332 // col [2] 4333 #if !QC_TMVP_IDX_MOD_B0046 4333 4334 Int iRefIdxSkip[2] = {-1, -1}; 4334 4335 for (Int i=0; i<2; i++) … … 4350 4351 iRefIdxSkip[i] = (iRefIdxTmp != -1) ? iRefIdxTmp : 0; 4351 4352 } 4353 #endif 4352 4354 //>> MTK colocated-RightBottom 4353 4355 UInt uiPartIdxRB; … … 4361 4363 4362 4364 TComMv cColMv; 4365 #if QC_TMVP_IDX_MOD_B0046 4366 Int iRefIdx = 0; 4367 #else 4363 4368 Int iRefIdx; 4364 4369 #endif 4365 4370 if ( ( m_pcPic->getCU(m_uiCUAddr)->getCUPelX() + g_auiRasterToPelX[uiAbsPartIdxTmp] + m_pcPic->getMinCUWidth() ) >= m_pcSlice->getSPS()->getPicWidthInLumaSamples() ) // image boundary check 4366 4371 { … … 4395 4400 } 4396 4401 } 4402 #if !QC_TMVP_IDX_MOD_B0046 4397 4403 iRefIdx = iRefIdxSkip[0]; 4398 4404 #else 4405 iRefIdx = 0; 4406 #endif 4399 4407 Bool bExistMV = false; 4400 4408 UInt uiPartIdxCenter; … … 4414 4422 if ( getSlice()->isInterB() ) 4415 4423 { 4424 #if !QC_TMVP_IDX_MOD_B0046 4416 4425 iRefIdx = iRefIdxSkip[1]; 4426 #else 4427 iRefIdx = 0; 4428 #endif 4417 4429 bExistMV = uiLCUIdx >= 0 && xGetColMVP( REF_PIC_LIST_1, uiLCUIdx, uiAbsPartAddr, cColMv, iRefIdx); 4418 4430 if( bExistMV == false ) … … 6427 6439 if( pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) >= 0 ) 6428 6440 { 6441 #if QC_IV_AS_LT_B0046 6442 Bool bIsCurrRefLongTerm = m_pcSlice->getRefPic( eRefPicList, iRefIdx)->getIsLongTerm(); 6443 Bool bIsNeibRefLongTerm = m_pcSlice->getRefPic( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx))->getIsLongTerm(); 6444 iNeibRefPOC = pcTmpCU->getSlice()->getRefPOC( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ); 6445 if ( (bIsCurrRefLongTerm == bIsNeibRefLongTerm) && (iNeibRefPOC == iCurrRefPOC) ) 6446 #else 6429 6447 if( pcTmpCU->getSlice()->getRefViewId( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ) != m_pcSlice->getRefViewId( eRefPicList, iRefIdx ) ) 6430 6448 { … … 6433 6451 iNeibRefPOC = pcTmpCU->getSlice()->getRefPOC( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ); 6434 6452 if( iNeibRefPOC == iCurrRefPOC ) // Same Reference Frame But Diff List// 6453 #endif 6435 6454 { 6436 6455 TComMv cMvPred = pcTmpCU->getCUMvField(eRefPicList2nd)->getMv(uiIdx); … … 6569 6588 Int iNeibRefPOC; 6570 6589 6590 #if QC_IV_AS_LT_B0046 6591 Bool bIsCurrRefLongTerm = m_pcSlice->getRefPic( eRefPicList, iRefIdx)->getIsLongTerm(); 6592 Bool bIsNeibRefLongTerm = false; 6593 #endif 6571 6594 if( pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) >= 0 ) 6572 6595 { 6573 6596 iNeibRefPOC = pcTmpCU->getSlice()->getRefPOC( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ); 6597 #if QC_IV_AS_LT_B0046 6598 bIsNeibRefLongTerm = m_pcSlice->getRefPic( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx))->getIsLongTerm() ; 6599 if ( (bIsCurrRefLongTerm == bIsNeibRefLongTerm) && (iNeibRefPOC == iCurrRefPOC) ) 6600 #else 6574 6601 if( pcTmpCU->getSlice()->getRefViewId( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ) != m_pcSlice->getRefViewId( eRefPicList, iRefIdx ) ) 6575 6602 return false; 6576 6603 if( iNeibRefPOC == iCurrRefPOC ) // Same Reference Frame But Diff List// 6604 #endif 6577 6605 { 6578 6606 TComMv cMvPred = pcTmpCU->getCUMvField(eRefPicList2nd)->getMv(uiIdx); … … 6592 6620 TComMv cMvPred = pcTmpCU->getCUMvField(eRefPicList)->getMv(uiIdx); 6593 6621 TComMv rcMv; 6594 6622 #if QC_IV_AS_LT_B0046 6623 bIsNeibRefLongTerm = m_pcSlice->getRefPic( eRefPicList, pcTmpCU->getCUMvField(eRefPicList)->getRefIdx(uiIdx))->getIsLongTerm(); 6624 if ( bIsCurrRefLongTerm == bIsNeibRefLongTerm ) 6625 { 6626 #else 6595 6627 if( pcTmpCU->getSlice()->getRefViewId( eRefPicList, pcTmpCU->getCUMvField(eRefPicList)->getRefIdx(uiIdx) ) != m_pcSlice->getRefViewId( eRefPicList, iRefIdx ) ) 6596 6628 { 6597 6629 return false; 6598 6630 } 6599 6631 #endif 6600 6632 Int iScale = xGetDistScaleFactor( iCurrPOC, iCurrRefPOC, iNeibPOC, iNeibRefPOC ); 6601 6633 if ( iScale == 4096 ) … … 6612 6644 pInfo->m_acMvCand[ pInfo->iN++] = rcMv; 6613 6645 return true; 6646 #if QC_IV_AS_LT_B0046 6647 } 6648 #endif 6614 6649 } 6615 6650 //---------------------- V2(END) --------------------// … … 6619 6654 TComMv cMvPred = pcTmpCU->getCUMvField(eRefPicList2nd)->getMv(uiIdx); 6620 6655 TComMv rcMv; 6621 6656 #if QC_IV_AS_LT_B0046 6657 bIsNeibRefLongTerm = m_pcSlice->getRefPic( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx))->getIsLongTerm(); ; 6658 if ( bIsCurrRefLongTerm == bIsNeibRefLongTerm ) 6659 { 6660 #else 6622 6661 if( pcTmpCU->getSlice()->getRefViewId( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ) != m_pcSlice->getRefViewId( eRefPicList, iRefIdx ) ) 6623 6662 { 6624 6663 return false; 6625 6664 } 6626 6665 #endif 6627 6666 Int iScale = xGetDistScaleFactor( iCurrPOC, iCurrRefPOC, iNeibPOC, iNeibRefPOC ); 6628 6667 if ( iScale == 4096 ) … … 6639 6678 pInfo->m_acMvCand[ pInfo->iN++] = rcMv; 6640 6679 return true; 6680 #if QC_IV_AS_LT_B0046 6681 } 6682 #endif 6641 6683 } 6642 6684 //---------------------- V3(END) --------------------// … … 6749 6791 Int iColPOC, iColRefPOC, iCurrPOC, iCurrRefPOC, iScale; 6750 6792 #if SONY_COLPIC_AVAILABILITY 6793 #if QC_IV_AS_LT_B0046 6794 Int iColViewOrderIdx, iCurrViewOrderIdx, iCurrRefViewOrderIdx; 6795 #else 6751 6796 Int iColViewOrderIdx, iColRefViewOrderIdx, iCurrViewOrderIdx, iCurrRefViewOrderIdx; 6797 #endif 6752 6798 #endif 6753 6799 TComMv cColMv; … … 6780 6826 } 6781 6827 6782 #if !SONY_COLPIC_AVAILABILITY 6828 #if !SONY_COLPIC_AVAILABILITY&!QC_IV_AS_LT_B0046 6783 6829 if( m_pcSlice->getRefPic(eRefPicList, riRefIdx)->getViewId() != m_pcSlice->getViewId() ) 6784 6830 return false; … … 6808 6854 iColRefPOC = pColCU->getSlice()->getRefPOC(eColRefPicList, iColRefIdx); 6809 6855 6856 #if !QC_IV_AS_LT_B0046 6810 6857 #if SONY_COLPIC_AVAILABILITY 6811 6858 iColRefViewOrderIdx = pColCU->getSlice()->getRefPic( eColRefPicList, pColCU->getCUMvField(eColRefPicList)->getRefIdx(uiAbsPartAddr))->getViewOrderIdx(); … … 6816 6863 } 6817 6864 #endif 6818 6865 #else 6866 Bool bIsCurrRefLongTerm = m_pcSlice->getRefPic(eRefPicList, riRefIdx)->getIsLongTerm(); 6867 Bool bIsColRefLongTerm = pColCU->getSlice()->getWasLongTerm(eColRefPicList, iColRefIdx); 6868 if(bIsCurrRefLongTerm != bIsColRefLongTerm) 6869 { 6870 assert( ((iColPOC == iColRefPOC)&&(iCurrPOC != iCurrRefPOC))||((iColPOC != iColRefPOC)&&(iCurrPOC == iCurrRefPOC))); 6871 return false; 6872 } 6873 #endif 6819 6874 cColMv = pColCU->getCUMvField(eColRefPicList)->getMv(uiAbsPartAddr); 6820 6875 6821 6876 iCurrRefPOC = m_pcSlice->getRefPic(eRefPicList, riRefIdx)->getPOC(); 6877 #if QC_IV_AS_LT_B0046 6878 { 6879 assert( ((iColPOC != iColRefPOC)&&(iCurrPOC != iCurrRefPOC))||((iColPOC == iColRefPOC)&&(iCurrPOC == iCurrRefPOC))); 6880 if(!bIsCurrRefLongTerm) //short-term 6881 { 6882 iScale = xGetDistScaleFactor(iCurrPOC, iCurrRefPOC, iColPOC, iColRefPOC); 6883 if ( iScale == 4096 ) 6884 { 6885 rcMv = cColMv; 6886 } 6887 else 6888 { 6889 rcMv = cColMv.scaleMv( iScale ); 6890 } 6891 }else 6892 #if QC_MVHEVC_B0046 6893 rcMv = cColMv; //inter-view 6894 #else 6895 { 6896 #if SONY_COLPIC_AVAILABILITY 6897 Int iColRefViewOrderIdx = pColCU->getSlice()->getRefPic( eColRefPicList, pColCU->getCUMvField(eColRefPicList)->getRefIdx(uiAbsPartAddr))->getViewOrderIdx(); 6898 iScale = xGetDistScaleFactor(iCurrViewOrderIdx, iCurrRefViewOrderIdx, iColViewOrderIdx, iColRefViewOrderIdx); 6899 if ( iScale == 4096 ) 6900 { 6901 rcMv = cColMv; 6902 } 6903 else 6904 { 6905 rcMv = cColMv.scaleMv( iScale ); 6906 } 6907 #else 6908 return false; 6909 #endif 6910 } 6911 #endif 6912 } 6913 #else 6822 6914 #if SONY_COLPIC_AVAILABILITY 6823 6915 iScale = 0; … … 6841 6933 rcMv = cColMv.scaleMv( iScale ); 6842 6934 } 6843 6935 #endif 6844 6936 return true; 6845 6937 } -
trunk/source/Lib/TLibCommon/TComDepthMapGenerator.h
r189 r210 239 239 Bool m_bDecoder; 240 240 TComPrediction* m_pcPrediction; 241 #if VIDYO_VPS_INTEGRATION 241 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 242 242 TComVPSAccess* m_pcVPSAccess; 243 243 #endif -
trunk/source/Lib/TLibCommon/TComPic.cpp
r189 r210 519 519 UInt uiTempLayer = currSlice->getRefPic(eRefPicList, lpRef)->getCurrSlice()->getTLayer(); 520 520 Int iTempDiff = (iTempPoc > iPOCCurr) ? (iTempPoc - iPOCCurr): (iPOCCurr - iTempPoc); 521 #if QC_REM_IDV_B0046 522 TComSlice* refSlice = currSlice->getRefPic(eRefPicList, lpRef)->getCurrSlice(); 523 bRAP = (refSlice->getSPS()->getViewId() && (refSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR || refSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA))? 1: 0; 524 #else 521 525 bRAP = (currSlice->getRefPic(eRefPicList, lpRef)->getCurrSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDV? 1:0); 526 #endif 522 527 if( bRAP) 523 528 { -
trunk/source/Lib/TLibCommon/TComPic.h
r189 r210 140 140 TComSlice* getSlice(Int i) { return m_apcPicSym->getSlice(i); } 141 141 TComSlice* getCurrSlice() { return m_apcPicSym->getSlice(m_uiCurrSliceIdx); } 142 #if VIDYO_VPS_INTEGRATION 142 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 143 143 TComVPS* getVPS() { return m_apcPicSym->getSlice(m_uiCurrSliceIdx)->getVPS(); } 144 144 #endif -
trunk/source/Lib/TLibCommon/TComPrediction.cpp
r189 r210 924 924 } 925 925 #endif 926 #if !QC_MVHEVC_B0046 926 927 Int ixFrac = iHor & 0x3; 927 928 Int iyFrac = iVer & 0x3; 929 #endif 928 930 Int iRefOffset = ( iHor >> 2 ) + ( iVer >> 2 ) * iRefStride; 929 931 #endif -
trunk/source/Lib/TLibCommon/TComPrediction.h
r189 r210 105 105 #else 106 106 Void xPredInterLumaBlk ( TComDataCU *cu, TComPicYuv *refPic, UInt partAddr, TComMv *mv, Int width, Int height, TComYuv *&dstPic, Bool bi ); 107 Void xPredInterChromaBlk( TComDataCU *cu, TComPicYuv *refPic, UInt partAddr, TComMv *mv, Int width, Int height, TComYuv *&dstPic, Bool bi ); 107 108 #endif 108 Void xPredInterChromaBlk( TComDataCU *cu, TComPicYuv *refPic, UInt partAddr, TComMv *mv, Int width, Int height, TComYuv *&dstPic, Bool bi );109 109 Void xWeightedAverage ( TComDataCU* pcCU, TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, Int iRefIdx0, Int iRefIdx1, UInt uiPartAddr, Int iWidth, Int iHeight, TComYuv*& rpcYuvDst ); 110 110 -
trunk/source/Lib/TLibCommon/TComSlice.cpp
r189 r210 44 44 45 45 TComSlice::TComSlice() 46 #if QC_MVHEVC_B0046 47 : m_iPPSId ( 0 ) 48 #else 46 49 : m_iPPSId ( -1 ) 50 #endif 47 51 , m_iPOC ( 0 ) 48 52 , m_iLastIDR ( 0 ) … … 142 146 resetWpScalingLC(m_weightPredTableLC); 143 147 initWpAcDcParam(); 148 #if QC_IV_AS_LT_B0046 149 for(Int iNumCount = 0; iNumCount < MAX_NUM_REF+1; iNumCount++) 150 { 151 m_bWasLongTerm[0][iNumCount] = false; 152 m_bWasLongTerm[1][iNumCount] = false; 153 } 154 #endif 144 155 } 145 156 … … 472 483 { 473 484 pcRefPic = xGetInterViewRefPic( rapcInterViewRefPics, getViewId() + m_pcSPS->getUsableInterViewRef(i) ); 485 #if QC_IV_AS_LT_B0046 486 pcRefPic->setIsLongTerm( 1 ); 487 #else 474 488 pcRefPic->setIsLongTerm( 0 ); 489 #endif 475 490 pcRefPic->getPicYuvRec()->extendPicBorder(); 476 491 RefPicSetIvCurr[NumPocIvCurr] = pcRefPic; … … 513 528 { 514 529 m_apcRefPicList[0][cIdx] = m_RefPicListModification.getRefPicListModificationFlagL0() ? refPicListTemp0[ m_RefPicListModification.getRefPicSetIdxL0(cIdx) ] : refPicListTemp0[cIdx]; 530 #if QC_IV_AS_LT_B0046 531 setWasLongTerm(m_apcRefPicList[0][cIdx]->getIsLongTerm(), REF_PIC_LIST_0, cIdx); 532 #endif 515 533 } 516 534 if( m_eSliceType == P_SLICE ) … … 524 542 { 525 543 m_apcRefPicList[1][cIdx] = m_RefPicListModification.getRefPicListModificationFlagL1() ? refPicListTemp1[ m_RefPicListModification.getRefPicSetIdxL1(cIdx) ] : refPicListTemp1[cIdx]; 544 #if QC_IV_AS_LT_B0046 545 setWasLongTerm(m_apcRefPicList[1][cIdx]->getIsLongTerm(), REF_PIC_LIST_1, cIdx); 546 #endif 526 547 } 527 548 } … … 876 897 for(i=0;i<pReferencePictureSet->getNumberOfPositivePictures()+pReferencePictureSet->getNumberOfNegativePictures();i++) 877 898 { 899 #if QC_IV_AS_LT_B0046 900 if( rpcPic->getPicSym()->getSlice(0)->getPOC() == this->getPOC() + pReferencePictureSet->getDeltaPOC(i)) 901 #else 878 902 if(!rpcPic->getIsLongTerm() && rpcPic->getPicSym()->getSlice(0)->getPOC() == this->getPOC() + pReferencePictureSet->getDeltaPOC(i)) 903 #endif 879 904 { 880 905 isReference = 1; … … 886 911 for(;i<pReferencePictureSet->getNumberOfPictures();i++) 887 912 { 913 #if QC_IV_AS_LT_B0046 914 if( (rpcPic->getPicSym()->getSlice(0)->getPOC()%(1<<rpcPic->getPicSym()->getSlice(0)->getSPS()->getBitsForPOC())) == pReferencePictureSet->getPOC(i)%(1<<rpcPic->getPicSym()->getSlice(0)->getSPS()->getBitsForPOC())) 915 #else 888 916 if(rpcPic->getIsLongTerm() && (rpcPic->getPicSym()->getSlice(0)->getPOC()%(1<<rpcPic->getPicSym()->getSlice(0)->getSPS()->getBitsForPOC())) == pReferencePictureSet->getPOC(i)%(1<<rpcPic->getPicSym()->getSlice(0)->getSPS()->getBitsForPOC())) 917 #endif 889 918 { 890 919 isReference = 1; … … 1390 1419 // Video parameter set (VPS) 1391 1420 // ------------------------------------------------------------------------------------------------ 1421 #if QC_MVHEVC_B0046 1422 TComVPS::TComVPS() 1423 : m_VPSId ( 0) 1424 , m_uiMaxTLayers ( 1) 1425 , m_uiMaxLayers ( 1) 1426 , m_bTemporalIdNestingFlag (false) 1427 , m_uiNumHRDParameter ( 0) 1428 , m_numAddiLayerOperationPoints (2) 1429 , m_numAddiProLevelSets ( 1) 1430 { 1431 for( Int i = 0; i < MAX_LAYER_NUM; i++) 1432 { 1433 m_numOpLayerIdMinus1[i] = 0; 1434 if(i) 1435 m_numDirectRefLayer[i] = 1; 1436 else 1437 m_numDirectRefLayer[i] = 0; 1438 for( Int j = 0; j < MAX_LAYER_NUM; j++) 1439 { 1440 m_numDirectRefID[i][j] = 0; 1441 m_numOpLayerId[i][j] = 0; 1442 } 1443 m_uiViewId[i] = 0; 1444 m_iViewOrderIdx[i] = 0; 1445 } 1446 1447 for( Int i = 0; i < MAX_TLAYER; i++) 1448 { 1449 m_numReorderPics[i] = 0; 1450 m_uiMaxDecPicBuffering[i] = 0; 1451 m_uiMaxLatencyIncrease[i] = 0; 1452 } 1453 } 1454 1455 TComVPS::~TComVPS() 1456 { 1457 } 1458 #else 1392 1459 #if VIDYO_VPS_INTEGRATION 1393 1460 TComVPS::TComVPS() … … 1422 1489 1423 1490 #endif 1424 1491 #endif 1425 1492 1426 1493 // ------------------------------------------------------------------------------------------------ … … 1429 1496 1430 1497 TComSPS::TComSPS() 1431 #if VIDYO_VPS_INTEGRATION 1498 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 1432 1499 : m_VPSId ( 0) 1433 1500 , m_SPSId ( 0) … … 1481 1548 , m_bLCMod (false) 1482 1549 #if H0412_REF_PIC_LIST_RESTRICTION 1550 #if QC_MVHEVC_B0046 1551 , m_restrictedRefPicListsFlag ( 0) 1552 #else 1483 1553 , m_restrictedRefPicListsFlag ( 1) 1554 #endif 1484 1555 , m_listsModificationPresentFlag( 0) 1485 1556 #endif … … 1522 1593 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 1523 1594 , m_bUseDMM (false) 1595 #endif 1596 #if FLEX_CODING_ORDER_M23723 && HHI_DMM_PRED_TEX 1597 , m_bUseDMM34 (false) 1524 1598 #endif 1525 1599 #if OL_QTLIMIT_PREDCODING_B0068 … … 1734 1808 TComSPS::initMultiviewSPS( UInt uiViewId, Int iViewOrderIdx, UInt uiCamParPrecision, Bool bCamParSlice, Int** aaiScale, Int** aaiOffset ) 1735 1809 { 1810 #if !QC_MVHEVC_B0046 1736 1811 AOT( uiViewId == 0 && iViewOrderIdx != 0 ); 1737 1812 AOT( uiViewId != 0 && iViewOrderIdx == 0 ); 1738 1813 AOT( uiViewId != 0 && !bCamParSlice && ( aaiScale == 0 || aaiOffset == 0 ) ); 1739 1814 #endif 1740 1815 m_uiViewId = uiViewId; 1741 1816 m_iViewOrderIdx = iViewOrderIdx; … … 1745 1820 ::memset( m_aaiCodedScale, 0x00, sizeof( m_aaiCodedScale ) ); 1746 1821 ::memset( m_aaiCodedOffset, 0x00, sizeof( m_aaiCodedOffset ) ); 1822 #if !QC_MVHEVC_B0046 1747 1823 if( !m_bCamParInSliceHeader ) 1748 1824 { … … 1755 1831 } 1756 1832 } 1833 #endif 1757 1834 } 1758 1835 … … 2374 2451 , m_ppsMap(MAX_NUM_PPS) 2375 2452 , m_apsMap(MAX_NUM_APS) 2376 #if VIDYO_VPS_INTEGRATION 2453 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 2377 2454 , m_vpsMap(MAX_NUM_VPS) 2378 2455 #endif -
trunk/source/Lib/TLibCommon/TComSlice.h
r189 r210 144 144 #endif 145 145 146 #if VIDYO_VPS_INTEGRATION 146 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 147 147 /// VPS class 148 148 … … 156 156 157 157 UInt m_uiExtensionType; 158 158 #if !QC_MVHEVC_B0046 159 159 Bool m_bDependentFlag[MAX_LAYER_NUM]; 160 #else 161 UInt m_uiNumHRDParameter; 162 UInt m_numAddiLayerOperationPoints; 163 UInt m_numAddiProLevelSets; 164 UInt m_numDirectRefLayer[MAX_LAYER_NUM]; 165 UInt m_numDirectRefID[MAX_LAYER_NUM][MAX_LAYER_NUM]; 166 UInt m_numOpLayerIdMinus1[MAX_LAYER_NUM]; 167 UInt m_numOpLayerId[MAX_LAYER_NUM][MAX_LAYER_NUM]; 168 #endif 160 169 UInt m_uiViewId[MAX_LAYER_NUM]; 170 #if !QC_MVHEVC_B0046 161 171 Bool m_bDepthFlag[MAX_LAYER_NUM]; 172 #endif 162 173 Int m_iViewOrderIdx[MAX_LAYER_NUM]; 174 #if !QC_MVHEVC_B0046 163 175 UInt m_uiDependentLayer[MAX_LAYER_NUM]; 176 #endif 164 177 165 178 UInt m_numReorderPics[MAX_TLAYER]; … … 182 195 Bool getTemporalNestingFlag () { return m_uiMaxLayers; } 183 196 Void setTemporalNestingFlag (UInt t) { m_bTemporalIdNestingFlag = t; } 184 197 #if !QC_MVHEVC_B0046 185 198 Void setExtensionType(UInt v) { m_uiExtensionType = v; } 186 199 UInt getExtensionType() { return m_uiExtensionType; } … … 188 201 Void setDependentFlag(Bool d, UInt layer) { m_bDependentFlag[layer] = d; } 189 202 Bool getDependentFlag(UInt layer) { return m_bDependentFlag[layer]; } 190 203 #endif 191 204 Void setViewId(UInt v, UInt layer) { m_uiViewId[layer] = v; } 192 205 UInt getViewId(UInt layer) { return m_uiViewId[layer]; } 193 206 #if !QC_MVHEVC_B0046 194 207 Void setDepthFlag(Bool d, UInt layer) { m_bDepthFlag[layer] = d; } 195 208 Bool getDepthFlag(UInt layer) { return m_bDepthFlag[layer]; } 196 209 #endif 197 210 Void setViewOrderIdx(Int v, UInt layer) { m_iViewOrderIdx[layer] = v; } 198 211 Int getViewOrderIdx(UInt layer) { return m_iViewOrderIdx[layer]; } 199 212 #if !QC_MVHEVC_B0046 200 213 Void setDependentLayer(UInt v, UInt layer) { m_uiDependentLayer[layer] = v; } 201 214 UInt getDependentLayer(UInt layer) { return m_uiDependentLayer[layer]; } 202 215 #endif 203 216 Void setNumReorderPics(UInt v, UInt tLayer) { m_numReorderPics[tLayer] = v; } 204 217 UInt getNumReorderPics(UInt tLayer) { return m_numReorderPics[tLayer]; } … … 209 222 Void setMaxLatencyIncrease(UInt v, UInt tLayer) { m_uiMaxLatencyIncrease[tLayer] = v; } 210 223 UInt getMaxLatencyIncrease(UInt tLayer) { return m_uiMaxLatencyIncrease[tLayer]; } 211 224 #if QC_MVHEVC_B0046 225 Void setNumHRDParameters(UInt n) { m_uiNumHRDParameter = n; } 226 UInt getNumHRDParameters() { return m_uiNumHRDParameter; } 227 Void setNumDirectRefLayer(UInt n, UInt layer) { m_numDirectRefLayer[layer] = n; }; 228 UInt getNumDirectRefLayer(UInt layer) { return m_numDirectRefLayer[layer]; }; 229 Void setDirectRefLayerId (UInt n, UInt layer, UInt refId) { m_numDirectRefID[layer][refId] = n; assert(refId < MAX_NUM_REF ); }; 230 UInt getDirectRefLayerId ( UInt layer, UInt refId) { return m_numDirectRefID[layer][refId]; }; 231 UInt getNumAddiLayerOperationPoints( ) { return m_numAddiLayerOperationPoints; }; 232 Void setNumAddiLayerOperationPoints(UInt n) { m_numAddiLayerOperationPoints = n; }; 233 Void setNumAddiProLevelSets (UInt n) { m_numAddiProLevelSets = n;} 234 UInt getNumAddiProLevelSets ( ) { return m_numAddiProLevelSets;} 235 236 Void setNumOpLayerIdMinus1 (UInt n, UInt layer) { m_numOpLayerIdMinus1[layer] = n;} 237 UInt getNumOpLayerIdMinus1 (UInt layer ) { return m_numOpLayerIdMinus1[layer];} 238 239 Void setNumOpLayerId (UInt n, UInt layer, UInt OpId) { m_numOpLayerId[layer][OpId] = n;} 240 UInt getNumOpLayerId (UInt layer, UInt OpId ) { return m_numOpLayerId[layer][OpId];} 241 242 #endif 212 243 }; 213 244 … … 218 249 { 219 250 private: 220 #if VIDYO_VPS_INTEGRATION 251 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 221 252 Int m_VPSId; 222 253 #endif … … 363 394 #endif 364 395 396 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER_M23723 397 Bool m_bUseDMM34; 398 #endif 399 365 400 #if OL_QTLIMIT_PREDCODING_B0068 366 401 Bool m_bUseQTLPC; … … 391 426 TComSPS(); 392 427 virtual ~TComSPS(); 393 #if VIDYO_VPS_INTEGRATION 428 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 394 429 Int getVPSId () { return m_VPSId; } 395 430 Void setVPSId (Int i) { m_VPSId = i; } … … 643 678 #endif 644 679 680 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER_M23723 681 Bool getUseDMM34() { return m_bUseDMM34; } 682 Void setUseDMM34( Bool b ) { m_bUseDMM34 = b; } 683 #endif 684 645 685 #if OL_QTLIMIT_PREDCODING_B0068 646 686 Void setUseQTLPC( Bool b ) { m_bUseQTLPC = b; } … … 1221 1261 1222 1262 // access channel 1223 #if VIDYO_VPS_INTEGRATION 1263 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 1224 1264 TComVPS* m_pcVPS; 1265 #endif 1266 #if QC_IV_AS_LT_B0046 1267 Bool m_bWasLongTerm[2][MAX_NUM_REF+1]; //was long-term picture 1225 1268 #endif 1226 1269 TComSPS* m_pcSPS; … … 1297 1340 Int m_aaiCodedOffset[2][MAX_VIEW_NUM]; 1298 1341 1299 #if SONY_COLPIC_AVAILABILITY 1342 #if SONY_COLPIC_AVAILABILITY|QC_MVHEVC_B0046 1300 1343 Int m_iViewOrderIdx; 1301 1344 #endif … … 1311 1354 Void initTiles(); 1312 1355 1313 #if VIDYO_VPS_INTEGRATION 1356 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 1314 1357 Void setVPS ( TComVPS* pcVPS ) { m_pcVPS = pcVPS; } 1315 1358 TComVPS* getVPS () { return m_pcVPS; } 1316 1359 #endif 1360 #if QC_IV_AS_LT_B0046 1361 Void setWasLongTerm( Bool lt, RefPicList e, Int iRefIdx ) { m_bWasLongTerm[e][iRefIdx] = lt; } 1362 Bool getWasLongTerm( RefPicList e, Int iRefIdx ) { return m_bWasLongTerm[e][iRefIdx] ; } 1363 #endif 1364 1317 1365 Void setSPS ( TComSPS* pcSPS ) { m_pcSPS = pcSPS; } 1318 1366 TComSPS* getSPS () { return m_pcSPS; } … … 1587 1635 Void setViewId( Int viewId ) { m_viewId = viewId; } 1588 1636 Int getViewId() { return m_viewId; } 1637 #if QC_MVHEVC_B0046 1638 Void setViewOrderIdx(Int v, UInt layer) { m_iViewOrderIdx = v; } 1639 Int getViewOrderIdx() { return m_iViewOrderIdx; } 1640 #endif 1589 1641 Void setIsDepth( Bool isDepth ) { m_isDepth = isDepth; } 1590 1642 Bool getIsDepth() { return m_isDepth; } … … 1655 1707 } 1656 1708 1709 #if QC_MVHEVC_B0046 1710 Void clearPSList() 1711 { 1712 m_paramsetMap.clear(); 1713 } 1714 #endif 1657 1715 private: 1658 1716 std::map<Int,T *> m_paramsetMap; … … 1665 1723 ParameterSetManager(); 1666 1724 virtual ~ParameterSetManager(); 1667 #if VIDYO_VPS_INTEGRATION 1725 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 1668 1726 //! store video parameter set and take ownership of it 1669 1727 Void storeVPS(TComVPS *vps) { m_vpsMap.storePS( vps->getVPSId(), vps); }; … … 1671 1729 TComVPS* getVPS(Int vpsId) { return m_vpsMap.getPS(vpsId); }; 1672 1730 TComVPS* getFirstVPS() { return m_vpsMap.getFirstPS(); }; 1731 #if QC_MVHEVC_B0046 1732 Void clearVPS() { m_vpsMap.clearPSList(); }; 1733 Void clearSPS() { m_spsMap.clearPSList(); }; 1734 Void clearPPS() { m_ppsMap.clearPSList(); }; 1735 #endif 1673 1736 #endif 1674 1737 //! store sequence parameter set and take ownership of it … … 1693 1756 ParameterSetMap<TComPPS> m_ppsMap; 1694 1757 ParameterSetMap<TComAPS> m_apsMap; 1695 #if VIDYO_VPS_INTEGRATION 1758 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 1696 1759 ParameterSetMap<TComVPS> m_vpsMap; 1697 1760 #endif -
trunk/source/Lib/TLibCommon/TypeDef.h
r205 r210 41 41 //! \ingroup TLibCommon 42 42 //! \{ 43 43 #define QC_MVHEVC_B0046 0 //JCT3V-B0046: disable 3DHEVC tools 44 #define QC_IV_AS_LT_B0046 1 //JCT3V-B0046: inter-view reference pictures are treated as long-term pictures, scaling of motion vectors for DCP based on ViewId/ViewOrderIdx is disabled 45 #define QC_TMVP_IDX_MOD_B0046 1 //JCT3V-B0046: the reference index for temporal merging candidate is set to 0, as defined in HEVC 46 #define QC_REM_IDV_B0046 1 //JCT3V-B0046: removal of IDV NAL unit type 47 #define FIX_DEL_NULLPTR 1 48 #define FIX_MISUSE_REFINDEX 1 49 #define FIX_FCO_COMP_WARNING 1 50 #define DV_V_RESTRICTION_B0037 1 // JCT3V-B0037 disparity vector vertical range restriction 51 52 #if !QC_MVHEVC_B0046 44 53 ///// ***** FIXES ********* 45 54 // A … … 52 61 #define FIX_DMM_NEG_DIST 1 53 62 #define FIX_LGE_DVMCP_B0133 1 54 #define FIX_MISUSE_REFINDEX 1 55 63 64 65 // FCO 66 #define FLEX_CODING_ORDER_M23723 1 67 #if FLEX_CODING_ORDER_M23723 68 #define DISABLE_FCO_FOR_VSO 0 // Optional compile settings to disable VSO with FCO. 69 #endif 56 70 57 71 ///// ***** PATCHES ********* … … 178 192 179 193 #define HHI_MPI_MERGE_POS 0 180 194 #endif 181 195 ///// ***** HM 6.1 ********* 182 196 #define SKIPFRAME_BUGFIX 1 ///< bug fix to enable skipFrame at decoder … … 478 492 // VPS INTEGRATION 479 493 // ==================================================================================================================== 480 494 #if !QC_MVHEVC_B0046 481 495 #if VIDYO_VPS_INTEGRATION 482 496 #define MAX_NUM_VPS 10 483 497 #endif 498 #else 499 #define MAX_NUM_VPS 1 500 #endif 501 484 502 485 503 // ==================================================================================================================== -
trunk/source/Lib/TLibDecoder/NALread.cpp
r77 r210 132 132 #endif 133 133 134 #if QC_MVHEVC_B0046 135 //nalu.m_layerId = bs.read(6); 136 nalu.m_layerId = bs.read(5); 137 nalu.m_temporalId = bs.read(3) - 1; 138 #else 134 139 #if H0388 135 140 nalu.m_temporalId = bs.read(3); … … 145 150 if ( nalu.m_temporalId ) 146 151 { 152 #if QC_REM_IDV_B0046 153 assert( nalu.m_nalUnitType != NAL_UNIT_CODED_SLICE_CRA && nalu.m_nalUnitType != NAL_UNIT_CODED_SLICE_IDR); 154 #else 147 155 assert( nalu.m_nalUnitType != NAL_UNIT_CODED_SLICE_CRA && nalu.m_nalUnitType != NAL_UNIT_CODED_SLICE_IDR && nalu.m_nalUnitType != NAL_UNIT_CODED_SLICE_IDV ); 156 #endif 148 157 } 149 158 #endif … … 154 163 case NAL_UNIT_CODED_SLICE_IDR: 155 164 #if H0566_TLA 165 #if !QC_REM_IDV_B0046 156 166 case NAL_UNIT_CODED_SLICE_IDV: 167 #endif 157 168 case NAL_UNIT_CODED_SLICE_CRA: 158 169 case NAL_UNIT_CODED_SLICE_TLA: … … 175 186 if (nalu.m_temporalId == 0) 176 187 { 188 #if QC_REM_IDV_B0046 189 assert(nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE || nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_CRA || nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_IDR); 190 #else 177 191 assert(nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE || nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_CRA || nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_IDR || nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_IDV ); 192 #endif 178 193 } 179 194 else … … 190 205 } 191 206 #endif 207 #endif 192 208 } 193 209 //! \} -
trunk/source/Lib/TLibDecoder/TDecCAVLC.cpp
r189 r210 1338 1338 } 1339 1339 } 1340 1340 #if QC_MVHEVC_B0046 1341 Void TDecCavlc::parseVPS(TComVPS* pcVPS) 1342 { 1343 UInt uiCode; 1344 READ_CODE( 4, uiCode, "video_parameter_set_id" ); pcVPS->setVPSId( uiCode ); 1345 READ_FLAG( uiCode, "temporal_id_nesting_flag" ); pcVPS->setTemporalNestingFlag( uiCode ? true:false ); 1346 READ_CODE( 2, uiCode, "vps_reserved_zero_2bits" ); assert( !uiCode ); 1347 READ_CODE( 6, uiCode, "vps_max_layers_minus1" ); pcVPS->setMaxLayers( uiCode + 1 ); 1348 READ_CODE( 3, uiCode, "vps_max_sub_layers_minus1" ); pcVPS->setMaxTLayers( uiCode + 1 ); 1349 READ_CODE( 12, uiCode, "vps_extension_offset" ); assert( !uiCode ); 1350 for(UInt i = 0; i <= pcVPS->getMaxTLayers()-1; i++) 1351 { 1352 READ_UVLC( uiCode, "max_dec_pic_buffering[i]" ); pcVPS->setMaxDecPicBuffering( uiCode, i ); 1353 READ_UVLC( uiCode, "num_reorder_pics[i]" ); pcVPS->setNumReorderPics( uiCode, i ); 1354 READ_UVLC( uiCode, "max_latency_increase[i]" ); pcVPS->setMaxLatencyIncrease( uiCode, i ); 1355 } 1356 READ_UVLC( uiCode, "vps_num_hrd_parameters" ); pcVPS->setNumHRDParameters(uiCode); 1357 assert(pcVPS->getNumHRDParameters()==0); 1358 for ( UInt i = 0; i < pcVPS->getNumHRDParameters(); i ++) 1359 { 1360 // if( i > 0 ) 1361 //{ 1362 // READ_UVLC (0, "op_num_layer_id_values_minus1[ opIdx ]"); 1363 // for( i = 0; i <= op_num_layer_id_values_minus1[ opIdx ]; i++ ) 1364 // READ_UVLC(0, 6, "op_layer_id[ opIdx ][ i ]"); 1365 //} 1366 //hrd_parameters( i = = 0, vps_max_sub_layers_minus1 ); 1367 } 1368 1369 READ_CODE( 1, uiCode, "bit_equal_to_one" ); assert( uiCode ); 1370 //vps_extension_byte_alignment_reserved_one_bit 1371 xReadVPSAlignOne(); 1372 READ_CODE( 8, uiCode, "num_additional_layer_operation_points" ); pcVPS->setNumAddiLayerOperationPoints( uiCode ); 1373 READ_CODE( 8, uiCode, "num_additional_profile_level_sets" ); pcVPS->setNumAddiProLevelSets( uiCode); 1374 1375 1376 for(UInt i=0; i <= pcVPS->getMaxLayers()-1; i++) 1377 { 1378 READ_CODE( 4, uiCode, "num_types_zero_4bits[i]" ); assert( !uiCode ); 1379 READ_CODE( 4, uiCode, "type_zero_4bits[i]" ); assert( !uiCode ); 1380 READ_CODE( 8, uiCode, "view_id[i]" ); pcVPS->setViewId(uiCode, i); 1381 // WRITE_SVLC( pcVPS->getViewOrderIdx(i), "view_order_idx[i]" ); 1382 if(i) 1383 { 1384 READ_CODE( 6, uiCode, "num_direct_ref_layers[ i ]" ); pcVPS->setNumDirectRefLayer(uiCode, i); 1385 for (UInt j = 0; j< pcVPS->getNumDirectRefLayer(i); j++) 1386 { 1387 READ_CODE( 6, uiCode, "ref_layer_id[i][j]" ); pcVPS->setDirectRefLayerId (uiCode, i, j); 1388 } 1389 } 1390 } 1391 for( UInt i=1; i<=pcVPS->getNumAddiProLevelSets(); i++) 1392 { 1393 //profile_tier_level 1394 } 1395 for( UInt i=1; i<= pcVPS->getNumAddiLayerOperationPoints(); i++) 1396 { 1397 if(pcVPS->getMaxLayers() == 3) 1398 { 1399 pcVPS->setNumOpLayerIdMinus1((i < pcVPS->getNumAddiLayerOperationPoints() ? 1: 2), (i-1)); 1400 } 1401 else if( i==1 ) 1402 { 1403 assert(pcVPS->getNumAddiLayerOperationPoints()==1); 1404 pcVPS->setNumOpLayerIdMinus1(pcVPS->getMaxLayers()-1, (i-1)); 1405 } 1406 READ_UVLC( uiCode, "op_num_layer_id_values_minus1[ opIdx ]" ); pcVPS->setNumOpLayerIdMinus1(uiCode, i-1); 1407 for(UInt j = 0; j <= pcVPS->getNumOpLayerIdMinus1(i-1); j++ ) 1408 { 1409 READ_UVLC( uiCode, "op_layer_id[ opIdx ][ i ]" ); pcVPS->setNumOpLayerId(uiCode, i-1, j); 1410 } 1411 if (pcVPS->getNumAddiProLevelSets()) 1412 { 1413 //profile_level_idx[ i ] 1414 } 1415 } 1416 return; 1417 } 1418 #else 1341 1419 #if VIDYO_VPS_INTEGRATION 1342 1420 Void TDecCavlc::parseVPS(TComVPS* pcVPS) … … 1389 1467 1390 1468 #endif 1391 1469 #endif 1392 1470 #if HHI_MPI 1393 1471 Void TDecCavlc::parseSPS(TComSPS* pcSPS, Bool bIsDepth) … … 1401 1479 1402 1480 UInt uiCode; 1481 #if !QC_MVHEVC_B0046 1403 1482 Int iCode; 1404 1483 #endif 1405 1484 READ_CODE( 8, uiCode, "profile_idc" ); pcSPS->setProfileIdc( uiCode ); 1406 1485 READ_CODE( 8, uiCode, "reserved_zero_8bits" ); … … 1645 1724 #endif 1646 1725 READ_FLAG( uiCode, "sps_extension_flag"); 1726 #if !QC_MVHEVC_B0046 1647 1727 if(uiCode) 1648 1728 { … … 1803 1883 } 1804 1884 } 1885 #endif 1805 1886 } 1806 1887 … … 1907 1988 } 1908 1989 #endif 1990 #if QC_REM_IDV_B0046 1991 #if !QC_MVHEVC_B0046 1992 if(rpcSlice->getNalUnitType()==NAL_UNIT_CODED_SLICE_IDR && rpcSlice->getSPS()->getViewId() == 0) 1993 #else 1994 if(rpcSlice->getNalUnitType()==NAL_UNIT_CODED_SLICE_IDR && rpcSlice->getViewId() == 0) 1995 #endif 1996 #else 1909 1997 if(rpcSlice->getNalUnitType()==NAL_UNIT_CODED_SLICE_IDR) 1998 #endif 1910 1999 { 1911 2000 READ_UVLC( uiCode, "idr_pic_id" ); //ignored … … 1941 2030 } 1942 2031 rpcSlice->setPOC( iPOCmsb+iPOClsb ); 1943 2032 #if QC_REM_IDV_B0046 2033 #if !QC_MVHEVC_B0046 2034 if( rpcSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR && rpcSlice->getSPS()->getViewId() && rpcSlice->getPOC() == 0 ) 2035 #else 2036 if( rpcSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR && rpcSlice->getViewId() && rpcSlice->getPOC() == 0 ) 2037 #endif 2038 #else 1944 2039 if( rpcSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDV && rpcSlice->getPOC() == 0 ) 2040 #endif 1945 2041 { 1946 2042 TComReferencePictureSet* rps = rpcSlice->getLocalRPS(); … … 2082 2178 { 2083 2179 #if H0412_REF_PIC_LIST_RESTRICTION 2180 #if QC_MVHEVC_B0046 2181 if( !rpcSlice->getViewId() || !rpcSlice->getSPS()->getListsModificationPresentFlag() ) 2182 #else 2084 2183 if( !rpcSlice->getSPS()->getListsModificationPresentFlag() ) 2184 #endif 2085 2185 { 2086 2186 refPicListModification->setRefPicListModificationFlagL0( 0 ); … … 2153 2253 { 2154 2254 #if H0412_REF_PIC_LIST_RESTRICTION 2255 #if QC_MVHEVC_B0046 2256 if( !rpcSlice->getViewId() || !rpcSlice->getSPS()->getListsModificationPresentFlag() ) 2257 #else 2155 2258 if( !rpcSlice->getSPS()->getListsModificationPresentFlag() ) 2259 #endif 2156 2260 { 2157 2261 refPicListModification->setRefPicListModificationFlagL1( 0 ); … … 2237 2341 2238 2342 #if H0412_REF_PIC_LIST_RESTRICTION 2239 if(rpcSlice->getSPS()->getListsModificationPresentFlag() ) 2343 #if QC_MVHEVC_B0046 2344 if( rpcSlice->getViewId() && rpcSlice->getSPS()->getListsModificationPresentFlag() ) 2345 #else 2346 if(rpcSlice->getSPS()->getListsModificationPresentFlag() ) 2347 #endif 2240 2348 { 2241 2349 #endif … … 2944 3052 } 2945 3053 3054 #if QC_MVHEVC_B0046 3055 /** Parse VPS alignment one bits. 3056 * \returns Void 3057 */ 3058 Void TDecCavlc::xReadVPSAlignOne( ) 3059 { 3060 UInt uiNumberOfBits = m_pcBitstream->getNumBitsUntilByteAligned(); 3061 3062 if(uiNumberOfBits) 3063 { 3064 UInt uiBits; 3065 UInt uiSymbol; 3066 3067 for(uiBits = 0; uiBits < uiNumberOfBits; uiBits++) 3068 { 3069 xReadFlag( uiSymbol ); 3070 3071 if(!uiSymbol) 3072 { 3073 printf("\nWarning! vps_extension_byte_alignment_reserved_one_bit include a non-zero value.\n"); 3074 } 3075 } 3076 } 3077 } 3078 #endif 2946 3079 /** Parse PCM alignment zero bits. 2947 3080 * \returns Void -
trunk/source/Lib/TLibDecoder/TDecCAVLC.h
r189 r210 75 75 Void xReadFlagTr ( UInt& rValue, const Char *pSymbolName); 76 76 #endif 77 77 #if QC_MVHEVC_B0046 78 Void xReadVPSAlignOne (); 79 #endif 78 80 Void xReadPCMAlignZero (); 79 81 … … 113 115 Void parseQtRootCbf ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt& uiQtRootCbf ); 114 116 115 #if VIDYO_VPS_INTEGRATION 117 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 116 118 Void parseVPS ( TComVPS* pcVPS ); 117 119 #endif -
trunk/source/Lib/TLibDecoder/TDecEntropy.h
r189 r210 71 71 #endif 72 72 73 #if VIDYO_VPS_INTEGRATION 73 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 74 74 virtual Void parseVPS ( TComVPS* pcVPS ) = 0; 75 75 #endif … … 175 175 Void resetEntropy ( TComSlice* p) { m_pcEntropyDecoderIf->resetEntropy(p); } 176 176 177 #if VIDYO_VPS_INTEGRATION 177 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 178 178 Void decodeVPS ( TComVPS* pcVPS ) { m_pcEntropyDecoderIf->parseVPS(pcVPS); } 179 179 #endif -
trunk/source/Lib/TLibDecoder/TDecSbac.h
r189 r210 87 87 Void setBitstream ( TComInputBitstream* p ) { m_pcBitstream = p; m_pcTDecBinIf->init( p ); } 88 88 89 #if VIDYO_VPS_INTEGRATION 89 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 90 90 Void parseVPS ( TComVPS* pcVPS ) {} 91 91 #endif -
trunk/source/Lib/TLibDecoder/TDecSlice.cpp
r77 r210 446 446 , m_ppsBuffer(16) 447 447 , m_apsBuffer(64) 448 #if VIDYO_VPS_INTEGRATION 448 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 449 449 , m_vpsBuffer(16) 450 450 #endif … … 458 458 } 459 459 460 #if VIDYO_VPS_INTEGRATION 460 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 461 461 TComVPS* ParameterSetManagerDecoder::getPrefetchedVPS (Int vpsId) 462 462 { … … 513 513 m_ppsMap.mergePSList(m_ppsBuffer); 514 514 m_spsMap.mergePSList(m_spsBuffer); 515 #if VIDYO_VPS_INTEGRATION 515 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 516 516 m_vpsMap.mergePSList(m_vpsBuffer); 517 517 #endif -
trunk/source/Lib/TLibDecoder/TDecSlice.h
r100 r210 96 96 Void storePrefetchedAPS(TComAPS *aps) { m_apsBuffer.storePS( aps->getAPSID(), aps); }; 97 97 TComAPS* getPrefetchedAPS (Int apsId); 98 #if VIDYO_VPS_INTEGRATION 98 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 99 99 Void storePrefetchedVPS(TComVPS *vps) { m_vpsBuffer.storePS( vps->getVPSId(), vps); }; 100 100 TComVPS* getPrefetchedVPS (Int vpsId); … … 106 106 ParameterSetMap<TComPPS> m_ppsBuffer; 107 107 ParameterSetMap<TComAPS> m_apsBuffer; 108 #if VIDYO_VPS_INTEGRATION 108 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 109 109 ParameterSetMap<TComVPS> m_vpsBuffer; 110 110 #endif -
trunk/source/Lib/TLibDecoder/TDecTop.cpp
r77 r210 50 50 m_aaiCodedScale = new Int* [ MAX_VIEW_NUM ]; 51 51 m_aiViewOrderIndex = new Int [ MAX_VIEW_NUM ]; 52 #if QC_MVHEVC_B0046 53 m_aiViewId = new Int [ MAX_VIEW_NUM ]; 54 #endif 52 55 m_aiViewReceived = new Int [ MAX_VIEW_NUM ]; 53 56 for( UInt uiId = 0; uiId < MAX_VIEW_NUM; uiId++ ) … … 266 269 m_bFirstSliceInSequence = true; 267 270 m_pcCamParsCollector = 0; 271 #if QC_MVHEVC_B0046 272 m_bFirstNal = false; 273 #endif 268 274 } 269 275 … … 578 584 TComVPS *vps = m_parameterSetManagerDecoder.getVPS(sps->getVPSId()); 579 585 assert (vps != 0); 586 #if !QC_REM_IDV_B0046 580 587 if( m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR || m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA ) 588 #else 589 if( (m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR || m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA) && !sps->getViewId() ) 590 #endif 581 591 // VPS can only be activated on IDR or CRA... 582 592 getTAppDecTop()->getVPSAccess()->setActiveVPSId( sps->getVPSId() ); … … 584 594 m_apcSlicePilot->setPPS(pps); 585 595 m_apcSlicePilot->setSPS(sps); 586 #if VIDYO_VPS_INTEGRATION 596 #if QC_MVHEVC_B0046 597 TComVPS *vps = m_parameterSetManagerDecoder.getVPS(sps->getVPSId()); 598 #endif 599 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 587 600 m_apcSlicePilot->setVPS(vps); 588 601 #endif … … 626 639 m_apcSlicePilot->setPPS(m_parameterSetManagerDecoder.getPrefetchedPPS(0)); 627 640 m_apcSlicePilot->setSPS(m_parameterSetManagerDecoder.getPrefetchedSPS(0)); 628 #if VIDYO_VPS_INTEGRATION 641 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 642 #if QC_MVHEVC_B0046 643 m_apcSlicePilot->setIsDepth(false); 644 #endif 629 645 m_apcSlicePilot->setVPS(m_parameterSetManagerDecoder.getPrefetchedVPS(0)); 630 646 #endif 631 647 m_apcSlicePilot->initTiles(); 632 648 #if QC_MVHEVC_B0046 649 m_apcSlicePilot->setViewId( nalu.m_layerId ); 650 m_apcSlicePilot->setViewId( nalu.m_layerId ); 651 m_apcSlicePilot->setViewOrderIdx(m_apcSlicePilot->getVPS()->getViewId(nalu.m_layerId), nalu.m_layerId); 652 Int iNumDirectRef = m_apcSlicePilot->getVPS()->getNumDirectRefLayer(nalu.m_layerId); 653 m_apcSlicePilot->getSPS()->setNumberOfUsableInterViewRefs(iNumDirectRef); 654 for(Int iNumIvRef = 0; iNumIvRef < iNumDirectRef; iNumIvRef ++) 655 { 656 Int iDeltaLayerId = m_apcSlicePilot->getVPS()->getDirectRefLayerId( nalu.m_layerId, iNumIvRef); 657 m_apcSlicePilot->getSPS()->setUsableInterViewRef(iNumIvRef, (iDeltaLayerId-nalu.m_layerId)); 658 } 659 #endif 633 660 if (m_bFirstSliceInPicture) 634 661 { … … 645 672 if( m_bFirstSliceInPicture ) 646 673 { 674 #if QC_MVHEVC_B0046 675 if( nalu.m_layerId == 0 ) { m_nalUnitTypeBaseView = nalu.m_nalUnitType; } 676 else { m_nalUnitTypeBaseView = m_tAppDecTop->getTDecTop( 0, 0 )->getNalUnitTypeBaseView(); } 677 #else 647 678 #if VIDYO_VPS_INTEGRATION 648 679 if( m_apcSlicePilot->getVPS()->getViewId(nalu.m_layerId) == 0 ) { m_nalUnitTypeBaseView = nalu.m_nalUnitType; } … … 652 683 else { m_nalUnitTypeBaseView = m_tAppDecTop->getTDecTop( 0, nalu.m_isDepth )->getNalUnitTypeBaseView(); } 653 684 #endif 654 685 #endif 655 686 m_apcSlicePilot->setNalUnitTypeBaseViewMvc( m_nalUnitTypeBaseView ); 656 687 } … … 951 982 952 983 // Set reference list 984 #if !QC_MVHEVC_B0046 953 985 #if VIDYO_VPS_INTEGRATION 954 986 pcSlice->setViewId( pcSlice->getVPS()->getViewId(nalu.m_layerId) ); … … 958 990 pcSlice->setIsDepth(m_isDepth); 959 991 #endif 992 #endif 960 993 961 994 #if SONY_COLPIC_AVAILABILITY … … 969 1002 assert( m_tAppDecTop != NULL ); 970 1003 TComPic * const pcTexturePic = m_isDepth ? m_tAppDecTop->getPicFromView( m_viewId, pcSlice->getPOC(), false ) : NULL; 1004 1005 #if FLEX_CODING_ORDER_M23723 1006 if (pcTexturePic != NULL) 1007 { 1008 assert( !m_isDepth || pcTexturePic != NULL ); 1009 pcSlice->setTexturePic( pcTexturePic ); 1010 } 1011 #else 971 1012 assert( !m_isDepth || pcTexturePic != NULL ); 972 1013 pcSlice->setTexturePic( pcTexturePic ); 1014 #endif 1015 973 1016 974 1017 std::vector<TComPic*> apcInterViewRefPics = m_tAppDecTop->getInterViewRefPics( m_viewId, pcSlice->getPOC(), m_isDepth, pcSlice->getSPS() ); … … 1071 1114 m_cGopDecoder.decompressGop(nalu.m_Bitstream, pcPic, false); 1072 1115 1116 #if QC_IV_AS_LT_B0046 1117 std::vector<TComPic*> apcInterViewRefPics = m_tAppDecTop->getInterViewRefPics( m_viewId, pcSlice->getPOC(), m_isDepth, pcSlice->getSPS() ); 1118 for( Int k = 0; k < apcInterViewRefPics.size(); k++ ) 1119 { 1120 TComPic* pcPicIv = apcInterViewRefPics[k]; 1121 pcPicIv->setIsLongTerm( 0 ); 1122 } 1123 #endif 1073 1124 if( m_pcCamParsCollector ) 1074 1125 { … … 1082 1133 } 1083 1134 1084 #if VIDYO_VPS_INTEGRATION 1135 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 1085 1136 Void TDecTop::xDecodeVPS() 1086 1137 { … … 1089 1140 m_cEntropyDecoder.decodeVPS( vps ); 1090 1141 m_parameterSetManagerDecoder.storePrefetchedVPS(vps); 1142 #if !QC_MVHEVC_B0046 1091 1143 getTAppDecTop()->getVPSAccess()->addVPS( vps ); 1144 #endif 1092 1145 } 1093 1146 #endif … … 1155 1208 switch (nalu.m_nalUnitType) 1156 1209 { 1157 #if VIDYO_VPS_INTEGRATION 1210 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 1158 1211 case NAL_UNIT_VPS: 1159 1212 xDecodeVPS(); … … 1178 1231 case NAL_UNIT_CODED_SLICE_IDR: 1179 1232 #if H0566_TLA 1233 #if !QC_REM_IDV_B0046 1180 1234 case NAL_UNIT_CODED_SLICE_IDV: 1235 #endif 1181 1236 case NAL_UNIT_CODED_SLICE_CRA: 1182 1237 case NAL_UNIT_CODED_SLICE_TLA: … … 1193 1248 } 1194 1249 1250 #if QC_MVHEVC_B0046 1251 Void TDecTop::xCopyVPS( TComVPS* pVPSV0 ) 1252 { 1253 m_parameterSetManagerDecoder.storePrefetchedVPS(pVPSV0); 1254 } 1255 1256 Void TDecTop::xCopySPS( TComSPS* pSPSV0 ) 1257 { 1258 TComSPS* sps = new TComSPS(); 1259 sps = pSPSV0; 1260 m_parameterSetManagerDecoder.storePrefetchedSPS(sps); 1261 #if LCU_SYNTAX_ALF 1262 m_cAdaptiveLoopFilter.create( sps->getPicWidthInLumaSamples(), sps->getPicHeightInLumaSamples(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth ); 1263 #endif 1264 } 1265 1266 Void TDecTop::xCopyPPS(TComPPS* pPPSV0 ) 1267 { 1268 m_parameterSetManagerDecoder.storePrefetchedPPS( pPPSV0 ); 1269 1270 //!!!KS: Activate parameter sets for parsing APS (unless dependency is resolved) 1271 m_apcSlicePilot->setPPSId(pPPSV0->getPPSId()); 1272 xActivateParameterSets(); 1273 m_apcSlicePilot->initTiles(); 1274 } 1275 #endif 1195 1276 /** Function for checking if picture should be skipped because of random access 1196 1277 * \param iSkipFrame skip frame counter -
trunk/source/Lib/TLibDecoder/TDecTop.h
r100 r210 88 88 Int** m_aaiCodedScale; 89 89 Int* m_aiViewOrderIndex; 90 #if QC_MVHEVC_B0046 91 Int* m_aiViewId; 92 #endif 90 93 Int* m_aiViewReceived; 91 94 UInt m_uiCamParsCodedPrecision; … … 168 171 169 172 Void deletePicBuffer(); 170 173 #if QC_MVHEVC_B0046 174 Void xCopySPS( TComSPS* pSPSV0); 175 Void xCopyPPS( TComPPS* pPPSV0); 176 Void xCopyVPS( TComVPS* pVPSV0); 177 #endif 171 178 #if HHI_INTER_VIEW_RESIDUAL_PRED 172 179 Void deleteExtraPicBuffers ( Int iPoc ); … … 195 202 TAppDecTop* getTAppDecTop() { return m_tAppDecTop; } 196 203 NalUnitType getNalUnitTypeBaseView() { return m_nalUnitTypeBaseView; } 197 204 #if QC_MVHEVC_B0046 205 bool m_bFirstNal; //used to copy SPS, PPS, VPS 206 ParameterSetManagerDecoder* xGetParaSetDec () {return &m_parameterSetManagerDecoder;} 207 #endif 198 208 protected: 199 209 Void xGetNewPicBuffer (TComSlice* pcSlice, TComPic*& rpcPic); … … 208 218 Bool xDecodeSlice(InputNALUnit &nalu, Int iSkipFrame, Int iPOCLastDisplay); 209 219 #endif 210 #if VIDYO_VPS_INTEGRATION 220 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 211 221 Void xDecodeVPS(); 212 222 #endif -
trunk/source/Lib/TLibEncoder/NALwrite.cpp
r77 r210 64 64 #endif 65 65 66 #if QC_MVHEVC_B0046 67 bsNALUHeader.write(nalu.m_layerId, 5); // when nal_ref_flag is signalled, 5 bits here. otherwise, 6 bits 68 bsNALUHeader.write(nalu.m_temporalId + 1, 3); // temporal_id 69 #else 66 70 #if VIDYO_VPS_INTEGRATION 67 71 bsNALUHeader.write(nalu.m_temporalId, 3); // temporal_id … … 79 83 case NAL_UNIT_CODED_SLICE_IDR: 80 84 #if H0566_TLA 85 #if !QC_REM_IDV_B0046 81 86 case NAL_UNIT_CODED_SLICE_IDV: 87 #endif 82 88 case NAL_UNIT_CODED_SLICE_CRA: 83 89 case NAL_UNIT_CODED_SLICE_TLA: … … 95 101 #endif 96 102 #endif 97 103 #endif 98 104 out.write(bsNALUHeader.getByteStream(), bsNALUHeader.getByteStreamLength()); 99 105 … … 196 202 } 197 203 204 #if !QC_MVHEVC_B0046 198 205 /** 199 206 * Copy NALU from naluSrc to naluDest … … 222 229 naluDest.m_Bitstream = naluSrc.m_Bitstream; 223 230 } 231 #endif 224 232 225 233 //! \} -
trunk/source/Lib/TLibEncoder/NALwrite.h
r77 r210 62 62 NalRefIdc nalRefIDC, 63 63 #endif 64 #if VIDYO_VPS_INTEGRATION 64 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 65 65 unsigned layerId, 66 66 #else … … 70 70 unsigned temporalID = 0) 71 71 #if NAL_REF_FLAG 72 #if VIDYO_VPS_INTEGRATION 72 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 73 73 : NALUnit(nalUnitType, nalRefFlag, layerId, temporalID) 74 74 #else -
trunk/source/Lib/TLibEncoder/TEncCavlc.cpp
r189 r210 375 375 } 376 376 377 #if QC_MVHEVC_B0046 378 Void TEncCavlc::codeVPS( TComVPS* pcVPS ) 379 { 380 WRITE_CODE( pcVPS->getVPSId(), 4, "video_parameter_set_id" ); 381 WRITE_FLAG( pcVPS->getTemporalNestingFlag() -1, "temporal_id_nesting_flag" ); 382 WRITE_CODE( 0, 2, "vps_reserved_zero_2bits" ); 383 WRITE_CODE( pcVPS->getMaxLayers() - 1, 6, "vps_max_layers_minus1" ); 384 WRITE_CODE( pcVPS->getMaxTLayers() - 1, 3, "vps_max_sub_layers_minus1" ); 385 //to be determined 386 //profile_tier_level( 1, vps_max_sub_layers_minus1 ); 387 //to be modified 388 WRITE_CODE( 0, 12, "vps_extension_offset" ); 389 for(UInt i=0; i <= pcVPS->getMaxTLayers()-1; i++) 390 { 391 WRITE_UVLC( pcVPS->getMaxDecPicBuffering(i), "max_dec_pic_buffering[i]" ); 392 WRITE_UVLC( pcVPS->getNumReorderPics(i), "num_reorder_pics[i]" ); 393 WRITE_UVLC( pcVPS->getMaxLatencyIncrease(i), "max_latency_increase[i]" ); 394 } 395 //!!!waste one bit: 3-view, 3; 2-view or more views: 1 396 WRITE_UVLC(pcVPS->getNumHRDParameters(), "vps_num_hrd_parameters" ); 397 assert(pcVPS->getNumHRDParameters()==0); 398 for ( UInt i = 0; i < pcVPS->getNumHRDParameters(); i ++) 399 { 400 // if( i > 0 ) 401 //{ 402 // WRITE_UVLC (0, "op_num_layer_id_values_minus1[ opIdx ]"); 403 // for( i = 0; i <= op_num_layer_id_values_minus1[ opIdx ]; i++ ) 404 // WRITE_CODE(0, 6, "op_layer_id[ opIdx ][ i ]"); 405 //} 406 //hrd_parameters( i = = 0, vps_max_sub_layers_minus1 ); 407 } 408 WRITE_CODE( 1, 1, "bit_equal_to_one" ); 409 //btye aligned 410 m_pcBitIf->writeAlignOne(); 411 412 if(pcVPS->getMaxLayers() == 3) 413 pcVPS->setNumAddiLayerOperationPoints (pcVPS->getMaxLayers()); //may be configured 414 else 415 pcVPS->setNumAddiLayerOperationPoints (1); 416 pcVPS->setNumAddiProLevelSets (1); 417 WRITE_CODE( pcVPS->getNumAddiLayerOperationPoints(), 8, "num_additional_layer_operation_points" ); 418 WRITE_CODE( pcVPS->getNumAddiProLevelSets(), 8, "num_additional_profile_level_sets" ); 419 for(UInt i=0; i <= pcVPS->getMaxLayers()-1; i++) 420 { 421 WRITE_CODE( 0, 4, "num_types_zero_4bits[i]" ); 422 WRITE_CODE( 0, 4, "type_zero_4bits[i]" ); 423 WRITE_CODE( pcVPS->getViewId(i), 8, "view_id[i]" ); 424 if(i) 425 { 426 WRITE_CODE( pcVPS->getNumDirectRefLayer(i), 6, "num_direct_ref_layers[ i ]" ); 427 for (UInt j = 0; j< pcVPS->getNumDirectRefLayer(i); j++) 428 { 429 WRITE_CODE( pcVPS->getDirectRefLayerId (i, j), 6, "ref_layer_id[i][j]" ); 430 } 431 } 432 } 433 for( UInt i=1; i<=pcVPS->getNumAddiProLevelSets(); i++) 434 { 435 //profile_tier_level 436 } 437 for( UInt i=1; i<= pcVPS->getNumAddiLayerOperationPoints(); i++) 438 { 439 if(pcVPS->getMaxLayers() == 3) 440 { 441 pcVPS->setNumOpLayerIdMinus1((i < pcVPS->getNumAddiLayerOperationPoints() ? 1: 2), (i-1)); 442 } 443 else if( i==1 ) 444 { 445 assert(pcVPS->getNumAddiLayerOperationPoints()==1); 446 pcVPS->setNumOpLayerIdMinus1(pcVPS->getMaxLayers()-1, (i-1)); 447 } 448 WRITE_UVLC( pcVPS->getNumOpLayerIdMinus1(i-1), "op_num_layer_id_values_minus1[ opIdx ]" ); 449 for(UInt j = 0; j <= pcVPS->getNumOpLayerIdMinus1(i-1); j++ ) 450 { 451 if(pcVPS->getMaxLayers() == 3 && i== 2 && j==1) 452 pcVPS->setNumOpLayerId (2, i-1, j); 453 else 454 pcVPS->setNumOpLayerId (j, i-1, j); 455 WRITE_UVLC( pcVPS->getNumOpLayerId(i-1, j), "op_layer_id[ opIdx ][ i ]" ); 456 } 457 if (pcVPS->getNumAddiProLevelSets()) 458 { 459 //profile_level_idx[ i ] 460 } 461 } 462 return; 463 } 464 #else 377 465 #if VIDYO_VPS_INTEGRATION 378 466 Void TEncCavlc::codeVPS( TComVPS* pcVPS ) … … 419 507 } 420 508 #endif 421 509 #endif 422 510 #if HHI_MPI 423 511 Void TEncCavlc::codeSPS( TComSPS* pcSPS, Bool bIsDepth ) … … 620 708 #endif 621 709 WRITE_FLAG( 1, "sps_extension_flag" ); 622 710 #if !QC_MVHEVC_B0046 623 711 WRITE_FLAG( (pcSPS->getNumberOfUsableInterViewRefs() > 0) ? 1 : 0, "interview_refs_present_flag" ); 624 712 if( pcSPS->getNumberOfUsableInterViewRefs() > 0 ) … … 719 807 } 720 808 WRITE_FLAG( 0, "sps_extension2_flag" ); 809 #endif 721 810 } 722 811 … … 795 884 if (!bEntropySlice) 796 885 { 886 #if QC_MVHEVC_B0046 887 WRITE_UVLC( 0, "pic_parameter_set_id" ); 888 #else 797 889 WRITE_UVLC( pcSlice->getPPS()->getPPSId(), "pic_parameter_set_id" ); 890 #endif 798 891 #if H0388 799 892 if( pcSlice->getPPS()->getOutputFlagPresentFlag() ) … … 802 895 } 803 896 #endif 897 #if QC_REM_IDV_B0046 898 if(pcSlice->getNalUnitType()==NAL_UNIT_CODED_SLICE_IDR && pcSlice->getViewId() == 0) 899 #else 804 900 if(pcSlice->getNalUnitType()==NAL_UNIT_CODED_SLICE_IDR) 901 #endif 805 902 { 806 903 WRITE_UVLC( 0, "idr_pic_id" ); … … 810 907 { 811 908 WRITE_CODE( (pcSlice->getPOC()-pcSlice->getLastIDR()+(1<<pcSlice->getSPS()->getBitsForPOC()))%(1<<pcSlice->getSPS()->getBitsForPOC()), pcSlice->getSPS()->getBitsForPOC(), "pic_order_cnt_lsb"); 909 #if QC_REM_IDV_B0046 910 if( pcSlice->getPOC() == 0 && !(pcSlice->getSPS()->getViewId() && (pcSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR || pcSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA))) 911 #else 812 912 if( pcSlice->getPOC() == 0 && pcSlice->getNalUnitType() != NAL_UNIT_CODED_SLICE_IDV ) 913 #endif 813 914 { 814 915 TComReferencePictureSet* rps = pcSlice->getRPS(); -
trunk/source/Lib/TLibEncoder/TEncCavlc.h
r189 r210 114 114 UInt getCoeffCost () { return m_uiCoeffCost; } 115 115 116 #if VIDYO_VPS_INTEGRATION 116 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 117 117 Void codeVPS ( TComVPS* pcVPS ); 118 118 #endif -
trunk/source/Lib/TLibEncoder/TEncCfg.h
r189 r210 183 183 Int m_iSearchRange; // 0:Full frame 184 184 Int m_bipredSearchRange; 185 185 #if DV_V_RESTRICTION_B0037 186 Bool m_bUseDisparitySearchRangeRestriction; 187 Int m_iVerticalDisparitySearchRange; 188 #endif 186 189 //====== Quality control ======== 187 190 Int m_iMaxDeltaQP; // Max. absolute delta QP (1:default) … … 307 310 #endif 308 311 309 #if VIDYO_VPS_INTEGRATION 312 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 310 313 UInt m_layerId; 311 314 #endif … … 322 325 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 323 326 Bool m_bUseDMM; 327 #endif 328 329 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER_M23723 330 Bool m_bUseDMM34; 324 331 #endif 325 332 … … 468 475 Void setSearchRange ( Int i ) { m_iSearchRange = i; } 469 476 Void setBipredSearchRange ( Int i ) { m_bipredSearchRange = i; } 470 477 #if DV_V_RESTRICTION_B0037 478 Void setUseDisparitySearchRangeRestriction ( Bool b ) { m_bUseDisparitySearchRangeRestriction = b; } 479 Void setVerticalDisparitySearchRange ( Int i ) { m_iVerticalDisparitySearchRange = i; } 480 #endif 471 481 #if HHI_INTER_VIEW_MOTION_PRED 472 482 UInt getMultiviewMvRegMode () { return m_uiMultiviewMvRegMode; } … … 559 569 Int getFastSearch () { return m_iFastSearch; } 560 570 Int getSearchRange () { return m_iSearchRange; } 561 571 #if DV_V_RESTRICTION_B0037 572 Bool getUseDisparitySearchRangeRestriction () { return m_bUseDisparitySearchRangeRestriction; } 573 Int getVerticalDisparitySearchRange () { return m_iVerticalDisparitySearchRange; } 574 #endif 562 575 #if HHI_VSO 563 576 //==== VSO ========== … … 820 833 Int getTSIG() { return m_signHidingThreshold; } 821 834 #endif 822 #if VIDYO_VPS_INTEGRATION 835 #if VIDYO_VPS_INTEGRATION |QC_MVHEVC_B0046 823 836 Void setLayerId ( UInt layerId ) { m_layerId = layerId; } 824 837 UInt getLayerId () { return m_layerId; } … … 833 846 Void setUseDMM( Bool b) { m_bUseDMM = b; } 834 847 Bool getUseDMM() { return m_bUseDMM; } 848 #endif 849 850 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER_M23723 851 Void setUseDMM34( Bool b) { m_bUseDMM34 = b; } 852 Bool getUseDMM34() { return m_bUseDMM34; } 835 853 #endif 836 854 -
trunk/source/Lib/TLibEncoder/TEncEntropy.cpp
r189 r210 121 121 } 122 122 123 #if VIDYO_VPS_INTEGRATION 123 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 124 124 Void TEncEntropy::encodeVPS( TComVPS* pcVPS ) 125 125 { … … 129 129 #endif 130 130 131 #if VIDYO_VPS_INTEGRATION 131 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 132 132 Void codeVPS ( TComVPS* pcVPS ); 133 133 #endif -
trunk/source/Lib/TLibEncoder/TEncEntropy.h
r189 r210 76 76 virtual UInt getCoeffCost () = 0; 77 77 78 #if VIDYO_VPS_INTEGRATION 78 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 79 79 virtual Void codeVPS ( TComVPS* pcVPS ) = 0; 80 80 #endif … … 242 242 243 243 public: 244 #if VIDYO_VPS_INTEGRATION 244 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 245 245 Void encodeVPS ( TComVPS* pcVPS); 246 246 #endif -
trunk/source/Lib/TLibEncoder/TEncGOP.cpp
r189 r210 246 246 247 247 std::vector<TComAPS>& vAPS = m_pcEncTop->getAPS(); 248 #if VIDYO_VPS_INTEGRATION 248 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 249 249 m_pcSliceEncoder->initEncSlice ( pcPic, iPOCLast, uiPOCCurr, iNumPicRcvd, iGOPid, pcSlice, m_pcEncTop->getEncTop()->getVPS(), m_pcEncTop->getSPS(), m_pcEncTop->getPPS() ); 250 250 #else … … 298 298 if( pcSlice->getSliceType() == B_SLICE ) 299 299 { 300 if( m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ).m_sliceType == 'P' ) { pcSlice->setSliceType( P_SLICE ); } 301 } 300 #if QC_REM_IDV_B0046 301 if( m_pcCfg->getGOPEntry(pcSlice->getSPS()->getViewId() && ((getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDR) || (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_CRA))? MAX_GOP : iGOPid ).m_sliceType == 'P' ) { pcSlice->setSliceType( P_SLICE ); } 302 #else 303 if( m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ).m_sliceType == 'P' ) { pcSlice->setSliceType( P_SLICE ); } 304 #endif 305 } 302 306 303 307 // Set the nal unit type … … 332 336 #endif 333 337 338 #if !QC_REM_IDV_B0046 334 339 pcSlice->setNumRefIdx( REF_PIC_LIST_0, min( m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ).m_numRefPicsActive, (pcSlice->getRPS()->getNumberOfPictures() + pcSlice->getSPS()->getNumberOfUsableInterViewRefs()) ) ); 335 340 pcSlice->setNumRefIdx( REF_PIC_LIST_1, min( m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ).m_numRefPicsActive, (pcSlice->getRPS()->getNumberOfPictures() + pcSlice->getSPS()->getNumberOfUsableInterViewRefs()) ) ); 336 337 TComRefPicListModification* refPicListModification = pcSlice->getRefPicListModification(); 338 refPicListModification->setRefPicListModificationFlagL0( false ); 341 #else 342 343 Bool bNalRAP = ((getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_CRA) || (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDR)) && (pcSlice->getSPS()->getViewId()) ? 1: 0; 344 pcSlice->setNumRefIdx( REF_PIC_LIST_0, min( m_pcCfg->getGOPEntry( bNalRAP ? MAX_GOP : iGOPid ).m_numRefPicsActive, (pcSlice->getRPS()->getNumberOfPictures() + pcSlice->getSPS()->getNumberOfUsableInterViewRefs()) ) ); 345 pcSlice->setNumRefIdx( REF_PIC_LIST_1, min( m_pcCfg->getGOPEntry( bNalRAP ? MAX_GOP : iGOPid ).m_numRefPicsActive, (pcSlice->getRPS()->getNumberOfPictures() + pcSlice->getSPS()->getNumberOfUsableInterViewRefs()) ) ); 346 #endif 347 TComRefPicListModification* refPicListModification = pcSlice->getRefPicListModification(); 348 refPicListModification->setRefPicListModificationFlagL0( false ); 339 349 #if !H0137_0138_LIST_MODIFICATION 340 350 refPicListModification->setNumberOfRefPicListModificationsL0(0); … … 353 363 assert( tAppEncTop != NULL ); 354 364 365 366 #if FLEX_CODING_ORDER_M23723 367 TComPic * pcTexturePic; 368 if(m_pcEncTop->getIsDepth() == 1) 369 { 370 TComPicYuv * recText; 371 recText = tAppEncTop->getPicYuvFromView(m_pcEncTop->getViewId(), pcSlice->getPOC(), false ,true); 372 if(recText == NULL) 373 { 374 pcSlice->setTexturePic(NULL); 375 } 376 else 377 { 378 pcTexturePic = m_pcEncTop->getIsDepth() ? tAppEncTop->getPicFromView( m_pcEncTop->getViewId(), pcSlice->getPOC(), false ) : NULL; 379 pcSlice->setTexturePic( pcTexturePic ); 380 } 381 } 382 else 383 { 384 pcTexturePic = m_pcEncTop->getIsDepth() ? tAppEncTop->getPicFromView( m_pcEncTop->getViewId(), pcSlice->getPOC(), false ) : NULL; 385 assert( !m_pcEncTop->getIsDepth() || pcTexturePic != NULL ); 386 pcSlice->setTexturePic( pcTexturePic ); 387 } 388 389 #else 355 390 TComPic * const pcTexturePic = m_pcEncTop->getIsDepth() ? tAppEncTop->getPicFromView( m_pcEncTop->getViewId(), pcSlice->getPOC(), false ) : NULL; 356 391 assert( !m_pcEncTop->getIsDepth() || pcTexturePic != NULL ); 357 392 pcSlice->setTexturePic( pcTexturePic ); 358 393 394 #endif 359 395 std::vector<TComPic*> apcInterViewRefPics = tAppEncTop->getInterViewRefPics( m_pcEncTop->getViewId(), pcSlice->getPOC(), m_pcEncTop->getIsDepth(), pcSlice->getSPS() ); 360 396 pcSlice->setRefPicListMvc( rcListPic, apcInterViewRefPics ); … … 363 399 if( pcSlice->getSliceType() == B_SLICE ) 364 400 { 401 #if !QC_REM_IDV_B0046 365 402 if( m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ).m_sliceType == 'P' ) { pcSlice->setSliceType( P_SLICE ); } 403 #else 404 Bool bRAP = ((getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_CRA) || (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDR)) && (pcSlice->getSPS()->getViewId()) ? 1: 0; 405 if( m_pcCfg->getGOPEntry( bRAP ? MAX_GOP : iGOPid ).m_sliceType == 'P' ) { pcSlice->setSliceType( P_SLICE ); } 406 #endif 366 407 } 367 408 … … 451 492 452 493 #if SAIT_VSO_EST_A0033 453 m_pcRdCost->setVideoRecPicYuv( m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), false, true ) ); 454 m_pcRdCost->setDepthPicYuv ( m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), true, false ) ); 494 #ifdef FLEX_CODING_ORDER_M23723 495 { 496 Bool flagRec; 497 flagRec = ((m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), false, true) == NULL) ? false: true); 498 m_pcRdCost->setVideoRecPicYuv( m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), false, flagRec ) ); 499 m_pcRdCost->setDepthPicYuv ( m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), true, false ) ); 500 } 501 #else 502 m_pcRdCost->setVideoRecPicYuv( m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), false, true ) ); 503 m_pcRdCost->setDepthPicYuv ( m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), true, false ) ); 504 #endif 455 505 #endif 456 506 #if LGE_WVSO_A0119 … … 830 880 if ( m_bSeqFirst ) 831 881 { 832 #if VIDYO_VPS_INTEGRATION 882 #if QC_MVHEVC_B0046 883 if(!m_pcEncTop->getLayerId()) 884 { 885 #endif 886 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 833 887 { 834 888 OutputNALUnit nalu(NAL_UNIT_VPS, true, m_pcEncTop->getLayerId()); … … 840 894 #endif 841 895 #if NAL_REF_FLAG 842 #if VIDYO_VPS_INTEGRATION 896 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 843 897 OutputNALUnit nalu(NAL_UNIT_SPS, true, m_pcEncTop->getLayerId()); 844 898 #else … … 861 915 862 916 #if NAL_REF_FLAG 863 #if VIDYO_VPS_INTEGRATION 917 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 918 #if QC_MVHEVC_B0046 864 919 nalu = NALUnit(NAL_UNIT_PPS, true, m_pcEncTop->getLayerId()); 920 #else 921 nalu = NALUnit(NAL_UNIT_PPS, true, m_pcEncTop->getLayerId()); 922 #endif 865 923 #else 866 924 nalu = NALUnit(NAL_UNIT_PPS, true, m_pcEncTop->getViewId(), m_pcEncTop->getIsDepth()); … … 873 931 writeRBSPTrailingBits(nalu.m_Bitstream); 874 932 accessUnit.push_back(new NALUnitEBSP(nalu)); 875 876 m_bSeqFirst = false; 877 } 933 #if QC_MVHEVC_B0046 934 } 935 #endif 936 m_bSeqFirst = false; 937 } 878 938 879 939 /* use the main bitstream buffer for storing the marshalled picture */ … … 993 1053 #if NAL_REF_FLAG 994 1054 OutputNALUnit nalu( pcSlice->getNalUnitType(), pcSlice->isReferenced(), 995 #if !VIDYO_VPS_INTEGRATION 1055 #if !VIDYO_VPS_INTEGRATION &!QC_MVHEVC_B0046 996 1056 m_pcEncTop->getViewId(), m_pcEncTop->getIsDepth(), pcSlice->getTLayer() ); 997 1057 #else … … 1469 1529 { 1470 1530 #if NAL_REF_FLAG 1471 #if VIDYO_VPS_INTEGRATION 1531 #if VIDYO_VPS_INTEGRATION | QC_MVHEVC_B0046 1472 1532 OutputNALUnit nalu(NAL_UNIT_APS, true, m_pcEncTop->getLayerId()); 1473 1533 #else … … 1535 1595 1536 1596 #if NAL_REF_FLAG 1537 #if VIDYO_VPS_INTEGRATION 1597 #if VIDYO_VPS_INTEGRATION | QC_MVHEVC_B0046 1538 1598 OutputNALUnit nalu(NAL_UNIT_SEI, false, m_pcEncTop->getLayerId()); 1539 1599 #else … … 1973 2033 case NAL_UNIT_CODED_SLICE: return "SLICE"; 1974 2034 #if H0566_TLA 2035 #if !QC_REM_IDV_B0046 1975 2036 case NAL_UNIT_CODED_SLICE_IDV: return "IDV"; 2037 #endif 1976 2038 case NAL_UNIT_CODED_SLICE_CRA: return "CRA"; 1977 2039 case NAL_UNIT_CODED_SLICE_TLA: return "TLA"; … … 2188 2250 if( bInterViewOnlySlice ) 2189 2251 { 2252 #if !QC_REM_IDV_B0046 2190 2253 return NAL_UNIT_CODED_SLICE_IDV; 2254 #else 2255 return NAL_UNIT_CODED_SLICE_IDR; 2256 #endif 2191 2257 } 2192 2258 else … … 2201 2267 if( bInterViewOnlySlice ) 2202 2268 { 2269 #if !QC_REM_IDV_B0046 2203 2270 return NAL_UNIT_CODED_SLICE_IDV; 2271 #else 2272 return NAL_UNIT_CODED_SLICE_CRA; 2273 #endif 2204 2274 } 2205 2275 else … … 2216 2286 if( bInterViewOnlySlice ) 2217 2287 { 2288 #if !QC_REM_IDV_B0046 2218 2289 return NAL_UNIT_CODED_SLICE_IDV; 2290 #else 2291 return NAL_UNIT_CODED_SLICE_IDR; 2292 #endif 2219 2293 } 2220 2294 else … … 2454 2528 2455 2529 // analyze inter-view modifications 2530 #if !QC_REM_IDV_B0046 2456 2531 GOPEntryMvc gem = m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ); 2532 #else 2533 Bool bRAP = ((getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDR) || (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_CRA)) && (pcSlice->getSPS()->getViewId()) ? 1:0; 2534 GOPEntryMvc gem = m_pcCfg->getGOPEntry( bRAP ? MAX_GOP : iGOPid ); 2535 #endif 2457 2536 Int numL0Modifications = 0; 2458 2537 Int numL1Modifications = 0; -
trunk/source/Lib/TLibEncoder/TEncSbac.cpp
r189 r210 396 396 } 397 397 398 #if VIDYO_VPS_INTEGRATION 398 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 399 399 Void TEncSbac::codeVPS( TComVPS* pcVPS ) 400 400 { … … 1076 1076 #endif 1077 1077 #if HHI_DMM_PRED_TEX 1078 1079 #if FLEX_CODING_ORDER_M23723 1080 if ( !pcCU->getSlice()->getSPS()->getUseDMM34() ) 1081 { 1082 assert( uiDir != DMM_WEDGE_PREDTEX_D_IDX ); 1083 assert( uiDir != DMM_CONTOUR_PREDTEX_D_IDX ); 1084 } 1085 #endif 1086 1078 1087 if( uiDir == DMM_WEDGE_PREDTEX_D_IDX ) { xCodeWedgePredTexDeltaInfo ( pcCU, uiAbsPartIdx ); } 1079 1088 if( uiDir == DMM_CONTOUR_PREDTEX_D_IDX ) { xCodeContourPredTexDeltaInfo( pcCU, uiAbsPartIdx ); } -
trunk/source/Lib/TLibEncoder/TEncSbac.h
r189 r210 98 98 //--SBAC RD 99 99 100 #if VIDYO_VPS_INTEGRATION 100 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 101 101 Void codeVPS ( TComVPS* pcVPS ); 102 102 #endif -
trunk/source/Lib/TLibEncoder/TEncSearch.cpp
r189 r210 160 160 Int iSearchRange, 161 161 Int bipredSearchRange, 162 #if DV_V_RESTRICTION_B0037 163 Bool bUseDisparitySearchRangeRestriction, 164 Int iVerticalDisparitySearchRange, 165 #endif 162 166 Int iFastSearch, 163 167 Int iMaxDeltaQP, … … 172 176 m_iSearchRange = iSearchRange; 173 177 m_bipredSearchRange = bipredSearchRange; 178 #if DV_V_RESTRICTION_B0037 179 m_bUseDisparitySearchRangeRestriction = bUseDisparitySearchRangeRestriction; 180 m_iVerticalDisparitySearchRange = iVerticalDisparitySearchRange; 181 #endif 174 182 m_iFastSearch = iFastSearch; 175 183 m_iMaxDeltaQP = iMaxDeltaQP; … … 2236 2244 #endif 2237 2245 #if HHI_DMM_PRED_TEX 2246 2247 #if FLEX_CODING_ORDER_M23723 2248 if ( pcCU->getSlice()->getSPS()->getUseDMM34() ) 2249 { 2250 #endif 2238 2251 UInt uiTexTabIdx = 0; 2239 2252 Int iTexDeltaDC1 = 0; … … 2259 2272 uiRdModeList[ numModesForFullRD++ ] = DMM_CONTOUR_PREDTEX_D_IDX; 2260 2273 } 2274 #if FLEX_CODING_ORDER_M23723 2275 } 2276 #endif 2261 2277 #endif 2262 2278 } … … 2303 2319 2304 2320 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 2321 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER_M23723 2322 if( m_pcEncCfg->getIsDepth() && !predIntraLumaDMMAvailable( uiOrgMode, uiWidth, uiHeight, pcCU->getSlice()->getSPS()->getUseDMM34() ) 2323 #if LGE_EDGE_INTRA_A0070 2324 && uiOrgMode < EDGE_INTRA_IDX 2325 #endif 2326 ) 2327 2328 #else 2329 2305 2330 if( m_pcEncCfg->getIsDepth() && !predIntraLumaDMMAvailable( uiOrgMode, uiWidth, uiHeight ) 2306 2331 #if LGE_EDGE_INTRA_A0070 … … 2308 2333 #endif 2309 2334 ) 2335 #endif 2310 2336 { 2311 2337 continue; … … 4214 4240 TComYuv* pcYuv = pcYuvOrg; 4215 4241 m_iSearchRange = m_aaiAdaptSR[eRefPicList][iRefIdxPred]; 4216 4242 4217 4243 Int iSrchRng = ( bBi ? m_bipredSearchRange : m_iSearchRange ); 4244 #if DV_V_RESTRICTION_B0037 4245 Int iVerDispSrchRng = m_iVerticalDisparitySearchRange; 4246 #endif 4218 4247 TComPattern* pcPatternKey = pcCU->getPattern (); 4219 4248 … … 4252 4281 4253 4282 TComMv cMvPred = *pcMvPred; 4254 4283 4284 #if DV_V_RESTRICTION_B0037 4285 Bool bMv_VRng_Restricted = false; 4286 if( pcCU->getSlice()->getViewId() > 0 4287 && 4288 pcCU->getSlice()->getRefPic( eRefPicList, iRefIdxPred )->getPOC() == pcCU->getSlice()->getPOC() 4289 && 4290 m_bUseDisparitySearchRangeRestriction 4291 ) 4292 { 4293 bMv_VRng_Restricted = true; 4294 } 4295 #endif 4296 4297 #if DV_V_RESTRICTION_B0037 4298 if ( bBi ) xSetSearchRange ( pcCU, rcMv , iSrchRng, cMvSrchRngLT, cMvSrchRngRB, bMv_VRng_Restricted, iVerDispSrchRng ); 4299 else xSetSearchRange ( pcCU, cMvPred, iSrchRng, cMvSrchRngLT, cMvSrchRngRB, bMv_VRng_Restricted, iVerDispSrchRng ); 4300 #else 4255 4301 if ( bBi ) xSetSearchRange ( pcCU, rcMv , iSrchRng, cMvSrchRngLT, cMvSrchRngRB ); 4256 4302 else xSetSearchRange ( pcCU, cMvPred, iSrchRng, cMvSrchRngLT, cMvSrchRngRB ); 4257 4303 #endif 4304 4258 4305 m_pcRdCost->getMotionCost ( 1, 0 ); 4259 4306 … … 4280 4327 if( bMultiviewReg && !bBi ) 4281 4328 { 4329 #if DV_V_RESTRICTION_B0037 4330 xSetSearchRange( pcCU, cOrgDepthMapMv, iSrchRng, cMvSrchRngLT, cMvSrchRngRB, bMv_VRng_Restricted, iVerDispSrchRng ); 4331 #else 4282 4332 xSetSearchRange( pcCU, cOrgDepthMapMv, iSrchRng, cMvSrchRngLT, cMvSrchRngRB ); 4283 } 4284 } 4285 #endif 4286 4333 #endif 4334 } 4335 } 4336 #endif 4337 #if QC_MVHEVC_B0046 4338 m_pcRdCost->setMultiviewReg( 0 ); 4339 #endif 4287 4340 setWpScalingDistParam( pcCU, iRefIdxPred, eRefPicList ); 4288 4341 // Do integer search … … 4330 4383 } 4331 4384 4332 4385 #if DV_V_RESTRICTION_B0037 4386 Void TEncSearch::xSetSearchRange ( TComDataCU* pcCU, TComMv& cMvPred, Int iSrchRng, TComMv& rcMvSrchRngLT, TComMv& rcMvSrchRngRB, Bool bMv_VRng_Restricted, Int iVerDispSrchRng ) 4387 #else 4333 4388 Void TEncSearch::xSetSearchRange ( TComDataCU* pcCU, TComMv& cMvPred, Int iSrchRng, TComMv& rcMvSrchRngLT, TComMv& rcMvSrchRngRB ) 4389 #endif 4334 4390 { 4335 4391 Int iMvShift = 2; … … 4346 4402 rcMvSrchRngRB.setHor( cTmpMvPred.getHor() + (iSrchRng << iMvShift) ); 4347 4403 rcMvSrchRngRB.setVer( cTmpMvPred.getVer() + (iSrchRng << iMvShift) ); 4404 4405 #if DV_V_RESTRICTION_B0037 4406 if ( bMv_VRng_Restricted ) { 4407 Int iRestrictMvVrange = ( iVerDispSrchRng ) << iMvShift; 4408 if ( rcMvSrchRngRB.getVer() >= iRestrictMvVrange ){ 4409 rcMvSrchRngRB.setVer( iRestrictMvVrange ); 4410 } 4411 //restrict minus vector too 4412 if ( rcMvSrchRngLT.getVer() <= -iRestrictMvVrange ){ 4413 rcMvSrchRngLT.setVer( -iRestrictMvVrange ); 4414 } 4415 } 4416 #endif 4348 4417 pcCU->clipMv ( rcMvSrchRngLT ); 4349 4418 pcCU->clipMv ( rcMvSrchRngRB ); … … 6415 6484 6416 6485 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 6486 #if ((HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX)&&FLEX_CODING_ORDER_M23723) 6487 Bool TEncSearch::predIntraLumaDMMAvailable( UInt uiMode, UInt uiWidth, UInt uiHeight, Bool bDMMAvailable34 ) 6488 #else 6417 6489 Bool TEncSearch::predIntraLumaDMMAvailable( UInt uiMode, UInt uiWidth, UInt uiHeight ) 6490 #endif 6418 6491 { 6419 6492 if( uiMode < NUM_INTRA_MODE ) return true; … … 6443 6516 bDMMAvailable = false; 6444 6517 } 6518 6519 #if FLEX_CODING_ORDER_M23723 6520 if ( !bDMMAvailable34 ) 6521 { 6522 bDMMAvailable = false; 6523 } 6524 #endif 6525 6445 6526 } 6446 6527 #endif -
trunk/source/Lib/TLibEncoder/TEncSearch.h
r189 r210 94 94 Int m_iSearchRange; 95 95 Int m_bipredSearchRange; // Search range for bi-prediction 96 #if DV_V_RESTRICTION_B0037 97 Bool m_bUseDisparitySearchRangeRestriction; 98 Int m_iVerticalDisparitySearchRange; 99 #endif 96 100 Int m_iFastSearch; 97 101 Int m_aaiAdaptSR[2][33]; … … 132 136 Int iSearchRange, 133 137 Int bipredSearchRange, 138 #if DV_V_RESTRICTION_B0037 139 Bool bUseDisparitySearchRangeRestriction, 140 Int iVerticalDisparitySearchRange, 141 #endif 134 142 Int iFastSearch, 135 143 Int iMaxDeltaQP, … … 325 333 326 334 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 335 327 336 Bool predIntraLumaDMMAvailable ( UInt uiMode, 328 337 UInt uiWidth, 329 UInt uiHeight ); 338 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER_M23723 339 UInt uiHeight, 340 Bool bDMMAvailable34 ); 341 #else 342 UInt uiHeight ); 343 #endif 344 330 345 Void xGetWedgeDeltaDCsMinDist ( TComWedgelet* pcWedgelet, 331 346 TComDataCU* pcCU, … … 523 538 UInt& ruiSAD ); 524 539 540 #if DV_V_RESTRICTION_B0037 541 Void xSetSearchRange ( TComDataCU* pcCU, 542 TComMv& cMvPred, 543 Int iSrchRng, 544 TComMv& rcMvSrchRngLT, 545 TComMv& rcMvSrchRngRB, 546 Bool bDispSrchRngRst, 547 Int iDispVerSrchRng ); 548 #else 525 549 Void xSetSearchRange ( TComDataCU* pcCU, 526 550 TComMv& cMvPred, … … 528 552 TComMv& rcMvSrchRngLT, 529 553 TComMv& rcMvSrchRngRB ); 554 #endif 530 555 531 556 Void xPatternSearchFast ( TComDataCU* pcCU, -
trunk/source/Lib/TLibEncoder/TEncSlice.cpp
r189 r210 162 162 \param pPPS PPS associated with the slice 163 163 */ 164 #if VIDYO_VPS_INTEGRATION 164 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 165 165 Void TEncSlice::initEncSlice( TComPic* pcPic, Int iPOCLast, UInt uiPOCCurr, Int iNumPicRcvd, Int iGOPid, TComSlice*& rpcSlice, TComVPS * pVPS, TComSPS* pSPS, TComPPS *pPPS ) 166 166 #else … … 172 172 173 173 rpcSlice = pcPic->getSlice(0); 174 #if VIDYO_VPS_INTEGRATION 174 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 175 175 rpcSlice->setVPS( pVPS ); 176 176 #endif … … 820 820 UInt uiTileStartLCU = 0; 821 821 UInt uiTileLCUX = 0; 822 822 #if !QC_MVHEVC_B0046 823 823 Int iLastPosY = -1; 824 824 #endif 825 825 // for every CU in slice 826 826 UInt uiEncCUOrder; … … 833 833 TComDataCU*& pcCU = rpcPic->getCU( uiCUAddr ); 834 834 pcCU->initCU( rpcPic, uiCUAddr ); 835 835 #if !QC_MVHEVC_B0046 836 836 if ( m_pcRdCost->getUseRenModel() ) 837 837 { … … 847 847 } 848 848 } 849 849 #endif 850 850 // inherit from TR if necessary, select substream to use. 851 851 if( m_pcCfg->getUseSBACRD() ) -
trunk/source/Lib/TLibEncoder/TEncSlice.h
r189 r210 110 110 111 111 /// preparation of slice encoding (reference marking, QP and lambda) 112 #if VIDYO_VPS_INTEGRATION 112 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 113 113 Void initEncSlice ( TComPic* pcPic, Int iPOCLast, UInt uiPOCCurr, Int iNumPicRcvd, Int iGOPid, TComSlice*& rpcSlice, TComVPS* pVPS, TComSPS* pSPS, TComPPS *pPPS ); 114 114 #else -
trunk/source/Lib/TLibEncoder/TEncTop.cpp
r189 r210 375 375 376 376 // initialize encoder search class 377 #if DV_V_RESTRICTION_B0037 378 m_cSearch.init( this, &m_cTrQuant, m_iSearchRange, m_bipredSearchRange, m_bUseDisparitySearchRangeRestriction, m_iVerticalDisparitySearchRange, m_iFastSearch, 0, &m_cEntropyCoder, &m_cRdCost, getRDSbacCoder(), getRDGoOnSbacCoder() ); 379 #else 377 380 m_cSearch.init( this, &m_cTrQuant, m_iSearchRange, m_bipredSearchRange, m_iFastSearch, 0, &m_cEntropyCoder, &m_cRdCost, getRDSbacCoder(), getRDGoOnSbacCoder() ); 378 381 #endif 379 382 if(m_bUseALF) 380 383 { … … 766 769 m_cSPS.setUseDMM( m_bUseDMM ); 767 770 #endif 771 772 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER_M23723 773 m_cSPS.setUseDMM34( m_bUseDMM34 ); 774 #endif 775 768 776 #if OL_QTLIMIT_PREDCODING_B0068 769 777 m_cSPS.setUseQTLPC( m_bUseQTLPC ); … … 785 793 else 786 794 { 795 #if QC_MVHEVC_B0046 796 m_cSPS.initMultiviewSPS ( m_viewId); 797 #else 787 798 m_cSPS.initMultiviewSPS ( m_viewId, m_iViewOrderIdx, m_uiCamParPrecision, m_bCamParInSliceHeader, m_aaiCodedScale, m_aaiCodedOffset ); 799 #endif 788 800 if( m_viewId ) 789 801 { … … 993 1005 Void TEncTop::selectReferencePictureSet(TComSlice* slice, Int POCCurr, Int GOPid,TComList<TComPic*>& listPic ) 994 1006 { 1007 #if QC_REM_IDV_B0046 1008 if( (slice->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR ||slice->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA) && slice->getSPS()->getViewId() && POCCurr == 0 ) 1009 #else 995 1010 if( slice->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDV && POCCurr == 0 ) 1011 #endif 996 1012 { 997 1013 TComReferencePictureSet* rps = slice->getLocalRPS(); -
trunk/source/Lib/TLibExtractor/TExtrTop.cpp
r100 r210 55 55 Bool TExtrTop::extract( InputNALUnit& nalu, std::set<UInt>& rsuiExtractLayerIds ) 56 56 { 57 #if VIDYO_VPS_INTEGRATION 57 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 58 58 //extraction now has to be done using layer_id 59 59 UInt uiLayerId = nalu.m_layerId; … … 65 65 m_cEntropyDecoder.setBitstream ( nalu.m_Bitstream ); 66 66 67 #if VIDYO_VPS_INTEGRATION 67 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 68 68 if ( nalu.m_nalUnitType == NAL_UNIT_VPS ) 69 69 { -
trunk/source/Lib/TLibExtractor/TExtrTop.h
r77 r210 54 54 { 55 55 private: 56 #if VIDYO_VPS_INTEGRATION 56 #if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046 57 57 TComVPS m_cVPS; 58 58 #endif -
trunk/source/Lib/TLibRenderer/TRenModSetupStrParser.cpp
r100 r210 36 36 #include "TRenFilter.h" 37 37 #include "TRenModSetupStrParser.h" 38 38 #if !QC_MVHEVC_B0046 39 39 Int 40 40 TRenModSetupStrParser::getNumOfModels() … … 450 450 rcNextChar = m_pchSetStr[iPos]; 451 451 } 452 #endif 453 -
trunk/source/Lib/TLibRenderer/TRenModSetupStrParser.h
r56 r210 31 31 * THE POSSIBILITY OF SUCH DAMAGE. 32 32 */ 33 33 #if !QC_MVHEVC_B0046 34 34 #ifndef __TRENMODSETUPSTRPARSER__ 35 35 #define __TRENMODSETUPSTRPARSER__ … … 127 127 128 128 #endif //__TRENMODEL__ 129 #endif 130 -
trunk/source/Lib/TLibRenderer/TRenModel.cpp
r189 r210 35 35 #include "TRenFilter.h" 36 36 #include "TRenModel.h" 37 37 #if !QC_MVHEVC_B0046 38 38 /////////// TRENMODEL ////////////////////// 39 39 TRenModel::TRenModel() … … 697 697 } 698 698 } 699 #endif 700 -
trunk/source/Lib/TLibRenderer/TRenModel.h
r189 r210 32 32 */ 33 33 34 34 #if !QC_MVHEVC_B0046 35 35 #ifndef __TRENMODEL__ 36 36 #define __TRENMODEL__ … … 156 156 157 157 #endif //__TRENMODEL__ 158 #endif 159 -
trunk/source/Lib/TLibRenderer/TRenSingleModel.cpp
r189 r210 36 36 #include "TRenSingleModel.h" 37 37 38 #if !QC_MVHEVC_B0046 38 39 ////////////// TRENSINGLE MODEL /////////////// 39 40 template <BlenMod iBM, Bool bBitInc> … … 1956 1957 } 1957 1958 #endif 1959 #endif 1960 -
trunk/source/Lib/TLibRenderer/TRenSingleModel.h
r189 r210 32 32 */ 33 33 34 35 #ifndef __TRENSINGLEMODEL__ 34 #if !QC_MVHEVC_B0046 35 #ifndef __TRENSINGLEMODEL__ 36 36 #define __TRENSINGLEMODEL__ 37 37 … … 391 391 392 392 #endif //__TRENSINGLEMODEL__ 393 #endif 394
Note: See TracChangeset for help on using the changeset viewer.