Paeth予測を切り替えられるようにした。
@@ -92,7 +92,11 @@ | ||
92 | 92 | reorderByFrequency(hBlockCount, vBlockCount, pWork, pWork2); |
93 | 93 | |
94 | 94 | // TODO: to add option to disable paeth prediction |
95 | - paethPredictEncode(hBlockCount, vBlockCount, pWork2, pWork); | |
95 | + unsigned char enablePaethPrediction = 1; | |
96 | + *dest++ = enablePaethPrediction; | |
97 | + if (enablePaethPrediction) { | |
98 | + paethPredictEncode(hBlockCount, vBlockCount, pWork2, pWork); | |
99 | + } | |
96 | 100 | |
97 | 101 | std::vector<unsigned char> signFlags(totalBlockCount*64); |
98 | 102 | unsigned char* pSignFlags = &signFlags[0]; |
@@ -147,6 +151,8 @@ | ||
147 | 151 | int* pWork2 = &work2[0]; |
148 | 152 | size_t destLen = work2.size(); |
149 | 153 | |
154 | + unsigned char enablePaethPrediction = *src++; | |
155 | + | |
150 | 156 | // zero one flags |
151 | 157 | unsigned char zeroOneLimit = *src++; |
152 | 158 | std::vector<unsigned char> zeroOneFlags(totalBlockCount); |
@@ -186,7 +192,9 @@ | ||
186 | 192 | } |
187 | 193 | } |
188 | 194 | |
189 | - paethPredictDecode(hBlockCount, vBlockCount, pWork2, pWork); | |
195 | + if (enablePaethPrediction) { | |
196 | + paethPredictDecode(hBlockCount, vBlockCount, pWork2, pWork); | |
197 | + } | |
190 | 198 | |
191 | 199 | reorderByPosition(hBlockCount, vBlockCount, pWork2, pWork); |
192 | 200 |