Ignore:
Timestamp:
1 Nov 2012, 10:30:40 (12 years ago)
Author:
lg
Message:

Implemented the modified disparity vector derivation for memory reduction with macro: LGE_DVMCP_MEM_REDUCTION_B0135
Implemented the fix for the simplified disparity vector derivation with macro: FIX_LGE_DVMCP_B0133

File:
1 edited

Legend:

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

    r154 r162  
    48074807  UInt uiNumPartInCUWidth = m_pcPic->getNumPartInWidth();
    48084808
    4809   Int   aiDvMcpDvCand[2][7] = {{0,},    {0,}}; // dummy, 5 spatial + 1 temporal, DV-MCP ÁÖº¯ ºúÓ°¿¡¼­ »ç¿EÈ DV¸¦ ÀúÀE
     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
     
    48134813  Bool  bTmpIsSkipped = false;
    48144814  Bool  bDvMcpIsFound = false;
     4815#if LGE_DVMCP_MEM_REDUCTION_B0135
     4816  Int iLCUAddrDiff = 0;
     4817#endif
    48154818
    48164819  deriveLeftRightTopIdxGeneral( eCUMode, uiPartAddr, uiPartIdx, uiPartIdxLT, uiPartIdxRT );
     
    48784881  if(pcTmpCU != NULL && !pcTmpCU->isIntra( uiIdx ))
    48794882  {
     4883#if LGE_DVMCP_MEM_REDUCTION_B0135
     4884    iLCUAddrDiff = getAddr() - pcTmpCU->getAddr();
     4885#endif
    48804886    bTmpIsSkipped = pcTmpCU->isSkipped( uiIdx );
    48814887    for(Int iList = 0; iList < (getSlice()->isInterB() ? 2: 1); iList ++)
     
    48944900          return;
    48954901        }
     4902#if LGE_DVMCP_MEM_REDUCTION_B0135
     4903        else if(iLCUAddrDiff == 0) //MCP, within same LCU
     4904#else
    48964905        else // MCP
     4906#endif
    48974907        {
    48984908          cTmpMvPred = pcTmpCU->getCUMvField(eRefPicList)->getMv(uiIdx);
     
    49154925  if(pcTmpCU != NULL && !pcTmpCU->isIntra( uiIdx ) )
    49164926  {
     4927#if LGE_DVMCP_MEM_REDUCTION_B0135
     4928    iLCUAddrDiff = getAddr() - pcTmpCU->getAddr();
     4929#endif
    49174930    bTmpIsSkipped = pcTmpCU->isSkipped( uiIdx );
    49184931    for(Int iList = 0; iList < (getSlice()->isInterB() ? 2: 1); iList ++)
     
    49314944          return;
    49324945        }
     4946#if LGE_DVMCP_MEM_REDUCTION_B0135
     4947        else if(iLCUAddrDiff == 0)
     4948#else
    49334949        else  // MCP
     4950#endif
    49344951        {
    49354952          cTmpMvPred = pcTmpCU->getCUMvField(eRefPicList)->getMv(uiIdx);
     
    49915008  if(pcTmpCU != NULL && !pcTmpCU->isIntra( uiIdx ))
    49925009  {
     5010#if LGE_DVMCP_MEM_REDUCTION_B0135
     5011    iLCUAddrDiff = getAddr() - pcTmpCU->getAddr();
     5012#endif
    49935013    bTmpIsSkipped = pcTmpCU->isSkipped( uiIdx );
    49945014    for(Int iList = 0; iList < (getSlice()->isInterB() ? 2: 1); iList ++)
     
    50075027          return;
    50085028        }
     5029#if LGE_DVMCP_MEM_REDUCTION_B0135
     5030        else if(iLCUAddrDiff <= 1)
     5031#else
    50095032        else // MCP
     5033#endif
    50105034        {
    50115035          cTmpMvPred = pcTmpCU->getCUMvField(eRefPicList)->getMv(uiIdx);
     
    55205544    if ( uiLCUIdx >= 0 && xGetColMVP( eRefPicList, uiLCUIdx, uiAbsPartAddr, cColMv, iRefIdx_Col ) )
    55215545    {
     5546#if FIX_LGE_DVMCP_B0133
     5547      cColMv.m_bDvMcp = false;
     5548#endif
    55225549      pInfo->m_acMvCand[pInfo->iN++] = cColMv;
    55235550    }
     
    55295556      if (xGetColMVP( eRefPicList, uiCurLCUIdx, uiPartIdxCenter,  cColMv, iRefIdx_Col ))
    55305557      {
     5558#if FIX_LGE_DVMCP_B0133
     5559        cColMv.m_bDvMcp = false;
     5560#endif
    55315561        pInfo->m_acMvCand[pInfo->iN++] = cColMv;
    55325562      }
Note: See TracChangeset for help on using the changeset viewer.