Changeset 237 in 3DVCSoftware


Ignore:
Timestamp:
28 Jan 2013, 22:13:59 (11 years ago)
Author:
qualcomm
Message:

QC_C0047&51

Location:
branches/HTM-5.1-dev2-Qualcomm/source/Lib/TLibCommon
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-5.1-dev2-Qualcomm/source/Lib/TLibCommon/TComDataCU.cpp

    r210 r237  
    37063706  Int iPdmDir[2] = {0, 0};
    37073707#endif
     3708#if QC_AMVP_MRG_UNIFY_IVCAN_C0051
     3709  getUnifiedMvPredCan(uiPUIdx, REF_PIC_LIST_0, 0, aiPdmRefIdx, acPdmMv, &cDisInfo, iPdmDir, true);
     3710  Int iPdmInterDir;
     3711#else
    37083712  Int     iPdmInterDir      = cDisInfo.iN==0? 0:getPdmMergeCandidateDisCan ( uiPUIdx, aiPdmRefIdx, acPdmMv, &cDisInfo 
    37093713#if QC_MRG_CANS_B0048
     
    37113715#endif
    37123716    );
     3717#endif
    37133718#else
    37143719  Int     iPdmInterDir      = getPdmMergeCandidate( uiPUIdx, aiPdmRefIdx, acPdmMv );
     
    44094414    UInt uiCurLCUIdx = getAddr();
    44104415    xDeriveCenterIdx( eCUMode, uiPUIdx, uiPartIdxCenter );
    4411     bExistMV = uiLCUIdx >= 0 && xGetColMVP( REF_PIC_LIST_0, uiLCUIdx, uiAbsPartAddr, cColMv, iRefIdx );
     4416    bExistMV = uiLCUIdx >= 0 && xGetColMVP( REF_PIC_LIST_0, uiLCUIdx, uiAbsPartAddr, cColMv, iRefIdx
     4417#if QC_TMVP_MRG_REFIDX_C0047
     4418    , 1
     4419#endif
     4420    );
    44124421    if( bExistMV == false )
    44134422    {
    4414       bExistMV = xGetColMVP( REF_PIC_LIST_0, uiCurLCUIdx, uiPartIdxCenter,  cColMv, iRefIdx );
     4423      bExistMV = xGetColMVP( REF_PIC_LIST_0, uiCurLCUIdx, uiPartIdxCenter,  cColMv, iRefIdx
     4424#if QC_TMVP_MRG_REFIDX_C0047
     4425    , 1
     4426#endif
     4427    );
    44154428    }
    44164429    if( bExistMV )
     
    44274440        iRefIdx = 0;
    44284441#endif
    4429         bExistMV = uiLCUIdx >= 0 && xGetColMVP( REF_PIC_LIST_1, uiLCUIdx, uiAbsPartAddr, cColMv, iRefIdx);
     4442        bExistMV = uiLCUIdx >= 0 && xGetColMVP( REF_PIC_LIST_1, uiLCUIdx, uiAbsPartAddr, cColMv, iRefIdx
     4443#if QC_TMVP_MRG_REFIDX_C0047
     4444        , 1
     4445#endif
     4446        );
    44304447        if( bExistMV == false )
    44314448        {
    4432           bExistMV = xGetColMVP( REF_PIC_LIST_1, uiCurLCUIdx, uiPartIdxCenter,  cColMv, iRefIdx );
     4449          bExistMV = xGetColMVP( REF_PIC_LIST_1, uiCurLCUIdx, uiPartIdxCenter,  cColMv, iRefIdx
     4450#if QC_TMVP_MRG_REFIDX_C0047
     4451        , 1
     4452#endif 
     4453        );
    44334454        }
    44344455        if( bExistMV )
     
    59215942        cDisInfo.m_aVIdxCan[0] = 0;
    59225943      }
     5944#if QC_AMVP_MRG_UNIFY_IVCAN_C0051
     5945      Int paiPdmRefIdx[4] = {-1, -1, -1, -1};
     5946      Int iPdmDir[4] = {-1, -1, -1, -1};
     5947      TComMv cPdmMvPred[2];
     5948      cPdmMvPred[0].m_bDvMcp = cPdmMvPred[1].m_bDvMcp = false;
     5949      if(getUnifiedMvPredCan(uiPartIdx, eRefPicList, iRefIdx, paiPdmRefIdx, cPdmMvPred, &cDisInfo, iPdmDir, false))
     5950#else
    59235951      TComMv  cPdmMvPred;
    59245952#if QC_MULTI_DIS_CAN_A0097
     
    59275955      if( getPdmMvPred( uiPartIdx, eRefPicList, iRefIdx, cPdmMvPred ) )
    59285956#endif
     5957#endif
     5958#if QC_AMVP_MRG_UNIFY_IVCAN_C0051
     5959      {
     5960        clipMv( cPdmMvPred[0] );
     5961        pInfo->m_acMvCand[0] = cPdmMvPred[0];
     5962      }
     5963      else
     5964      {
     5965        pInfo->m_acMvCand[0].set(0,0);
     5966      }
     5967#else
    59295968      {
    59305969        clipMv( cPdmMvPred );
     
    59355974        pInfo->m_acMvCand[0].set(0,0);
    59365975      }
     5976#endif
    59375977    }
    59385978  }
     
    67846824 * \returns Bool
    67856825 */
    6786 Bool TComDataCU::xGetColMVP( RefPicList eRefPicList, Int uiCUAddr, Int uiPartUnitIdx, TComMv& rcMv, Int& riRefIdx )
     6826Bool TComDataCU::xGetColMVP( RefPicList eRefPicList, Int uiCUAddr, Int uiPartUnitIdx, TComMv& rcMv, Int& riRefIdx
     6827#if QC_TMVP_MRG_REFIDX_C0047
     6828  ,
     6829  Bool bMRG
     6830#endif
     6831)
    67876832{
    67886833  UInt uiAbsPartAddr = uiPartUnitIdx;
     
    68686913  if(bIsCurrRefLongTerm != bIsColRefLongTerm)
    68696914  {
     6915#if QC_TMVP_MRG_REFIDX_C0047
     6916    cColMv = pColCU->getCUMvField(eColRefPicList)->getMv(uiAbsPartAddr);
     6917    iCurrRefPOC = m_pcSlice->getRefPic(eRefPicList, riRefIdx)->getPOC();
     6918    if(bMRG )
     6919    {
     6920      Int iUpdRefIdx  = m_pcSlice->getNewRefIdx(eRefPicList);
     6921      if(iUpdRefIdx > 0 )
     6922      {
     6923        riRefIdx = iUpdRefIdx;
     6924        bIsCurrRefLongTerm = m_pcSlice->getRefPic(eRefPicList, riRefIdx)->getIsLongTerm();
     6925        iCurrRefPOC = m_pcSlice->getRefPic(eRefPicList, riRefIdx)->getPOC();
     6926#if SONY_COLPIC_AVAILABILITY
     6927        iCurrRefViewOrderIdx = m_pcSlice->getRefPic(eRefPicList, riRefIdx)->getViewOrderIdx();
     6928#endif
     6929      }
     6930      else
     6931        return false;
     6932    }else
     6933    {
     6934#endif
    68706935    assert( ((iColPOC == iColRefPOC)&&(iCurrPOC != iCurrRefPOC))||((iColPOC != iColRefPOC)&&(iCurrPOC == iCurrRefPOC)));
    68716936    return false;
     6937#if QC_TMVP_MRG_REFIDX_C0047
     6938    }
     6939#endif
    68726940  }
    68736941#endif
     
    78997967}
    79007968#else
     7969#if QC_AMVP_MRG_UNIFY_IVCAN_C0051
     7970Bool
     7971TComDataCU::getUnifiedMvPredCan(UInt uiPartIdx, RefPicList eRefPicList, Int iRefIdx, Int* paiPdmRefIdx, TComMv* pacPdmMv, DisInfo* pDInfo, Int* iPdm, Bool bMerge )
     7972{
     7973  TComDepthMapGenerator* pcDepthMapGenerator = m_pcSlice->getSPS()->getDepthMapGenerator();
     7974  ROFRS( pcDepthMapGenerator, false );
     7975  if (pDInfo->iN > 0 && pcDepthMapGenerator->getPdmCandidate(this, uiPartIdx, eRefPicList, iRefIdx, paiPdmRefIdx, pacPdmMv, pDInfo, iPdm, bMerge))
     7976    return true;
     7977  return false;
     7978}
     7979#else
    79017980Int
    79027981TComDataCU::getPdmMergeCandidateDisCan( UInt uiPartIdx, Int* paiPdmRefIdx, TComMv* pacPdmMv, DisInfo* pDInfo
     
    79248003}
    79258004#endif
    7926 
     8005#endif
    79278006
    79288007Bool     
  • branches/HTM-5.1-dev2-Qualcomm/source/Lib/TLibCommon/TComDataCU.h

    r189 r237  
    281281
    282282  Void          deriveRightBottomIdx        ( PartSize eCUMode, UInt uiPartIdx, UInt& ruiPartIdxRB );
    283   Bool          xGetColMVP( RefPicList eRefPicList, Int uiCUAddr, Int uiPartUnitIdx, TComMv& rcMv, Int& riRefIdx );
     283  Bool          xGetColMVP( RefPicList eRefPicList, Int uiCUAddr, Int uiPartUnitIdx, TComMv& rcMv, Int& riRefIdx
     284#if QC_TMVP_MRG_REFIDX_C0047
     285  ,
     286  Bool bMRG = 0
     287#endif
     288  );
    284289#if QC_MULTI_DIS_CAN_A0097
    285290  Bool          xGetColDisMV( RefPicList eRefPicList, Int refidx, Int uiCUAddr, Int uiPartUnitIdx, TComMv& rcMv, Int & iTargetViewIdx, Int & iStartViewIdx );
     
    544549  Bool          getPdmMvPred( UInt uiPartIdx, RefPicList eRefPicList, Int iRefIdx, TComMv& rcMv, Bool bMerge = false );
    545550#else
     551#if QC_AMVP_MRG_UNIFY_IVCAN_C0051
     552  Bool getUnifiedMvPredCan(UInt uiPartIdx, RefPicList eRefPicList, Int iRefIdx, Int* paiPdmRefIdx, TComMv* pacPdmMv, DisInfo* pDInfo, Int* iPdm, Bool bMerge );
     553#else
    546554  Bool          getPdmMvPredDisCan( UInt uiPartIdx, RefPicList eRefPicList, Int iRefIdx, TComMv& rcMv, DisInfo* pDInfo, Bool bMerge = false );
    547555  Int           getPdmMergeCandidateDisCan( UInt uiPartIdx, Int* paiPdmRefIdx, TComMv* pacPdmMv, DisInfo* pDInfo
     
    550558#endif
    551559  );
     560#endif
    552561  Void          getDisMvpCand        ( UInt uiPartIdx, UInt uiPartAddr, DisInfo* pDInfo );
    553562#if LGE_DVMCP_A0126
  • branches/HTM-5.1-dev2-Qualcomm/source/Lib/TLibCommon/TComDepthMapGenerator.cpp

    r189 r237  
    605605
    606606#if HHI_INTER_VIEW_MOTION_PRED
     607#if QC_AMVP_MRG_UNIFY_IVCAN_C0051
     608Bool
     609TComDepthMapGenerator::getPdmCandidate(TComDataCU* pcCU, UInt uiPartIdx, RefPicList eRefPicList, Int iRefIdx, Int* paiPdmRefIdx, TComMv* pacPdmMv, DisInfo* pDInfo, Int* iPdm, Bool bMerge )
     610{
     611  AOF  ( m_bCreated && m_bInit );
     612  TComSlice*    pcSlice     = pcCU->getSlice ();
     613  TComSPS*      pcSPS       = pcSlice->getSPS();
     614  AOF  ( pcSPS->getViewId() == m_uiCurrViewId );
     615
     616  TComPic*      pcRefPic    = pcSlice->getRefPic( eRefPicList, iRefIdx );
     617  UInt          uiRefViewId = pcRefPic->getSPS()->getViewId();
     618  Bool          bInterview  = ( uiRefViewId < m_uiCurrViewId );
     619  Bool          bPdmIView   = ( ( pcSPS->getMultiviewMvPredMode() & PDM_USE_FOR_IVIEW ) == PDM_USE_FOR_IVIEW );
     620  Bool          bPdmInter   = ( ( pcSPS->getMultiviewMvPredMode() & PDM_USE_FOR_INTER ) == PDM_USE_FOR_INTER );
     621  Bool          bPdmMerge   = ( ( pcSPS->getMultiviewMvPredMode() & PDM_USE_FOR_MERGE ) == PDM_USE_FOR_MERGE );
     622  if(!bMerge)
     623  {
     624    ROTRS( ( bInterview && !bMerge ) && !bPdmIView, false );
     625    ROTRS( (!bInterview && !bMerge ) && !bPdmInter, false );
     626    ROTRS(                  bMerge   && !bPdmMerge, false );
     627  }
     628  else
     629    ROTRS( !bPdmMerge, 0 );
     630
     631#if QC_MRG_CANS_B0048
     632  Bool abPdmAvailable[4] = {false, false, false, false};
     633#else
     634  Bool abPdmAvailable[2] = {false,false};
     635#endif
     636
     637  Int iValid = 0;
     638  Int iViewId = 0;
     639  for( UInt uiBId = 0; uiBId < m_uiCurrViewId && iValid==0; uiBId++ )
     640  {
     641    UInt        uiBaseId    = m_auiBaseIdList[ uiBId ];
     642    TComPic*    pcBasePic   = m_pcAUPicAccess->getPic( uiBaseId );
     643    for( Int iRefListId = 0; iRefListId < 2 && iValid==0; iRefListId++ )
     644    {
     645      RefPicList  eRefPicListTest = RefPicList( iRefListId );
     646      Int         iNumRefPics = pcSlice->getNumRefIdx( eRefPicListTest ) ;
     647      for( Int iRefIndex = 0; iRefIndex < iNumRefPics; iRefIndex++ )
     648      {
     649        if(pcBasePic->getPOC() == pcSlice->getRefPic( eRefPicListTest, iRefIndex )->getPOC()
     650          && pcBasePic->getViewId() == pcSlice->getRefPic( eRefPicListTest, iRefIndex )->getViewId())
     651        {
     652          iValid=1;
     653          iViewId = uiBaseId;
     654          break;
     655        }
     656      }
     657    }
     658  }
     659  if (iValid == 0)
     660    return false;
     661
     662  //--- get base CU/PU and check prediction mode ---
     663  TComPic*    pcBasePic   = m_pcAUPicAccess->getPic( iViewId );
     664  TComPicYuv* pcBaseRec   = pcBasePic->getPicYuvRec   ();
     665  if(bMerge || !bInterview)
     666  {
     667#if QC_MULTI_DIS_CAN_A0097
     668    Int  iCurrPosX, iCurrPosY;
     669    UInt          uiPartAddr;
     670    Int           iWidth;
     671    Int           iHeight;
     672
     673    pcCU->getPartIndexAndSize( uiPartIdx, uiPartAddr, iWidth, iHeight );
     674    pcBaseRec->getTopLeftSamplePos( pcCU->getAddr(), pcCU->getZorderIdxInCU() + uiPartAddr, iCurrPosX, iCurrPosY );
     675    iCurrPosX  += ( ( iWidth  - 1 ) >> 1 );
     676    iCurrPosY  += ( ( iHeight - 1 ) >> 1 );
     677
     678    Int         iBasePosX   = Clip3( 0, pcBaseRec->getWidth () - 1, iCurrPosX + ( (pDInfo->m_acMvCand[0].getHor() + 2 ) >> 2 ) );
     679    Int         iBasePosY   = Clip3( 0, pcBaseRec->getHeight() - 1, iCurrPosY + ( (pDInfo->m_acMvCand[0].getVer() + 2 ) >> 2 ));
     680    Int         iBaseCUAddr;
     681    Int         iBaseAbsPartIdx;
     682    pcBaseRec->getCUAddrAndPartIdx( iBasePosX , iBasePosY , iBaseCUAddr, iBaseAbsPartIdx );
     683#else
     684    Int  iPrdDepth, iCurrPosX, iCurrPosY;
     685    Bool bAvailable  = xGetPredDepth( pcCU, uiPartIdx, iPrdDepth, &iCurrPosX, &iCurrPosY );
     686    AOF( bAvailable );
     687    TComPicYuv* pcBasePdm   = pcBasePic->getPredDepthMap();
     688    Int         iDisparity  = xGetDisparityFromVirtDepth( iViewId, iPrdDepth );
     689    Int         iShiftX     = m_uiSubSampExpX + 2;
     690    Int         iAddX       = ( 1 << iShiftX ) >> 1;
     691    Int         iBasePosX   = Clip3( 0, pcBasePdm->getWidth () - 1, iCurrPosX + ( ( iDisparity + iAddX ) >> iShiftX ) );
     692    Int         iBasePosY   = Clip3( 0, pcBasePdm->getHeight() - 1, iCurrPosY                               );
     693    Int         iBaseCUAddr;
     694    Int         iBaseAbsPartIdx;
     695    pcBaseRec->getCUAddrAndPartIdx( iBasePosX<< m_uiSubSampExpX , iBasePosY<< m_uiSubSampExpY , iBaseCUAddr, iBaseAbsPartIdx );
     696#endif
     697    TComDataCU* pcBaseCU    = pcBasePic->getCU( iBaseCUAddr );
     698    if( pcBaseCU->getPredictionMode( iBaseAbsPartIdx ) == MODE_INTER || pcBaseCU->getPredictionMode( iBaseAbsPartIdx ) == MODE_SKIP )
     699    {
     700      for( UInt uiCurrRefListId = 0; uiCurrRefListId < 2; uiCurrRefListId++ )
     701      {
     702        RefPicList  eCurrRefPicList = RefPicList( uiCurrRefListId );
     703        if(!bMerge && eCurrRefPicList != eRefPicList)
     704          continue;
     705        Bool bLoop_stop = false;
     706        for(Int iLoop = 0; iLoop < 2 && !bLoop_stop; ++iLoop)
     707        {
     708          RefPicList eBaseRefPicList = (iLoop ==1)? RefPicList( 1 -  uiCurrRefListId ) : RefPicList( uiCurrRefListId );
     709          TComMvField cBaseMvField;
     710          pcBaseCU->getMvField( pcBaseCU, iBaseAbsPartIdx, eBaseRefPicList, cBaseMvField );
     711          Int         iBaseRefIdx     = cBaseMvField.getRefIdx();
     712          if (iBaseRefIdx >= 0)
     713          {
     714            Int iBaseRefPOC = pcBaseCU->getSlice()->getRefPOC(eBaseRefPicList, iBaseRefIdx);
     715            if (iBaseRefPOC != pcSlice->getPOC())   
     716            {
     717              for (Int iPdmRefIdx = (bMerge?0: iRefIdx); iPdmRefIdx < (bMerge? pcSlice->getNumRefIdx( eCurrRefPicList ): (iRefIdx+1)); iPdmRefIdx++)
     718              {
     719                if (iBaseRefPOC == pcSlice->getRefPOC(eCurrRefPicList, iPdmRefIdx))
     720                {
     721                  abPdmAvailable[ uiCurrRefListId ] = true;
     722                  TComMv cMv(cBaseMvField.getHor(), cBaseMvField.getVer());
     723#if LGE_DVMCP_A0126
     724                  if( bMerge )
     725                  {
     726                    cMv.m_bDvMcp = true;
     727                    cMv.m_iDvMcpDispX = pDInfo->m_acMvCand[0].getHor();
     728                  }
     729#endif
     730                  pcCU->clipMv( cMv );
     731                  if(bMerge)
     732                  {
     733                    paiPdmRefIdx  [ uiCurrRefListId ] = iPdmRefIdx;
     734                    pacPdmMv      [ uiCurrRefListId ] = cMv;
     735                    bLoop_stop = true;
     736                    break;
     737                  }else
     738                  {
     739                    pacPdmMv  [0] = cMv;
     740                    return true;
     741                  }
     742                }
     743              }
     744            }
     745          }
     746        }
     747      }
     748    }
     749    if( bMerge )
     750      iPdm[0] = ( abPdmAvailable[0] ? 1 : 0 ) + ( abPdmAvailable[1] ? 2 : 0 );
     751  }
     752  if(bMerge || bInterview)
     753  {
     754    for( Int iRefListId = 0; iRefListId < 2 ; iRefListId++ )
     755    {
     756      RefPicList  eRefPicListDMV       = RefPicList( iRefListId );
     757      Int         iNumRefPics       = pcSlice->getNumRefIdx( eRefPicListDMV );
     758      for( Int iPdmRefIdx = (bMerge ? 0: iRefIdx); iPdmRefIdx < (bMerge ? iNumRefPics: (iRefIdx+1) ); iPdmRefIdx++ )
     759      {
     760        if( pcSlice->getRefPOC( eRefPicListDMV, iPdmRefIdx ) == pcSlice->getPOC())
     761        {
     762#if QC_MRG_CANS_B0048
     763          abPdmAvailable[ iRefListId+2 ] = true;
     764          paiPdmRefIdx  [ iRefListId+2 ] = iPdmRefIdx;
     765#else
     766          abPdmAvailable[ iRefListId ] = true;
     767          paiPdmRefIdx  [ iRefListId ] = iPdmRefIdx;
     768#endif
     769#if QC_MULTI_DIS_CAN_A0097
     770          TComMv cMv = pDInfo->m_acMvCand[0];
     771          cMv.setVer(0);
     772#else
     773          TComMv cMv(iDisparity, 0);
     774#endif
     775          pcCU->clipMv( cMv );
     776#if QC_MRG_CANS_B0048
     777          pacPdmMv      [ iRefListId + 2] = cMv;
     778#else
     779          pacPdmMv      [ iRefListId ] = cMv;
     780#endif
     781          if(bMerge)
     782            break;
     783          else
     784          {
     785            pacPdmMv [0] = cMv;
     786            return true;
     787          }
     788        }
     789      }
     790    }
     791#if QC_MRG_CANS_B0048
     792    iPdm[1] = ( abPdmAvailable[2] ? 1 : 0 ) + ( abPdmAvailable[3] ? 2 : 0 );
     793#else
     794    iPdmInterDir = ( abPdmAvailable[0] ? 1 : 0 ) + ( abPdmAvailable[1] ? 2 : 0 ) ;
     795   }
     796#endif
     797  }
     798  return false;
     799}
     800#else
    607801#if QC_MULTI_DIS_CAN_A0097
    608802Int
     
    10141208  return false;
    10151209}
     1210#endif
    10161211#endif
    10171212
  • branches/HTM-5.1-dev2-Qualcomm/source/Lib/TLibCommon/TComDepthMapGenerator.h

    r210 r237  
    152152#if HHI_INTER_VIEW_MOTION_PRED
    153153#if QC_MULTI_DIS_CAN_A0097
     154#if QC_AMVP_MRG_UNIFY_IVCAN_C0051
     155  Bool getPdmCandidate ( TComDataCU* pcCU, UInt uiPartIdx, RefPicList eRefPicList, Int iRefIdx, Int* paiPdmRefIdx, TComMv* pacPdmMv, DisInfo* pDInfo, Int* iPdm, Bool bMerge );
     156#else
    154157  Int   getPdmMergeCandidate ( TComDataCU*   pcCU, UInt uiPartIdx, Int* paiPdmRefIdx, TComMv* pacPdmMv, DisInfo* pDInfo
    155158#if QC_MRG_CANS_B0048
     
    160163  Bool  getPdmMvPredDisCan    ( TComDataCU*   pcCU, UInt uiPartIdx, RefPicList eRefPicList, Int iRefIdx, TComMv& rcMv, DisInfo* pDInfo, Bool bMerge );
    161164  Bool  getDisCanPdmMvPred    ( TComDataCU*   pcCU, UInt uiPartIdx, RefPicList eRefPicList, Int iRefIdx, TComMv& rcMv, DisInfo* pDInfo, Bool bMerge );
     165#endif
    162166#else
    163167  Int   getPdmMergeCandidate  ( TComDataCU*   pcCU, UInt uiPartIdx, Int* paiPdmRefIdx, TComMv* pacPdmMv );
  • branches/HTM-5.1-dev2-Qualcomm/source/Lib/TLibCommon/TComSlice.cpp

    r210 r237  
    199199  m_numEntryPointOffsets = 0;
    200200#endif
     201#if QC_TMVP_MRG_REFIDX_C0047
     202  m_aiNewRefIdx[0]                  = -1;
     203  m_aiNewRefIdx[1]                  = -1;
     204#endif
    201205}
    202206
     
    419423    }
    420424  }
     425#if QC_TMVP_MRG_REFIDX_C0047
     426  Int  iCurrPOC = this->getPOC();
     427  for ( UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx++ )//just to get one updated ref idx for merge in each L0/L1 direction, if it is not avaialbe, it is still -1
     428  {       
     429    if ( this->getNumRefIdx( RefPicList( uiRefListIdx ) ) == 0)
     430        continue;
     431
     432    Bool bZeroIdxInterViewFlag =  ( this->getRefPic(RefPicList(uiRefListIdx), 0)->getPOC() == iCurrPOC ) ? true : false;
     433    for(Int i = 1; i < this->getNumRefIdx(RefPicList(uiRefListIdx)); i++ )
     434    {
     435      if ( (bZeroIdxInterViewFlag && this->getRefPic(RefPicList(uiRefListIdx), i)->getPOC() != iCurrPOC ) ||
     436           (!bZeroIdxInterViewFlag && this->getRefPic(RefPicList(uiRefListIdx), i)->getPOC() == iCurrPOC ) )
     437      {
     438        this->setNewRefIdx(RefPicList(uiRefListIdx),i);
     439        break;
     440      }
     441    }
     442  }
     443
     444#endif
    421445}
    422446
  • branches/HTM-5.1-dev2-Qualcomm/source/Lib/TLibCommon/TComSlice.h

    r210 r237  
    12481248
    12491249  Bool        m_bCheckLDC;
     1250#if QC_TMVP_MRG_REFIDX_C0047
     1251  Int         m_aiNewRefIdx    [2];
     1252#endif
    12501253
    12511254  //  Data
     
    16541657  Void      xSetApplyIC           ();
    16551658#endif
     1659#if QC_TMVP_MRG_REFIDX_C0047
     1660  Int       getNewRefIdx        ( RefPicList e )                { return  m_aiNewRefIdx[e];     }
     1661  Void      setNewRefIdx        ( RefPicList e, Int i )         { m_aiNewRefIdx[e]    = i;      }
     1662#endif
    16561663
    16571664protected:
  • branches/HTM-5.1-dev2-Qualcomm/source/Lib/TLibCommon/TypeDef.h

    r211 r237  
    6767#if FLEX_CODING_ORDER_M23723
    6868  #define DISABLE_FCO_FOR_VSO             0 // Optional compile settings to disable VSO with FCO.
    69 #endif
     69#endif
     70#define   QC_TMVP_MRG_REFIDX_C0047        1 //only enabled when QC_TMVP_IDX_MOD_B0046 is enabled.
    7071
    7172///// ***** PATCHES *********
     
    8182///// ***** INTERVIEW MOTION VECTOR PREDICTION *********
    8283#define HHI_INTER_VIEW_MOTION_PRED        1   // inter-view motion parameter prediction
     84#define QC_AMVP_MRG_UNIFY_IVCAN_C0051     0
    8385#define SHARP_INTERVIEW_DECOUPLE_B0111    1   // JCT3V-B0111 decoupling inter-view candidate
    8486#define QC_MRG_CANS_B0048                 1   // JCT3V-B0048, B0086, B0069
Note: See TracChangeset for help on using the changeset viewer.