Ticket #79: FIX_TICKET_75_79.patch

File FIX_TICKET_75_79.patch, 14.0 KB (added by Tomohiro Ikai, 8 years ago)
  • source/Lib/TLibCommon/TComDataCU.cpp

     
    39203920#else
    39213921Void TComDataCU::getInterMergeCandidates( UInt uiAbsPartIdx, UInt uiPUIdx, TComMvField* pcMvFieldNeighbours, UChar* puhInterDirNeighbours
    39223922#endif
    3923 #if H_3D_VSP
     3923#if H_3D_VSP && !FIX_TICKET_79
    39243924      , InheritedVSPDisInfo*  inheritedVSPDisInfo
    39253925#endif
    39263926#if H_3D_SPIVMP
     
    39503950  //////// GET DISPARITIES  ////////
    39513951  //////////////////////////////////
    39523952  DisInfo cDisInfo = getDvInfo(uiAbsPartIdx);
     3953#if !FIX_TICKET_79
    39533954  for(Int i = 0; i < MRG_MAX_NUM_CANDS_MEM; i++)
    39543955  {
    39553956    inheritedVSPDisInfo[i].m_acDvInfo = cDisInfo;   // To prevent run-time error, this code must be executed always for merging process.
    39563957  }
     3958#endif
    39573959  m_cDefaultDisInfo = cDisInfo;
    39583960
    39593961  if (!( getSlice()->getIsDepth() || getSlice()->getViewIndex()>0))  // current slice is not both dependent view or depth
  • source/Lib/TLibCommon/TComDataCU.h

     
    669669#else
    670670  Void          getInterMergeCandidates ( UInt uiAbsPartIdx, UInt uiPUIdx, TComMvField* pcMFieldNeighbours, UChar* puhInterDirNeighbours
    671671#endif
    672 #if H_3D_VSP
     672#if H_3D_VSP && !FIX_TICKET_79
    673673                                            , InheritedVSPDisInfo*  inheritedVSPDisInfo
    674674#endif
    675675#if H_3D_SPIVMP
  • source/Lib/TLibCommon/TComMotionInfo.h

     
    7878  Bool   m_bFound;                               
    7979} IDVInfo;
    8080#endif
    81 #if H_3D_VSP
     81#if H_3D_VSP && !FIX_TICKET_79
    8282typedef struct _InheritedVSPDisCand
    8383{
    8484  DisInfo m_acDvInfo;
  • source/Lib/TLibCommon/TypeDef.h

     
    289289#define FIX_TICKET_76                     1    // unused functions
    290290#define FIX_TICKET_62                     1    // buffer overflow for print
    291291#define FIX_TICKET_61                     1    // layerIdsInSets size check
     292#define FIX_TICKET_75                     1    // Bi-pred restriction bug in VSP
     293#define FIX_TICKET_79                     1    // unused VSP code
    292294
    293295///// ***** VIEW SYNTHESIS OPTIMIZAION *********
    294296#if H_3D_VSO                                 
  • source/Lib/TLibDecoder/TDecCu.cpp

     
    419419#if H_3D_VSP
    420420    Int vspFlag[MRG_MAX_NUM_CANDS_MEM];
    421421    memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM);
     422#if !FIX_TICKET_79
    422423    InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM];
     424#endif
    423425#if H_3D_SPIVMP
    424426    Bool bSPIVMPFlag[MRG_MAX_NUM_CANDS_MEM];
    425427    memset(bSPIVMPFlag, false, sizeof(Bool)*MRG_MAX_NUM_CANDS_MEM);
     
    431433    m_ppcCU[uiDepth]->initAvailableFlags();
    432434    m_ppcCU[uiDepth]->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex );
    433435    m_ppcCU[uiDepth]->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours
     436#if !FIX_TICKET_79
    434437      , inheritedVSPDisInfo
     438#endif
    435439#if H_3D_SPIVMP
    436440      , pcMvFieldSP, puhInterDirSP
    437441#endif
     
    452456    m_ppcCU[uiDepth]->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex );
    453457#endif
    454458#endif
    455 #if H_3D_VSP
     459#if H_3D_VSP && !FIX_TICKET_79
    456460    if(vspFlag[uiMergeIndex])
    457461    {
    458462      pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeIndex].m_acDvInfo, uiAbsPartIdx, 0, uiDepth);
  • source/Lib/TLibDecoder/TDecEntropy.cpp

     
    310310#if H_3D_VSP
    311311          Int vspFlag[MRG_MAX_NUM_CANDS_MEM];
    312312          memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM);
     313#if !FIX_TICKET_79
    313314          InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM];
     315#endif
    314316#if H_3D_SPIVMP
    315317          memset(bSPIVMPFlag, false, sizeof(Bool)*MRG_MAX_NUM_CANDS_MEM);
    316318#endif
     
    317319          pcSubCU->initAvailableFlags();
    318320          pcSubCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand);
    319321          pcSubCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours
     322#if !FIX_TICKET_79
    320323            , inheritedVSPDisInfo
     324#endif
    321325#if H_3D_SPIVMP
    322326            , pcMvFieldSP, puhInterDirSP
    323327#endif
     
    329333            , numValidMergeCand );
    330334          pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiSubPartIdx, uiPartIdx, uiDepth );
    331335
     336#if !FIX_TICKET_79
    332337          if(vspFlag[uiMergeIndex])
    333338          {
    334339            pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeIndex].m_acDvInfo, uiSubPartIdx, uiPartIdx, uiDepth);
    335340          }
     341#endif
    336342#else
    337343#if H_3D
    338344          pcSubCU->initAvailableFlags();
     
    353359#if H_3D_VSP
    354360        Int vspFlag[MRG_MAX_NUM_CANDS_MEM];
    355361        memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM);
     362#if !FIX_TICKET_79
    356363        InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM];
     364#endif
    357365#if H_3D_SPIVMP
    358366        memset(bSPIVMPFlag, false, sizeof(Bool)*MRG_MAX_NUM_CANDS_MEM);
    359367#endif
     
    360368        pcSubCU->initAvailableFlags();
    361369        pcSubCU->getInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex );
    362370        pcSubCU->xGetInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours
     371#if !FIX_TICKET_79
    363372          , inheritedVSPDisInfo
     373#endif
    364374#if H_3D_SPIVMP
    365375          , pcMvFieldSP, puhInterDirSP
    366376#endif
     
    371381#endif
    372382          ,numValidMergeCand );
    373383        pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiSubPartIdx, uiPartIdx, uiDepth );
     384#if !FIX_TICKET_79
    374385        if(vspFlag[uiMergeIndex])
    375386        {
    376387          pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeIndex].m_acDvInfo, uiSubPartIdx, uiPartIdx, uiDepth);
    377388        }
     389#endif
    378390#else
    379391#if H_3D
    380392        pcSubCU->initAvailableFlags();
     
    472484      decodeICFlag( pcCU, uiAbsPartIdx, uiDepth );
    473485#endif
    474486    }
    475 #if H_3D_VSP
     487#if H_3D_VSP && !FIX_TICKET_75
    476488    if ( (pcCU->getInterDir(uiSubPartIdx) == 3) && pcSubCU->isBipredRestriction(uiPartIdx) && (pcCU->getVSPFlag(uiSubPartIdx) == 0))
    477489#else
    478490    if ( (pcCU->getInterDir(uiSubPartIdx) == 3) && pcSubCU->isBipredRestriction(uiPartIdx) )
  • source/Lib/TLibEncoder/TEncCu.cpp

     
    18581858    rpcTempCU->setDvInfoSubParts(cOrigDisInfo, 0, 0, uhDepth );
    18591859    Int vspFlag[MRG_MAX_NUM_CANDS_MEM];
    18601860    memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM);
     1861#if !FIX_TICKET_79
    18611862    InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM];
     1863#endif
    18621864#if H_3D_SPIVMP
    18631865    Bool bSPIVMPFlag[MRG_MAX_NUM_CANDS_MEM];
    18641866    memset(bSPIVMPFlag, false, sizeof(Bool)*MRG_MAX_NUM_CANDS_MEM);
     
    18711873    rpcTempCU->initAvailableFlags();
    18721874    rpcTempCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand );
    18731875    rpcTempCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours
     1876#if !FIX_TICKET_79
    18741877      , inheritedVSPDisInfo
     1878#endif
    18751879#if H_3D_SPIVMP
    18761880      , pcMvFieldSP, puhInterDirSP
    18771881#endif
     
    18861890      );
    18871891
    18881892#else
     1893#if FIX_TICKET_79
     1894    rpcTempCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, vspFlag, numValidMergeCand );
     1895#else
    18891896    rpcTempCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, numValidMergeCand );
    18901897#endif
     1898#endif
    18911899
     1900
    18921901#endif
    18931902
    18941903#if H_3D_DDD
     
    19281937          rpcTempCU->setMergeIndexSubParts( uiMergeCand, 0, 0, uhDepth ); // interprets depth relative to LCU level
    19291938#if H_3D_VSP
    19301939          rpcTempCU->setVSPFlagSubParts( vspFlag[uiMergeCand], 0, 0, uhDepth );
     1940#if !FIX_TICKET_79
    19311941          rpcTempCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeCand].m_acDvInfo, 0, 0, uhDepth );
    19321942#endif
     1943#endif
    19331944#if H_3D_DDD
    19341945          if( rpcTempCU->getSlice()->getIsDepth() && rpcTempCU->getSlice()->getViewIndex() != 0 && iDDDCand == uiMergeCand )
    19351946          {
  • source/Lib/TLibEncoder/TEncSearch.cpp

     
    40084008Void TEncSearch::xMergeEstimation( TComDataCU* pcCU, TComYuv* pcYuvOrg, Int iPUIdx, UInt& uiInterDir, TComMvField* pacMvField, UInt& uiMergeIndex, UInt& ruiCost, TComMvField* cMvFieldNeighbours, UChar* uhInterDirNeighbours
    40094009#if H_3D_VSP
    40104010                                 , Int* vspFlag
     4011#if !FIX_TICKET_79
    40114012                                 , InheritedVSPDisInfo*  inheritedVSPDisInfo
    40124013#endif
     4014#endif
    40134015#if H_3D_SPIVMP
    40144016                                 , Bool* pbSPIVMPFlag, TComMvField* pcMvFieldSP, UChar* puhInterDirSP
    40154017#endif
     
    40684070      pcCU->initAvailableFlags();
    40694071      pcCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, numValidMergeCand);
    40704072      pcCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours
    4071 #if H_3D_VSP
     4073#if H_3D_VSP && !FIX_TICKET_79
    40724074                                        , inheritedVSPDisInfo
    40734075#endif
    40744076#if H_3D_SPIVMP
     
    40984100    pcCU->initAvailableFlags();
    40994101    pcCU->getInterMergeCandidates( uiAbsPartIdx, iPUIdx, cMvFieldNeighbours,uhInterDirNeighbours, numValidMergeCand);
    41004102    pcCU->xGetInterMergeCandidates( uiAbsPartIdx, iPUIdx, cMvFieldNeighbours, uhInterDirNeighbours
    4101 #if H_3D_VSP
     4103#if H_3D_VSP && !FIX_TICKET_79
    41024104                                      , inheritedVSPDisInfo
    41034105#endif
    41044106#if H_3D_SPIVMP
     
    41214123                                 );
    41224124#endif
    41234125  }
    4124 #if H_3D_VSP
     4126#if H_3D_VSP && !FIX_TICKET_75
    41254127  xRestrictBipredMergeCand( pcCU, iPUIdx, cMvFieldNeighbours, uhInterDirNeighbours,vspFlag, numValidMergeCand );
    41264128#else
    41274129  xRestrictBipredMergeCand( pcCU, iPUIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand );
     
    41534155
    41544156#if H_3D_VSP
    41554157    pcCU->setVSPFlagSubParts( vspFlag[uiMergeCand], uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ) );
     4158#if !FIX_TICKET_79
    41564159    pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeCand].m_acDvInfo, uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ) );
    41574160#endif
     4161#endif
    41584162
    41594163#if H_3D_SPIVMP
    41604164    pcCU->setSPIVMPFlagSubParts( pbSPIVMPFlag[uiMergeCand], uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ));
     
    42534257 * \param numValidMergeCand
    42544258 * \returns Void
    42554259 */
    4256 #if H_3D_VSP
     4260#if H_3D_VSP && !FIX_TICKET_75
    42574261Void TEncSearch::xRestrictBipredMergeCand( TComDataCU* pcCU, UInt puIdx, TComMvField* mvFieldNeighbours, UChar* interDirNeighbours, Int* vspFlag, Int numValidMergeCand )
    42584262#else
    42594263Void TEncSearch::xRestrictBipredMergeCand( TComDataCU* pcCU, UInt puIdx, TComMvField* mvFieldNeighbours, UChar* interDirNeighbours, Int numValidMergeCand )
     
    42634267  {
    42644268    for( UInt mergeCand = 0; mergeCand < numValidMergeCand; ++mergeCand )
    42654269    {
    4266 #if H_3D_VSP
     4270#if H_3D_VSP && !FIX_TICKET_75
    42674271      if ( (interDirNeighbours[mergeCand] == 3) && (vspFlag[mergeCand] == false) )
    42684272#else
    42694273      if ( interDirNeighbours[mergeCand] == 3 )
     
    48894893#if H_3D_VSP
    48904894      Int vspFlag[MRG_MAX_NUM_CANDS_MEM];
    48914895      memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM);
     4896#if !FIX_TICKET_79
    48924897      InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM];
     4898#endif
    48934899      UInt uiAbsPartIdx = 0;
    48944900      Int iWidth = 0;
    48954901      Int iHeight = 0;
     
    49074913      xMergeEstimation( pcCU, pcOrgYuv, iPartIdx, uiMRGInterDir, cMRGMvField, uiMRGIndex, uiMRGCost, cMvFieldNeighbours, uhInterDirNeighbours
    49084914#if H_3D_VSP
    49094915                      , vspFlag
     4916#if !FIX_TICKET_79
    49104917                      , inheritedVSPDisInfo
    49114918#endif
     4919#endif
    49124920#if H_3D_SPIVMP
    49134921                      , bSPIVMPFlag, pcMvFieldSP, puhInterDirSP
    49144922#endif
     
    49214929        pcCU->setMergeIndexSubParts( uiMRGIndex,    uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) );
    49224930#if H_3D_VSP
    49234931        pcCU->setVSPFlagSubParts( vspFlag[uiMRGIndex], uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) );
     4932#if !FIX_TICKET_79
    49244933        pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMRGIndex].m_acDvInfo, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) );
    49254934#endif
     4935#endif
    49264936#if H_3D_DDD
    49274937        if( uiMRGIndex == pcCU->getUseDDDCandIdx() )
    49284938        {
  • source/Lib/TLibEncoder/TEncSearch.h

     
    428428                                    UChar* uhInterDirNeighbours
    429429#if H_3D_VSP
    430430                                  , Int* vspFlag
     431#if !FIX_TICKET_79
    431432                                  , InheritedVSPDisInfo*  inheritedVSPDisInfo
    432433#endif
     434#endif
    433435#if H_3D_SPIVMP
    434436                                  , Bool* pbSPIVMPFlag, TComMvField* pcMvFieldSP, UChar* puhInterDirSP
    435437#endif
     
    440442                                    UInt            puIdx,
    441443                                    TComMvField*    mvFieldNeighbours,
    442444                                    UChar*          interDirNeighbours,
    443 #if H_3D_VSP
     445#if H_3D_VSP && !FIX_TICKET_75
    444446                                    Int* vspFlag,
    445447#endif
    446448                                    Int             numValidMergeCand );