diff options
Diffstat (limited to 'C/Ppmd8Dec.c')
-rw-r--r-- | C/Ppmd8Dec.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/C/Ppmd8Dec.c b/C/Ppmd8Dec.c index 72d3626..ff91167 100644 --- a/C/Ppmd8Dec.c +++ b/C/Ppmd8Dec.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* Ppmd8Dec.c -- Ppmd8 (PPMdI) Decoder | 1 | /* Ppmd8Dec.c -- Ppmd8 (PPMdI) Decoder |
2 | 2023-04-02 : Igor Pavlov : Public domain | 2 | 2023-09-07 : Igor Pavlov : Public domain |
3 | This code is based on: | 3 | This 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 */ |
@@ -58,7 +58,7 @@ static void Ppmd8_RD_Decode(CPpmd8 *p, UInt32 start, UInt32 size) | |||
58 | #define SUCCESSOR(p) Ppmd_GET_SUCCESSOR(p) | 58 | #define SUCCESSOR(p) Ppmd_GET_SUCCESSOR(p) |
59 | void Ppmd8_UpdateModel(CPpmd8 *p); | 59 | void Ppmd8_UpdateModel(CPpmd8 *p); |
60 | 60 | ||
61 | #define MASK(sym) ((unsigned char *)charMask)[sym] | 61 | #define MASK(sym) ((Byte *)charMask)[sym] |
62 | 62 | ||
63 | 63 | ||
64 | int Ppmd8_DecodeSymbol(CPpmd8 *p) | 64 | int Ppmd8_DecodeSymbol(CPpmd8 *p) |
@@ -120,8 +120,8 @@ int Ppmd8_DecodeSymbol(CPpmd8 *p) | |||
120 | MASK(s->Symbol) = 0; | 120 | MASK(s->Symbol) = 0; |
121 | do | 121 | do |
122 | { | 122 | { |
123 | unsigned sym0 = s2[0].Symbol; | 123 | const unsigned sym0 = s2[0].Symbol; |
124 | unsigned sym1 = s2[1].Symbol; | 124 | const unsigned sym1 = s2[1].Symbol; |
125 | s2 += 2; | 125 | s2 += 2; |
126 | MASK(sym0) = 0; | 126 | MASK(sym0) = 0; |
127 | MASK(sym1) = 0; | 127 | MASK(sym1) = 0; |
@@ -209,17 +209,17 @@ int Ppmd8_DecodeSymbol(CPpmd8 *p) | |||
209 | unsigned num2 = num / 2; | 209 | unsigned num2 = num / 2; |
210 | 210 | ||
211 | num &= 1; | 211 | num &= 1; |
212 | hiCnt = (s->Freq & (unsigned)(MASK(s->Symbol))) & (0 - (UInt32)num); | 212 | hiCnt = (s->Freq & (UInt32)(MASK(s->Symbol))) & (0 - (UInt32)num); |
213 | s += num; | 213 | s += num; |
214 | p->MinContext = mc; | 214 | p->MinContext = mc; |
215 | 215 | ||
216 | do | 216 | do |
217 | { | 217 | { |
218 | unsigned sym0 = s[0].Symbol; | 218 | const unsigned sym0 = s[0].Symbol; |
219 | unsigned sym1 = s[1].Symbol; | 219 | const unsigned sym1 = s[1].Symbol; |
220 | s += 2; | 220 | s += 2; |
221 | hiCnt += (s[-2].Freq & (unsigned)(MASK(sym0))); | 221 | hiCnt += (s[-2].Freq & (UInt32)(MASK(sym0))); |
222 | hiCnt += (s[-1].Freq & (unsigned)(MASK(sym1))); | 222 | hiCnt += (s[-1].Freq & (UInt32)(MASK(sym1))); |
223 | } | 223 | } |
224 | while (--num2); | 224 | while (--num2); |
225 | } | 225 | } |
@@ -243,8 +243,8 @@ int Ppmd8_DecodeSymbol(CPpmd8 *p) | |||
243 | { | 243 | { |
244 | for (;;) | 244 | for (;;) |
245 | { | 245 | { |
246 | count -= s->Freq & (unsigned)(MASK((s)->Symbol)); s++; if ((Int32)count < 0) break; | 246 | count -= s->Freq & (UInt32)(MASK((s)->Symbol)); s++; if ((Int32)count < 0) break; |
247 | // count -= s->Freq & (unsigned)(MASK((s)->Symbol)); s++; if ((Int32)count < 0) break; | 247 | // count -= s->Freq & (UInt32)(MASK((s)->Symbol)); s++; if ((Int32)count < 0) break; |
248 | } | 248 | } |
249 | } | 249 | } |
250 | s--; | 250 | s--; |