aboutsummaryrefslogtreecommitdiff
path: root/C/HuffEnc.c
diff options
context:
space:
mode:
Diffstat (limited to 'C/HuffEnc.c')
-rw-r--r--C/HuffEnc.c9
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 {