Changeset 442 in 3DVCSoftware for branches/HTM-6.2-dev0/source/Lib/TLibCommon/TComPrediction.cpp
- Timestamp:
- 25 May 2013, 12:59:47 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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
Note: See TracChangeset for help on using the changeset viewer.