Skip to content
Snippets Groups Projects
IntraPrediction.cpp 67.1 KiB
Newer Older
  • Learn to ignore specific revisions
  •     if( iScaleShiftA2 < 0 )
        {
          iScaleShiftA2 = 0;
        }
    
        int iScaleShiftA = iScaleShiftA2 + iAccuracyShift - iShift - iScaleShiftA1;
    
        a2s = a2 >> iScaleShiftA2;
    
        a1s = a1 >> iScaleShiftA1;
    
        if( a2s >= 32 )
        {
          uint32_t a2t = m_auShiftLM[a2s - 32];
          a = a1s * a2t;
        }
        else
        {
          a = 0;
        }
    
        if( iScaleShiftA < 0 )
        {
          a = a << -iScaleShiftA;
        }
        else
        {
          a = a >> iScaleShiftA;
        }
        a = Clip3( -( 1 << ( 15 - iB ) ), ( 1 << ( 15 - iB ) ) - 1, a );
        a = a << iB;
    
        int16_t n = 0;
        if( a != 0 )
        {
          n = GetFloorLog2( abs( a ) + ( ( a < 0 ? -1 : 1 ) - 1 ) / 2 ) - 5;
        }
    
        iShift = ( iShift + iB ) - n;
        a = a >> n;
    
        b = avgY - ( ( a * avgX ) >> iShift );
      }
    }