diff options
Diffstat (limited to 'C/HuffEnc.c')
| -rw-r--r-- | C/HuffEnc.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/C/HuffEnc.c b/C/HuffEnc.c index cbf8c22..297b41a 100644 --- a/C/HuffEnc.c +++ b/C/HuffEnc.c | |||
| @@ -13,7 +13,7 @@ Igor Pavlov : Public domain */ | |||
| 13 | #define NUM_BITS 10 | 13 | #define NUM_BITS 10 |
| 14 | #define MASK ((1u << NUM_BITS) - 1) | 14 | #define MASK ((1u << NUM_BITS) - 1) |
| 15 | #define FREQ_MASK (~(UInt32)MASK) | 15 | #define FREQ_MASK (~(UInt32)MASK) |
| 16 | #define NUM_COUNTERS (48 * 2) | 16 | #define NUM_COUNTERS (104 * 2) // (80 * 2) or (128 * 2) : ((prime_number + 1) * 2) for smaller code. |
| 17 | 17 | ||
| 18 | #if 1 && (defined(MY_CPU_LE) || defined(MY_CPU_BE)) | 18 | #if 1 && (defined(MY_CPU_LE) || defined(MY_CPU_BE)) |
| 19 | #if defined(MY_CPU_LE) | 19 | #if defined(MY_CPU_LE) |
| @@ -95,9 +95,10 @@ void Huffman_Generate(const UInt32 *freqs, UInt32 *p, Byte *lens, unsigned numSy | |||
| 95 | counters[1] = 0; | 95 | counters[1] = 0; |
| 96 | for (i = 2; i != NUM_COUNTERS; i += 2) | 96 | for (i = 2; i != NUM_COUNTERS; i += 2) |
| 97 | { | 97 | { |
| 98 | unsigned c; | 98 | const unsigned c0 = (counters )[i]; |
| 99 | c = (counters )[i]; (counters )[i] = num; num += c; | 99 | const unsigned c1 = (counters + 1)[i]; |
| 100 | c = (counters + 1)[i]; (counters + 1)[i] = num; num += c; | 100 | (counters )[i] = num; num += c0; |
| 101 | (counters + 1)[i] = num; num += c1; | ||
| 101 | } | 102 | } |
| 102 | counters[0] = num; // we want to write (freq==0) symbols to the end of (p) array | 103 | counters[0] = num; // we want to write (freq==0) symbols to the end of (p) array |
| 103 | { | 104 | { |
