Changeset 441 in 3DVCSoftware
- Timestamp:
- 25 May 2013, 08:50:52 (12 years ago)
- Location:
- branches/HTM-6.2-dev0-Fix/source/Lib
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-6.2-dev0-Fix/source/Lib/TLibCommon/TComDataCU.cpp
r427 r441 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 … … 4478 4541 //===== vsp 3 ===== 4479 4542 #if LGE_VSP_INHERIT_D0092 4480 if ( !xAddVspMergeCand(3, uiDepth, abCandIsInter, iCount, puhInterDirNeighbours, pcMvFieldNeighbours, iVSPIndexTrue, mrgCandIdx, &cDisInfo) ) 4543 if ( !xAddVspMergeCand(3, uiDepth, abCandIsInter, iCount, puhInterDirNeighbours, pcMvFieldNeighbours, iVSPIndexTrue, mrgCandIdx, &cDisInfo 4544 #if MERL_VSP_NBDV_RefVId_Fix_D0166 4545 , iVSPDirTrue 4546 #endif 4547 ) ) 4481 4548 #else 4482 4549 if( iCount < 4 + extraMergeCand ) 4483 if ( !xAddVspMergeCand(3, 1, bVspMvZeroDone, uiDepth, abCandIsInter, iCount, puhInterDirNeighbours, pcMvFieldNeighbours, iVSPIndexTrue, mrgCandIdx, &cDisInfo) ) 4550 if ( !xAddVspMergeCand(3, 1, bVspMvZeroDone, uiDepth, abCandIsInter, iCount, puhInterDirNeighbours, pcMvFieldNeighbours, iVSPIndexTrue, mrgCandIdx, &cDisInfo 4551 #if MERL_VSP_NBDV_RefVId_Fix_D0166 4552 , iVSPDirTrue 4553 #endif 4554 ) ) 4484 4555 #endif 4485 4556 return; … … 4636 4707 if( iCount < 4 + extraMergeCand ) 4637 4708 #if LGE_VSP_INHERIT_D0092 4638 if ( !xAddVspMergeCand(5, uiDepth, abCandIsInter, iCount, puhInterDirNeighbours, pcMvFieldNeighbours, iVSPIndexTrue, mrgCandIdx, &cDisInfo )4709 if ( !xAddVspMergeCand(5, uiDepth, abCandIsInter, iCount, puhInterDirNeighbours, pcMvFieldNeighbours, iVSPIndexTrue, mrgCandIdx, &cDisInfo 4639 4710 #if MERL_VSP_NBDV_RefVId_Fix_D0166 4640 4711 , iVSPDirTrue 4641 4712 #endif 4642 ) 4713 )) 4643 4714 #else 4644 4715 if ( !xAddVspMergeCand(5, 1, bVspMvZeroDone, uiDepth, abCandIsInter, iCount, puhInterDirNeighbours, pcMvFieldNeighbours, iVSPIndexTrue, mrgCandIdx, &cDisInfo … … 4646 4717 , iVSPDirTrue 4647 4718 #endif 4648 ) 4719 )) 4649 4720 #endif 4650 4721 return; … … 5606 5677 #endif 5607 5678 #endif 5679 #else 5680 picDepth = getSlice()->getRefPicBaseDepth(); 5608 5681 #endif 5609 5682 -
branches/HTM-6.2-dev0-Fix/source/Lib/TLibCommon/TComPrediction.cpp
r427 r441 821 821 822 822 #else // MERL_VSP_NBDV_RefVId_Fix_D0166 823 823 // Step 1: get depth reference 824 #if QC_BVSP_CleanUP_D0191 825 RefPicList privateRefPicList = REF_PIC_LIST_0; 826 Int refIdxList0 = pcCU->getCUMvField( REF_PIC_LIST_0 )->getRefIdx( uiPartAddr ); 827 Int refIdxList1 = pcCU->getCUMvField( REF_PIC_LIST_1 )->getRefIdx( uiPartAddr ); 828 privateRefPicList = refIdxList0 != NOT_VALID ? REF_PIC_LIST_0 : REF_PIC_LIST_1; 829 if(privateRefPicList == REF_PIC_LIST_1 && refIdxList1== NOT_VALID ) 830 { 831 assert(0); 832 } 833 Int privateRefIdx = privateRefPicList == REF_PIC_LIST_0 ? refIdxList0 : refIdxList1; 834 Int viewId = pcCU->getSlice()->getRefViewId(privateRefPicList, privateRefIdx); 835 Int refPoc = pcCU->getSlice()->getRefPOC(privateRefPicList, privateRefIdx); 836 #else 824 837 //recover VSP reference frame according to negative refIdx number 825 838 RefPicList privateRefPicList = (RefPicList) pcCU->getVSPDir( uiPartAddr ); 826 839 assert(privateRefPicList == REF_PIC_LIST_0 || privateRefPicList == REF_PIC_LIST_1); 827 828 // Step 1: get depth reference829 840 Int refIdx = -1-pcCU->getCUMvField( privateRefPicList )->getRefIdx( uiPartAddr ); // texture ref index, a trick when storing refIdx 830 841 Int viewId = pcCU->getSlice()->getRefViewId(privateRefPicList, refIdx); // texture view id 831 842 Int refPoc = pcCU->getSlice()->getRefPOC(privateRefPicList, refIdx); // texture POC 843 #endif 832 844 TComPic* pRefPicBaseDepth = pcCU->getSlice()->getDepthRefPic(viewId, refPoc); 833 845 … … 873 885 TComPic* TComPrediction::xGetVspRefTxt(TComDataCU* pcCU, UInt uiPartAddr, RefPicList eRefPicList) 874 886 { 887 #if QC_BVSP_CleanUP_D0191 888 RefPicList privateRefPicList = REF_PIC_LIST_0; 889 Int refIdxList0 = pcCU->getCUMvField( REF_PIC_LIST_0 )->getRefIdx( uiPartAddr ); 890 Int refIdxList1 = pcCU->getCUMvField( REF_PIC_LIST_1 )->getRefIdx( uiPartAddr ); 891 privateRefPicList = refIdxList0 != NOT_VALID ? REF_PIC_LIST_0 : REF_PIC_LIST_1; 892 if(privateRefPicList == REF_PIC_LIST_1 && refIdxList1==NOT_VALID ) 893 { 894 assert(0); 895 } 896 Int privateRefIdx = privateRefPicList == REF_PIC_LIST_0 ? refIdxList0 : refIdxList1; 897 Int viewId = pcCU->getSlice()->getRefViewId(privateRefPicList, privateRefIdx); 898 #else 875 899 RefPicList privateRefPicList = (RefPicList) pcCU->getVSPDir( uiPartAddr ); 876 900 Int refIdx = -1-pcCU->getCUMvField( privateRefPicList )->getRefIdx( uiPartAddr ); // texture ref index, a trick when storing refIdx 877 901 Int viewId = pcCU->getSlice()->getRefViewId(privateRefPicList, refIdx); // texture view id 902 #endif 878 903 TComPic* refPic = NULL; 879 904 … … 882 907 if (privateRefPicList == eRefPicList) 883 908 { 909 #if QC_BVSP_CleanUP_D0191 910 Int refIdxt = pcCU->getCUMvField( eRefPicList )->getRefIdx( uiPartAddr ); 911 #else 884 912 Int refIdxt = -1-pcCU->getCUMvField( eRefPicList )->getRefIdx( uiPartAddr ); 913 #endif 885 914 assert(refIdxt>= 0); 886 915 refPic = pcCU->getSlice()->getRefPic(eRefPicList, refIdxt); … … 904 933 if (isFound == false) 905 934 { 935 #if QC_BVSP_CleanUP_D0191 936 Int refIdxTxt = pcCU->getCUMvField( privateRefPicList )->getRefIdx( uiPartAddr ); 937 #else 906 938 Int refIdxTxt = -1-pcCU->getCUMvField( privateRefPicList )->getRefIdx( uiPartAddr ); 939 #endif 907 940 assert(refIdxTxt >= 0); 908 941 refPic = pcCU->getSlice()->getRefPic(privateRefPicList, refIdxTxt); … … 1227 1260 Bool biDecision = 0; 1228 1261 Int predDirVSP = 0; 1262 #if QC_BVSP_CleanUP_D0191 1263 RefPicList privateRefPicList = REF_PIC_LIST_0; 1264 #endif 1229 1265 if (pcCU->getVSPIndex(uiPartAddr) != 0) // is VSP 1230 1266 { … … 1232 1268 //test whether VSP is Bi or Uni 1233 1269 //Step1. Get derived DV view id 1270 #if QC_BVSP_CleanUP_D0191 1271 RefPicList otherRefPicList = REF_PIC_LIST_1; 1272 Int refIdxList0 = pcCU->getCUMvField( REF_PIC_LIST_0 )->getRefIdx( uiPartAddr ); 1273 Int refIdxList1 = pcCU->getCUMvField( REF_PIC_LIST_1 )->getRefIdx( uiPartAddr ); 1274 privateRefPicList = refIdxList0 != NOT_VALID ? REF_PIC_LIST_0 : REF_PIC_LIST_1; 1275 if(privateRefPicList == REF_PIC_LIST_1 && refIdxList1==NOT_VALID ) 1276 { 1277 assert(0); 1278 } 1279 Int privateRefIdx = privateRefPicList == REF_PIC_LIST_0 ? refIdxList0 : refIdxList1; 1280 Int viewId = pcCU->getSlice()->getRefViewId(privateRefPicList, privateRefIdx); 1281 Int refPoc = pcCU->getSlice()->getRefPOC(privateRefPicList, privateRefIdx); 1282 #else 1283 Int refIdx = pcCU->getCUMvField( privateRefPicList )->getRefIdx( uiPartAddr ); 1234 1284 RefPicList privateRefPicList = (RefPicList) pcCU->getVSPDir( uiPartAddr ); 1235 1285 RefPicList otherRefPicList = privateRefPicList == REF_PIC_LIST_0 ? REF_PIC_LIST_1 : REF_PIC_LIST_0; … … 1239 1289 Int viewId = pcCU->getSlice()->getRefViewId(privateRefPicList, refIdx); 1240 1290 Int refPoc = pcCU->getSlice()->getRefPOC(privateRefPicList, refIdx); 1241 1291 #endif 1242 1292 assert(refPoc == pcCU->getSlice()->getPOC()); 1243 1293 // if(refPoc != pcCU->getSlice()->getPOC() ) … … 1308 1358 #else 1309 1359 //Reference list loop termination 1360 #if QC_BVSP_CleanUP_D0191 1361 RefPicList privateVSPRefPicList = privateRefPicList; 1362 #else 1310 1363 RefPicList privateVSPRefPicList = (RefPicList) pcCU->getVSPDir( uiPartAddr ); 1364 #endif 1311 1365 if( (pcCU->getVSPIndex(uiPartAddr)!=0) && iRefList != privateVSPRefPicList && !biDecision ) 1312 1366 {//when VSP mode, if it is uni prediction, the other reference list should skip -
branches/HTM-6.2-dev0-Fix/source/Lib/TLibCommon/TypeDef.h
r428 r441 209 209 210 210 211 #define MERL_General_Fix 0// General fix by MERL211 #define MERL_General_Fix 1// General fix by MERL 212 212 #define MERL_VSP_C0152_BugFix_ForNoDepthCase 1 // MERL bugfix for test condition of no depth 213 213 #define QC_BVSP_CleanUP_D0191 1 -
branches/HTM-6.2-dev0-Fix/source/Lib/TLibDecoder/TDecCu.cpp
r427 r441 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-Fix/source/Lib/TLibDecoder/TDecEntropy.cpp
r427 r441 380 380 pcCU->setVSPIndexSubParts( iVSPIdx, uiSubPartIdx, uiPartIdx, uiDepth ); // Initialize 381 381 #if MERL_VSP_NBDV_RefVId_Fix_D0166 382 pcCU->setVSPDirSubParts( iVSPDirTrue[iVSPIdx-1], uiSubPartIdx, uiPartIdx, uiDepth ); // Initialize382 pcCU->setVSPDirSubParts( 0, uiSubPartIdx, uiPartIdx, uiDepth ); // Initialize 383 383 #endif 384 384 #if QC_BVSP_CleanUP_D0191 && !LGE_VSP_INHERIT_D0092 -
branches/HTM-6.2-dev0-Fix/source/Lib/TLibEncoder/TEncCu.cpp
r427 r441 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-Fix/source/Lib/TLibEncoder/TEncSearch.cpp
r427 r441 3030 3030 pcCU->setVSPIndexSubParts( iVSPIdx, uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ) ); 3031 3031 #if MERL_VSP_NBDV_RefVId_Fix_D0166 3032 pcCU->setVSPDirSubParts( iVSPDirTrue[iVSPIdx-1], uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ) );3032 pcCU->setVSPDirSubParts(0, uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ) ); 3033 3033 #endif 3034 3034 #if QC_BVSP_CleanUP_D0191 && !LGE_VSP_INHERIT_D0092 … … 3794 3794 pcCU->setVSPIndexSubParts( iVSPIdx, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) ); 3795 3795 #if MERL_VSP_NBDV_RefVId_Fix_D0166 3796 pcCU->setVSPDirSubParts( iVSPDirTrue[iVSPIdx-1], uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) );3796 pcCU->setVSPDirSubParts( 0, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) ); 3797 3797 #endif 3798 3798 #if QC_BVSP_CleanUP_D0191 && !LGE_VSP_INHERIT_D0092
Note: See TracChangeset for help on using the changeset viewer.