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

Further fixes to pruning.

Location:
branches/HTM-14.1-update-dev1
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-14.1-update-dev1

  • branches/HTM-14.1-update-dev1/source/Lib/TLibCommon/TComDataCU.cpp

    r1282 r1285  
    29362936}
    29372937
     2938#if NH_3D_FIX_PRUNING
     2939Bool TComDataCU::hasEqualMotion( Int dirA, const TComMvField* mvFieldA, Int dirB, const TComMvField* mvFieldB )
     2940{
     2941  return  ( dirA == dirB  &&
     2942    ( ( dirA & 1 ) == 0 || mvFieldA[0] == mvFieldB[0]  ) &&
     2943    ( ( dirA & 2 ) == 0 || mvFieldA[1] == mvFieldB[1]  )
     2944    );
     2945}
     2946#endif
     2947
    29382948#if NH_3D_VSP
    29392949/** Add a VSP merging candidate
     
    30383048      if( !iLoop && ivCandDir[0] > 0)
    30393049      {
     3050#if NH_3D_FIX_PRUNING
     3051        if( hasEqualMotion(tmpDir, tmpMV, m_mergCands[MRG_IVMC].m_uDir, m_mergCands[MRG_IVMC].m_cMvField ))
     3052#else
    30403053        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])
     3054#endif
    30413055        {
    30423056            bRemove                         = true;
     
    34873501      for(iCnloop = 0; iCnloop < 2; iCnloop ++)
    34883502      {
    3489         if ( !m_mergCands[MRG_A1+iCnloop].m_bAvailable )  // prunning to A1, B1
     3503        if ( !m_mergCands[MRG_A1+iCnloop].m_bAvailable )  // pruning to A1, B1
    34903504        {
    34913505          continue;
    34923506        }
     3507#if NH_3D_FIX_PRUNING
     3508        if (hasEqualMotion( tmpDir, tmpMV, m_mergCands[MRG_A1+iCnloop].m_uDir, m_mergCands[MRG_A1+iCnloop].m_cMvField ) )
     3509#else
    34933510        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])
     3511#endif
    34943512        {
    34953513          m_mergCands[MRG_A1+iCnloop].m_bAvailable = false;
     
    35613579      for(Int i = 0; i < 2; i ++)
    35623580      {
    3563         if ( !m_mergCands[MRG_A1 + i].m_bAvailable ) // prunning to A1, B1
     3581        if ( !m_mergCands[MRG_A1 + i].m_bAvailable ) // pruning to A1, B1
    35643582        {
    35653583          continue;
    35663584        }
    35673585#if NH_3D_FIX_PRUNING
    3568         if  (   ivCandDir[0] == m_mergCands[MRG_A1+i].m_uDir                                &&
    3569             ( ( ivCandDir[0] & 1 ) == 0 || tmpMV[0]==m_mergCands[MRG_A1+i].m_cMvField[0]  ) &&
    3570             ( ( ivCandDir[0] & 2 ) == 0 || tmpMV[1]==m_mergCands[MRG_A1+i].m_cMvField[1]  )
    3571            )
     3586        if (hasEqualMotion(ivCandDir[0], tmpMV, m_mergCands[MRG_A1+i].m_uDir,  m_mergCands[MRG_A1+i].m_cMvField) )
    35723587#else
    35733588        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])
     
    35793594      }
    35803595    }
    3581     if (bIsDepth)
     3596    else
    35823597    {
    35833598#if NH_3D_FIX_PRUNING
    3584       if  ( m_mergCands[MRG_T].m_bAvailable &&   ivCandDir[0] == m_mergCands[MRG_T].m_uDir  &&
    3585         ( ( ivCandDir[0] & 1 ) == 0 || tmpMV[0]==m_mergCands[MRG_T].m_cMvField[0]  ) &&
    3586         ( ( ivCandDir[0] & 2 ) == 0 || tmpMV[1]==m_mergCands[MRG_T].m_cMvField[1]  )
    3587         )
     3599      if( hasEqualMotion( ivCandDir[0], tmpMV, m_mergCands[MRG_T].m_uDir, m_mergCands[MRG_T].m_cMvField ) )
    35883600#else
    35893601      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])
     
    36853697      }
    36863698#if NH_3D_FIX_PRUNING
    3687       if  ( ivCandDir[1] == m_mergCands[MRG_A1+i].m_uDir  &&
    3688         ( ( ivCandDir[1] & 1 ) == 0 || tmpMV[0]==m_mergCands[MRG_A1+i].m_cMvField[0]  ) &&
    3689         ( ( ivCandDir[1] & 2 ) == 0 || tmpMV[1]==m_mergCands[MRG_A1+i].m_cMvField[1]  )
    3690         )
     3699      if ( hasEqualMotion(ivCandDir[1], tmpMV, m_mergCands[MRG_A1+i].m_uDir, m_mergCands[MRG_A1+i].m_cMvField) )
    36913700#else
    36923701      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])
  • branches/HTM-14.1-update-dev1/source/Lib/TLibCommon/TComDataCU.h

    r1279 r1285  
    653653
    654654  Bool          hasEqualMotion              ( UInt uiAbsPartIdx, TComDataCU* pcCandCU, UInt uiCandAbsPartIdx );
    655 
     655#if NH_3D_FIX_PRUNING
     656  Bool          hasEqualMotion              ( Int dirA, const TComMvField* mvFieldA,  Int dirB, const TComMvField* mvFieldB  );
     657#endif
    656658#if NH_3D_MLC
    657659  Bool          getAvailableFlagA1() { return m_bAvailableFlagA1;   }
  • branches/HTM-14.1-update-dev1/source/Lib/TLibCommon/TComRom.cpp

    r1282 r1285  
    686686  }
    687687  Bool stopFlag = false;
    688   if ( g_stopAtPos && poc == 6 && layerId == 2 )
     688  if ( g_stopAtPos && poc == 16 && layerId == 5 )
    689689  {
    690690    Bool stopAtCU = true;
    691691    if ( stopAtCU )        // Stop at CU with specific size
    692692    {   
    693       stopFlag = ( cuPelX  == 128 ) && ( cuPelY  == 160 ) && ( cuWidth == 32 ) && ( cuHeight == 32 );
     693      stopFlag = ( cuPelX  == 224 ) && ( cuPelY  == 128 ) && ( cuWidth == 16 ) && ( cuHeight == 16 );
    694694    }
    695695    else
Note: See TracChangeset for help on using the changeset viewer.