Changeset 194 in 3DVCSoftware
- Timestamp:
- 26 Nov 2012, 18:35:20 (12 years ago)
- Location:
- branches/HTM-5.0-Qualcomm/source
- Files:
-
- 53 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-5.0-Qualcomm/source/App/TAppDecoder/TAppDecTop.cpp
r189 r194 82 82 Void TAppDecTop::decode() 83 83 { 84 #if VIDYO_VPS_INTEGRATION 84 #if VIDYO_VPS_INTEGRATION|MVHEVC 85 85 increaseNumberOfViews( 0, 0, 0 ); 86 86 #else … … 145 145 { 146 146 read(nalu, nalUnit); 147 #if MVHEVC 148 viewDepthId = nalu.m_layerId; 149 Int depth = 0; 150 Int viewId = viewDepthId; 151 #else 147 152 #if VIDYO_VPS_INTEGRATION 148 153 Int viewId = 0; … … 162 167 viewDepthId = viewId * 2 + depth; // coding order T0D0T1D1T2D2 163 168 #endif 164 169 #endif 165 170 newPicture[viewDepthId] = false; 166 171 if( viewDepthId >= m_tDecTop.size() ) 167 172 { 168 #if VIDYO_VPS_INTEGRATION 173 #if VIDYO_VPS_INTEGRATION|MVHEVC 169 174 increaseNumberOfViews( viewDepthId, viewId, depth ); 170 175 #else … … 195 200 if( !(m_iMaxTemporalLayer >= 0 && nalu.m_temporalId > m_iMaxTemporalLayer) ) 196 201 { 202 #if MVHEVC 203 if(viewDepthId && m_tDecTop[viewDepthId]->m_bFirstNal== false) 204 { 205 m_tDecTop[viewDepthId]->m_bFirstNal = true; 206 ParameterSetManagerDecoder* pDecV0 = m_tDecTop[0]->xGetParaSetDec(); 207 m_tDecTop[viewDepthId]->xCopyVPS(pDecV0->getPrefetchedVPS(0)); 208 m_tDecTop[viewDepthId]->xCopySPS(pDecV0->getPrefetchedSPS(0)); 209 m_tDecTop[viewDepthId]->xCopyPPS(pDecV0->getPrefetchedPPS(0)); 210 } 211 #endif 197 212 newPicture[viewDepthId] = m_tDecTop[viewDepthId]->decode(nalu, m_iSkipFrame, m_pocLastDisplay[viewDepthId]); 198 213 if (newPicture[viewDepthId]) … … 218 233 if( pcListPic[viewDepthId] ) 219 234 { 235 #if QC_REM_IDV 236 Int iviewId = m_tDecTop[viewDepthId]->getViewId(); 237 if( newPicture[viewDepthId] && (nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_IDR || ((nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_IDR && iviewId) && m_tDecTop[viewDepthId]->getNalUnitTypeBaseView() == NAL_UNIT_CODED_SLICE_IDR)) ) 238 #else 220 239 if( newPicture[viewDepthId] && (nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_IDR || (nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_IDV && m_tDecTop[viewDepthId]->getNalUnitTypeBaseView() == NAL_UNIT_CODED_SLICE_IDR)) ) 240 #endif 221 241 { 222 242 xFlushOutput( pcListPic[viewDepthId], viewDepthId ); … … 275 295 m_tDecTop[viewDepthIdx]->destroy() ; 276 296 } 297 #if MVHEVC 298 if(viewDepthIdx) 299 { 300 //Call clear function to remove the record, which has been freed during viewDepthIdx = 0 case. 301 m_tDecTop[viewDepthIdx]->xGetParaSetDec()->clearSPS(); 302 m_tDecTop[viewDepthIdx]->xGetParaSetDec()->clearVPS(); 303 m_tDecTop[viewDepthIdx]->xGetParaSetDec()->clearPPS(); 304 } 305 #endif 277 306 delete m_tDecTop[viewDepthIdx] ; 278 307 m_tDecTop[viewDepthIdx] = NULL ; … … 416 445 m_pocLastDisplay[viewDepthId] = -MAX_INT; 417 446 } 418 #if VIDYO_VPS_INTEGRATION 447 #if VIDYO_VPS_INTEGRATION|MVHEVC 419 448 Void TAppDecTop::increaseNumberOfViews ( UInt layerId, UInt viewId, UInt isDepth ) 420 449 #else … … 422 451 #endif 423 452 { 424 #if VIDYO_VPS_INTEGRATION 453 #if VIDYO_VPS_INTEGRATION|MVHEVC 425 454 Int newNumberOfViewDepth = layerId + 1; 426 455 #endif … … 429 458 m_outputBitDepth = g_uiBitDepth + g_uiBitIncrement; 430 459 } 431 #if !VIDYO_VPS_INTEGRATION 460 #if !VIDYO_VPS_INTEGRATION&!MVHEVC 432 461 Int viewId = (newNumberOfViewDepth-1)>>1; // coding order T0D0T1D1T2D2 433 462 Bool isDepth = ((newNumberOfViewDepth % 2) == 0); // coding order T0D0T1D1T2D2 … … 442 471 m_tVideoIOYuvReconFile.push_back(new TVideoIOYuv); 443 472 Char buffer[4]; 444 #if VIDYO_VPS_INTEGRATION 473 #if VIDYO_VPS_INTEGRATION|MVHEVC 445 474 sprintf(buffer,"_%i", viewId ); 446 475 #else … … 448 477 #endif 449 478 Char* nextFilename = NULL; 450 #if VIDYO_VPS_INTEGRATION 479 #if VIDYO_VPS_INTEGRATION|MVHEVC 451 480 if( isDepth) 452 481 #else … … 463 492 xAppendToFileNameEnd( m_pchReconFile, buffer, nextFilename); 464 493 } 465 #if !VIDYO_VPS_INTEGRATION 494 #if !VIDYO_VPS_INTEGRATION&!MVHEVC 466 495 if( isDepth || ( !isDepth && (m_tVideoIOYuvReconFile.size() % 2) == 1 ) ) 467 496 #endif … … 480 509 { 481 510 m_tDecTop.push_back(new TDecTop); 482 #if !VIDYO_VPS_INTEGRATION 511 #if !VIDYO_VPS_INTEGRATION&!MVHEVC 483 512 if( isDepth || ( !isDepth && (m_tVideoIOYuvReconFile.size() % 2) == 1 ) ) 484 513 { … … 490 519 m_tDecTop.back()->setPictureDigestEnabled(m_pictureDigestEnabled); 491 520 m_tDecTop.back()->setCamParsCollector( &m_cCamParsCollector ); 492 #if !VIDYO_VPS_INTEGRATION 521 #if !VIDYO_VPS_INTEGRATION&!MVHEVC 493 522 } 494 523 #endif -
branches/HTM-5.0-Qualcomm/source/App/TAppDecoder/TAppDecTop.h
r100 r194 74 74 CamParsCollector m_cCamParsCollector; 75 75 #if DEPTH_MAP_GENERATION 76 #if VIDYO_VPS_INTEGRATION 76 #if VIDYO_VPS_INTEGRATION|MVHEVC 77 77 TComVPSAccess m_cVPSAccess; 78 78 #endif … … 88 88 Void destroy (); ///< destroy internal members 89 89 Void decode (); ///< main decoding function 90 #if VIDYO_VPS_INTEGRATION 90 #if VIDYO_VPS_INTEGRATION|MVHEVC 91 91 Void increaseNumberOfViews (UInt layerId, UInt viewId, UInt isDepth); 92 92 #else -
branches/HTM-5.0-Qualcomm/source/App/TAppEncoder/TAppEncCfg.cpp
r189 r194 329 329 /* Camera Paremetes */ 330 330 ("CameraParameterFile,cpf", m_pchCameraParameterFile, (Char *) 0, "Camera Parameter File Name") 331 #if MVHEVC 332 ("BaseViewCameraNumbers" , m_aiVId, std::vector<Int>(1, MAX_VIEW_NUM), "Numbers of base views") 333 #endif 331 334 ("BaseViewCameraNumbers" , m_pchBaseViewCameraNumbers, (Char *) 0, "Numbers of base views") 332 335 … … 786 789 } 787 790 #else 791 #if !MVHEVC 788 792 m_cCameraData .init ( (UInt)m_iNumberOfViews, 789 793 m_uiInputBitDepth, … … 797 801 LOG2_DISP_PREC_LUT ); 798 802 #endif 803 #endif 799 804 800 805 801 806 // check validity of input parameters 802 807 xCheckParameter(); 808 #if !MVHEVC 803 809 m_cCameraData.check( false, true ); 804 810 #endif 805 811 // print-out parameters 806 812 xPrintParameter(); -
branches/HTM-5.0-Qualcomm/source/App/TAppEncoder/TAppEncCfg.h
r189 r194 109 109 std::vector<Double> m_adQP; ///< QP value of key-picture (floating point) [0] video, [1] depth 110 110 std::vector<Int> m_aiQP; ///< QP value of key-picture (integer) [0] video, [1] depth 111 #if MVHEVC 112 std::vector<Int> m_aiVId; ///< view id 113 #endif 111 114 Int m_aiTLayerQPOffset[MAX_TLAYER]; ///< QP offset corresponding to temporal layer depth 112 115 char* m_pchdQPFile; ///< QP offset for each slice (initialized from external file) … … 285 288 Char* m_pchCameraParameterFile; ///< camera parameter file 286 289 Char* m_pchBaseViewCameraNumbers; 290 #if !MVHEVC 287 291 TAppComCamPara m_cCameraData; 288 292 #endif 289 293 Int m_iCodedCamParPrecision; ///< precision for coding of camera parameters 290 294 -
branches/HTM-5.0-Qualcomm/source/App/TAppEncoder/TAppEncTop.cpp
r189 r194 67 67 Void TAppEncTop::xInitLibCfg() 68 68 { 69 #if VIDYO_VPS_INTEGRATION 69 #if VIDYO_VPS_INTEGRATION|MVHEVC 70 #if !MVHEVC 70 71 UInt layerId = 0; 72 #endif 71 73 // TODO: fix the assumption here that the temporal structures are all equal across all layers??? 72 74 m_cVPS.setMaxTLayers( m_maxTempLayer[0] ); 75 #if MVHEVC 76 m_cVPS.setMaxLayers( m_iNumberOfViews ); 77 #else 73 78 m_cVPS.setMaxLayers( m_iNumberOfViews * (m_bUsingDepthMaps ? 2:1) ); 79 #endif 74 80 for(Int i = 0; i < MAX_TLAYER; i++) 75 81 { … … 101 107 m_acTEncTopList[iViewIdx]->setViewId ( iViewIdx ); 102 108 m_acTEncTopList[iViewIdx]->setIsDepth ( false ); 109 #if MVHEVC 110 m_acTEncTopList[iViewIdx]->setLayerId ( iViewIdx ); 111 m_cVPS.setViewId ( m_aiVId[ iViewIdx ], iViewIdx ); 112 #else 103 113 m_acTEncTopList[iViewIdx]->setViewOrderIdx ( m_cCameraData.getViewOrderIndex()[ iViewIdx ] ); 104 114 #if VIDYO_VPS_INTEGRATION … … 117 127 m_acTEncTopList[iViewIdx]->setCodedScale ( m_cCameraData.getCodedScale () ); 118 128 m_acTEncTopList[iViewIdx]->setCodedOffset ( m_cCameraData.getCodedOffset () ); 129 #endif 119 130 120 131 //====== Coding Structure ======== … … 406 417 m_acTEncDepthTopList[iViewIdx]->setViewId ( iViewIdx ); 407 418 m_acTEncDepthTopList[iViewIdx]->setIsDepth ( true ); 419 #if MVHEVC 420 m_acTEncDepthTopList[iViewIdx]->setLayerId ( iViewIdx ); 421 #else 408 422 m_acTEncDepthTopList[iViewIdx]->setViewOrderIdx ( m_cCameraData.getViewOrderIndex()[ iViewIdx ] ); 423 #endif 409 424 #if VIDYO_VPS_INTEGRATION 410 425 layerId = iViewIdx * 2 + 1; … … 821 836 { 822 837 m_acTEncTopList[iViewIdx]->init( this ); 838 #if MVHEVC 839 //set setNumDirectRefLayer 840 Int iNumDirectRef = m_acTEncTopList[iViewIdx]->getSPS()->getNumberOfUsableInterViewRefs(); 841 m_acTEncTopList[iViewIdx]->getEncTop()->getVPS()->setNumDirectRefLayer(iNumDirectRef, iViewIdx); 842 for(Int iNumIvRef = 0; iNumIvRef < iNumDirectRef; iNumIvRef ++) 843 { 844 Int iLayerId = m_acTEncTopList[iViewIdx]->getSPS()->getUsableInterViewRef(iNumIvRef); 845 m_acTEncTopList[iViewIdx]->getEncTop()->getVPS()->setDirectRefLayerId( iLayerId + iViewIdx, iViewIdx, iNumIvRef); 846 } 847 #endif 823 848 } 824 849 for(Int iViewIdx=0; iViewIdx<m_iNumberOfViews; iViewIdx++) … … 862 887 TComPicYuv* pcPicYuvOrg = new TComPicYuv; 863 888 TComPicYuv* pcDepthPicYuvOrg = new TComPicYuv; 889 #if !MVHEVC 864 890 TComPicYuv* pcPdmDepthOrg = new TComPicYuv; 891 #endif 865 892 TComPicYuv* pcPicYuvRec = NULL; 866 893 TComPicYuv* pcDepthPicYuvRec = NULL; … … 963 990 { 964 991 Int iNumEncoded = 0; 992 #if !MVHEVC 965 993 UInt iNextPoc = m_acTEncTopList[0] -> getFrameId( gopId ); 966 994 if ( iNextPoc < m_iFrameToBeEncoded ) … … 968 996 m_cCameraData.update( iNextPoc ); 969 997 } 998 #endif 970 999 for(Int iViewIdx=0; iViewIdx < m_iNumberOfViews; iViewIdx++ ) 971 1000 { … … 1022 1051 delete pcDepthPicYuvOrg; 1023 1052 pcDepthPicYuvOrg = NULL; 1024 1053 1054 #if !MVHEVC 1055 #if BUG_FIX_HTM 1056 if ( pcPdmDepthOrg != NULL && m_uiMultiviewMvRegMode ) 1057 #else 1025 1058 if ( pcPdmDepthOrg != NULL ) 1059 #endif 1026 1060 { 1027 1061 pcPdmDepthOrg->destroy(); … … 1029 1063 pcPdmDepthOrg = NULL; 1030 1064 }; 1031 1065 #endif 1032 1066 1033 1067 for(Int iViewIdx=0; iViewIdx < m_iNumberOfViews; iViewIdx++ ) … … 1233 1267 case NAL_UNIT_CODED_SLICE: 1234 1268 #if H0566_TLA 1269 #if !QC_REM_IDV 1235 1270 case NAL_UNIT_CODED_SLICE_IDV: 1271 #endif 1236 1272 case NAL_UNIT_CODED_SLICE_TLA: 1237 1273 case NAL_UNIT_CODED_SLICE_CRA: -
branches/HTM-5.0-Qualcomm/source/App/TAppEncoder/TAppEncTop.h
r189 r194 87 87 #endif 88 88 89 #if VIDYO_VPS_INTEGRATION 89 #if VIDYO_VPS_INTEGRATION|MVHEVC 90 90 TComVPS m_cVPS; 91 91 #endif … … 139 139 #endif 140 140 141 #if MVHEVC 142 TComVPS* getVPS() { return &m_cVPS; } 143 #endif 141 144 #if VIDYO_VPS_INTEGRATION 142 145 TComVPS* getVPS() { return &m_cVPS; } -
branches/HTM-5.0-Qualcomm/source/App/TAppRenderer/RendererMain.cpp
r100 r194 43 43 int main(int argc, char* argv[]) 44 44 { 45 #if !MVHEVC 45 46 TAppRendererTop cTAppRendererTop; 46 47 … … 78 79 79 80 return 0; 81 #endif 80 82 } 81 83 -
branches/HTM-5.0-Qualcomm/source/App/TAppRenderer/TAppRendererCfg.cpp
r189 r194 59 59 // Constructor / destructor / initialization / destroy 60 60 // ==================================================================================================================== 61 61 #if !MVHEVC 62 62 TAppRendererCfg::TAppRendererCfg() 63 63 { … … 516 516 g_uiIBDI_MAX = ((1<<(g_uiBitDepth+g_uiBitIncrement))-1); 517 517 } 518 #endif -
branches/HTM-5.0-Qualcomm/source/App/TAppRenderer/TAppRendererCfg.h
r100 r194 50 50 #include <string> 51 51 #include <vector> 52 52 #if !MVHEVC 53 53 // ==================================================================================================================== 54 54 // Class definition … … 134 134 135 135 136 136 #endif 137 137 #endif // __TAppRENDERERCFG__ 138 138 -
branches/HTM-5.0-Qualcomm/source/App/TAppRenderer/TAppRendererTop.cpp
r189 r194 45 45 // Constructor / destructor / initialization / destroy 46 46 // ==================================================================================================================== 47 47 #if !MVHEVC 48 48 TAppRendererTop::TAppRendererTop() 49 49 { … … 1034 1034 1035 1035 } 1036 #endif -
branches/HTM-5.0-Qualcomm/source/App/TAppRenderer/TAppRendererTop.h
r100 r194 50 50 #include "../../Lib/TLibRenderer/TRenModel.h" 51 51 52 52 #if !MVHEVC 53 53 // ==================================================================================================================== 54 54 // Class definition … … 87 87 };// END CLASS DEFINITION TAppRendererTop 88 88 89 #endif // __TAppRendererTOP__89 #endif 90 90 91 #endif -
branches/HTM-5.0-Qualcomm/source/Lib/TLibCommon/CommonDef.h
r189 r194 185 185 // VPS constants 186 186 // ==================================================================================================================== 187 #if MVHEVC 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 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|MVHEVC 511 518 NAL_UNIT_VPS, 512 519 #else -
branches/HTM-5.0-Qualcomm/source/Lib/TLibCommon/NAL.h
r100 r194 51 51 NalRefIdc m_nalRefIDC; ///< nal_ref_idc 52 52 #endif 53 #if VIDYO_VPS_INTEGRATION 53 #if VIDYO_VPS_INTEGRATION|MVHEVC 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 & !MVHEVC 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 & !MVHEVC 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 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 -
branches/HTM-5.0-Qualcomm/source/Lib/TLibCommon/TComDataCU.cpp
r189 r194 4307 4307 { 4308 4308 // col [2] 4309 #if !TMVP_INDEX_MODIFY 4309 4310 Int iRefIdxSkip[2] = {-1, -1}; 4310 4311 for (Int i=0; i<2; i++) … … 4326 4327 iRefIdxSkip[i] = (iRefIdxTmp != -1) ? iRefIdxTmp : 0; 4327 4328 } 4329 #endif 4328 4330 //>> MTK colocated-RightBottom 4329 4331 UInt uiPartIdxRB; … … 4337 4339 4338 4340 TComMv cColMv; 4341 #if TMVP_INDEX_MODIFY 4342 Int iRefIdx = 0; 4343 #else 4339 4344 Int iRefIdx; 4340 4345 #endif 4341 4346 if ( ( m_pcPic->getCU(m_uiCUAddr)->getCUPelX() + g_auiRasterToPelX[uiAbsPartIdxTmp] + m_pcPic->getMinCUWidth() ) >= m_pcSlice->getSPS()->getPicWidthInLumaSamples() ) // image boundary check 4342 4347 { … … 4371 4376 } 4372 4377 } 4378 #if !TMVP_INDEX_MODIFY 4373 4379 iRefIdx = iRefIdxSkip[0]; 4374 4380 #else 4381 iRefIdx = 0; 4382 #endif 4375 4383 Bool bExistMV = false; 4376 4384 UInt uiPartIdxCenter; … … 4390 4398 if ( getSlice()->isInterB() ) 4391 4399 { 4400 #if !TMVP_INDEX_MODIFY 4392 4401 iRefIdx = iRefIdxSkip[1]; 4402 #else 4403 iRefIdx = 0; 4404 #endif 4393 4405 bExistMV = uiLCUIdx >= 0 && xGetColMVP( REF_PIC_LIST_1, uiLCUIdx, uiAbsPartAddr, cColMv, iRefIdx); 4394 4406 if( bExistMV == false ) … … 6400 6412 if( pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) >= 0 ) 6401 6413 { 6414 #if IV_AS_LT 6415 Bool bIsCurrRefLongTerm = m_pcSlice->getRefPic( eRefPicList, iRefIdx)->getIsLongTerm(); 6416 Bool bIsNeibRefLongTerm = m_pcSlice->getRefPic( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx))->getIsLongTerm(); 6417 iNeibRefPOC = pcTmpCU->getSlice()->getRefPOC( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ); 6418 if ( (bIsCurrRefLongTerm == bIsNeibRefLongTerm) && (iNeibRefPOC == iCurrRefPOC) ) 6419 #else 6402 6420 if( pcTmpCU->getSlice()->getRefViewId( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ) != m_pcSlice->getRefViewId( eRefPicList, iRefIdx ) ) 6403 6421 { … … 6406 6424 iNeibRefPOC = pcTmpCU->getSlice()->getRefPOC( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ); 6407 6425 if( iNeibRefPOC == iCurrRefPOC ) // Same Reference Frame But Diff List// 6426 #endif 6408 6427 { 6409 6428 TComMv cMvPred = pcTmpCU->getCUMvField(eRefPicList2nd)->getMv(uiIdx); … … 6542 6561 Int iNeibRefPOC; 6543 6562 6563 #if IV_AS_LT 6564 Bool bIsCurrRefLongTerm = m_pcSlice->getRefPic( eRefPicList, iRefIdx)->getIsLongTerm(); 6565 Bool bIsNeibRefLongTerm = false; 6566 #endif 6544 6567 if( pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) >= 0 ) 6545 6568 { 6546 6569 iNeibRefPOC = pcTmpCU->getSlice()->getRefPOC( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ); 6570 #if IV_AS_LT 6571 bIsNeibRefLongTerm = m_pcSlice->getRefPic( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx))->getIsLongTerm() ; 6572 if ( (bIsCurrRefLongTerm == bIsNeibRefLongTerm) && (iNeibRefPOC == iCurrRefPOC) ) 6573 #else 6547 6574 if( pcTmpCU->getSlice()->getRefViewId( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ) != m_pcSlice->getRefViewId( eRefPicList, iRefIdx ) ) 6548 6575 return false; 6549 6576 if( iNeibRefPOC == iCurrRefPOC ) // Same Reference Frame But Diff List// 6577 #endif 6550 6578 { 6551 6579 TComMv cMvPred = pcTmpCU->getCUMvField(eRefPicList2nd)->getMv(uiIdx); … … 6565 6593 TComMv cMvPred = pcTmpCU->getCUMvField(eRefPicList)->getMv(uiIdx); 6566 6594 TComMv rcMv; 6567 6595 #if IV_AS_LT 6596 bIsNeibRefLongTerm = m_pcSlice->getRefPic( eRefPicList, pcTmpCU->getCUMvField(eRefPicList)->getRefIdx(uiIdx))->getIsLongTerm(); 6597 if ( bIsCurrRefLongTerm == bIsNeibRefLongTerm ) 6598 { 6599 #else 6568 6600 if( pcTmpCU->getSlice()->getRefViewId( eRefPicList, pcTmpCU->getCUMvField(eRefPicList)->getRefIdx(uiIdx) ) != m_pcSlice->getRefViewId( eRefPicList, iRefIdx ) ) 6569 6601 { 6570 6602 return false; 6571 6603 } 6572 6604 #endif 6573 6605 Int iScale = xGetDistScaleFactor( iCurrPOC, iCurrRefPOC, iNeibPOC, iNeibRefPOC ); 6574 6606 if ( iScale == 4096 ) … … 6585 6617 pInfo->m_acMvCand[ pInfo->iN++] = rcMv; 6586 6618 return true; 6619 #if IV_AS_LT 6620 } 6621 #endif 6587 6622 } 6588 6623 //---------------------- V2(END) --------------------// … … 6592 6627 TComMv cMvPred = pcTmpCU->getCUMvField(eRefPicList2nd)->getMv(uiIdx); 6593 6628 TComMv rcMv; 6594 6629 #if IV_AS_LT 6630 bIsNeibRefLongTerm = m_pcSlice->getRefPic( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx))->getIsLongTerm(); ; 6631 if ( bIsCurrRefLongTerm == bIsNeibRefLongTerm ) 6632 { 6633 #else 6595 6634 if( pcTmpCU->getSlice()->getRefViewId( eRefPicList2nd, pcTmpCU->getCUMvField(eRefPicList2nd)->getRefIdx(uiIdx) ) != m_pcSlice->getRefViewId( eRefPicList, iRefIdx ) ) 6596 6635 { 6597 6636 return false; 6598 6637 } 6599 6638 #endif 6600 6639 Int iScale = xGetDistScaleFactor( iCurrPOC, iCurrRefPOC, iNeibPOC, iNeibRefPOC ); 6601 6640 if ( iScale == 4096 ) … … 6612 6651 pInfo->m_acMvCand[ pInfo->iN++] = rcMv; 6613 6652 return true; 6653 #if IV_AS_LT 6654 } 6655 #endif 6614 6656 } 6615 6657 //---------------------- V3(END) --------------------// … … 6722 6764 Int iColPOC, iColRefPOC, iCurrPOC, iCurrRefPOC, iScale; 6723 6765 #if SONY_COLPIC_AVAILABILITY 6766 #if IV_AS_LT 6767 Int iColViewOrderIdx, iCurrViewOrderIdx, iCurrRefViewOrderIdx; 6768 #else 6724 6769 Int iColViewOrderIdx, iColRefViewOrderIdx, iCurrViewOrderIdx, iCurrRefViewOrderIdx; 6770 #endif 6725 6771 #endif 6726 6772 TComMv cColMv; … … 6753 6799 } 6754 6800 6755 #if !SONY_COLPIC_AVAILABILITY 6801 #if !SONY_COLPIC_AVAILABILITY&!IV_AS_LT 6756 6802 if( m_pcSlice->getRefPic(eRefPicList, riRefIdx)->getViewId() != m_pcSlice->getViewId() ) 6757 6803 return false; … … 6781 6827 iColRefPOC = pColCU->getSlice()->getRefPOC(eColRefPicList, iColRefIdx); 6782 6828 6829 #if !IV_AS_LT 6783 6830 #if SONY_COLPIC_AVAILABILITY 6784 6831 iColRefViewOrderIdx = pColCU->getSlice()->getRefPic( eColRefPicList, pColCU->getCUMvField(eColRefPicList)->getRefIdx(uiAbsPartAddr))->getViewOrderIdx(); … … 6789 6836 } 6790 6837 #endif 6791 6838 #else 6839 Bool bIsCurrRefLongTerm = m_pcSlice->getRefPic(eRefPicList, riRefIdx)->getIsLongTerm(); 6840 Bool bIsColRefLongTerm = pColCU->getSlice()->getWasLongTerm(eColRefPicList, iColRefIdx); 6841 if(bIsCurrRefLongTerm != bIsColRefLongTerm) 6842 { 6843 assert( ((iColPOC == iColRefPOC)&&(iCurrPOC != iCurrRefPOC))||((iColPOC != iColRefPOC)&&(iCurrPOC == iCurrRefPOC))); 6844 return false; 6845 } 6846 #endif 6792 6847 cColMv = pColCU->getCUMvField(eColRefPicList)->getMv(uiAbsPartAddr); 6793 6848 6794 6849 iCurrRefPOC = m_pcSlice->getRefPic(eRefPicList, riRefIdx)->getPOC(); 6850 #if IV_AS_LT 6851 { 6852 assert( ((iColPOC != iColRefPOC)&&(iCurrPOC != iCurrRefPOC))||((iColPOC == iColRefPOC)&&(iCurrPOC == iCurrRefPOC))); 6853 if(!bIsCurrRefLongTerm) //short-term 6854 { 6855 iScale = xGetDistScaleFactor(iCurrPOC, iCurrRefPOC, iColPOC, iColRefPOC); 6856 if ( iScale == 4096 ) 6857 { 6858 rcMv = cColMv; 6859 } 6860 else 6861 { 6862 rcMv = cColMv.scaleMv( iScale ); 6863 } 6864 }else 6865 rcMv = cColMv; //inter-view 6866 } 6867 #else 6795 6868 #if SONY_COLPIC_AVAILABILITY 6796 6869 iScale = 0; … … 6814 6887 rcMv = cColMv.scaleMv( iScale ); 6815 6888 } 6816 6889 #endif 6817 6890 return true; 6818 6891 } -
branches/HTM-5.0-Qualcomm/source/Lib/TLibCommon/TComDepthMapGenerator.h
r189 r194 239 239 Bool m_bDecoder; 240 240 TComPrediction* m_pcPrediction; 241 #if VIDYO_VPS_INTEGRATION 241 #if VIDYO_VPS_INTEGRATION|MVHEVC 242 242 TComVPSAccess* m_pcVPSAccess; 243 243 #endif -
branches/HTM-5.0-Qualcomm/source/Lib/TLibCommon/TComPic.cpp
r189 r194 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 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 { -
branches/HTM-5.0-Qualcomm/source/Lib/TLibCommon/TComPic.h
r189 r194 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|MVHEVC 143 143 TComVPS* getVPS() { return m_apcPicSym->getSlice(m_uiCurrSliceIdx)->getVPS(); } 144 144 #endif -
branches/HTM-5.0-Qualcomm/source/Lib/TLibCommon/TComPrediction.cpp
r189 r194 924 924 } 925 925 #endif 926 #if !MVHEVC 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 -
branches/HTM-5.0-Qualcomm/source/Lib/TLibCommon/TComPrediction.h
r189 r194 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 -
branches/HTM-5.0-Qualcomm/source/Lib/TLibCommon/TComSlice.cpp
r189 r194 44 44 45 45 TComSlice::TComSlice() 46 #if MVHEVC 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 IV_AS_LT 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 IV_AS_LT 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 IV_AS_LT 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 IV_AS_LT 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 IV_AS_LT 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 IV_AS_LT 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 MVHEVC 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|MVHEVC 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 MVHEVC 1551 , m_restrictedRefPicListsFlag ( 0) 1552 #else 1483 1553 , m_restrictedRefPicListsFlag ( 1) 1554 #endif 1484 1555 , m_listsModificationPresentFlag( 0) 1485 1556 #endif … … 1734 1805 TComSPS::initMultiviewSPS( UInt uiViewId, Int iViewOrderIdx, UInt uiCamParPrecision, Bool bCamParSlice, Int** aaiScale, Int** aaiOffset ) 1735 1806 { 1807 #if !MVHEVC 1736 1808 AOT( uiViewId == 0 && iViewOrderIdx != 0 ); 1737 1809 AOT( uiViewId != 0 && iViewOrderIdx == 0 ); 1738 1810 AOT( uiViewId != 0 && !bCamParSlice && ( aaiScale == 0 || aaiOffset == 0 ) ); 1739 1811 #endif 1740 1812 m_uiViewId = uiViewId; 1741 1813 m_iViewOrderIdx = iViewOrderIdx; … … 1745 1817 ::memset( m_aaiCodedScale, 0x00, sizeof( m_aaiCodedScale ) ); 1746 1818 ::memset( m_aaiCodedOffset, 0x00, sizeof( m_aaiCodedOffset ) ); 1819 #if !MVHEVC 1747 1820 if( !m_bCamParInSliceHeader ) 1748 1821 { … … 1755 1828 } 1756 1829 } 1830 #endif 1757 1831 } 1758 1832 … … 2374 2448 , m_ppsMap(MAX_NUM_PPS) 2375 2449 , m_apsMap(MAX_NUM_APS) 2376 #if VIDYO_VPS_INTEGRATION 2450 #if VIDYO_VPS_INTEGRATION|MVHEVC 2377 2451 , m_vpsMap(MAX_NUM_VPS) 2378 2452 #endif -
branches/HTM-5.0-Qualcomm/source/Lib/TLibCommon/TComSlice.h
r189 r194 144 144 #endif 145 145 146 #if VIDYO_VPS_INTEGRATION 146 #if VIDYO_VPS_INTEGRATION|MVHEVC 147 147 /// VPS class 148 148 … … 156 156 157 157 UInt m_uiExtensionType; 158 158 #if !MVHEVC 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 !MVHEVC 161 171 Bool m_bDepthFlag[MAX_LAYER_NUM]; 172 #endif 162 173 Int m_iViewOrderIdx[MAX_LAYER_NUM]; 174 #if !MVHEVC 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 !MVHEVC 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 !MVHEVC 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 !MVHEVC 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 MVHEVC 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|MVHEVC 221 252 Int m_VPSId; 222 253 #endif … … 391 422 TComSPS(); 392 423 virtual ~TComSPS(); 393 #if VIDYO_VPS_INTEGRATION 424 #if VIDYO_VPS_INTEGRATION|MVHEVC 394 425 Int getVPSId () { return m_VPSId; } 395 426 Void setVPSId (Int i) { m_VPSId = i; } … … 1221 1252 1222 1253 // access channel 1223 #if VIDYO_VPS_INTEGRATION 1254 #if VIDYO_VPS_INTEGRATION|MVHEVC 1224 1255 TComVPS* m_pcVPS; 1256 #endif 1257 #if IV_AS_LT 1258 Bool m_bWasLongTerm[2][MAX_NUM_REF+1]; //was long-term picture 1225 1259 #endif 1226 1260 TComSPS* m_pcSPS; … … 1297 1331 Int m_aaiCodedOffset[2][MAX_VIEW_NUM]; 1298 1332 1299 #if SONY_COLPIC_AVAILABILITY 1333 #if SONY_COLPIC_AVAILABILITY|MVHEVC 1300 1334 Int m_iViewOrderIdx; 1301 1335 #endif … … 1311 1345 Void initTiles(); 1312 1346 1313 #if VIDYO_VPS_INTEGRATION 1347 #if VIDYO_VPS_INTEGRATION|MVHEVC 1314 1348 Void setVPS ( TComVPS* pcVPS ) { m_pcVPS = pcVPS; } 1315 1349 TComVPS* getVPS () { return m_pcVPS; } 1316 1350 #endif 1351 #if IV_AS_LT 1352 Void setWasLongTerm( Bool lt, RefPicList e, Int iRefIdx ) { m_bWasLongTerm[e][iRefIdx] = lt; } 1353 Bool getWasLongTerm( RefPicList e, Int iRefIdx ) { return m_bWasLongTerm[e][iRefIdx] ; } 1354 #endif 1355 1317 1356 Void setSPS ( TComSPS* pcSPS ) { m_pcSPS = pcSPS; } 1318 1357 TComSPS* getSPS () { return m_pcSPS; } … … 1587 1626 Void setViewId( Int viewId ) { m_viewId = viewId; } 1588 1627 Int getViewId() { return m_viewId; } 1628 #if MVHEVC 1629 Void setViewOrderIdx(Int v, UInt layer) { m_iViewOrderIdx = v; } 1630 Int getViewOrderIdx() { return m_iViewOrderIdx; } 1631 #endif 1589 1632 Void setIsDepth( Bool isDepth ) { m_isDepth = isDepth; } 1590 1633 Bool getIsDepth() { return m_isDepth; } … … 1655 1698 } 1656 1699 1700 #if MVHEVC 1701 Void clearPSList() 1702 { 1703 m_paramsetMap.clear(); 1704 } 1705 #endif 1657 1706 private: 1658 1707 std::map<Int,T *> m_paramsetMap; … … 1665 1714 ParameterSetManager(); 1666 1715 virtual ~ParameterSetManager(); 1667 #if VIDYO_VPS_INTEGRATION 1716 #if VIDYO_VPS_INTEGRATION|MVHEVC 1668 1717 //! store video parameter set and take ownership of it 1669 1718 Void storeVPS(TComVPS *vps) { m_vpsMap.storePS( vps->getVPSId(), vps); }; … … 1671 1720 TComVPS* getVPS(Int vpsId) { return m_vpsMap.getPS(vpsId); }; 1672 1721 TComVPS* getFirstVPS() { return m_vpsMap.getFirstPS(); }; 1722 #if MVHEVC 1723 Void clearVPS() { m_vpsMap.clearPSList(); }; 1724 Void clearSPS() { m_spsMap.clearPSList(); }; 1725 Void clearPPS() { m_ppsMap.clearPSList(); }; 1726 #endif 1673 1727 #endif 1674 1728 //! store sequence parameter set and take ownership of it … … 1693 1747 ParameterSetMap<TComPPS> m_ppsMap; 1694 1748 ParameterSetMap<TComAPS> m_apsMap; 1695 #if VIDYO_VPS_INTEGRATION 1749 #if VIDYO_VPS_INTEGRATION|MVHEVC 1696 1750 ParameterSetMap<TComVPS> m_vpsMap; 1697 1751 #endif -
branches/HTM-5.0-Qualcomm/source/Lib/TLibCommon/TypeDef.h
r189 r194 41 41 //! \ingroup TLibCommon 42 42 //! \{ 43 43 #define MVHEVC 0 44 #define IV_AS_LT 1 //inter-view reference pictures are treated as long-term pictures 45 #define TMVP_INDEX_MODIFY 1 //the reference index for temporal merging candidate is set to 0, as defined in HEVC 46 #define QC_REM_IDV 1 //nal unit type NAL_UNIT_CODED_SLICE_IDV is removed. 47 #define BUG_FIX_HTM 1 48 #if !MVHEVC 44 49 ///// ***** FIXES ********* 45 50 // A … … 177 182 178 183 #define HHI_MPI_MERGE_POS 0 179 184 #endif 180 185 ///// ***** HM 6.1 ********* 181 186 #define SKIPFRAME_BUGFIX 1 ///< bug fix to enable skipFrame at decoder … … 477 482 // VPS INTEGRATION 478 483 // ==================================================================================================================== 479 484 #if !MVHEVC 480 485 #if VIDYO_VPS_INTEGRATION 481 486 #define MAX_NUM_VPS 10 482 487 #endif 488 #else 489 #define MAX_NUM_VPS 1 490 #endif 491 483 492 484 493 // ==================================================================================================================== -
branches/HTM-5.0-Qualcomm/source/Lib/TLibDecoder/NALread.cpp
r77 r194 132 132 #endif 133 133 134 #if MVHEVC 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 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 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 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 //! \} -
branches/HTM-5.0-Qualcomm/source/Lib/TLibDecoder/TDecCAVLC.cpp
r189 r194 1338 1338 } 1339 1339 } 1340 1340 #if MVHEVC 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 !MVHEVC 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 !MVHEVC 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 1991 #if !MVHEVC 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 2033 #if !MVHEVC 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 MVHEVC 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 MVHEVC 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 MVHEVC 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 MVHEVC 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 -
branches/HTM-5.0-Qualcomm/source/Lib/TLibDecoder/TDecCAVLC.h
r189 r194 75 75 Void xReadFlagTr ( UInt& rValue, const Char *pSymbolName); 76 76 #endif 77 77 #if MVHEVC 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|MVHEVC 116 118 Void parseVPS ( TComVPS* pcVPS ); 117 119 #endif -
branches/HTM-5.0-Qualcomm/source/Lib/TLibDecoder/TDecEntropy.h
r189 r194 71 71 #endif 72 72 73 #if VIDYO_VPS_INTEGRATION 73 #if VIDYO_VPS_INTEGRATION|MVHEVC 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|MVHEVC 178 178 Void decodeVPS ( TComVPS* pcVPS ) { m_pcEntropyDecoderIf->parseVPS(pcVPS); } 179 179 #endif -
branches/HTM-5.0-Qualcomm/source/Lib/TLibDecoder/TDecSbac.h
r189 r194 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|MVHEVC 90 90 Void parseVPS ( TComVPS* pcVPS ) {} 91 91 #endif -
branches/HTM-5.0-Qualcomm/source/Lib/TLibDecoder/TDecSlice.cpp
r77 r194 446 446 , m_ppsBuffer(16) 447 447 , m_apsBuffer(64) 448 #if VIDYO_VPS_INTEGRATION 448 #if VIDYO_VPS_INTEGRATION|MVHEVC 449 449 , m_vpsBuffer(16) 450 450 #endif … … 458 458 } 459 459 460 #if VIDYO_VPS_INTEGRATION 460 #if VIDYO_VPS_INTEGRATION|MVHEVC 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|MVHEVC 516 516 m_vpsMap.mergePSList(m_vpsBuffer); 517 517 #endif -
branches/HTM-5.0-Qualcomm/source/Lib/TLibDecoder/TDecSlice.h
r100 r194 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|MVHEVC 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|MVHEVC 109 109 ParameterSetMap<TComVPS> m_vpsBuffer; 110 110 #endif -
branches/HTM-5.0-Qualcomm/source/Lib/TLibDecoder/TDecTop.cpp
r77 r194 50 50 m_aaiCodedScale = new Int* [ MAX_VIEW_NUM ]; 51 51 m_aiViewOrderIndex = new Int [ MAX_VIEW_NUM ]; 52 #if MVHEVC 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 MVHEVC 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 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 MVHEVC 597 TComVPS *vps = m_parameterSetManagerDecoder.getVPS(sps->getVPSId()); 598 #endif 599 #if VIDYO_VPS_INTEGRATION|MVHEVC 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|MVHEVC 642 #if MVHEVC 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 MVHEVC 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 MVHEVC 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 !MVHEVC 953 985 #if VIDYO_VPS_INTEGRATION 954 986 pcSlice->setViewId( pcSlice->getVPS()->getViewId(nalu.m_layerId) ); … … 957 989 pcSlice->setViewId(m_viewId); 958 990 pcSlice->setIsDepth(m_isDepth); 991 #endif 959 992 #endif 960 993 … … 1071 1104 m_cGopDecoder.decompressGop(nalu.m_Bitstream, pcPic, false); 1072 1105 1106 #if IV_AS_LT 1107 std::vector<TComPic*> apcInterViewRefPics = m_tAppDecTop->getInterViewRefPics( m_viewId, pcSlice->getPOC(), m_isDepth, pcSlice->getSPS() ); 1108 for( Int k = 0; k < apcInterViewRefPics.size(); k++ ) 1109 { 1110 TComPic* pcPicIv = apcInterViewRefPics[k]; 1111 pcPicIv->setIsLongTerm( 0 ); 1112 } 1113 #endif 1073 1114 if( m_pcCamParsCollector ) 1074 1115 { … … 1082 1123 } 1083 1124 1084 #if VIDYO_VPS_INTEGRATION 1125 #if VIDYO_VPS_INTEGRATION|MVHEVC 1085 1126 Void TDecTop::xDecodeVPS() 1086 1127 { … … 1089 1130 m_cEntropyDecoder.decodeVPS( vps ); 1090 1131 m_parameterSetManagerDecoder.storePrefetchedVPS(vps); 1132 #if !MVHEVC 1091 1133 getTAppDecTop()->getVPSAccess()->addVPS( vps ); 1134 #endif 1092 1135 } 1093 1136 #endif … … 1155 1198 switch (nalu.m_nalUnitType) 1156 1199 { 1157 #if VIDYO_VPS_INTEGRATION 1200 #if VIDYO_VPS_INTEGRATION|MVHEVC 1158 1201 case NAL_UNIT_VPS: 1159 1202 xDecodeVPS(); … … 1178 1221 case NAL_UNIT_CODED_SLICE_IDR: 1179 1222 #if H0566_TLA 1223 #if !QC_REM_IDV 1180 1224 case NAL_UNIT_CODED_SLICE_IDV: 1225 #endif 1181 1226 case NAL_UNIT_CODED_SLICE_CRA: 1182 1227 case NAL_UNIT_CODED_SLICE_TLA: … … 1193 1238 } 1194 1239 1240 #if MVHEVC 1241 Void TDecTop::xCopyVPS( TComVPS* pVPSV0 ) 1242 { 1243 m_parameterSetManagerDecoder.storePrefetchedVPS(pVPSV0); 1244 } 1245 1246 Void TDecTop::xCopySPS( TComSPS* pSPSV0 ) 1247 { 1248 TComSPS* sps = new TComSPS(); 1249 sps = pSPSV0; 1250 m_parameterSetManagerDecoder.storePrefetchedSPS(sps); 1251 #if LCU_SYNTAX_ALF 1252 m_cAdaptiveLoopFilter.create( sps->getPicWidthInLumaSamples(), sps->getPicHeightInLumaSamples(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth ); 1253 #endif 1254 } 1255 1256 Void TDecTop::xCopyPPS(TComPPS* pPPSV0 ) 1257 { 1258 m_parameterSetManagerDecoder.storePrefetchedPPS( pPPSV0 ); 1259 1260 //!!!KS: Activate parameter sets for parsing APS (unless dependency is resolved) 1261 m_apcSlicePilot->setPPSId(pPPSV0->getPPSId()); 1262 xActivateParameterSets(); 1263 m_apcSlicePilot->initTiles(); 1264 } 1265 #endif 1195 1266 /** Function for checking if picture should be skipped because of random access 1196 1267 * \param iSkipFrame skip frame counter -
branches/HTM-5.0-Qualcomm/source/Lib/TLibDecoder/TDecTop.h
r100 r194 88 88 Int** m_aaiCodedScale; 89 89 Int* m_aiViewOrderIndex; 90 #if MVHEVC 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 MVHEVC 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 MVHEVC 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|MVHEVC 211 221 Void xDecodeVPS(); 212 222 #endif -
branches/HTM-5.0-Qualcomm/source/Lib/TLibEncoder/NALwrite.cpp
r77 r194 64 64 #endif 65 65 66 #if MVHEVC 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 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 !MVHEVC 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 //! \} -
branches/HTM-5.0-Qualcomm/source/Lib/TLibEncoder/NALwrite.h
r77 r194 62 62 NalRefIdc nalRefIDC, 63 63 #endif 64 #if VIDYO_VPS_INTEGRATION 64 #if VIDYO_VPS_INTEGRATION|MVHEVC 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|MVHEVC 73 73 : NALUnit(nalUnitType, nalRefFlag, layerId, temporalID) 74 74 #else -
branches/HTM-5.0-Qualcomm/source/Lib/TLibEncoder/TEncCavlc.cpp
r189 r194 375 375 } 376 376 377 #if MVHEVC 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 !MVHEVC 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 MVHEVC 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 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 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(); -
branches/HTM-5.0-Qualcomm/source/Lib/TLibEncoder/TEncCavlc.h
r189 r194 114 114 UInt getCoeffCost () { return m_uiCoeffCost; } 115 115 116 #if VIDYO_VPS_INTEGRATION 116 #if VIDYO_VPS_INTEGRATION|MVHEVC 117 117 Void codeVPS ( TComVPS* pcVPS ); 118 118 #endif -
branches/HTM-5.0-Qualcomm/source/Lib/TLibEncoder/TEncCfg.h
r189 r194 307 307 #endif 308 308 309 #if VIDYO_VPS_INTEGRATION 309 #if VIDYO_VPS_INTEGRATION|MVHEVC 310 310 UInt m_layerId; 311 311 #endif … … 820 820 Int getTSIG() { return m_signHidingThreshold; } 821 821 #endif 822 #if VIDYO_VPS_INTEGRATION 822 #if VIDYO_VPS_INTEGRATION |MVHEVC 823 823 Void setLayerId ( UInt layerId ) { m_layerId = layerId; } 824 824 UInt getLayerId () { return m_layerId; } -
branches/HTM-5.0-Qualcomm/source/Lib/TLibEncoder/TEncEntropy.cpp
r189 r194 121 121 } 122 122 123 #if VIDYO_VPS_INTEGRATION 123 #if VIDYO_VPS_INTEGRATION|MVHEVC 124 124 Void TEncEntropy::encodeVPS( TComVPS* pcVPS ) 125 125 { … … 129 129 #endif 130 130 131 #if VIDYO_VPS_INTEGRATION 131 #if VIDYO_VPS_INTEGRATION|MVHEVC 132 132 Void codeVPS ( TComVPS* pcVPS ); 133 133 #endif -
branches/HTM-5.0-Qualcomm/source/Lib/TLibEncoder/TEncEntropy.h
r189 r194 76 76 virtual UInt getCoeffCost () = 0; 77 77 78 #if VIDYO_VPS_INTEGRATION 78 #if VIDYO_VPS_INTEGRATION|MVHEVC 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|MVHEVC 245 245 Void encodeVPS ( TComVPS* pcVPS); 246 246 #endif -
branches/HTM-5.0-Qualcomm/source/Lib/TLibEncoder/TEncGOP.cpp
r189 r194 246 246 247 247 std::vector<TComAPS>& vAPS = m_pcEncTop->getAPS(); 248 #if VIDYO_VPS_INTEGRATION 248 #if VIDYO_VPS_INTEGRATION|MVHEVC 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 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 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); … … 363 373 if( pcSlice->getSliceType() == B_SLICE ) 364 374 { 375 #if !QC_REM_IDV 365 376 if( m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ).m_sliceType == 'P' ) { pcSlice->setSliceType( P_SLICE ); } 377 #else 378 Bool bRAP = ((getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_CRA) || (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDR)) && (pcSlice->getSPS()->getViewId()) ? 1: 0; 379 if( m_pcCfg->getGOPEntry( bRAP ? MAX_GOP : iGOPid ).m_sliceType == 'P' ) { pcSlice->setSliceType( P_SLICE ); } 380 #endif 366 381 } 367 382 … … 830 845 if ( m_bSeqFirst ) 831 846 { 832 #if VIDYO_VPS_INTEGRATION 847 #if MVHEVC 848 if(!m_pcEncTop->getLayerId()) 849 { 850 #endif 851 #if VIDYO_VPS_INTEGRATION|MVHEVC 833 852 { 834 853 OutputNALUnit nalu(NAL_UNIT_VPS, true, m_pcEncTop->getLayerId()); … … 840 859 #endif 841 860 #if NAL_REF_FLAG 842 #if VIDYO_VPS_INTEGRATION 861 #if VIDYO_VPS_INTEGRATION|MVHEVC 843 862 OutputNALUnit nalu(NAL_UNIT_SPS, true, m_pcEncTop->getLayerId()); 844 863 #else … … 861 880 862 881 #if NAL_REF_FLAG 863 #if VIDYO_VPS_INTEGRATION 882 #if VIDYO_VPS_INTEGRATION|MVHEVC 883 #if MVHEVC 864 884 nalu = NALUnit(NAL_UNIT_PPS, true, m_pcEncTop->getLayerId()); 885 #else 886 nalu = NALUnit(NAL_UNIT_PPS, true, m_pcEncTop->getLayerId()); 887 #endif 865 888 #else 866 889 nalu = NALUnit(NAL_UNIT_PPS, true, m_pcEncTop->getViewId(), m_pcEncTop->getIsDepth()); … … 873 896 writeRBSPTrailingBits(nalu.m_Bitstream); 874 897 accessUnit.push_back(new NALUnitEBSP(nalu)); 875 876 m_bSeqFirst = false; 877 } 898 #if MVHEVC 899 } 900 #endif 901 m_bSeqFirst = false; 902 } 878 903 879 904 /* use the main bitstream buffer for storing the marshalled picture */ … … 993 1018 #if NAL_REF_FLAG 994 1019 OutputNALUnit nalu( pcSlice->getNalUnitType(), pcSlice->isReferenced(), 995 #if !VIDYO_VPS_INTEGRATION 1020 #if !VIDYO_VPS_INTEGRATION &!MVHEVC 996 1021 m_pcEncTop->getViewId(), m_pcEncTop->getIsDepth(), pcSlice->getTLayer() ); 997 1022 #else … … 1469 1494 { 1470 1495 #if NAL_REF_FLAG 1471 #if VIDYO_VPS_INTEGRATION 1496 #if VIDYO_VPS_INTEGRATION | MVHEVC 1472 1497 OutputNALUnit nalu(NAL_UNIT_APS, true, m_pcEncTop->getLayerId()); 1473 1498 #else … … 1535 1560 1536 1561 #if NAL_REF_FLAG 1537 #if VIDYO_VPS_INTEGRATION 1562 #if VIDYO_VPS_INTEGRATION | MVHEVC 1538 1563 OutputNALUnit nalu(NAL_UNIT_SEI, false, m_pcEncTop->getLayerId()); 1539 1564 #else … … 1973 1998 case NAL_UNIT_CODED_SLICE: return "SLICE"; 1974 1999 #if H0566_TLA 2000 #if !QC_REM_IDV 1975 2001 case NAL_UNIT_CODED_SLICE_IDV: return "IDV"; 2002 #endif 1976 2003 case NAL_UNIT_CODED_SLICE_CRA: return "CRA"; 1977 2004 case NAL_UNIT_CODED_SLICE_TLA: return "TLA"; … … 2188 2215 if( bInterViewOnlySlice ) 2189 2216 { 2217 #if !QC_REM_IDV 2190 2218 return NAL_UNIT_CODED_SLICE_IDV; 2219 #else 2220 return NAL_UNIT_CODED_SLICE_IDR; 2221 #endif 2191 2222 } 2192 2223 else … … 2201 2232 if( bInterViewOnlySlice ) 2202 2233 { 2234 #if !QC_REM_IDV 2203 2235 return NAL_UNIT_CODED_SLICE_IDV; 2236 #else 2237 return NAL_UNIT_CODED_SLICE_CRA; 2238 #endif 2204 2239 } 2205 2240 else … … 2216 2251 if( bInterViewOnlySlice ) 2217 2252 { 2253 #if !QC_REM_IDV 2218 2254 return NAL_UNIT_CODED_SLICE_IDV; 2255 #else 2256 return NAL_UNIT_CODED_SLICE_IDR; 2257 #endif 2219 2258 } 2220 2259 else … … 2454 2493 2455 2494 // analyze inter-view modifications 2495 #if !QC_REM_IDV 2456 2496 GOPEntryMvc gem = m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ); 2497 #else 2498 Bool bRAP = ((getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDR) || (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_CRA)) && (pcSlice->getSPS()->getViewId()) ? 1:0; 2499 GOPEntryMvc gem = m_pcCfg->getGOPEntry( bRAP ? MAX_GOP : iGOPid ); 2500 #endif 2457 2501 Int numL0Modifications = 0; 2458 2502 Int numL1Modifications = 0; -
branches/HTM-5.0-Qualcomm/source/Lib/TLibEncoder/TEncSbac.cpp
r189 r194 396 396 } 397 397 398 #if VIDYO_VPS_INTEGRATION 398 #if VIDYO_VPS_INTEGRATION|MVHEVC 399 399 Void TEncSbac::codeVPS( TComVPS* pcVPS ) 400 400 { -
branches/HTM-5.0-Qualcomm/source/Lib/TLibEncoder/TEncSbac.h
r189 r194 98 98 //--SBAC RD 99 99 100 #if VIDYO_VPS_INTEGRATION 100 #if VIDYO_VPS_INTEGRATION|MVHEVC 101 101 Void codeVPS ( TComVPS* pcVPS ); 102 102 #endif -
branches/HTM-5.0-Qualcomm/source/Lib/TLibEncoder/TEncSearch.cpp
r189 r194 4284 4284 } 4285 4285 #endif 4286 4286 #if MVHEVC 4287 m_pcRdCost->setMultiviewReg( 0 ); 4288 #endif 4287 4289 setWpScalingDistParam( pcCU, iRefIdxPred, eRefPicList ); 4288 4290 // Do integer search -
branches/HTM-5.0-Qualcomm/source/Lib/TLibEncoder/TEncSlice.cpp
r189 r194 162 162 \param pPPS PPS associated with the slice 163 163 */ 164 #if VIDYO_VPS_INTEGRATION 164 #if VIDYO_VPS_INTEGRATION|MVHEVC 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|MVHEVC 175 175 rpcSlice->setVPS( pVPS ); 176 176 #endif … … 820 820 UInt uiTileStartLCU = 0; 821 821 UInt uiTileLCUX = 0; 822 822 #if !MVHEVC 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 !MVHEVC 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() ) -
branches/HTM-5.0-Qualcomm/source/Lib/TLibEncoder/TEncSlice.h
r189 r194 110 110 111 111 /// preparation of slice encoding (reference marking, QP and lambda) 112 #if VIDYO_VPS_INTEGRATION 112 #if VIDYO_VPS_INTEGRATION|MVHEVC 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 -
branches/HTM-5.0-Qualcomm/source/Lib/TLibEncoder/TEncTop.cpp
r189 r194 785 785 else 786 786 { 787 #if MVHEVC 788 m_cSPS.initMultiviewSPS ( m_viewId); 789 #else 787 790 m_cSPS.initMultiviewSPS ( m_viewId, m_iViewOrderIdx, m_uiCamParPrecision, m_bCamParInSliceHeader, m_aaiCodedScale, m_aaiCodedOffset ); 791 #endif 788 792 if( m_viewId ) 789 793 { … … 993 997 Void TEncTop::selectReferencePictureSet(TComSlice* slice, Int POCCurr, Int GOPid,TComList<TComPic*>& listPic ) 994 998 { 999 #if QC_REM_IDV 1000 if( (slice->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR ||slice->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA) && slice->getSPS()->getViewId() && POCCurr == 0 ) 1001 #else 995 1002 if( slice->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDV && POCCurr == 0 ) 1003 #endif 996 1004 { 997 1005 TComReferencePictureSet* rps = slice->getLocalRPS(); -
branches/HTM-5.0-Qualcomm/source/Lib/TLibExtractor/TExtrTop.cpp
r100 r194 55 55 Bool TExtrTop::extract( InputNALUnit& nalu, std::set<UInt>& rsuiExtractLayerIds ) 56 56 { 57 #if VIDYO_VPS_INTEGRATION 57 #if VIDYO_VPS_INTEGRATION|MVHEVC 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|MVHEVC 68 68 if ( nalu.m_nalUnitType == NAL_UNIT_VPS ) 69 69 { -
branches/HTM-5.0-Qualcomm/source/Lib/TLibExtractor/TExtrTop.h
r77 r194 54 54 { 55 55 private: 56 #if VIDYO_VPS_INTEGRATION 56 #if VIDYO_VPS_INTEGRATION|MVHEVC 57 57 TComVPS m_cVPS; 58 58 #endif -
branches/HTM-5.0-Qualcomm/source/Lib/TLibRenderer/TRenModSetupStrParser.cpp
r100 r194 36 36 #include "TRenFilter.h" 37 37 #include "TRenModSetupStrParser.h" 38 38 #if !MVHEVC 39 39 Int 40 40 TRenModSetupStrParser::getNumOfModels() … … 450 450 rcNextChar = m_pchSetStr[iPos]; 451 451 } 452 #endif 453 -
branches/HTM-5.0-Qualcomm/source/Lib/TLibRenderer/TRenModSetupStrParser.h
r56 r194 31 31 * THE POSSIBILITY OF SUCH DAMAGE. 32 32 */ 33 33 #if !MVHEVC 34 34 #ifndef __TRENMODSETUPSTRPARSER__ 35 35 #define __TRENMODSETUPSTRPARSER__ … … 127 127 128 128 #endif //__TRENMODEL__ 129 #endif 130 -
branches/HTM-5.0-Qualcomm/source/Lib/TLibRenderer/TRenModel.cpp
r189 r194 35 35 #include "TRenFilter.h" 36 36 #include "TRenModel.h" 37 37 #if !MVHEVC 38 38 /////////// TRENMODEL ////////////////////// 39 39 TRenModel::TRenModel() … … 697 697 } 698 698 } 699 #endif 700 -
branches/HTM-5.0-Qualcomm/source/Lib/TLibRenderer/TRenModel.h
r189 r194 32 32 */ 33 33 34 34 #if !MVHEVC 35 35 #ifndef __TRENMODEL__ 36 36 #define __TRENMODEL__ … … 156 156 157 157 #endif //__TRENMODEL__ 158 #endif 159 -
branches/HTM-5.0-Qualcomm/source/Lib/TLibRenderer/TRenSingleModel.cpp
r189 r194 36 36 #include "TRenSingleModel.h" 37 37 38 #if !MVHEVC 38 39 ////////////// TRENSINGLE MODEL /////////////// 39 40 template <BlenMod iBM, Bool bBitInc> … … 1956 1957 } 1957 1958 #endif 1959 #endif 1960 -
branches/HTM-5.0-Qualcomm/source/Lib/TLibRenderer/TRenSingleModel.h
r189 r194 32 32 */ 33 33 34 35 #ifndef __TRENSINGLEMODEL__ 34 #if !MVHEVC 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.