Changeset 441 in 3DVCSoftware


Ignore:
Timestamp:
25 May 2013, 08:50:52 (11 years ago)
Author:
mitsubishi-htm
Message:

-Harmonization fixed by MERL. MERL_General_Fix is enabled.

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  
    209209#endif
    210210#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
    211263         Int iRefIdx = NOT_VALID;
     264
    212265#if QC_BVSP_CleanUP_D0191
    213266         iRefIdx = getSlice()->getRefPic(REF_PIC_LIST_0, 0)->getPOC()==getSlice()->getPOC() ? 0: getSlice()->getNewRefIdx(REF_PIC_LIST_0);
    214267#endif
     268#if MTK_VSP_USING_NBDV_D0105
     269         pcMvFieldNeighbours[iCount<<1].setMvField(pDInfo->m_acMvCandNoRef[0], iRefIdx );
     270#else
    215271         pcMvFieldNeighbours[iCount<<1].setMvField(pDInfo->m_acMvCand[0], iRefIdx );
     272#endif
    216273         if ( getSlice()->isInterB() )
    217274         {
     275#if MTK_VSP_USING_NBDV_D0105
     276           pcMvFieldNeighbours[(iCount<<1)+1].setMvField( pDInfo->m_acMvCandNoRef[0], iRefIdx );
     277#else
    218278             pcMvFieldNeighbours[(iCount<<1)+1].setMvField( pDInfo->m_acMvCand[0], iRefIdx );
     279#endif
    219280         }
    220281         iVSPIndexTrue[iCount] = 1;
     282#endif
     283#endif
    221284#else
    222285          // get Mv using checked disparity vector
     
    44784541  //===== vsp 3 =====
    44794542#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      ) )
    44814548#else
    44824549    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          ) )
    44844555#endif
    44854556            return;
     
    46364707  if( iCount < 4 + extraMergeCand )
    46374708#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
    46394710#if MERL_VSP_NBDV_RefVId_Fix_D0166
    46404711         , iVSPDirTrue
    46414712#endif
    4642 )
     4713))
    46434714#else
    46444715    if ( !xAddVspMergeCand(5, 1, bVspMvZeroDone, uiDepth, abCandIsInter, iCount, puhInterDirNeighbours, pcMvFieldNeighbours, iVSPIndexTrue, mrgCandIdx, &cDisInfo
     
    46464717         , iVSPDirTrue
    46474718#endif
    4648             )
     4719            ))
    46494720#endif
    46504721      return;
     
    56065677#endif
    56075678#endif
     5679#else
     5680          picDepth = getSlice()->getRefPicBaseDepth();
    56085681#endif
    56095682
  • branches/HTM-6.2-dev0-Fix/source/Lib/TLibCommon/TComPrediction.cpp

    r427 r441  
    821821
    822822#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
    824837  //recover VSP reference frame according to negative refIdx number
    825838  RefPicList privateRefPicList = (RefPicList) pcCU->getVSPDir( uiPartAddr );
    826839  assert(privateRefPicList == REF_PIC_LIST_0 || privateRefPicList == REF_PIC_LIST_1);
    827 
    828   // Step 1: get depth reference
    829840  Int  refIdx = -1-pcCU->getCUMvField( privateRefPicList )->getRefIdx( uiPartAddr ); // texture ref index, a trick when storing refIdx
    830841  Int  viewId = pcCU->getSlice()->getRefViewId(privateRefPicList, refIdx);  // texture view id
    831842  Int  refPoc = pcCU->getSlice()->getRefPOC(privateRefPicList, refIdx);     // texture POC
     843#endif
    832844  TComPic* pRefPicBaseDepth = pcCU->getSlice()->getDepthRefPic(viewId, refPoc);
    833845
     
    873885TComPic*  TComPrediction::xGetVspRefTxt(TComDataCU* pcCU, UInt uiPartAddr, RefPicList eRefPicList)
    874886{
     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
    875899  RefPicList  privateRefPicList = (RefPicList) pcCU->getVSPDir( uiPartAddr );
    876900  Int         refIdx = -1-pcCU->getCUMvField( privateRefPicList )->getRefIdx( uiPartAddr ); // texture ref index, a trick when storing refIdx
    877901  Int         viewId = pcCU->getSlice()->getRefViewId(privateRefPicList, refIdx);  // texture view id
     902#endif
    878903  TComPic*    refPic = NULL;
    879904
     
    882907  if (privateRefPicList == eRefPicList)
    883908  {
     909#if QC_BVSP_CleanUP_D0191
     910    Int  refIdxt = pcCU->getCUMvField( eRefPicList )->getRefIdx( uiPartAddr );
     911#else
    884912    Int  refIdxt = -1-pcCU->getCUMvField( eRefPicList )->getRefIdx( uiPartAddr );
     913#endif
    885914    assert(refIdxt>= 0);
    886915    refPic = pcCU->getSlice()->getRefPic(eRefPicList, refIdxt);
     
    904933    if (isFound == false)
    905934    {
     935#if QC_BVSP_CleanUP_D0191
     936      Int  refIdxTxt = pcCU->getCUMvField( privateRefPicList )->getRefIdx( uiPartAddr );
     937#else
    906938      Int  refIdxTxt = -1-pcCU->getCUMvField( privateRefPicList )->getRefIdx( uiPartAddr );
     939#endif
    907940      assert(refIdxTxt >= 0);
    908941      refPic = pcCU->getSlice()->getRefPic(privateRefPicList, refIdxTxt);
     
    12271260  Bool biDecision = 0;
    12281261  Int  predDirVSP = 0;
     1262#if QC_BVSP_CleanUP_D0191
     1263  RefPicList privateRefPicList = REF_PIC_LIST_0;
     1264#endif
    12291265  if (pcCU->getVSPIndex(uiPartAddr) != 0) // is VSP
    12301266  {
     
    12321268    //test whether VSP is Bi or Uni
    12331269    //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 );
    12341284    RefPicList privateRefPicList = (RefPicList) pcCU->getVSPDir( uiPartAddr );
    12351285    RefPicList otherRefPicList = privateRefPicList == REF_PIC_LIST_0 ? REF_PIC_LIST_1 : REF_PIC_LIST_0;
     
    12391289    Int  viewId = pcCU->getSlice()->getRefViewId(privateRefPicList, refIdx);
    12401290    Int  refPoc = pcCU->getSlice()->getRefPOC(privateRefPicList, refIdx);
    1241 
     1291#endif
    12421292    assert(refPoc == pcCU->getSlice()->getPOC());
    12431293//    if(refPoc != pcCU->getSlice()->getPOC() )
     
    13081358#else
    13091359      //Reference list loop termination
     1360#if QC_BVSP_CleanUP_D0191
     1361      RefPicList privateVSPRefPicList = privateRefPicList;
     1362#else
    13101363      RefPicList privateVSPRefPicList = (RefPicList) pcCU->getVSPDir( uiPartAddr );
     1364#endif
    13111365      if( (pcCU->getVSPIndex(uiPartAddr)!=0) &&  iRefList != privateVSPRefPicList && !biDecision  )
    13121366      {//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  
    209209
    210210
    211 #define MERL_General_Fix                     0 // General fix by MERL
     211#define MERL_General_Fix                     1// General fix by MERL
    212212#define MERL_VSP_C0152_BugFix_ForNoDepthCase 1 // MERL bugfix for test condition of no depth
    213213#define QC_BVSP_CleanUP_D0191                    1
  • branches/HTM-6.2-dev0-Fix/source/Lib/TLibDecoder/TDecCu.cpp

    r427 r441  
    458458      pcCU->setVSPIndexSubParts( iVSPIdx, uiAbsPartIdx, 0, uiDepth );  // Initialize
    459459#if MERL_VSP_NBDV_RefVId_Fix_D0166
    460       pcCU->setVSPDirSubParts( iVSPDirTrue[iVSPIdx-1], uiAbsPartIdx, 0, uiDepth );
     460      pcCU->setVSPDirSubParts( 0, uiAbsPartIdx, 0, uiDepth );
    461461#endif
    462462#if QC_BVSP_CleanUP_D0191 && !LGE_VSP_INHERIT_D0092
  • branches/HTM-6.2-dev0-Fix/source/Lib/TLibDecoder/TDecEntropy.cpp

    r427 r441  
    380380        pcCU->setVSPIndexSubParts( iVSPIdx, uiSubPartIdx, uiPartIdx, uiDepth );               // Initialize
    381381#if MERL_VSP_NBDV_RefVId_Fix_D0166
    382         pcCU->setVSPDirSubParts( iVSPDirTrue[iVSPIdx-1], uiSubPartIdx, uiPartIdx, uiDepth );  // Initialize
     382        pcCU->setVSPDirSubParts( 0, uiSubPartIdx, uiPartIdx, uiDepth );  // Initialize
    383383#endif
    384384#if QC_BVSP_CleanUP_D0191 && !LGE_VSP_INHERIT_D0092
  • branches/HTM-6.2-dev0-Fix/source/Lib/TLibEncoder/TEncCu.cpp

    r427 r441  
    20542054            rpcTempCU->setVSPIndexSubParts( iVSPIdx, 0, 0, uhDepth );
    20552055#if MERL_VSP_NBDV_RefVId_Fix_D0166
    2056             rpcTempCU->setVSPDirSubParts( iVSPDirTrue[iVSPIdx-1], 0, 0, uhDepth ); // interprets depth relative to LCU level
     2056            rpcTempCU->setVSPDirSubParts(0, 0, 0, uhDepth ); // interprets depth relative to LCU level
    20572057#endif
    20582058#if QC_BVSP_CleanUP_D0191 && !LGE_VSP_INHERIT_D0092
  • branches/HTM-6.2-dev0-Fix/source/Lib/TLibEncoder/TEncSearch.cpp

    r427 r441  
    30303030        pcCU->setVSPIndexSubParts( iVSPIdx, uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ) );
    30313031#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 ) );
    30333033#endif
    30343034#if QC_BVSP_CleanUP_D0191 && !LGE_VSP_INHERIT_D0092
     
    37943794          pcCU->setVSPIndexSubParts( iVSPIdx, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) );
    37953795#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 ) );
    37973797#endif
    37983798#if QC_BVSP_CleanUP_D0191 && !LGE_VSP_INHERIT_D0092
Note: See TracChangeset for help on using the changeset viewer.