aboutsummaryrefslogtreecommitdiff
path: root/C/Ppmd8Enc.c
diff options
context:
space:
mode:
Diffstat (limited to 'C/Ppmd8Enc.c')
-rw-r--r--C/Ppmd8Enc.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/C/Ppmd8Enc.c b/C/Ppmd8Enc.c
index 9e29ef7..b0e34c4 100644
--- a/C/Ppmd8Enc.c
+++ b/C/Ppmd8Enc.c
@@ -1,5 +1,5 @@
1/* Ppmd8Enc.c -- Ppmd8 (PPMdI) Encoder 1/* Ppmd8Enc.c -- Ppmd8 (PPMdI) Encoder
22023-04-02 : Igor Pavlov : Public domain 22023-09-07 : Igor Pavlov : Public domain
3This code is based on: 3This code is based on:
4 PPMd var.I (2002): Dmitry Shkarin : Public domain 4 PPMd var.I (2002): Dmitry Shkarin : Public domain
5 Carryless rangecoder (1999): Dmitry Subbotin : Public domain */ 5 Carryless rangecoder (1999): Dmitry Subbotin : Public domain */
@@ -82,7 +82,7 @@ static void Ppmd8_RangeEnc_Encode(CPpmd8 *p, UInt32 start, UInt32 size, UInt32 t
82 82
83void Ppmd8_UpdateModel(CPpmd8 *p); 83void Ppmd8_UpdateModel(CPpmd8 *p);
84 84
85#define MASK(sym) ((unsigned char *)charMask)[sym] 85#define MASK(sym) ((Byte *)charMask)[sym]
86 86
87// Z7_FORCE_INLINE 87// Z7_FORCE_INLINE
88// static 88// static
@@ -139,8 +139,8 @@ void Ppmd8_EncodeSymbol(CPpmd8 *p, int symbol)
139 MASK(s->Symbol) = 0; 139 MASK(s->Symbol) = 0;
140 do 140 do
141 { 141 {
142 unsigned sym0 = s2[0].Symbol; 142 const unsigned sym0 = s2[0].Symbol;
143 unsigned sym1 = s2[1].Symbol; 143 const unsigned sym1 = s2[1].Symbol;
144 s2 += 2; 144 s2 += 2;
145 MASK(sym0) = 0; 145 MASK(sym0) = 0;
146 MASK(sym1) = 0; 146 MASK(sym1) = 0;
@@ -265,16 +265,15 @@ void Ppmd8_EncodeSymbol(CPpmd8 *p, int symbol)
265 if (num2 != 0) 265 if (num2 != 0)
266 { 266 {
267 s += i; 267 s += i;
268 for (;;) 268 do
269 { 269 {
270 unsigned sym0 = s[0].Symbol; 270 const unsigned sym0 = s[0].Symbol;
271 unsigned sym1 = s[1].Symbol; 271 const unsigned sym1 = s[1].Symbol;
272 s += 2; 272 s += 2;
273 sum += (s[-2].Freq & (unsigned)(MASK(sym0))); 273 sum += (s[-2].Freq & (unsigned)(MASK(sym0)));
274 sum += (s[-1].Freq & (unsigned)(MASK(sym1))); 274 sum += (s[-1].Freq & (unsigned)(MASK(sym1)));
275 if (--num2 == 0)
276 break;
277 } 275 }
276 while (--num2);
278 } 277 }
279 278
280 PPMD8_CORRECT_SUM_RANGE(p, sum) 279 PPMD8_CORRECT_SUM_RANGE(p, sum)