Changeset 154 in 3DVCSoftware


Ignore:
Timestamp:
26 Oct 2012, 21:38:14 (12 years ago)
Author:
sharpjp-htm
Message:

B0111: decoupling inter-view candidate in AMVP

Location:
branches/HTM-4.1-dev1-Sharp/source/Lib
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-4.1-dev1-Sharp/source/Lib/TLibCommon/TComDataCU.cpp

    r147 r154  
    48074807  UInt uiNumPartInCUWidth = m_pcPic->getNumPartInWidth();
    48084808
    4809   Int   aiDvMcpDvCand[2][7] = {{0,},    {0,}}; // dummy, 5 spatial + 1 temporal, DV-MCP ÁÖº¯ ºí·°¿¡¼­ »ç¿ëµÈ DV¸¦ ÀúÀå
     4809  Int   aiDvMcpDvCand[2][7] = {{0,},    {0,}}; // dummy, 5 spatial + 1 temporal, DV-MCP ÁÖº¯ ºúÓ°¿¡¼­ »ç¿EÈ DV¸¦ ÀúÀE
    48104810  Bool  abDvMcpFlag  [2][7] = {{false,},{false,}};
    48114811  //Int   aiRefPOC     [2][7] = {{-1,},{-1}}; // debug
     
    52165216 * \param pInfo
    52175217 */
     5218#if SHARP_INTERVIEW_DECOUPLE_B0111
     5219Void TComDataCU::fillMvpCand ( UInt uiPartIdx, UInt uiPartAddr, RefPicList eRefPicList, Int iRefIdx, AMVPInfo* pInfo, Int iMVPIdx)
     5220{
     5221  if (!m_pcSlice->getSPS()->getViewId() || !m_pcSlice->getSPS()->getMultiviewMvPredMode())
     5222  {
     5223    // HEVC
     5224    fillMvpCandBase(uiPartIdx, uiPartAddr, eRefPicList, iRefIdx, pInfo);
     5225  }
     5226  else
     5227  {
     5228    if (iMVPIdx!=0)
     5229    {
     5230      // HEVC part
     5231      fillMvpCandBase(uiPartIdx, uiPartAddr, eRefPicList, iRefIdx, pInfo);
     5232      if (iRefIdx < 0)
     5233      {
     5234        return;
     5235      }
     5236      for (Int j = AMVP_MAX_NUM_CANDS - 1; j >= 0; j--)
     5237      {
     5238        pInfo->m_acMvCand[j+1] = pInfo->m_acMvCand[j];
     5239      }
     5240      pInfo->iN++;
     5241    }
     5242    if (iMVPIdx<=0)
     5243    {
     5244      // extention part
     5245      DisInfo cDisInfo;
     5246      cDisInfo.iN = 0;
     5247#if LGE_DVMCP
     5248      getDisMvpCand2(uiPartIdx, uiPartAddr, &cDisInfo, false, eRefPicList, iRefIdx );
     5249#else
     5250      getDisMvpCand (uiPartIdx, uiPartAddr, &cDisInfo );
     5251#endif
     5252      if(cDisInfo.iN==0)
     5253      {
     5254        cDisInfo.iN = 1;
     5255        cDisInfo.m_acMvCand[0].setHor(0);
     5256        cDisInfo.m_acMvCand[0].setVer(0);
     5257        cDisInfo.m_aVIdxCan[0] = 0;
     5258      }
     5259      TComMv  cPdmMvPred;
     5260#if QC_MULTI_DIS_CAN
     5261      if( getPdmMvPredDisCan( uiPartIdx, eRefPicList, iRefIdx, cPdmMvPred, &cDisInfo ) )
     5262#else
     5263      if( getPdmMvPred( uiPartIdx, eRefPicList, iRefIdx, cPdmMvPred ) )
     5264#endif
     5265      {
     5266        clipMv( cPdmMvPred );
     5267        pInfo->m_acMvCand[0] = cPdmMvPred;
     5268      }
     5269      else
     5270      {
     5271        pInfo->m_acMvCand[0].set(0,0);
     5272      }
     5273    }
     5274  }
     5275}
     5276
     5277
     5278Void TComDataCU::fillMvpCandBase( UInt uiPartIdx, UInt uiPartAddr, RefPicList eRefPicList, Int iRefIdx, AMVPInfo* pInfo )
     5279#else
    52185280Void TComDataCU::fillMvpCand ( UInt uiPartIdx, UInt uiPartAddr, RefPicList eRefPicList, Int iRefIdx, AMVPInfo* pInfo )
     5281#endif
    52195282{
    52205283  PartSize eCUMode = getPartitionSize( 0 );
     
    52295292  }
    52305293 
    5231 #if QC_MULTI_DIS_CAN
     5294#if QC_MULTI_DIS_CAN && !SHARP_INTERVIEW_DECOUPLE_B0111
    52325295  DisInfo cDisInfo;
    52335296  cDisInfo.iN = 0;
     
    52485311  }
    52495312#endif
    5250 #if HHI_INTER_VIEW_MOTION_PRED
     5313#if HHI_INTER_VIEW_MOTION_PRED && !SHARP_INTERVIEW_DECOUPLE_B0111
    52515314#if ( PDM_AMVP_POS == 0 )
    52525315  // get inter-view mv predictor (at position 0)
     
    53075370  }
    53085371
    5309 #if HHI_INTER_VIEW_MOTION_PRED
     5372#if HHI_INTER_VIEW_MOTION_PRED && !SHARP_INTERVIEW_DECOUPLE_B0111
    53105373#if ( PDM_AMVP_POS == 1 )
    53115374  // get inter-view mv predictor (at position 1)
     
    53595422  }
    53605423
    5361 #if HHI_INTER_VIEW_MOTION_PRED
     5424#if HHI_INTER_VIEW_MOTION_PRED && !SHARP_INTERVIEW_DECOUPLE_B0111
    53625425#if ( PDM_AMVP_POS == 2 )
    53635426  // get inter-view mv predictor (at position 2)
     
    53835446    }
    53845447  }
    5385 #if  QC_MULTI_DIS_CAN
     5448#if QC_MULTI_DIS_CAN && !SHARP_INTERVIEW_DECOUPLE_B0111
    53865449  if ( getSlice()->getViewId()!=0 && pInfo->iN == 3 )
    53875450  {
     
    54725535  }
    54735536
    5474 #if HHI_INTER_VIEW_MOTION_PRED
     5537#if HHI_INTER_VIEW_MOTION_PRED && !SHARP_INTERVIEW_DECOUPLE_B0111
    54755538#if ( PDM_AMVP_POS == 3 )
    54765539  // get inter-view mv predictor (at position 3)
     
    54935556#endif
    54945557
    5495 #if HHI_INTER_VIEW_MOTION_PRED
     5558#if HHI_INTER_VIEW_MOTION_PRED && !SHARP_INTERVIEW_DECOUPLE_B0111
    54965559  const Int iNumAMVPCands = AMVP_MAX_NUM_CANDS + ( getSlice()->getSPS()->getMultiviewMvPredMode() ? 1 : 0 );
    54975560  if (pInfo->iN > iNumAMVPCands)
  • branches/HTM-4.1-dev1-Sharp/source/Lib/TLibCommon/TComDataCU.h

    r121 r154  
    586586 
    587587  AMVP_MODE     getAMVPMode           ( UInt uiIdx );
     588#if SHARP_INTERVIEW_DECOUPLE_B0111
     589  Void          fillMvpCandBase       ( UInt uiPartIdx, UInt uiPartAddr, RefPicList eRefPicList, Int iRefIdx, AMVPInfo* pInfo );
     590  Void          fillMvpCand           ( UInt uiPartIdx, UInt uiPartAddr, RefPicList eRefPicList, Int iRefIdx, AMVPInfo* pInfo , Int iMVPIdx=-1);
     591#else
    588592  Void          fillMvpCand           ( UInt uiPartIdx, UInt uiPartAddr, RefPicList eRefPicList, Int iRefIdx, AMVPInfo* pInfo );
     593#endif
    589594#if PARALLEL_MERGE
    590595  Bool          isDiffMER             ( Int xN, Int yN, Int xP, Int yP);
  • branches/HTM-4.1-dev1-Sharp/source/Lib/TLibCommon/TypeDef.h

    r147 r154  
    7979                                       
    8080#define MTK_INTERVIEW_MERGE_A0049         1   //  JCT2-A0049 second part
    81                                        
     81#define SHARP_INTERVIEW_DECOUPLE_B0111    1   //  JCT3V-B0111 decoupling inter-view candidate
     82
    8283#define LGE_DVMCP                         1   //  JCT2-A0126     
    8384#if LGE_DVMCP                           
  • branches/HTM-4.1-dev1-Sharp/source/Lib/TLibDecoder/TDecEntropy.cpp

    r100 r154  
    427427#endif
    428428  }
     429#if SHARP_INTERVIEW_DECOUPLE_B0111
     430  pcSubCU->fillMvpCand(uiPartIdx, uiPartAddr, eRefList, iRefIdx, pAMVPInfo, iMVPIdx);
     431#else
    429432  pcSubCU->fillMvpCand(uiPartIdx, uiPartAddr, eRefList, iRefIdx, pAMVPInfo);
     433#endif
    430434  pcSubCU->setMVPNumSubParts(pAMVPInfo->iN, eRefList, uiPartAddr, uiPartIdx, uiDepth);
    431435  pcSubCU->setMVPIdxSubParts( iMVPIdx, eRefList, uiPartAddr, uiPartIdx, uiDepth );
Note: See TracChangeset for help on using the changeset viewer.