Changeset 286 in SHVCSoftware for branches/SHM-2.1-dev/source


Ignore:
Timestamp:
11 Jun 2013, 03:09:32 (11 years ago)
Author:
seregin
Message:

Per E. Alshina suggestion, avoid 2 conditional checks in the upsamling loop

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-2.1-dev/source/Lib/TLibCommon/TComUpsampleFilter.cpp

    r283 r286  
    271271      piDstY = piDstBufY + j * strideEL;
    272272#if SCALED_REF_LAYER_OFFSETS
    273       for( i = 0; i < pcTempPic->getWidth(); i++ )
     273      for( i = 0; i < leftStartL; i++ )
     274      {
     275        *piDstY = ClipY( (sumLumaVer(piSrcY, coeff, strideEL) + iOffset) >> (nShift));
     276        piDstY++;
     277      }
     278
     279      for( i = leftStartL; i < rightEndL-1; i++ )
     280      {
     281        *piDstY = ClipY( (sumLumaVer(piSrcY, coeff, strideEL) + iOffset) >> (nShift));
     282        piSrcY++;
     283        piDstY++;
     284      }
     285
     286      for( i = rightEndL-1; i < pcTempPic->getWidth(); i++ )
     287      {
     288        *piDstY = ClipY( (sumLumaVer(piSrcY, coeff, strideEL) + iOffset) >> (nShift));
     289        piDstY++;
     290      }
    274291#else
    275292      for( i = 0; i < widthEL; i++ )
    276 #endif
    277293      {
    278294        *piDstY = ClipY( (sumLumaVer(piSrcY, coeff, strideEL) + iOffset) >> (nShift));
    279 #if SCALED_REF_LAYER_OFFSETS
    280         // Only increase the x position of reference upsample picture when within the window
    281         // "-2" to ensure that pointer doesn't go beyond the boundary rightEndL-1
    282         if( (i >= leftStartL) && (i <= rightEndL-2) )
    283         {
    284           piSrcY++;
    285         }
    286 #else
    287295        piSrcY++;
    288 #endif
    289296        piDstY++;
    290297      }
     298#endif
    291299    }
    292300
     
    411419
    412420#if SCALED_REF_LAYER_OFFSETS
    413       for( i = 0; i < pcTempPic->getWidth() >> 1; i++ )
    414 #else
    415       for( i = 0; i < widthEL; i++ )
    416 #endif
     421      for( i = 0; i < leftStartC; i++ )
    417422      {
    418423        *piDstU = ClipC( (sumChromaVer(piSrcU, coeff, strideEL) + iOffset) >> (nShift));
    419424        *piDstV = ClipC( (sumChromaVer(piSrcV, coeff, strideEL) + iOffset) >> (nShift));
    420 
    421 #if SCALED_REF_LAYER_OFFSETS
    422         // Only increase the x position of reference upsample picture when within the window
    423         // "-2" to ensure that pointer doesn't go beyond the boundary rightEndC-1
    424         if( (i >= leftStartC) && (i <= rightEndC-2) )
    425         {
    426           piSrcU++;
    427           piSrcV++;
    428         }
    429 #else
     425        piDstU++;
     426        piDstV++;
     427      }
     428
     429      for( i = leftStartC; i < rightEndC-1; i++ )
     430      {
     431        *piDstU = ClipC( (sumChromaVer(piSrcU, coeff, strideEL) + iOffset) >> (nShift));
     432        *piDstV = ClipC( (sumChromaVer(piSrcV, coeff, strideEL) + iOffset) >> (nShift));
    430433        piSrcU++;
    431434        piSrcV++;
    432 #endif
    433435        piDstU++;
    434436        piDstV++;
    435437      }
     438
     439      for( i = rightEndC-1; i < pcTempPic->getWidth() >> 1; i++ )
     440      {
     441        *piDstU = ClipC( (sumChromaVer(piSrcU, coeff, strideEL) + iOffset) >> (nShift));
     442        *piDstV = ClipC( (sumChromaVer(piSrcV, coeff, strideEL) + iOffset) >> (nShift));
     443        piDstU++;
     444        piDstV++;
     445      }
     446#else
     447      for( i = 0; i < widthEL; i++ )
     448      {
     449        *piDstU = ClipC( (sumChromaVer(piSrcU, coeff, strideEL) + iOffset) >> (nShift));
     450        *piDstV = ClipC( (sumChromaVer(piSrcV, coeff, strideEL) + iOffset) >> (nShift));
     451        piSrcU++;
     452        piSrcV++;
     453        piDstU++;
     454        piDstV++;
     455      }
     456#endif
    436457    }
    437458
Note: See TracChangeset for help on using the changeset viewer.