Ticket #1149: patch_1149.txt

File patch_1149.txt, 1.9 KB (added by karlsharman, 11 years ago)
Line 
1Index: 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
13Index: 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])