Ignore:
Timestamp:
13 Nov 2015, 16:29:39 (8 years ago)
Author:
tech
Message:

Merged 15.1-dev1@1381.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibEncoder/TEncPreanalyzer.cpp

    r1313 r1386  
    8787        UInt64 uiSum[4] = {0, 0, 0, 0};
    8888        UInt64 uiSumSq[4] = {0, 0, 0, 0};
    89         UInt uiNumPixInAQPart = 0;
    9089        UInt by = 0;
    9190        for ( ; by < uiCurrAQPartHeight>>1; by++ )
    9291        {
    9392          UInt bx = 0;
    94           for ( ; bx < uiCurrAQPartWidth>>1; bx++, uiNumPixInAQPart++ )
     93          for ( ; bx < uiCurrAQPartWidth>>1; bx++ )
    9594          {
    9695            uiSum  [0] += pBlkY[bx];
    9796            uiSumSq[0] += pBlkY[bx] * pBlkY[bx];
    9897          }
    99           for ( ; bx < uiCurrAQPartWidth; bx++, uiNumPixInAQPart++ )
     98          for ( ; bx < uiCurrAQPartWidth; bx++ )
    10099          {
    101100            uiSum  [1] += pBlkY[bx];
     
    107106        {
    108107          UInt bx = 0;
    109           for ( ; bx < uiCurrAQPartWidth>>1; bx++, uiNumPixInAQPart++ )
     108          for ( ; bx < uiCurrAQPartWidth>>1; bx++ )
    110109          {
    111110            uiSum  [2] += pBlkY[bx];
    112111            uiSumSq[2] += pBlkY[bx] * pBlkY[bx];
    113112          }
    114           for ( ; bx < uiCurrAQPartWidth; bx++, uiNumPixInAQPart++ )
     113          for ( ; bx < uiCurrAQPartWidth; bx++ )
    115114          {
    116115            uiSum  [3] += pBlkY[bx];
     
    120119        }
    121120
     121        assert ((uiCurrAQPartWidth&1)==0);
     122        assert ((uiCurrAQPartHeight&1)==0);
     123        const UInt pixelWidthOfQuadrants  = uiCurrAQPartWidth >>1;
     124        const UInt pixelHeightOfQuadrants = uiCurrAQPartHeight>>1;
     125        const UInt numPixInAQPart         = pixelWidthOfQuadrants * pixelHeightOfQuadrants;
     126
    122127        Double dMinVar = DBL_MAX;
     128        if (numPixInAQPart!=0)
     129        {
    123130        for ( Int i=0; i<4; i++)
    124131        {
    125           const Double dAverage = Double(uiSum[i]) / uiNumPixInAQPart;
    126           const Double dVariance = Double(uiSumSq[i]) / uiNumPixInAQPart - dAverage * dAverage;
     132            const Double dAverage = Double(uiSum[i]) / numPixInAQPart;
     133            const Double dVariance = Double(uiSumSq[i]) / numPixInAQPart - dAverage * dAverage;
    127134          dMinVar = min(dMinVar, dVariance);
     135        }
     136        }
     137        else
     138        {
     139          dMinVar = 0.0;
    128140        }
    129141        const Double dActivity = 1.0 + dMinVar;
Note: See TracChangeset for help on using the changeset viewer.