Changeset 442 in 3DVCSoftware
- Timestamp:
- 25 May 2013, 12:59:47 (12 years ago)
- Location:
- branches/HTM-6.2-dev0/source/Lib
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-6.2-dev0/source/Lib/TLibCommon/TComDataCU.cpp
r433 r442 209 209 #endif 210 210 #if LGE_VSP_INHERIT_D0092 211 #if MERL_VSP_NBDV_RefVId_Fix_D0166 212 assert(pDInfo->m_aRefIdx[0] < 0); 213 iVspDirTrue[0] = pDInfo->m_aListIdx[0]; 214 Int iRefIdxList0 = NOT_VALID; 215 Int iRefIdxList1 = NOT_VALID; 216 iRefIdxList0 = getSlice()->getRefPic(REF_PIC_LIST_0, 0)->getPOC()==getSlice()->getPOC() ? 0 : (getSlice()->getNewRefIdx(REF_PIC_LIST_0)==-1 ? NOT_VALID : getSlice()->getNewRefIdx(REF_PIC_LIST_0)); 217 if ( getSlice()->isInterB() ) 218 { 219 iRefIdxList1 = getSlice()->getRefPic(REF_PIC_LIST_1, 0)->getPOC()==getSlice()->getPOC() ? 0 : (getSlice()->getNewRefIdx(REF_PIC_LIST_1)==-1 ? NOT_VALID : getSlice()->getNewRefIdx(REF_PIC_LIST_1)); 220 } 221 222 #if MTK_VSP_USING_NBDV_D0105 223 //pcMvFieldNeighbours[iCount<<1].setMvField(pDInfo->m_acMvCandNoRef[0], pDInfo->m_aListIdx[0]==REF_PIC_LIST_0 ? iRefIdxList0 :NOT_VALID ); 224 pcMvFieldNeighbours[iCount<<1].setMvField(pDInfo->m_acMvCandNoRef[0], iRefIdxList0 ); 225 #else 226 pcMvFieldNeighbours[iCount<<1].setMvField(pDInfo->m_acMvCand[0], iRefIdxList0 ); 227 #endif 228 if ( getSlice()->isInterB() ) 229 { 230 #if MTK_VSP_USING_NBDV_D0105 231 pcMvFieldNeighbours[(iCount<<1)+1].setMvField( pDInfo->m_acMvCandNoRef[0], iRefIdxList1 ); 232 //pcMvFieldNeighbours[(iCount<<1)+1].setMvField( pDInfo->m_acMvCandNoRef[0], iRefIdxList1); 233 #else 234 pcMvFieldNeighbours[(iCount<<1)+1].setMvField( pDInfo->m_acMvCand[0], iRefIdxList1); 235 #endif 236 } 237 iVSPIndexTrue[iCount] = 1; 238 #else 239 240 #if !MERL_General_Fix 241 Int iRefIdxList0 = NOT_VALID; 242 Int iRefIdxList1 = NOT_VALID; 243 iRefIdxList0 = getSlice()->getRefPic(REF_PIC_LIST_0, 0)->getPOC()==getSlice()->getPOC() ? 0 : (getSlice()->getNewRefIdx(REF_PIC_LIST_0)==-1 ? NOT_VALID : getSlice()->getNewRefIdx(REF_PIC_LIST_0)); 244 if ( getSlice()->isInterB() ) 245 { 246 iRefIdxList1 = getSlice()->getRefPic(REF_PIC_LIST_1, 0)->getPOC()==getSlice()->getPOC() ? 0 : (getSlice()->getNewRefIdx(REF_PIC_LIST_1)==-1 ? NOT_VALID : getSlice()->getNewRefIdx(REF_PIC_LIST_1)); 247 } 248 #if MTK_VSP_USING_NBDV_D0105 249 pcMvFieldNeighbours[iCount<<1].setMvField(pDInfo->m_acMvCandNoRef[0], iRefIdxList0 ); 250 #else 251 pcMvFieldNeighbours[iCount<<1].setMvField(pDInfo->m_acMvCand[0], iRefIdxList0 ); 252 #endif 253 if ( getSlice()->isInterB() ) 254 { 255 #if MTK_VSP_USING_NBDV_D0105 256 pcMvFieldNeighbours[(iCount<<1)+1].setMvField( pDInfo->m_acMvCandNoRef[0], iRefIdxList1 ); 257 #else 258 pcMvFieldNeighbours[(iCount<<1)+1].setMvField( pDInfo->m_acMvCand[0], iRefIdxList1); 259 #endif 260 } 261 iVSPIndexTrue[iCount] = 1; 262 #else 211 263 Int iRefIdx = NOT_VALID; 264 212 265 #if QC_BVSP_CleanUP_D0191 213 266 iRefIdx = getSlice()->getRefPic(REF_PIC_LIST_0, 0)->getPOC()==getSlice()->getPOC() ? 0: getSlice()->getNewRefIdx(REF_PIC_LIST_0); 214 267 #endif 268 #if MTK_VSP_USING_NBDV_D0105 269 pcMvFieldNeighbours[iCount<<1].setMvField(pDInfo->m_acMvCandNoRef[0], iRefIdx ); 270 #else 215 271 pcMvFieldNeighbours[iCount<<1].setMvField(pDInfo->m_acMvCand[0], iRefIdx ); 272 #endif 216 273 if ( getSlice()->isInterB() ) 217 274 { 275 #if MTK_VSP_USING_NBDV_D0105 276 pcMvFieldNeighbours[(iCount<<1)+1].setMvField( pDInfo->m_acMvCandNoRef[0], iRefIdx ); 277 #else 218 278 pcMvFieldNeighbours[(iCount<<1)+1].setMvField( pDInfo->m_acMvCand[0], iRefIdx ); 279 #endif 219 280 } 220 281 iVSPIndexTrue[iCount] = 1; 282 #endif 283 #endif 221 284 #else 222 285 // get Mv using checked disparity vector … … 4480 4543 //===== vsp 3 ===== 4481 4544 #if LGE_VSP_INHERIT_D0092 4482 if ( !xAddVspMergeCand(3, uiDepth, abCandIsInter, iCount, puhInterDirNeighbours, pcMvFieldNeighbours, iVSPIndexTrue, mrgCandIdx, &cDisInfo) ) 4545 if ( !xAddVspMergeCand(3, uiDepth, abCandIsInter, iCount, puhInterDirNeighbours, pcMvFieldNeighbours, iVSPIndexTrue, mrgCandIdx, &cDisInfo 4546 #if MERL_VSP_NBDV_RefVId_Fix_D0166 4547 , iVSPDirTrue 4548 #endif 4549 ) ) 4483 4550 #else 4484 4551 if( iCount < 4 + extraMergeCand ) 4485 if ( !xAddVspMergeCand(3, 1, bVspMvZeroDone, uiDepth, abCandIsInter, iCount, puhInterDirNeighbours, pcMvFieldNeighbours, iVSPIndexTrue, mrgCandIdx, &cDisInfo) ) 4552 if ( !xAddVspMergeCand(3, 1, bVspMvZeroDone, uiDepth, abCandIsInter, iCount, puhInterDirNeighbours, pcMvFieldNeighbours, iVSPIndexTrue, mrgCandIdx, &cDisInfo 4553 #if MERL_VSP_NBDV_RefVId_Fix_D0166 4554 , iVSPDirTrue 4555 #endif 4556 ) ) 4486 4557 #endif 4487 4558 return; … … 4638 4709 if( iCount < 4 + extraMergeCand ) 4639 4710 #if LGE_VSP_INHERIT_D0092 4640 if ( !xAddVspMergeCand(5, uiDepth, abCandIsInter, iCount, puhInterDirNeighbours, pcMvFieldNeighbours, iVSPIndexTrue, mrgCandIdx, &cDisInfo )4711 if ( !xAddVspMergeCand(5, uiDepth, abCandIsInter, iCount, puhInterDirNeighbours, pcMvFieldNeighbours, iVSPIndexTrue, mrgCandIdx, &cDisInfo 4641 4712 #if MERL_VSP_NBDV_RefVId_Fix_D0166 4642 4713 , iVSPDirTrue 4643 4714 #endif 4644 ) 4715 )) 4645 4716 #else 4646 4717 if ( !xAddVspMergeCand(5, 1, bVspMvZeroDone, uiDepth, abCandIsInter, iCount, puhInterDirNeighbours, pcMvFieldNeighbours, iVSPIndexTrue, mrgCandIdx, &cDisInfo … … 4648 4719 , iVSPDirTrue 4649 4720 #endif 4650 ) 4721 )) 4651 4722 #endif 4652 4723 return; … … 5608 5679 #endif 5609 5680 #endif 5681 #else 5682 picDepth = getSlice()->getRefPicBaseDepth(); 5610 5683 #endif 5611 5684 -
branches/HTM-6.2-dev0/source/Lib/TLibCommon/TComPrediction.cpp
r433 r442 831 831 832 832 #else // MERL_VSP_NBDV_RefVId_Fix_D0166 833 833 // Step 1: get depth reference 834 #if QC_BVSP_CleanUP_D0191 835 RefPicList privateRefPicList = REF_PIC_LIST_0; 836 Int refIdxList0 = pcCU->getCUMvField( REF_PIC_LIST_0 )->getRefIdx( uiPartAddr ); 837 Int refIdxList1 = pcCU->getCUMvField( REF_PIC_LIST_1 )->getRefIdx( uiPartAddr ); 838 privateRefPicList = refIdxList0 != NOT_VALID ? REF_PIC_LIST_0 : REF_PIC_LIST_1; 839 if(privateRefPicList == REF_PIC_LIST_1 && refIdxList1== NOT_VALID ) 840 { 841 assert(0); 842 } 843 Int privateRefIdx = privateRefPicList == REF_PIC_LIST_0 ? refIdxList0 : refIdxList1; 844 Int viewId = pcCU->getSlice()->getRefViewId(privateRefPicList, privateRefIdx); 845 Int refPoc = pcCU->getSlice()->getRefPOC(privateRefPicList, privateRefIdx); 846 #else 834 847 //recover VSP reference frame according to negative refIdx number 835 848 RefPicList privateRefPicList = (RefPicList) pcCU->getVSPDir( uiPartAddr ); 836 849 assert(privateRefPicList == REF_PIC_LIST_0 || privateRefPicList == REF_PIC_LIST_1); 837 838 // Step 1: get depth reference839 850 Int refIdx = -1-pcCU->getCUMvField( privateRefPicList )->getRefIdx( uiPartAddr ); // texture ref index, a trick when storing refIdx 840 851 Int viewId = pcCU->getSlice()->getRefViewId(privateRefPicList, refIdx); // texture view id 841 852 Int refPoc = pcCU->getSlice()->getRefPOC(privateRefPicList, refIdx); // texture POC 853 #endif 842 854 TComPic* pRefPicBaseDepth = pcCU->getSlice()->getDepthRefPic(viewId, refPoc); 843 855 … … 883 895 TComPic* TComPrediction::xGetVspRefTxt(TComDataCU* pcCU, UInt uiPartAddr, RefPicList eRefPicList) 884 896 { 897 #if QC_BVSP_CleanUP_D0191 898 RefPicList privateRefPicList = REF_PIC_LIST_0; 899 Int refIdxList0 = pcCU->getCUMvField( REF_PIC_LIST_0 )->getRefIdx( uiPartAddr ); 900 Int refIdxList1 = pcCU->getCUMvField( REF_PIC_LIST_1 )->getRefIdx( uiPartAddr ); 901 privateRefPicList = refIdxList0 != NOT_VALID ? REF_PIC_LIST_0 : REF_PIC_LIST_1; 902 if(privateRefPicList == REF_PIC_LIST_1 && refIdxList1==NOT_VALID ) 903 { 904 assert(0); 905 } 906 Int privateRefIdx = privateRefPicList == REF_PIC_LIST_0 ? refIdxList0 : refIdxList1; 907 Int viewId = pcCU->getSlice()->getRefViewId(privateRefPicList, privateRefIdx); 908 #else 885 909 RefPicList privateRefPicList = (RefPicList) pcCU->getVSPDir( uiPartAddr ); 886 910 Int refIdx = -1-pcCU->getCUMvField( privateRefPicList )->getRefIdx( uiPartAddr ); // texture ref index, a trick when storing refIdx 887 911 Int viewId = pcCU->getSlice()->getRefViewId(privateRefPicList, refIdx); // texture view id 912 #endif 888 913 TComPic* refPic = NULL; 889 914 … … 892 917 if (privateRefPicList == eRefPicList) 893 918 { 919 #if QC_BVSP_CleanUP_D0191 920 Int refIdxt = pcCU->getCUMvField( eRefPicList )->getRefIdx( uiPartAddr ); 921 #else 894 922 Int refIdxt = -1-pcCU->getCUMvField( eRefPicList )->getRefIdx( uiPartAddr ); 923 #endif 895 924 assert(refIdxt>= 0); 896 925 refPic = pcCU->getSlice()->getRefPic(eRefPicList, refIdxt); … … 914 943 if (isFound == false) 915 944 { 945 #if QC_BVSP_CleanUP_D0191 946 Int refIdxTxt = pcCU->getCUMvField( privateRefPicList )->getRefIdx( uiPartAddr ); 947 #else 916 948 Int refIdxTxt = -1-pcCU->getCUMvField( privateRefPicList )->getRefIdx( uiPartAddr ); 949 #endif 917 950 assert(refIdxTxt >= 0); 918 951 refPic = pcCU->getSlice()->getRefPic(privateRefPicList, refIdxTxt); … … 1237 1270 Bool biDecision = 0; 1238 1271 Int predDirVSP = 0; 1272 #if QC_BVSP_CleanUP_D0191 1273 RefPicList privateRefPicList = REF_PIC_LIST_0; 1274 #endif 1239 1275 if (pcCU->getVSPIndex(uiPartAddr) != 0) // is VSP 1240 1276 { … … 1242 1278 //test whether VSP is Bi or Uni 1243 1279 //Step1. Get derived DV view id 1280 #if QC_BVSP_CleanUP_D0191 1281 RefPicList otherRefPicList = REF_PIC_LIST_1; 1282 Int refIdxList0 = pcCU->getCUMvField( REF_PIC_LIST_0 )->getRefIdx( uiPartAddr ); 1283 Int refIdxList1 = pcCU->getCUMvField( REF_PIC_LIST_1 )->getRefIdx( uiPartAddr ); 1284 privateRefPicList = refIdxList0 != NOT_VALID ? REF_PIC_LIST_0 : REF_PIC_LIST_1; 1285 if(privateRefPicList == REF_PIC_LIST_1 && refIdxList1==NOT_VALID ) 1286 { 1287 assert(0); 1288 } 1289 Int privateRefIdx = privateRefPicList == REF_PIC_LIST_0 ? refIdxList0 : refIdxList1; 1290 Int viewId = pcCU->getSlice()->getRefViewId(privateRefPicList, privateRefIdx); 1291 Int refPoc = pcCU->getSlice()->getRefPOC(privateRefPicList, privateRefIdx); 1292 #else 1293 Int refIdx = pcCU->getCUMvField( privateRefPicList )->getRefIdx( uiPartAddr ); 1244 1294 RefPicList privateRefPicList = (RefPicList) pcCU->getVSPDir( uiPartAddr ); 1245 1295 RefPicList otherRefPicList = privateRefPicList == REF_PIC_LIST_0 ? REF_PIC_LIST_1 : REF_PIC_LIST_0; … … 1249 1299 Int viewId = pcCU->getSlice()->getRefViewId(privateRefPicList, refIdx); 1250 1300 Int refPoc = pcCU->getSlice()->getRefPOC(privateRefPicList, refIdx); 1251 1301 #endif 1252 1302 assert(refPoc == pcCU->getSlice()->getPOC()); 1253 1303 // if(refPoc != pcCU->getSlice()->getPOC() ) … … 1318 1368 #else 1319 1369 //Reference list loop termination 1370 #if QC_BVSP_CleanUP_D0191 1371 RefPicList privateVSPRefPicList = privateRefPicList; 1372 #else 1320 1373 RefPicList privateVSPRefPicList = (RefPicList) pcCU->getVSPDir( uiPartAddr ); 1374 #endif 1321 1375 if( (pcCU->getVSPIndex(uiPartAddr)!=0) && iRefList != privateVSPRefPicList && !biDecision ) 1322 1376 {//when VSP mode, if it is uni prediction, the other reference list should skip -
branches/HTM-6.2-dev0/source/Lib/TLibCommon/TypeDef.h
r433 r442 221 221 222 222 223 #define MERL_General_Fix 0// General fix by MERL223 #define MERL_General_Fix 1// General fix by MERL 224 224 #define MERL_VSP_C0152_BugFix_ForNoDepthCase 1 // MERL bugfix for test condition of no depth 225 225 #define QC_BVSP_CleanUP_D0191 1 -
branches/HTM-6.2-dev0/source/Lib/TLibDecoder/TDecCu.cpp
r433 r442 458 458 pcCU->setVSPIndexSubParts( iVSPIdx, uiAbsPartIdx, 0, uiDepth ); // Initialize 459 459 #if MERL_VSP_NBDV_RefVId_Fix_D0166 460 pcCU->setVSPDirSubParts( iVSPDirTrue[iVSPIdx-1], uiAbsPartIdx, 0, uiDepth );460 pcCU->setVSPDirSubParts( 0, uiAbsPartIdx, 0, uiDepth ); 461 461 #endif 462 462 #if QC_BVSP_CleanUP_D0191 && !LGE_VSP_INHERIT_D0092 -
branches/HTM-6.2-dev0/source/Lib/TLibDecoder/TDecEntropy.cpp
r434 r442 394 394 pcCU->setVSPIndexSubParts( iVSPIdx, uiSubPartIdx, uiPartIdx, uiDepth ); // Initialize 395 395 #if MERL_VSP_NBDV_RefVId_Fix_D0166 396 pcCU->setVSPDirSubParts( iVSPDirTrue[iVSPIdx-1], uiSubPartIdx, uiPartIdx, uiDepth ); // Initialize396 pcCU->setVSPDirSubParts( 0, uiSubPartIdx, uiPartIdx, uiDepth ); // Initialize 397 397 #endif 398 398 #if QC_BVSP_CleanUP_D0191 && !LGE_VSP_INHERIT_D0092 -
branches/HTM-6.2-dev0/source/Lib/TLibEncoder/TEncCu.cpp
r427 r442 2054 2054 rpcTempCU->setVSPIndexSubParts( iVSPIdx, 0, 0, uhDepth ); 2055 2055 #if MERL_VSP_NBDV_RefVId_Fix_D0166 2056 rpcTempCU->setVSPDirSubParts( iVSPDirTrue[iVSPIdx-1], 0, 0, uhDepth ); // interprets depth relative to LCU level2056 rpcTempCU->setVSPDirSubParts(0, 0, 0, uhDepth ); // interprets depth relative to LCU level 2057 2057 #endif 2058 2058 #if QC_BVSP_CleanUP_D0191 && !LGE_VSP_INHERIT_D0092 -
branches/HTM-6.2-dev0/source/Lib/TLibEncoder/TEncSearch.cpp
r433 r442 3053 3053 pcCU->setVSPIndexSubParts( iVSPIdx, uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ) ); 3054 3054 #if MERL_VSP_NBDV_RefVId_Fix_D0166 3055 pcCU->setVSPDirSubParts( iVSPDirTrue[iVSPIdx-1], uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ) );3055 pcCU->setVSPDirSubParts(0, uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ) ); 3056 3056 #endif 3057 3057 #if QC_BVSP_CleanUP_D0191 && !LGE_VSP_INHERIT_D0092 … … 3817 3817 pcCU->setVSPIndexSubParts( iVSPIdx, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) ); 3818 3818 #if MERL_VSP_NBDV_RefVId_Fix_D0166 3819 pcCU->setVSPDirSubParts( iVSPDirTrue[iVSPIdx-1], uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) );3819 pcCU->setVSPDirSubParts( 0, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) ); 3820 3820 #endif 3821 3821 #if QC_BVSP_CleanUP_D0191 && !LGE_VSP_INHERIT_D0092
Note: See TracChangeset for help on using the changeset viewer.