Ignore:
Timestamp:
20 Jul 2015, 11:03:38 (9 years ago)
Author:
tech
Message:

Further fixes to pruning.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-14.1-update-dev2/source/Lib/TLibCommon/TComDataCU.cpp

    r1281 r1284  
    30413041}
    30423042
     3043#if NH_3D_FIX_PRUNING
     3044Bool TComDataCU::hasEqualMotion( Int dirA, const TComMvField* mvFieldA, Int dirB, const TComMvField* mvFieldB )
     3045{
     3046  return  ( dirA == dirB  &&
     3047    ( ( dirA & 1 ) == 0 || mvFieldA[0] == mvFieldB[0]  ) &&
     3048    ( ( dirA & 2 ) == 0 || mvFieldA[1] == mvFieldB[1]  )
     3049    );
     3050}
     3051#endif
     3052
    30433053#if NH_3D_VSP
    30443054/** Add a VSP merging candidate
     
    31433153      if( !iLoop && ivCandDir[0] > 0)
    31443154      {
     3155#if NH_3D_FIX_PRUNING
     3156        if( hasEqualMotion(tmpDir, tmpMV, m_mergCands[MRG_IVMC].m_uDir, m_mergCands[MRG_IVMC].m_cMvField ))
     3157#else
    31453158        if(tmpDir == m_mergCands[MRG_IVMC].m_uDir && m_mergCands[MRG_IVMC].m_cMvField[0]==tmpMV[0] && m_mergCands[MRG_IVMC].m_cMvField[1]==tmpMV[1])
     3159#endif
    31463160        {
    31473161            bRemove                         = true;
     
    35923606      for(iCnloop = 0; iCnloop < 2; iCnloop ++)
    35933607      {
    3594         if ( !m_mergCands[MRG_A1+iCnloop].m_bAvailable )  // prunning to A1, B1
     3608        if ( !m_mergCands[MRG_A1+iCnloop].m_bAvailable )  // pruning to A1, B1
    35953609        {
    35963610          continue;
    35973611        }
     3612#if NH_3D_FIX_PRUNING
     3613        if (hasEqualMotion( tmpDir, tmpMV, m_mergCands[MRG_A1+iCnloop].m_uDir, m_mergCands[MRG_A1+iCnloop].m_cMvField ) )
     3614#else
    35983615        if (tmpDir == m_mergCands[MRG_A1+iCnloop].m_uDir && tmpMV[0]==m_mergCands[MRG_A1+iCnloop].m_cMvField[0] && tmpMV[1]==m_mergCands[MRG_A1+iCnloop].m_cMvField[1])
     3616#endif
    35993617        {
    36003618          m_mergCands[MRG_A1+iCnloop].m_bAvailable = false;
     
    36663684      for(Int i = 0; i < 2; i ++)
    36673685      {
    3668         if ( !m_mergCands[MRG_A1 + i].m_bAvailable ) // prunning to A1, B1
     3686        if ( !m_mergCands[MRG_A1 + i].m_bAvailable ) // pruning to A1, B1
    36693687        {
    36703688          continue;
    36713689        }
    36723690#if NH_3D_FIX_PRUNING
    3673         if  (   ivCandDir[0] == m_mergCands[MRG_A1+i].m_uDir                                &&
    3674             ( ( ivCandDir[0] & 1 ) == 0 || tmpMV[0]==m_mergCands[MRG_A1+i].m_cMvField[0]  ) &&
    3675             ( ( ivCandDir[0] & 2 ) == 0 || tmpMV[1]==m_mergCands[MRG_A1+i].m_cMvField[1]  )
    3676            )
     3691        if (hasEqualMotion(ivCandDir[0], tmpMV, m_mergCands[MRG_A1+i].m_uDir,  m_mergCands[MRG_A1+i].m_cMvField) )
    36773692#else
    36783693        if (ivCandDir[0] == m_mergCands[MRG_A1+i].m_uDir && tmpMV[0]==m_mergCands[MRG_A1+i].m_cMvField[0] && tmpMV[1]==m_mergCands[MRG_A1+i].m_cMvField[1])
     
    36843699      }
    36853700    }
    3686     if (bIsDepth)
     3701    else
    36873702    {
    36883703#if NH_3D_FIX_PRUNING
    3689       if  ( m_mergCands[MRG_T].m_bAvailable &&   ivCandDir[0] == m_mergCands[MRG_T].m_uDir  &&
    3690         ( ( ivCandDir[0] & 1 ) == 0 || tmpMV[0]==m_mergCands[MRG_T].m_cMvField[0]  ) &&
    3691         ( ( ivCandDir[0] & 2 ) == 0 || tmpMV[1]==m_mergCands[MRG_T].m_cMvField[1]  )
    3692         )
     3704      if( hasEqualMotion( ivCandDir[0], tmpMV, m_mergCands[MRG_T].m_uDir, m_mergCands[MRG_T].m_cMvField ) )
    36933705#else
    36943706      if (m_mergCands[MRG_T].m_bAvailable && ivCandDir[0] == m_mergCands[MRG_T].m_uDir && tmpMV[0]==m_mergCands[MRG_T].m_cMvField[0] && tmpMV[1]==m_mergCands[MRG_T].m_cMvField[1])
     
    37903802      }
    37913803#if NH_3D_FIX_PRUNING
    3792       if  ( ivCandDir[1] == m_mergCands[MRG_A1+i].m_uDir  &&
    3793         ( ( ivCandDir[1] & 1 ) == 0 || tmpMV[0]==m_mergCands[MRG_A1+i].m_cMvField[0]  ) &&
    3794         ( ( ivCandDir[1] & 2 ) == 0 || tmpMV[1]==m_mergCands[MRG_A1+i].m_cMvField[1]  )
    3795         )
     3804      if ( hasEqualMotion(ivCandDir[1], tmpMV, m_mergCands[MRG_A1+i].m_uDir, m_mergCands[MRG_A1+i].m_cMvField) )
    37963805#else
    37973806      if (ivCandDir[1] == m_mergCands[MRG_A1+i].m_uDir && tmpMV[0]==m_mergCands[MRG_A1+i].m_cMvField[0] && tmpMV[1]==m_mergCands[MRG_A1+i].m_cMvField[1])
Note: See TracChangeset for help on using the changeset viewer.