| 1 | Index: source/Lib/TLibCommon/TComSampleAdaptiveOffset.cpp |
|---|
| 2 | =================================================================== |
|---|
| 3 | --- source/Lib/TLibCommon/TComSampleAdaptiveOffset.cpp (revision hm13) |
|---|
| 4 | +++ source/Lib/TLibCommon/TComSampleAdaptiveOffset.cpp (working copy) |
|---|
| 5 | @@ -155,11 +155,13 @@ |
|---|
| 6 | } |
|---|
| 7 | |
|---|
| 8 | //look-up table for clipping |
|---|
| 9 | + Int overallMaxSampleValue=0; |
|---|
| 10 | for(Int compIdx =0; compIdx < NUM_SAO_COMPONENTS; compIdx++) |
|---|
| 11 | { |
|---|
| 12 | Int bitDepthSample = (compIdx == SAO_Y)?g_bitDepthY:g_bitDepthC; //exclusive |
|---|
| 13 | Int maxSampleValue = (1<< bitDepthSample); //exclusive |
|---|
| 14 | - Int maxOffsetValue = (g_saoMaxOffsetQVal[compIdx] << m_offsetStepLog2[compIdx]); |
|---|
| 15 | + Int maxOffsetValue = (g_saoMaxOffsetQVal[compIdx] << m_offsetStepLog2[compIdx]); |
|---|
| 16 | + if (maxSampleValue>overallMaxSampleValue) overallMaxSampleValue=maxSampleValue; |
|---|
| 17 | |
|---|
| 18 | m_offsetClipTable[compIdx] = new Int[(maxSampleValue + maxOffsetValue -1)+ (maxOffsetValue)+1 ]; //positive & negative range plus 0 |
|---|
| 19 | m_offsetClip[compIdx] = &(m_offsetClipTable[compIdx][maxOffsetValue]); |
|---|
| 20 | @@ -175,20 +177,18 @@ |
|---|
| 21 | *(offsetClipPtr + maxSampleValue+ k) = maxSampleValue-1; |
|---|
| 22 | *(offsetClipPtr -k -1 ) = 0; |
|---|
| 23 | } |
|---|
| 24 | - if(compIdx == SAO_Y) //g_bitDepthY is always larger than or equal to g_bitDepthC |
|---|
| 25 | - { |
|---|
| 26 | - m_signTable = new Short[ 2*(maxSampleValue-1) + 1 ]; |
|---|
| 27 | - m_sign = &(m_signTable[maxSampleValue-1]); |
|---|
| 28 | + } |
|---|
| 29 | |
|---|
| 30 | - m_sign[0] = 0; |
|---|
| 31 | - for(Int k=1; k< maxSampleValue; k++) |
|---|
| 32 | - { |
|---|
| 33 | - m_sign[k] = 1; |
|---|
| 34 | - m_sign[-k]= -1; |
|---|
| 35 | - } |
|---|
| 36 | - } |
|---|
| 37 | - } |
|---|
| 38 | + m_signTable = new Short[ 2*(overallMaxSampleValue-1) + 1 ]; |
|---|
| 39 | + m_sign = &(m_signTable[overallMaxSampleValue-1]); |
|---|
| 40 | |
|---|
| 41 | + m_sign[0] = 0; |
|---|
| 42 | + for(Int k=1; k< overallMaxSampleValue; k++) |
|---|
| 43 | + { |
|---|
| 44 | + m_sign[k] = 1; |
|---|
| 45 | + m_sign[-k]= -1; |
|---|
| 46 | + } |
|---|
| 47 | + |
|---|
| 48 | } |
|---|
| 49 | |
|---|
| 50 | Void TComSampleAdaptiveOffset::destroy() |
|---|