Changeset 355 in 3DVCSoftware


Ignore:
Timestamp:
3 May 2013, 10:34:51 (11 years ago)
Author:
zhang
Message:

JCT3V-D0191 (BVSP clean-ups)

Location:
branches/HTM-6.2-dev1-Qualcomm/source/Lib
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-6.2-dev1-Qualcomm/source/Lib/TLibCommon/TComDataCU.cpp

    r348 r355  
    5555#define CHECK_ADD_YET(pcCURef,uiIdx,vspIdx) && !( (pcCURef)->getVSPIndex(uiIdx) == vspIdx && bVspMvZeroDone[vspIdx-1] )
    5656
    57 inline Void TComDataCU::xInheritVspMode( TComDataCU* pcCURef, UInt uiIdx, Bool* bVspMvZeroDone, Int iCount, Int* iVSPIndexTrue, TComMvField* pcMvFieldNeighbours, DisInfo* pDInfo )
     57inline Void TComDataCU::xInheritVspMode( TComDataCU* pcCURef, UInt uiIdx, Bool* bVspMvZeroDone, Int iCount, Int* iVSPIndexTrue, TComMvField* pcMvFieldNeighbours, DisInfo* pDInfo
     58#if QC_BVSP_CleanUP_D0191
     59  , UChar *puhInterDirNeighbours
     60#endif
     61)
    5862{
    5963  Int vspIdx = (Int) pcCURef->getVSPIndex(uiIdx);
     
    6973    if (vspIdx < 4)
    7074    {
     75#if QC_BVSP_CleanUP_D0191
     76      puhInterDirNeighbours[ iCount] = 1;
     77#endif
    7178      pcMvFieldNeighbours[ iCount<<1].setMvField ( pDInfo->m_acMvCand[0],  NOT_VALID );
    7279      if ( pcCURef->getSlice()->isInterB() )
     
    102109            (getSlice()->getNumRefIdx(REF_PIC_LIST_0) > 0 ? 1 : 2));
    103110          puhInterDirNeighbours[iCount] = iInterDir; // The direction information does not matter
     111#if QC_BVSP_CleanUP_D0191
     112         puhInterDirNeighbours[iCount] = 1;
     113#endif
    104114          // get Mv using checked disparity vector
    105115          if (vspIdx < 4) // spatial
     
    36663676        }
    36673677      }
    3668 #if MERL_VSP_C0152
     3678#if MERL_VSP_C0152 && !QC_BVSP_CleanUP_D0191
    36693679      xInheritVspMode( pcTextureCU, uiPartIdxCenter, bVspMvZeroDone, iCount, iVSPIndexTrue, pcMvFieldNeighbours, &cDisInfo ) ;
    36703680#endif
     
    38003810#endif
    38013811#if MERL_VSP_C0152
    3802         xInheritVspMode( pcCULeft, uiLeftPartIdx, bVspMvZeroDone, iCount, iVSPIndexTrue, pcMvFieldNeighbours, &cDisInfo ) ;
     3812        xInheritVspMode( pcCULeft, uiLeftPartIdx, bVspMvZeroDone, iCount, iVSPIndexTrue, pcMvFieldNeighbours, &cDisInfo
     3813#if QC_BVSP_CleanUP_D0191
     3814        ,puhInterDirNeighbours
     3815#endif
     3816        ) ;
    38033817#endif
    38043818        if ( mrgCandIdx == iCount )
     
    38733887#endif
    38743888#if MERL_VSP_C0152
    3875      xInheritVspMode( pcCUAbove, uiAbovePartIdx, bVspMvZeroDone, iCount, iVSPIndexTrue, pcMvFieldNeighbours, &cDisInfo ) ;
     3889     xInheritVspMode( pcCUAbove, uiAbovePartIdx, bVspMvZeroDone, iCount, iVSPIndexTrue, pcMvFieldNeighbours, &cDisInfo
     3890#if QC_BVSP_CleanUP_D0191
     3891        ,puhInterDirNeighbours
     3892#endif
     3893        ) ;
    38763894#endif
    38773895    if ( mrgCandIdx == iCount )
     
    39223940#endif
    39233941#if MERL_VSP_C0152
    3924     xInheritVspMode( pcCUAboveRight, uiAboveRightPartIdx, bVspMvZeroDone, iCount, iVSPIndexTrue, pcMvFieldNeighbours, &cDisInfo ) ;
     3942    xInheritVspMode( pcCUAboveRight, uiAboveRightPartIdx, bVspMvZeroDone, iCount, iVSPIndexTrue, pcMvFieldNeighbours, &cDisInfo
     3943 #if QC_BVSP_CleanUP_D0191
     3944        ,puhInterDirNeighbours
     3945#endif
     3946        ) ;
    39253947#endif
    39263948    if ( mrgCandIdx == iCount )
     
    40184040#endif
    40194041#if MERL_VSP_C0152
    4020      xInheritVspMode( pcCULeftBottom, uiLeftBottomPartIdx, bVspMvZeroDone, iCount, iVSPIndexTrue, pcMvFieldNeighbours, &cDisInfo ) ;
     4042     xInheritVspMode( pcCULeftBottom, uiLeftBottomPartIdx, bVspMvZeroDone, iCount, iVSPIndexTrue, pcMvFieldNeighbours, &cDisInfo
     4043#if QC_BVSP_CleanUP_D0191
     4044        ,puhInterDirNeighbours
     4045#endif
     4046        ) ;
    40214047#endif
    40224048    if ( mrgCandIdx == iCount )
     
    40734099#endif
    40744100#if MERL_VSP_C0152
    4075      xInheritVspMode( pcCUAboveLeft, uiAboveLeftPartIdx, bVspMvZeroDone, iCount, iVSPIndexTrue, pcMvFieldNeighbours, &cDisInfo ) ;
     4101     xInheritVspMode( pcCUAboveLeft, uiAboveLeftPartIdx, bVspMvZeroDone, iCount, iVSPIndexTrue, pcMvFieldNeighbours, &cDisInfo
     4102#if QC_BVSP_CleanUP_D0191
     4103        ,puhInterDirNeighbours
     4104#endif
     4105        ) ;
    40764106#endif
    40774107      if ( mrgCandIdx == iCount )
     
    44084438  {
    44094439    if( pcCorner && !pcCorner->isIntra( uiCornerPUIdx )
    4410 #if MERL_VSP_C0152
     4440#if MERL_VSP_C0152 & !QC_BVSP_CleanUP_D0191
    44114441     && !pcCorner->getVSPIndex( uiCornerPUIdx )
    44124442#endif
     
    44474477  {
    44484478    if( pcCorner && !pcCorner->isIntra( uiCornerPUIdx )
    4449 #if MERL_VSP_C0152
     4479#if MERL_VSP_C0152 & !QC_BVSP_CleanUP_D0191
    44504480     && !pcCorner->getVSPIndex( uiCornerPUIdx )
    44514481#endif
     
    45934623    pcTmpCU = getPULeft(uiIdx, uiPartIdxLB, true, false);
    45944624  if(pcTmpCU != NULL && !pcTmpCU->isIntra( uiIdx ) )
    4595 #if MERL_VSP_C0152
     4625#if MERL_VSP_C0152 & !QC_BVSP_CleanUP_D0191
    45964626  if(! pcTmpCU->getVSPIndex(uiIdx))
    45974627#endif
     
    46184648
    46194649  if(pcTmpCU != NULL && !pcTmpCU->isIntra( uiIdx ))
    4620 #if MERL_VSP_C0152
     4650#if MERL_VSP_C0152 & !QC_BVSP_CleanUP_D0191
    46214651  if(! pcTmpCU->getVSPIndex(uiIdx))
    46224652#endif
     
    46434673      pcTmpCU = getPUAboveRight(uiIdx, uiPartIdxRT, true, false, true);
    46444674  if(pcTmpCU != NULL && !pcTmpCU->isIntra( uiIdx ) )
    4645 #if MERL_VSP_C0152
     4675#if MERL_VSP_C0152 & !QC_BVSP_CleanUP_D0191
    46464676  if(! pcTmpCU->getVSPIndex(uiIdx))
    46474677#endif
     
    46674697      pcTmpCU = getPUBelowLeft(uiIdx, uiPartIdxLB, true, false);
    46684698  if(pcTmpCU != NULL && !pcTmpCU->isIntra( uiIdx ))
    4669 #if MERL_VSP_C0152
     4699#if MERL_VSP_C0152 & !QC_BVSP_CleanUP_D0191
    46704700  if(! pcTmpCU->getVSPIndex(uiIdx))
    46714701#endif
     
    46944724    assert(uiPartIdxLT == (m_uiAbsIdxInLCU + uiPartAddr));
    46954725  if(pcTmpCU != NULL && !pcTmpCU->isIntra( uiIdx ))
    4696 #if MERL_VSP_C0152
     4726#if MERL_VSP_C0152 & !QC_BVSP_CleanUP_D0191
    46974727  if(! pcTmpCU->getVSPIndex(uiIdx))
    46984728#endif
     
    49024932  Int iPictureWidth  = pcBaseViewDepthPicYuv->getWidth();
    49034933  Int iPictureHeight = pcBaseViewDepthPicYuv->getHeight();
    4904 
     4934#if !QC_BVSP_CleanUP_D0191
    49054935  Int depthPosX = Clip3(0,   iPictureWidth - iBlkWidth,  iBlkX + (mv->getHor()>>2));
    49064936  Int depthPosY = Clip3(0,   iPictureHeight- iBlkHeight,  iBlkY + (mv->getVer()>>2));
    49074937
    49084938  Pel *pDepthPel   = pcBaseViewDepthPicYuv->getLumaAddr() + depthPosX + depthPosY * depStride;
     4939#endif
    49094940  Pel  maxDepthVal = 0;
    49104941
     
    49314962    }
    49324963  }
     4964#if !QC_BVSP_CleanUP_D0191
    49334965  else
    49344966  {
     
    49434975    }
    49444976  }
     4977#endif
    49454978
    49464979  Int iDisp = aiShiftLUT[ maxDepthVal ] << iShiftPrec;
     
    50105043        }
    50115044      }
    5012 #if MERL_VSP_C0152
     5045#if MERL_VSP_C0152 & !QC_BVSP_CleanUP_D0191
    50135046      else if (pcTmpCU->getVSPIndex(uiIdx) != 0) // is VSP
    50145047      {
     
    57085741  }
    57095742 
    5710 #if MERL_VSP_C0152
     5743#if MERL_VSP_C0152&!QC_BVSP_CleanUP_D0191
    57115744  if(pcTmpCU != NULL && pcTmpCU->getVSPIndex(uiIdx))
    57125745  {
     
    58245857  }
    58255858
    5826 #if MERL_VSP_C0152
     5859#if MERL_VSP_C0152 &!QC_BVSP_CleanUP_D0191
    58275860  if(pcTmpCU->getVSPIndex(uiIdx))
    58285861  {
     
    59876020  TComDataCU *pColCU = pColPic->getCU( uiCUAddr );
    59886021  iColViewIdx = pColCU->getSlice()->getViewId();
    5989 #if MERL_VSP_C0152
     6022#if MERL_VSP_C0152 & !QC_BVSP_CleanUP_D0191
    59906023  if( pColCU->getCUMvField(eColRefPicList)->getRefIdx(uiAbsPartAddr) < 0)
    59916024  {
  • branches/HTM-6.2-dev1-Qualcomm/source/Lib/TLibCommon/TComDataCU.h

    r332 r355  
    277277  inline Bool   xAddVspMergeCand      ( UChar ucVspMergePos, Int vspIdx, Bool* bVspMvZeroDone, UInt uiDepth, Bool* abCandIsInter, Int& iCount,
    278278                                        UChar* puhInterDirNeighbours, TComMvField* pcMvFieldNeighbours, Int* iVSPIndexTrue, Int mrgCandIdx, DisInfo* pDisInfo );
    279   inline Void   xInheritVspMode       ( TComDataCU* pcCURef, UInt uiIdx, Bool* bVspMvZeroDone, Int iCount, Int* iVSPIndexTrue, TComMvField* pcMvFieldNeighbours, DisInfo* pDInfo ) ;
     279  inline Void   xInheritVspMode       ( TComDataCU* pcCURef, UInt uiIdx, Bool* bVspMvZeroDone, Int iCount, Int* iVSPIndexTrue, TComMvField* pcMvFieldNeighbours, DisInfo* pDInfo,
     280#if QC_BVSP_CleanUP_D0191
     281   UChar *puhInterDirNeighbours
     282#endif
     283 ) ;
    280284#endif
    281285  Void          deriveRightBottomIdx        ( PartSize eCUMode, UInt uiPartIdx, UInt& ruiPartIdxRB );
  • branches/HTM-6.2-dev1-Qualcomm/source/Lib/TLibCommon/TComLoopFilter.cpp

    r296 r355  
    428428  //-- Set BS for Intra MB : BS = 4 or 3
    429429  if ( pcCUP->isIntra(uiPartP) || pcCUQ->isIntra(uiPartQ)
    430 #if MERL_VSP_C0152
     430#if MERL_VSP_C0152 & !QC_BVSP_CleanUP_D0191
    431431    || pcCUP->getVSPIndex(uiPartP) || pcCUQ->getVSPIndex(uiPartQ)
    432432#endif
     
    438438  //-- Set BS for not Intra MB : BS = 2 or 1 or 0
    439439  if ( !pcCUP->isIntra(uiPartP) && !pcCUQ->isIntra(uiPartQ)
    440 #if MERL_VSP_C0152
     440#if MERL_VSP_C0152 & !QC_BVSP_CleanUP_D0191
    441441    && !pcCUP->getVSPIndex(uiPartP) && !pcCUQ->getVSPIndex(uiPartQ)
    442442#endif
     
    534534  }   // enf of "if( not Intra )"
    535535 
    536 #if MERL_VSP_C0152
     536#if MERL_VSP_C0152 & !QC_BVSP_CleanUP_D0191
    537537  if ( pcCUP->getVSPIndex(uiPartP) || pcCUQ->getVSPIndex(uiPartQ))
    538538  {
  • branches/HTM-6.2-dev1-Qualcomm/source/Lib/TLibCommon/TComPrediction.cpp

    r332 r355  
    781781  if (vspIdx != 0)
    782782  {
     783#if !QC_BVSP_CleanUP_D0191
    783784    if (iRefIdx >= 0)
    784785    {
     
    786787    }
    787788    assert (iRefIdx < 0); // assert (iRefIdx == NOT_VALID);
     789#endif
    788790  }
    789791  else
  • branches/HTM-6.2-dev1-Qualcomm/source/Lib/TLibCommon/TypeDef.h

    r348 r355  
    180180#if MERL_VSP_C0152
    181181#define MERL_VSP_C0152_BugFix_ForNoDepthCase     1// MERL bugfix for test condition of no depth
     182#define QC_BVSP_CleanUP_D0191                    1
    182183/*
    183184 * Two macros are used to configure combinations of JCT3V-C0152 and JCT3V-C0131
  • branches/HTM-6.2-dev1-Qualcomm/source/Lib/TLibDecoder/TDecCu.cpp

    r332 r355  
    386386      }
    387387      pcCU->setVSPIndexSubParts( iVSPIdx, uiAbsPartIdx, 0, uiDepth );  //Initialize the VSP, may change later in get InterMergeCandidates()
     388#if QC_BVSP_CleanUP_D0191
     389      if(iVSPIdx != 0)
     390      {
     391        Int iIVCIdx = pcCU->getSlice()->getRefPic(REF_PIC_LIST_0, 0)->getPOC()==pcCU->getSlice()->getPOC() ? 0: pcCU->getSlice()->getNewRefIdx(REF_PIC_LIST_0);
     392       cMvFieldNeighbours[ 2*uiMergeIndex].setRefIdx(iIVCIdx);
     393      }
     394#endif
    388395    }
    389396#else
  • branches/HTM-6.2-dev1-Qualcomm/source/Lib/TLibDecoder/TDecEntropy.cpp

    r348 r355  
    330330        }
    331331        pcCU->setVSPIndexSubParts( iVSPIdx, uiSubPartIdx, uiPartIdx, uiDepth );  //Initialize the VSP, may change later in get InterMergeCandidates()
     332#if QC_BVSP_CleanUP_D0191
     333       if(iVSPIdx != 0)
     334       {
     335         Int iIVCIdx = pcCU->getSlice()->getRefPic(REF_PIC_LIST_0, 0)->getPOC()==pcCU->getSlice()->getPOC() ? 0: pcCU->getSlice()->getNewRefIdx(REF_PIC_LIST_0);
     336         cMvFieldNeighbours[ 2*uiMergeIndex].setRefIdx(iIVCIdx);
     337       }
     338#endif
    332339      }
    333340
  • branches/HTM-6.2-dev1-Qualcomm/source/Lib/TLibEncoder/TEncCu.cpp

    r332 r355  
    19201920            }
    19211921            rpcTempCU->setVSPIndexSubParts( iVSPIdx, 0, 0, uhDepth );
     1922#if QC_BVSP_CleanUP_D0191
     1923           if(iVSPIdx != 0)
     1924           {
     1925             Int iIVCIdx = rpcTempCU->getSlice()->getRefPic(REF_PIC_LIST_0, 0)->getPOC()==rpcTempCU->getSlice()->getPOC() ? 0: rpcTempCU->getSlice()->getNewRefIdx(REF_PIC_LIST_0);
     1926             cMvFieldNeighbours[ 2*uiMergeCand].setRefIdx(iIVCIdx);
     1927           }
     1928#endif
    19221929          }
    19231930#endif
  • branches/HTM-6.2-dev1-Qualcomm/source/Lib/TLibEncoder/TEncSearch.cpp

    r348 r355  
    30023002        }
    30033003        pcCU->setVSPIndexSubParts( iVSPIdx, uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ) );
     3004#if QC_BVSP_CleanUP_D0191
     3005       if(iVSPIdx != 0)
     3006       {
     3007        Int iIVCIdx = pcCU->getSlice()->getRefPic(REF_PIC_LIST_0, 0)->getPOC()==pcCU->getSlice()->getPOC() ? 0: pcCU->getSlice()->getNewRefIdx(REF_PIC_LIST_0);
     3008        cMvFieldNeighbours[ 2*uiMergeIndex].setRefIdx(iIVCIdx);
     3009      }
     3010#endif
    30043011      }
    30053012#endif
     
    37243731          }
    37253732          pcCU->setVSPIndexSubParts( iVSPIdx, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) );
     3733#if QC_BVSP_CleanUP_D0191
     3734         if(iVSPIdx != 0)
     3735         {
     3736           Int iIVCIdx = pcCU->getSlice()->getRefPic(REF_PIC_LIST_0, 0)->getPOC()==pcCU->getSlice()->getPOC() ? 0: pcCU->getSlice()->getNewRefIdx(REF_PIC_LIST_0);
     3737           cMRGMvField[ 0].setRefIdx(iIVCIdx);
     3738         }
     3739#endif
    37263740        }
    37273741#endif
Note: See TracChangeset for help on using the changeset viewer.