1 | Index: source/Lib/TLibCommon/TypeDef.h |
---|
2 | =================================================================== |
---|
3 | --- source/Lib/TLibCommon/TypeDef.h (revision 2966) |
---|
4 | +++ source/Lib/TLibCommon/TypeDef.h (working copy) |
---|
5 | @@ -87,6 +87,7 @@ |
---|
6 | #define SAO_ENCODING_RATE_CHROMA 0.5 |
---|
7 | #endif |
---|
8 | #endif |
---|
9 | +#define SAO_TEST_DISABLED 1 ///< Test for whether SAO completely disabled produces the lowest cost. |
---|
10 | |
---|
11 | #define MAX_NUM_VPS 16 |
---|
12 | #define MAX_NUM_SPS 16 |
---|
13 | Index: source/Lib/TLibEncoder/TEncSampleAdaptiveOffset.cpp |
---|
14 | =================================================================== |
---|
15 | --- source/Lib/TLibEncoder/TEncSampleAdaptiveOffset.cpp (revision 2966) |
---|
16 | +++ source/Lib/TLibEncoder/TEncSampleAdaptiveOffset.cpp (working copy) |
---|
17 | @@ -1865,6 +1865,9 @@ |
---|
18 | Int addr = 0; |
---|
19 | Int addrUp = -1; |
---|
20 | Int addrLeft = -1; |
---|
21 | +#if SAO_TEST_DISABLED |
---|
22 | + double totalCost = 0; |
---|
23 | +#endif |
---|
24 | Int compIdx = 0; |
---|
25 | SaoLcuParam mergeSaoParam[3][2]; |
---|
26 | Double compDistortion[3]; |
---|
27 | @@ -1899,6 +1902,11 @@ |
---|
28 | #endif |
---|
29 | #endif |
---|
30 | |
---|
31 | +#if SAO_TEST_DISABLED |
---|
32 | + m_pcRDGoOnSbacCoder->load(m_pppcRDSbacCoder[0][CI_CURR_BEST]); |
---|
33 | + m_pcRDGoOnSbacCoder->store(m_pppcRDSbacCoder[0][CI_NEXT_BEST]); // next best if SAO is to be disabled. |
---|
34 | +#endif |
---|
35 | + |
---|
36 | for (idxY = 0; idxY< frameHeightInCU; idxY++) |
---|
37 | { |
---|
38 | for (idxX = 0; idxX< frameWidthInCU; idxX++) |
---|
39 | @@ -2039,6 +2047,10 @@ |
---|
40 | } |
---|
41 | } |
---|
42 | } |
---|
43 | +#if SAO_TEST_DISABLED |
---|
44 | + totalCost += bestCost; |
---|
45 | +#endif |
---|
46 | + |
---|
47 | #if SAO_ENCODING_CHOICE |
---|
48 | #if SAO_ENCODING_CHOICE_CHROMA |
---|
49 | if( saoParam->saoLcuParam[0][addr].typeIdx == -1) |
---|
50 | @@ -2064,6 +2076,17 @@ |
---|
51 | } |
---|
52 | } |
---|
53 | } |
---|
54 | + |
---|
55 | +#if SAO_TEST_DISABLED |
---|
56 | + if (totalCost >= 0.0) |
---|
57 | + { |
---|
58 | + saoParam->bSaoFlag[0]=false; |
---|
59 | + saoParam->bSaoFlag[1]=false; |
---|
60 | + m_pcRDGoOnSbacCoder->load(m_pppcRDSbacCoder[0][CI_NEXT_BEST]); |
---|
61 | + m_pcRDGoOnSbacCoder->store(m_pppcRDSbacCoder[0][CI_CURR_BEST]); |
---|
62 | + } |
---|
63 | +#endif |
---|
64 | + |
---|
65 | #if SAO_ENCODING_CHOICE |
---|
66 | #if SAO_ENCODING_CHOICE_CHROMA |
---|
67 | if( !saoParam->bSaoFlag[0]) |
---|