History

- complete new huffman decoding routines - complete new bitstream reading routines

menno committed 24 years ago

Commit 283d7381 parent 8890a5118 files · +3134 −1620Browse files

Unified · Split

18 files
  1. libfaad/bits.c +26 −13
  2. libfaad/bits.h +42 −77
  3. libfaad/codebook/hcb.h +137 −0
  4. libfaad/codebook/hcb_1.c +179 −0
  5. libfaad/codebook/hcb_10.c +305 −0
  6. libfaad/codebook/hcb_11.c +408 −0
  7. libfaad/codebook/hcb_2.c +178 −0
  8. libfaad/codebook/hcb_3.c +189 −0
  9. libfaad/codebook/hcb_4.c +192 −0
  10. libfaad/codebook/hcb_5.c +189 −0
  11. libfaad/codebook/hcb_6.c +175 −0
  12. libfaad/codebook/hcb_7.c +155 −0
  13. libfaad/codebook/hcb_8.c +166 −0
  14. libfaad/codebook/hcb_9.c +365 −0
  15. libfaad/codebook/hcb_sf.c +269 −0
  16. libfaad/huffman.c +0 −1433
  17. libfaad/huffman.h +103 −93
  18. libfaad/libfaad.dsp +56 −4
libfaad/bits.c+26−13
@@ -16,35 +16,48 @@ · 15 unmodified lines
1616 ** along with this program; if not, write to the Free Software
1717 ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
1818 **
19−** $Id: bits.c,v 1.3 2002/01/19 16:19:54 menno Exp $
19+** $Id: bits.c,v 1.4 2002/02/15 20:52:09 menno Exp $
2020 **/
2121
2222 #include "bits.h"
2323
2424
2525 /* initialize buffer, call once before first getbits or showbits */
26−void faad_initbits(bitfile *ld, unsigned char *buffer)
26+void faad_initbits(bitfile *ld, void *buffer)
2727 {
28− ld->incnt = 0;
29− ld->framebits = 0;
30− ld->bitcnt = 0;
31− ld->rdptr = buffer;
28+ unsigned long tmp;
29+
30+ ld->start = (unsigned long*)buffer;
31+
32+ tmp = *(unsigned long*)buffer;
33+#ifndef ARCH_IS_BIG_ENDIAN
34+ BSWAP(tmp);
35+#endif
36+ ld->bufa = tmp;
37+
38+ tmp = *((unsigned long*)buffer + 1);
39+#ifndef ARCH_IS_BIG_ENDIAN
40+ BSWAP(tmp);
41+#endif
42+ ld->bufb = tmp;
43+
44+ ld->pos = 0;
45+ ld->tail = ((unsigned long*)buffer + 2);
3246 }
3347
3448 int faad_get_processed_bits(bitfile *ld)
3549 {
36− return (ld->framebits);
50+ return 8 * (4*(ld->tail - ld->start) - 4) - (32 - ld->pos);
3751 }
3852
3953 unsigned int faad_byte_align(bitfile *ld)
4054 {
41− int i = 0;
55+ unsigned long remainder = ld->pos % 8;
4256
43− while (ld->framebits%8 != 0)
57+ if (remainder)
4458 {
45− faad_get1bit(ld DEBUGVAR(1,135,"faad_byte_align(): get bit until aligned"));
46− i++;
59+ faad_flushbits(ld, 8 - remainder);
60+ return (8 - remainder);
4761 }
48−
49− return(i);
62+ return 0;
5063 }
libfaad/bits.h+42−77
@@ -16,7 +16,7 @@ · 15 unmodified lines
1616 ** along with this program; if not, write to the Free Software
1717 ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
1818 **
19−** $Id: bits.h,v 1.3 2002/01/22 09:11:24 menno Exp $
19+** $Id: bits.h,v 1.4 2002/02/15 20:52:09 menno Exp $
2020 **/
2121
2222 #ifndef __BITS_H__
@@ -34,118 +34,83 @@ extern "C" { · 11 unmodified lines
3434 #define BYTE_NUMBIT 8
3535 #define bit2byte(a) ((a)/BYTE_NUMBIT)
3636
37−/* to mask the n least significant bits of an integer */
38−static unsigned int msk[33] =
39−{
40− 0x00000000, 0x00000001, 0x00000003, 0x00000007,
41− 0x0000000f, 0x0000001f, 0x0000003f, 0x0000007f,
42− 0x000000ff, 0x000001ff, 0x000003ff, 0x000007ff,
43− 0x00000fff, 0x00001fff, 0x00003fff, 0x00007fff,
44− 0x0000ffff, 0x0001ffff, 0x0003ffff, 0x0007ffff,
45− 0x000fffff, 0x001fffff, 0x003fffff, 0x007fffff,
46− 0x00ffffff, 0x01ffffff, 0x03ffffff, 0x07ffffff,
47− 0x0fffffff, 0x1fffffff, 0x3fffffff, 0x7fffffff,
48− 0xffffffff
49−};
50−
5137 typedef struct _bitfile
5238 {
5339 /* bit input */
54− unsigned char *rdptr;
55− int incnt;
56− int bitcnt;
57− int framebits;
40+ unsigned long bufa;
41+ unsigned long bufb;
42+ unsigned long pos;
43+ unsigned long *tail;
44+ unsigned long *start;
5845 } bitfile;
5946
6047
61−#if defined(LINUX) && defined(ARM__)
62−#define bits_inline
63−#define _SWAP(a,b) { register unsigned int temp; \
64− b = *(int*)(a); \
65− __asm__ ( " EOR %0, %1, %2, ROR #16" : "=r" (temp) : "r" (b), "r" (b)); \
66− __asm__ ( " BIC %0, %1, #0x00FF0000" : "=r" (temp) : "r" (temp)); \
67− __asm__ ( " MOV %0, %1, ROR #8" : "=r" (b) : "r" (b)); \
68− __asm__ ( " EOR %0, %1, %2, LSR #8" : "=r" (b) : "r" (b), "r" (temp)); \
69− }
70−#elif defined(LINUX)
71−#define bits_inline inline
72−#define _SWAP(a,b) \
73− b=*(int*)a; \
74− __asm__ ( "bswapl %0\n" : "=r" (b) : "0" (b) )
75−#elif defined(WIN32)
48+#if defined _WIN32
7649 #define bits_inline __inline
77−#define _SWAP(a,b) \
78− { \
79− register unsigned int * c = &b; \
80− b=*(int*)a; __asm mov ecx, c __asm mov eax, [ecx] __asm bswap eax __asm mov [ecx], eax \
81− }
50+#define BSWAP(a) __asm mov eax,a __asm bswap eax __asm mov a, eax
51+#elif defined(LINUX) || defined(DJGPP)
52+#define bits_inline inline
53+#define BSWAP(a) __asm__ ( "bswapl %0\n" : "=r" (a) : "0" (a) )
8254 #else
8355 #define bits_inline
84−#define _SWAP(a,b) (b=((a[0] << 24) | (a[1] << 16) | (a[2] << 8) | a[3]))
56+#define BSWAP(a) \
57+ ((a) = ( ((a)&0xff)<<24) | (((a)&0xff00)<<8) | (((a)>>8)&0xff00) | (((a)>>24)&0xff))
8558 #endif
8659
8760
88−void faad_initbits(bitfile *ld, unsigned char *buffer);
61+void faad_initbits(bitfile *ld, void *buffer);
8962 unsigned int faad_byte_align(bitfile *ld);
9063 int faad_get_processed_bits(bitfile *ld);
9164
9265
93−static bits_inline unsigned int faad_showbits(bitfile *ld, int n)
66+static bits_inline unsigned int faad_showbits(bitfile *ld, int bits)
9467 {
95− unsigned char *v = ld->rdptr;
96− int rbit = 32 - ld->bitcnt;
97− unsigned int b;
98−
99− _SWAP(v, b);
100− return ((b & msk[rbit]) >> (rbit-n));
68+ int nbit = (bits + ld->pos) - 32;
69+ if (nbit > 0)
70+ {
71+ return ((ld->bufa & (0xffffffff >> ld->pos)) << nbit) |
72+ (ld->bufb >> (32 - nbit));
73+ } else {
74+ return (ld->bufa & (0xffffffff >> ld->pos)) >> (32 - ld->pos - bits);
75+ }
10176 }
10277
103−static bits_inline void faad_flushbits(bitfile *ld, int n)
78+static bits_inline void faad_flushbits(bitfile *ld, int bits)
10479 {
105− ld->bitcnt += n;
80+ ld->pos += bits;
10681
107− if (ld->bitcnt >= 8)
108− {
109− ld->rdptr += (ld->bitcnt>>3);
110− ld->bitcnt &= 7;
111− }
82+ if (ld->pos >= 32)
83+ {
84+ unsigned long tmp;
11285
113− ld->framebits += n;
86+ ld->bufa = ld->bufb;
87+ tmp = *(unsigned long*)ld->tail;
88+#ifndef ARCH_IS_BIG_ENDIAN
89+ BSWAP(tmp);
90+#endif
91+ ld->bufb = tmp;
92+ ld->tail++;
93+ ld->pos -= 32;
94+ }
11495 }
11596
11697 /* return next n bits (right adjusted) */
11798 static bits_inline unsigned int faad_getbits(bitfile *ld, int n DEBUGDEC)
11899 {
119− long l;
120−
121− l = faad_showbits(ld, n);
122− faad_flushbits(ld, n);
100+ unsigned long ret = faad_showbits(ld, n);
101+ faad_flushbits(ld, n);
123102
124103 #ifdef ANALYSIS
125104 if (print)
126− fprintf(stdout, "%4d %2d bits, val: %4d, variable: %d %s\n", dbg_count++, n, l, var, dbg);
105+ fprintf(stdout, "%4d %2d bits, val: %4d, variable: %d %s\n", dbg_count++, n, ret, var, dbg);
127106 #endif
128107
129− return l;
108+ return ret;
130109 }
131110
132111 static bits_inline unsigned int faad_get1bit(bitfile *ld DEBUGDEC)
133112 {
134− unsigned char l;
135−
136− l = *ld->rdptr << ld->bitcnt;
137−
138− ld->bitcnt++;
139− ld->framebits++;
140− ld->rdptr += (ld->bitcnt>>3);
141− ld->bitcnt &= 7;
142−
143−#ifdef ANALYSIS
144− if (print)
145− fprintf(stdout, "%4d 1 bits, val: %4d, variable: %d %s\n", dbg_count++, l>>7, var, dbg);
146−#endif
147−
148− return l>>7;
113+ return faad_getbits(ld, 1 DEBUGVAR(print,var,dbg));
149114 }
150115
151116 #ifdef __cplusplus
libfaad/codebook/hcb.h+137−0
@@ -0,0 +1,137 @@
1+/*
2+** FAAD - Freeware Advanced Audio Decoder
3+** Copyright (C) 2002 M. Bakker
4+**
5+** This program is free software; you can redistribute it and/or modify
6+** it under the terms of the GNU General Public License as published by
7+** the Free Software Foundation; either version 2 of the License, or
8+** (at your option) any later version.
9+**
10+** This program is distributed in the hope that it will be useful,
11+** but WITHOUT ANY WARRANTY; without even the implied warranty of
12+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+** GNU General Public License for more details.
14+**
15+** You should have received a copy of the GNU General Public License
16+** along with this program; if not, write to the Free Software
17+** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18+**
19+** $Id: hcb.h,v 1.1 2002/02/15 20:52:10 menno Exp $
20+**/
21+
22+#ifndef __HCB_H__
23+#define __HCB_H__
24+
25+#ifdef __cplusplus
26+extern "C" {
27+#endif
28+
29+/*
30+ * Optimal huffman decoding for AAC taken from:
31+ * "SELECTING AN OPTIMAL HUFFMAN DECODER FOR AAC" by
32+ * VLADIMIR Z. MESAROVIC , RAGHUNATH RAO, MIROSLAV V. DOKIC, and SACHIN DEO
33+ * AES paper 5436
34+ *
35+ * 2 methods are used for huffman decoding:
36+ * - binary search
37+ * - 2-step table lookup
38+ *
39+ * The choice of the "optimal" method is based on the fact that if the
40+ * memory size for the Two-step is exorbitantly high then the decision
41+ * is Binary search for that codebook. However, for marginally more memory
42+ * size, if Twostep outperforms even the best case of Binary then the
43+ * decision is Two-step for that codebook.
44+ *
45+ * The following methods are used for the different tables.
46+ * codebook "optimal" method
47+ * HCB_1 2-Step
48+ * HCB_2 2-Step
49+ * HCB_3 Binary
50+ * HCB_4 2-Step
51+ * HCB_5 Binary
52+ * HCB_6 2-Step
53+ * HCB_7 Binary
54+ * HCB_8 2-Step
55+ * HCB_9 Binary
56+ * HCB_10 2-Step
57+ * HCB_11 2-Step
58+ * HCB_SF Binary
59+ *
60+ */
61+
62+
63+#define ZERO_HCB 0
64+#define FIRST_PAIR_HCB 5
65+#define ESC_HCB 11
66+#define QUAD_LEN 4
67+#define PAIR_LEN 2
68+#define NSPECBOOKS ESC_HCB + 1
69+#define BOOKSCL NSPECBOOKS
70+#define NOISE_HCB 13
71+#define INTENSITY_HCB2 14
72+#define INTENSITY_HCB 15
73+
74+/* 1st step table */
75+typedef struct
76+{
77+ unsigned char offset;
78+ unsigned char extra_bits;
79+} hcb;
80+
81+/* 2nd step table with quadruple data */
82+typedef struct
83+{
84+ unsigned char bits;
85+ char x;
86+ char y;
87+} hcb_2_pair;
88+
89+typedef struct
90+{
91+ unsigned char bits;
92+ char x;
93+ char y;
94+ char v;
95+ char w;
96+} hcb_2_quad;
97+
98+/* binary search table */
99+typedef struct
100+{
101+ unsigned char is_leaf;
102+ char data[4];
103+} hcb_bin_quad;
104+
105+typedef struct
106+{
107+ unsigned char is_leaf;
108+ char data[2];
109+} hcb_bin_pair;
110+
111+extern hcb hcb1_1[];
112+extern hcb hcb2_1[];
113+extern hcb hcb4_1[];
114+extern hcb hcb6_1[];
115+extern hcb hcb8_1[];
116+extern hcb hcb10_1[];
117+extern hcb hcb11_1[];
118+
119+extern hcb_2_quad hcb1_2[];
120+extern hcb_2_quad hcb2_2[];
121+extern hcb_2_quad hcb4_2[];
122+extern hcb_2_pair hcb6_2[];
123+extern hcb_2_pair hcb8_2[];
124+extern hcb_2_pair hcb10_2[];
125+extern hcb_2_pair hcb11_2[];
126+
127+extern hcb_bin_quad hcb3[];
128+extern hcb_bin_pair hcb5[];
129+extern hcb_bin_pair hcb7[];
130+extern hcb_bin_pair hcb9[];
131+
132+extern char hcb_sf[][2];
133+
134+#ifdef __cplusplus
135+}
136+#endif
137+#endif
libfaad/codebook/hcb_1.c+179−0
@@ -0,0 +1,179 @@
1+/*
2+** FAAD - Freeware Advanced Audio Decoder
3+** Copyright (C) 2002 M. Bakker
4+**
5+** This program is free software; you can redistribute it and/or modify
6+** it under the terms of the GNU General Public License as published by
7+** the Free Software Foundation; either version 2 of the License, or
8+** (at your option) any later version.
9+**
10+** This program is distributed in the hope that it will be useful,
11+** but WITHOUT ANY WARRANTY; without even the implied warranty of
12+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+** GNU General Public License for more details.
14+**
15+** You should have received a copy of the GNU General Public License
16+** along with this program; if not, write to the Free Software
17+** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18+**
19+** $Id: hcb_1.c,v 1.1 2002/02/15 20:52:10 menno Exp $
20+**/
21+
22+#include "hcb.h"
23+
24+/* 2-step huffman table HCB_1 */
25+
26+
27+/* 1st step: 5 bits
28+ * 2^5 = 32 entries
29+ *
30+ * Used to find offset into 2nd step table and number of extra bits to get
31+ */
32+extern hcb hcb1_1[] = {
33+ { /* 00000 */ 0, 0 },
34+ { /* */ 0, 0 },
35+ { /* */ 0, 0 },
36+ { /* */ 0, 0 },
37+ { /* */ 0, 0 },
38+ { /* */ 0, 0 },
39+ { /* */ 0, 0 },
40+ { /* */ 0, 0 },
41+ { /* */ 0, 0 },
42+ { /* */ 0, 0 },
43+ { /* */ 0, 0 },
44+ { /* */ 0, 0 },
45+ { /* */ 0, 0 },
46+ { /* */ 0, 0 },
47+ { /* */ 0, 0 },
48+ { /* */ 0, 0 },
49+ { /* 10000 */ 1, 0 },
50+ { /* 10001 */ 2, 0 },
51+ { /* 10010 */ 3, 0 },
52+ { /* 10011 */ 4, 0 },
53+ { /* 10100 */ 5, 0 },
54+ { /* 10101 */ 6, 0 },
55+ { /* 10110 */ 7, 0 },
56+ { /* 10111 */ 8, 0 },
57+
58+ /* 7 bit codewords */
59+ { /* 11000 */ 9, 2 },
60+ { /* 11001 */ 13, 2 },
61+ { /* 11010 */ 17, 2 },
62+ { /* 11011 */ 21, 2 },
63+ { /* 11100 */ 25, 2 },
64+ { /* 11101 */ 29, 2 },
65+
66+ /* 9 bit codewords */
67+ { /* 11110 */ 33, 4 },
68+
69+ /* 9/10/11 bit codewords */
70+ { /* 11111 */ 49, 6 }
71+};
72+
73+/* 2nd step table
74+ *
75+ * Gives size of codeword and actual data (x,y,v,w)
76+ */
77+extern hcb_2_quad hcb1_2[] = {
78+ /* 1 bit codeword */
79+ { 1, 0, 0, 0, 0 },
80+
81+ /* 5 bit codewords */
82+ { 5, 1, 0, 0, 0 },
83+ { 5, -1, 0, 0, 0 },
84+ { 5, 0, 0, 0, -1 },
85+ { 5, 0, 1, 0, 0 },
86+ { 5, 0, 0, 0, 1 },
87+ { 5, 0, 0, -1, 0 },
88+ { 5, 0, 0, 1, 0 },
89+ { 5, 0, -1, 0, 0 },
90+
91+ /* 7 bit codewords */
92+ /* first 5 bits: 11000 */
93+ { 7, 1, -1, 0, 0 },
94+ { 7, -1, 1, 0, 0 },
95+ { 7, 0, 0, -1, 1 },
96+ { 7, 0, 1, -1, 0 },
97+ /* first 5 bits: 11001 */
98+ { 7, 0, -1, 1, 0 },
99+ { 7, 0, 0, 1, -1 },
100+ { 7, 1, 1, 0, 0 },
101+ { 7, 0, 0, -1, -1 },
102+ /* first 5 bits: 11010 */
103+ { 7, -1, -1, 0, 0 },
104+ { 7, 0, -1, -1, 0 },
105+ { 7, 1, 0, -1, 0 },
106+ { 7, 0, 1, 0, -1 },
107+ /* first 5 bits: 11011 */
108+ { 7, -1, 0, 1, 0 },
109+ { 7, 0, 0, 1, 1 },
110+ { 7, 1, 0, 1, 0 },
111+ { 7, 0, -1, 0, 1 },
112+ /* first 5 bits: 11100 */
113+ { 7, 0, 1, 1, 0 },
114+ { 7, 0, 1, 0, 1 },
115+ { 7, -1, 0, -1, 0 },
116+ { 7, 1, 0, 0, 1 },
117+ /* first 5 bits: 11101 */
118+ { 7, -1, 0, 0, -1 },
119+ { 7, 1, 0, 0, -1 },
120+ { 7, -1, 0, 0, 1 },
121+ { 7, 0, -1, 0, -1 },
122+
123+ /* 9 bit codeword */
124+ /* first 5 bits: 11110 */
125+ { 9, 1, 1, -1, 0 },
126+ { 9, -1, 1, -1, 0 },
127+ { 9, 1, -1, 1, 0 },
128+ { 9, 0, 1, 1, -1 },
129+ { 9, 0, 1, -1, 1 },
130+ { 9, 0, -1, 1, 1 },
131+ { 9, 0, -1, 1, -1 },
132+ { 9, 1, -1, -1, 0 },
133+ { 9, 1, 0, -1, 1 },
134+ { 9, 0, 1, -1, -1 },
135+ { 9, -1, 1, 1, 0 },
136+ { 9, -1, 0, 1, -1 },
137+ { 9, -1, -1, 1, 0 },
138+ { 9, 0, -1, -1, 1 },
139+ { 9, 1, -1, 0, 1 },
140+ { 9, 1, -1, 0, -1 },
141+
142+ /* 9/10/11 bit codewords */
143+ /* first 5 bits: 11111 */
144+ /* 9 bit: reading 11 bits -> 2 too much so 4 entries for each codeword */
145+ { 9, -1, 1, 0, -1 }, { 9, -1, 1, 0, -1 }, { 9, -1, 1, 0, -1 }, { 9, -1, 1, 0, -1 },
146+ { 9, -1, -1, -1, 0 }, { 9, -1, -1, -1, 0 }, { 9, -1, -1, -1, 0 }, { 9, -1, -1, -1, 0 },
147+ { 9, 0, -1, -1, -1 }, { 9, 0, -1, -1, -1 }, { 9, 0, -1, -1, -1 }, { 9, 0, -1, -1, -1 },
148+ { 9, 0, 1, 1, 1 }, { 9, 0, 1, 1, 1 }, { 9, 0, 1, 1, 1 }, { 9, 0, 1, 1, 1 },
149+ { 9, 1, 0, 1, -1 }, { 9, 1, 0, 1, -1 }, { 9, 1, 0, 1, -1 }, { 9, 1, 0, 1, -1 },
150+ { 9, 1, 1, 0, 1 }, { 9, 1, 1, 0, 1 }, { 9, 1, 1, 0, 1 }, { 9, 1, 1, 0, 1 },
151+ { 9, -1, 1, 0, 1 }, { 9, -1, 1, 0, 1 }, { 9, -1, 1, 0, 1 }, { 9, -1, 1, 0, 1 },
152+ { 9, 1, 1, 1, 0 }, { 9, 1, 1, 1, 0 }, { 9, 1, 1, 1, 0 }, { 9, 1, 1, 1, 0 },
153+ /* 10 bit: reading 11 bits -> 1 too much so 2 entries for each codeword */
154+ { 10, -1, -1, 0, 1 }, { 10, -1, -1, 0, 1 },
155+ { 10, -1, 0, -1, -1 }, { 10, -1, 0, -1, -1 },
156+ { 10, 1, 1, 0, -1 }, { 10, 1, 1, 0, -1 },
157+ { 10, 1, 0, -1, -1 }, { 10, 1, 0, -1, -1 },
158+ { 10, -1, 0, -1, 1 }, { 10, -1, 0, -1, 1 },
159+ { 10, -1, -1, 0, -1 }, { 10, -1, -1, 0, -1 },
160+ { 10, -1, 0, 1, 1 }, { 10, -1, 0, 1, 1 },
161+ { 10, 1, 0, 1, 1 }, { 10, 1, 0, 1, 1 },
162+ /* 11 bit */
163+ { 11, 1, -1, 1, -1 },
164+ { 11, -1, 1, -1, 1 },
165+ { 11, -1, 1, 1, -1 },
166+ { 11, 1, -1, -1, 1 },
167+ { 11, 1, 1, 1, 1 },
168+ { 11, -1, -1, 1, 1 },
169+ { 11, 1, 1, -1, -1 },
170+ { 11, -1, -1, 1, -1 },
171+ { 11, -1, -1, -1, -1 },
172+ { 11, 1, 1, -1, 1 },
173+ { 11, 1, -1, 1, 1 },
174+ { 11, -1, 1, 1, 1 },
175+ { 11, -1, 1, -1, -1 },
176+ { 11, -1, -1, -1, 1 },
177+ { 11, 1, -1, -1, -1 },
178+ { 11, 1, 1, 1, -1 }
179+};
libfaad/codebook/hcb_10.c+305−0
@@ -0,0 +1,305 @@
1+/*
2+** FAAD - Freeware Advanced Audio Decoder
3+** Copyright (C) 2002 M. Bakker
4+**
5+** This program is free software; you can redistribute it and/or modify
6+** it under the terms of the GNU General Public License as published by
7+** the Free Software Foundation; either version 2 of the License, or
8+** (at your option) any later version.
9+**
10+** This program is distributed in the hope that it will be useful,
11+** but WITHOUT ANY WARRANTY; without even the implied warranty of
12+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+** GNU General Public License for more details.
14+**
15+** You should have received a copy of the GNU General Public License
16+** along with this program; if not, write to the Free Software
17+** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18+**
19+** $Id: hcb_10.c,v 1.1 2002/02/15 20:52:10 menno Exp $
20+**/
21+
22+#include "hcb.h"
23+
24+/* 2-step huffman table HCB_10 */
25+
26+
27+/* 1st step: 6 bits
28+ * 2^6 = 64 entries
29+ *
30+ * Used to find offset into 2nd step table and number of extra bits to get
31+ */
32+extern hcb hcb10_1[] = {
33+ /* 4 bit codewords */
34+ { /* 000000 */ 0, 0 },
35+ { /* */ 0, 0 },
36+ { /* */ 0, 0 },
37+ { /* */ 0, 0 },
38+ { /* 000100 */ 1, 0 },
39+ { /* */ 1, 0 },
40+ { /* */ 1, 0 },
41+ { /* */ 1, 0 },
42+ { /* 001000 */ 2, 0 },
43+ { /* */ 2, 0 },
44+ { /* */ 2, 0 },
45+ { /* */ 2, 0 },
46+ /* 5 bit codewords */
47+ { /* 001100 */ 3, 0 },
48+ { /* */ 3, 0 },
49+ { /* 001110 */ 4, 0 },
50+ { /* */ 4, 0 },
51+ { /* 010000 */ 5, 0 },
52+ { /* */ 5, 0 },
53+ { /* 010010 */ 6, 0 },
54+ { /* */ 6, 0 },
55+ { /* 010100 */ 7, 0 },
56+ { /* */ 7, 0 },
57+ { /* 010110 */ 8, 0 },
58+ { /* */ 8, 0 },
59+ { /* 011000 */ 9, 0 },
60+ { /* */ 9, 0 },
61+ { /* 011010 */ 10, 0 },
62+ { /* */ 10, 0 },
63+ /* 6 bit codewords */
64+ { /* 011100 */ 11, 0 },
65+ { /* 011101 */ 12, 0 },
66+ { /* 011110 */ 13, 0 },
67+ { /* 011111 */ 14, 0 },
68+ { /* 100000 */ 15, 0 },
69+ { /* 100001 */ 16, 0 },
70+ { /* 100010 */ 17, 0 },
71+ { /* 100011 */ 18, 0 },
72+ { /* 100100 */ 19, 0 },
73+ { /* 100101 */ 20, 0 },
74+ { /* 100110 */ 21, 0 },
75+ { /* 100111 */ 22, 0 },
76+ { /* 101000 */ 23, 0 },
77+ { /* 101001 */ 24, 0 },
78+ /* 7 bit codewords */
79+ { /* 101010 */ 25, 1 },
80+ { /* 101011 */ 27, 1 },
81+ { /* 101100 */ 29, 1 },
82+ { /* 101101 */ 31, 1 },
83+ { /* 101110 */ 33, 1 },
84+ { /* 101111 */ 35, 1 },
85+ { /* 110000 */ 37, 1 },
86+ { /* 110001 */ 39, 1 },
87+ /* 7/8 bit codewords */
88+ { /* 110010 */ 41, 2 },
89+ /* 8 bit codewords */
90+ { /* 110011 */ 45, 2 },
91+ { /* 110100 */ 49, 2 },
92+ { /* 110101 */ 53, 2 },
93+ { /* 110110 */ 57, 2 },
94+ { /* 110111 */ 61, 2 },
95+ /* 8/9 bit codewords */
96+ { /* 111000 */ 65, 3 },
97+ /* 9 bit codewords */
98+ { /* 111001 */ 73, 3 },
99+ { /* 111010 */ 81, 3 },
100+ { /* 111011 */ 89, 3 },
101+ /* 9/10 bit codewords */
102+ { /* 111100 */ 97, 4 },
103+ /* 10 bit codewords */
104+ { /* 111101 */ 113, 4 },
105+ { /* 111110 */ 129, 4 },
106+ /* 10/11/12 bit codewords */
107+ { /* 111111 */ 145, 6 }
108+};
109+
110+/* 2nd step table
111+ *
112+ * Gives size of codeword and actual data (x,y,v,w)
113+ */
114+extern hcb_2_pair hcb10_2[] = {
115+ /* 4 bit codewords */
116+ { 4, 1, 1 },
117+ { 4, 1, 2 },
118+ { 4, 2, 1 },
119+
120+ /* 5 bit codewords */
121+ { 5, 2, 2 },
122+ { 5, 1, 0 },
123+ { 5, 0, 1 },
124+ { 5, 1, 3 },
125+ { 5, 3, 2 },
126+ { 5, 3, 1 },
127+ { 5, 2, 3 },
128+ { 5, 3, 3 },
129+
130+ /* 6 bit codewords */
131+ { 6, 2, 0 },
132+ { 6, 0, 2 },
133+ { 6, 2, 4 },
134+ { 6, 4, 2 },
135+ { 6, 1, 4 },
136+ { 6, 4, 1 },
137+ { 6, 0, 0 },
138+ { 6, 4, 3 },
139+ { 6, 3, 4 },
140+ { 6, 3, 0 },
141+ { 6, 0, 3 },
142+ { 6, 4, 4 },
143+ { 6, 2, 5 },
144+ { 6, 5, 2 },
145+
146+ /* 7 bit codewords */
147+ { 7, 1, 5 },
148+ { 7, 5, 1 },
149+ { 7, 5, 3 },
150+ { 7, 3, 5 },
151+ { 7, 5, 4 },
152+ { 7, 4, 5 },
153+ { 7, 6, 2 },
154+ { 7, 2, 6 },
155+ { 7, 6, 3 },
156+ { 7, 4, 0 },
157+ { 7, 6, 1 },
158+ { 7, 0, 4 },
159+ { 7, 1, 6 },
160+ { 7, 3, 6 },
161+ { 7, 5, 5 },
162+ { 7, 6, 4 },
163+
164+ /* 7/8 bit codewords */
165+ { 7, 4, 6 }, { 7, 4, 6 },
166+ { 8, 6, 5 },
167+ { 8, 7, 2 },
168+
169+ /* 8 bit codewords */
170+ { 8, 3, 7 },
171+ { 8, 2, 7 },
172+ { 8, 5, 6 },
173+ { 8, 8, 2 },
174+ { 8, 7, 3 },
175+ { 8, 5, 0 },
176+ { 8, 7, 1 },
177+ { 8, 0, 5 },
178+ { 8, 8, 1 },
179+ { 8, 1, 7 },
180+ { 8, 8, 3 },
181+ { 8, 7, 4 },
182+ { 8, 4, 7 },
183+ { 8, 2, 8 },
184+ { 8, 6, 6 },
185+ { 8, 7, 5 },
186+ { 8, 1, 8 },
187+ { 8, 3, 8 },
188+ { 8, 8, 4 },
189+ { 8, 4, 8 },
190+
191+ /* 8/9 bit codewords */
192+ { 8, 5, 7 }, { 8, 5, 7 },
193+ { 8, 8, 5 }, { 8, 8, 5 },
194+ { 8, 5, 8 }, { 8, 5, 8 },
195+ { 9, 7, 6 },
196+ { 9, 6, 7 },
197+
198+ /* 9 bit codewords */
199+ { 9, 9, 2 },
200+ { 9, 6, 0 },
201+ { 9, 6, 8 },
202+ { 9, 9, 3 },
203+ { 9, 3, 9 },
204+ { 9, 9, 1 },
205+ { 9, 2, 9 },
206+ { 9, 0, 6 },
207+ { 9, 8, 6 },
208+ { 9, 9, 4 },
209+ { 9, 4, 9 },
210+ { 9, 10, 2 },
211+ { 9, 1, 9 },
212+ { 9, 7, 7 },
213+ { 9, 8, 7 },
214+ { 9, 9, 5 },
215+ { 9, 7, 8 },
216+ { 9, 10, 3 },
217+ { 9, 5, 9 },
218+ { 9, 10, 4 },
219+ { 9, 2, 10 },
220+ { 9, 10, 1 },
221+ { 9, 3, 10 },
222+ { 9, 9, 6 },
223+
224+ /* 9/10 bit codewords */
225+ { 9, 6, 9 }, { 9, 6, 9 },
226+ { 9, 8, 0 }, { 9, 8, 0 },
227+ { 9, 4, 10 }, { 9, 4, 10 },
228+ { 9, 7, 0 }, { 9, 7, 0 },
229+ { 9, 11, 2 }, { 9, 11, 2 },
230+ { 10, 7, 9 },
231+ { 10, 11, 3 },
232+ { 10, 10, 6 },
233+ { 10, 1, 10 },
234+ { 10, 11, 1 },
235+ { 10, 9, 7 },
236+
237+ /* 10 bit codewords */
238+ { 10, 0, 7 },
239+ { 10, 8, 8 },
240+ { 10, 10, 5 },
241+ { 10, 3, 11 },
242+ { 10, 5, 10 },
243+ { 10, 8, 9 },
244+ { 10, 11, 5 },
245+ { 10, 0, 8 },
246+ { 10, 11, 4 },
247+ { 10, 2, 11 },
248+ { 10, 7, 10 },
249+ { 10, 6, 10 },
250+ { 10, 10, 7 },
251+ { 10, 4, 11 },
252+ { 10, 1, 11 },
253+ { 10, 12, 2 },
254+ { 10, 9, 8 },
255+ { 10, 12, 3 },
256+ { 10, 11, 6 },
257+ { 10, 5, 11 },
258+ { 10, 12, 4 },
259+ { 10, 11, 7 },
260+ { 10, 12, 5 },
261+ { 10, 3, 12 },
262+ { 10, 6, 11 },
263+ { 10, 9, 0 },
264+ { 10, 10, 8 },
265+ { 10, 10, 0 },
266+ { 10, 12, 1 },
267+ { 10, 0, 9 },
268+ { 10, 4, 12 },
269+ { 10, 9, 9 },
270+
271+ /* 10/11/12 bit codewords */
272+ { 10, 12, 6 }, { 10, 12, 6 }, { 10, 12, 6 }, { 10, 12, 6 },
273+ { 10, 2, 12 }, { 10, 2, 12 }, { 10, 2, 12 }, { 10, 2, 12 },
274+ { 10, 8, 10 }, { 10, 8, 10 }, { 10, 8, 10 }, { 10, 8, 10 },
275+ { 11, 9, 10 }, { 11, 9, 10 },
276+ { 11, 1, 12 }, { 11, 1, 12 },
277+ { 11, 11, 8 }, { 11, 11, 8 },
278+ { 11, 12, 7 }, { 11, 12, 7 },
279+ { 11, 7, 11 }, { 11, 7, 11 },
280+ { 11, 5, 12 }, { 11, 5, 12 },
281+ { 11, 6, 12 }, { 11, 6, 12 },
282+ { 11, 10, 9 }, { 11, 10, 9 },
283+ { 11, 8, 11 }, { 11, 8, 11 },
284+ { 11, 12, 8 }, { 11, 12, 8 },
285+ { 11, 0, 10 }, { 11, 0, 10 },
286+ { 11, 7, 12 }, { 11, 7, 12 },
287+ { 11, 11, 0 }, { 11, 11, 0 },
288+ { 11, 10, 10 }, { 11, 10, 10 },
289+ { 11, 11, 9 }, { 11, 11, 9 },
290+ { 11, 11, 10 }, { 11, 11, 10 },
291+ { 11, 0, 11 }, { 11, 0, 11 },
292+ { 11, 11, 11 }, { 11, 11, 11 },
293+ { 11, 9, 11 }, { 11, 9, 11 },
294+ { 11, 10, 11 }, { 11, 10, 11 },
295+ { 11, 12, 0 }, { 11, 12, 0 },
296+ { 11, 8, 12 }, { 11, 8, 12 },
297+ { 12, 12, 9 },
298+ { 12, 10, 12 },
299+ { 12, 9, 12 },
300+ { 12, 11, 12 },
301+ { 12, 12, 11 },
302+ { 12, 0, 12 },
303+ { 12, 12, 10 },
304+ { 12, 12, 12 }
305+};
libfaad/codebook/hcb_11.c+408−0
@@ -0,0 +1,408 @@
1+/*
2+** FAAD - Freeware Advanced Audio Decoder
3+** Copyright (C) 2002 M. Bakker
4+**
5+** This program is free software; you can redistribute it and/or modify
6+** it under the terms of the GNU General Public License as published by
7+** the Free Software Foundation; either version 2 of the License, or
8+** (at your option) any later version.
9+**
10+** This program is distributed in the hope that it will be useful,
11+** but WITHOUT ANY WARRANTY; without even the implied warranty of
12+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+** GNU General Public License for more details.
14+**
15+** You should have received a copy of the GNU General Public License
16+** along with this program; if not, write to the Free Software
17+** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18+**
19+** $Id: hcb_11.c,v 1.1 2002/02/15 20:52:10 menno Exp $
20+**/
21+
22+#include "hcb.h"
23+
24+/* 2-step huffman table HCB_11 */
25+
26+
27+/* 1st step: 5 bits
28+ * 2^5 = 32 entries
29+ *
30+ * Used to find offset into 2nd step table and number of extra bits to get
31+ */
32+extern hcb hcb11_1[] = {
33+ /* 4 bits */
34+ { /* 00000 */ 0, 0 },
35+ { /* */ 0, 0 },
36+ { /* 00010 */ 1, 0 },
37+ { /* */ 1, 0 },
38+
39+ /* 5 bits */
40+ { /* 00100 */ 2, 0 },
41+ { /* 00101 */ 3, 0 },
42+ { /* 00110 */ 4, 0 },
43+ { /* 00111 */ 5, 0 },
44+ { /* 01000 */ 6, 0 },
45+ { /* 01001 */ 7, 0 },
46+
47+ /* 6 bits */
48+ { /* 01010 */ 8, 1 },
49+ { /* 01011 */ 10, 1 },
50+ { /* 01100 */ 12, 1 },
51+
52+ /* 6/7 bits */
53+ { /* 01101 */ 14, 2 },
54+
55+ /* 7 bits */
56+ { /* 01110 */ 18, 2 },
57+ { /* 01111 */ 22, 2 },
58+ { /* 10000 */ 26, 2 },
59+
60+ /* 7/8 bits */
61+ { /* 10001 */ 30, 3 },
62+
63+ /* 8 bits */
64+ { /* 10010 */ 38, 3 },
65+ { /* 10011 */ 46, 3 },
66+ { /* 10100 */ 54, 3 },
67+ { /* 10101 */ 62, 3 },
68+ { /* 10110 */ 70, 3 },
69+ { /* 10111 */ 78, 3 },
70+
71+ /* 8/9 bits */
72+ { /* 11000 */ 86, 4 },
73+
74+ /* 9 bits */
75+ { /* 11001 */ 102, 4 },
76+ { /* 11010 */ 118, 4 },
77+ { /* 11011 */ 134, 4 },
78+
79+ /* 9/10 bits */
80+ { /* 11100 */ 150, 5 },
81+
82+ /* 10 bits */
83+ { /* 11101 */ 182, 5 },
84+ { /* 11110 */ 214, 5 },
85+
86+ /* 10/11/12 bits */
87+ { /* 11111 */ 246, 7 }
88+};
89+
90+/* 2nd step table
91+ *
92+ * Gives size of codeword and actual data (x,y,v,w)
93+ */
94+extern hcb_2_pair hcb11_2[] = {
95+ /* 4 */
96+ { 4, 0, 0 },
97+ { 4, 1, 1 },
98+
99+ /* 5 */
100+ { 5, 16, 16 },
101+ { 5, 1, 0 },
102+ { 5, 0, 1 },
103+ { 5, 2, 1 },
104+ { 5, 1, 2 },
105+ { 5, 2, 2 },
106+
107+ /* 6 */
108+ { 6, 1, 3 },
109+ { 6, 3, 1 },
110+ { 6, 3, 2 },
111+ { 6, 2, 0 },
112+ { 6, 2, 3 },
113+ { 6, 0, 2 },
114+
115+ /* 6/7 */
116+ { 6, 3, 3 }, { 6, 3, 3 },
117+ { 7, 4, 1 },
118+ { 7, 1, 4 },
119+
120+ /* 7 */
121+ { 7, 4, 2 },
122+ { 7, 2, 4 },
123+ { 7, 4, 3 },
124+ { 7, 3, 4 },
125+ { 7, 3, 0 },
126+ { 7, 0, 3 },
127+ { 7, 5, 1 },
128+ { 7, 5, 2 },
129+ { 7, 2, 5 },
130+ { 7, 4, 4 },
131+ { 7, 1, 5 },
132+ { 7, 5, 3 },
133+
134+ /* 7/8 */
135+ { 7, 3, 5 }, { 7, 3, 5 },
136+ { 7, 5, 4 }, { 7, 5, 4 },
137+ { 8, 4, 5 },
138+ { 8, 6, 2 },
139+ { 8, 2, 6 },
140+ { 8, 6, 1 },
141+
142+ /* 8 */
143+ { 8, 6, 3 },
144+ { 8, 3, 6 },
145+ { 8, 1, 6 },
146+ { 8, 4, 16 },
147+ { 8, 3, 16 },
148+ { 8, 16, 5 },
149+ { 8, 16, 3 },
150+ { 8, 16, 4 },
151+ { 8, 6, 4 },
152+ { 8, 16, 6 },
153+ { 8, 4, 0 },
154+ { 8, 4, 6 },
155+ { 8, 0, 4 },
156+ { 8, 2, 16 },
157+ { 8, 5, 5 },
158+ { 8, 5, 16 },
159+ { 8, 16, 7 },
160+ { 8, 16, 2 },
161+ { 8, 16, 8 },
162+ { 8, 2, 7 },
163+ { 8, 7, 2 },
164+ { 8, 3, 7 },
165+ { 8, 6, 5 },
166+ { 8, 5, 6 },
167+ { 8, 6, 16 },
168+ { 8, 16, 10 },
169+ { 8, 7, 3 },
170+ { 8, 7, 1 },
171+ { 8, 16, 9 },
172+ { 8, 7, 16 },
173+ { 8, 1, 16 },
174+ { 8, 1, 7 },
175+ { 8, 4, 7 },
176+ { 8, 16, 11 },
177+ { 8, 7, 4 },
178+ { 8, 16, 12 },
179+ { 8, 8, 16 },
180+ { 8, 16, 1 },
181+ { 8, 6, 6 },
182+ { 8, 9, 16 },
183+ { 8, 2, 8 },
184+ { 8, 5, 7 },
185+ { 8, 10, 16 },
186+ { 8, 16, 13 },
187+ { 8, 8, 3 },
188+ { 8, 8, 2 },
189+ { 8, 3, 8 },
190+ { 8, 5, 0 },
191+
192+ /* 8/9 */
193+ { 8, 16, 14 }, { 8, 16, 14 },
194+ { 8, 11, 16 }, { 8, 11, 16 },
195+ { 8, 7, 5 }, { 8, 7, 5 },
196+ { 8, 4, 8 }, { 8, 4, 8 },
197+ { 8, 6, 7 }, { 8, 6, 7 },
198+ { 8, 7, 6 }, { 8, 7, 6 },
199+ { 8, 0, 5 }, { 8, 0, 5 },
200+ { 9, 8, 4 },
201+ { 9, 16, 15 },
202+
203+ /* 9 */
204+ { 9, 12, 16 },
205+ { 9, 1, 8 },
206+ { 9, 8, 1 },
207+ { 9, 14, 16 },
208+ { 9, 5, 8 },
209+ { 9, 13, 16 },
210+ { 9, 3, 9 },
211+ { 9, 8, 5 },
212+ { 9, 7, 7 },
213+ { 9, 2, 9 },
214+ { 9, 8, 6 },
215+ { 9, 9, 2 },
216+ { 9, 9, 3 },
217+ { 9, 15, 16 },
218+ { 9, 4, 9 },
219+ { 9, 6, 8 },
220+ { 9, 6, 0 },
221+ { 9, 9, 4 },
222+ { 9, 5, 9 },
223+ { 9, 8, 7 },
224+ { 9, 7, 8 },
225+ { 9, 1, 9 },
226+ { 9, 10, 3 },
227+ { 9, 0, 6 },
228+ { 9, 10, 2 },
229+ { 9, 9, 1 },
230+ { 9, 9, 5 },
231+ { 9, 4, 10 },
232+ { 9, 2, 10 },
233+ { 9, 9, 6 },
234+ { 9, 3, 10 },
235+ { 9, 6, 9 },
236+ { 9, 10, 4 },
237+ { 9, 8, 8 },
238+ { 9, 10, 5 },
239+ { 9, 9, 7 },
240+ { 9, 11, 3 },
241+ { 9, 1, 10 },
242+ { 9, 7, 0 },
243+ { 9, 10, 6 },
244+ { 9, 7, 9 },
245+ { 9, 3, 11 },
246+ { 9, 5, 10 },
247+ { 9, 10, 1 },
248+ { 9, 4, 11 },
249+ { 9, 11, 2 },
250+ { 9, 13, 2 },
251+ { 9, 6, 10 },
252+
253+ /* 9/10 */
254+ { 9, 13, 3 }, { 9, 13, 3 },
255+ { 9, 2, 11 }, { 9, 2, 11 },
256+ { 9, 16, 0 }, { 9, 16, 0 },
257+ { 9, 5, 11 }, { 9, 5, 11 },
258+ { 9, 11, 5 }, { 9, 11, 5 },
259+ { 10, 11, 4 },
260+ { 10, 9, 8 },
261+ { 10, 7, 10 },
262+ { 10, 8, 9 },
263+ { 10, 0, 16 },
264+ { 10, 4, 13 },
265+ { 10, 0, 7 },
266+ { 10, 3, 13 },
267+ { 10, 11, 6 },
268+ { 10, 13, 1 },
269+ { 10, 13, 4 },
270+ { 10, 12, 3 },
271+ { 10, 2, 13 },
272+ { 10, 13, 5 },
273+ { 10, 8, 10 },
274+ { 10, 6, 11 },
275+ { 10, 10, 8 },
276+ { 10, 10, 7 },
277+ { 10, 14, 2 },
278+ { 10, 12, 4 },
279+ { 10, 1, 11 },
280+ { 10, 4, 12 },
281+
282+ /* 10 */
283+ { 10, 11, 1 },
284+ { 10, 3, 12 },
285+ { 10, 1, 13 },
286+ { 10, 12, 2 },
287+ { 10, 7, 11 },
288+ { 10, 3, 14 },
289+ { 10, 5, 12 },
290+ { 10, 5, 13 },
291+ { 10, 14, 4 },
292+ { 10, 4, 14 },
293+ { 10, 11, 7 },
294+ { 10, 14, 3 },
295+ { 10, 12, 5 },
296+ { 10, 13, 6 },
297+ { 10, 12, 6 },
298+ { 10, 8, 0 },
299+ { 10, 11, 8 },
300+ { 10, 2, 12 },
301+ { 10, 9, 9 },
302+ { 10, 14, 5 },
303+ { 10, 6, 13 },
304+ { 10, 10, 10 },
305+ { 10, 15, 2 },
306+ { 10, 8, 11 },
307+ { 10, 9, 10 },
308+ { 10, 14, 6 },
309+ { 10, 10, 9 },
310+ { 10, 5, 14 },
311+ { 10, 11, 9 },
312+ { 10, 14, 1 },
313+ { 10, 2, 14 },
314+ { 10, 6, 12 },
315+ { 10, 1, 12 },
316+ { 10, 13, 8 },
317+ { 10, 0, 8 },
318+ { 10, 13, 7 },
319+ { 10, 7, 12 },
320+ { 10, 12, 7 },
321+ { 10, 7, 13 },
322+ { 10, 15, 3 },
323+ { 10, 12, 1 },
324+ { 10, 6, 14 },
325+ { 10, 2, 15 },
326+ { 10, 15, 5 },
327+ { 10, 15, 4 },
328+ { 10, 1, 14 },
329+ { 10, 9, 11 },
330+ { 10, 4, 15 },
331+ { 10, 14, 7 },
332+ { 10, 8, 13 },
333+ { 10, 13, 9 },
334+ { 10, 8, 12 },
335+ { 10, 5, 15 },
336+ { 10, 3, 15 },
337+ { 10, 10, 11 },
338+ { 10, 11, 10 },
339+ { 10, 12, 8 },
340+ { 10, 15, 6 },
341+ { 10, 15, 7 },
342+ { 10, 8, 14 },
343+ { 10, 15, 1 },
344+ { 10, 7, 14 },
345+ { 10, 9, 0 },
346+ { 10, 0, 9 },
347+
348+ /* 10/11/12 */
349+ { 10, 9, 13 }, { 10, 9, 13 }, { 10, 9, 13 }, { 10, 9, 13 },
350+ { 10, 9, 12 }, { 10, 9, 12 }, { 10, 9, 12 }, { 10, 9, 12 },
351+ { 10, 12, 9 }, { 10, 12, 9 }, { 10, 12, 9 }, { 10, 12, 9 },
352+ { 10, 14, 8 }, { 10, 14, 8 }, { 10, 14, 8 }, { 10, 14, 8 },
353+ { 10, 10, 13 }, { 10, 10, 13 }, { 10, 10, 13 }, { 10, 10, 13 },
354+ { 10, 14, 9 }, { 10, 14, 9 }, { 10, 14, 9 }, { 10, 14, 9 },
355+ { 10, 12, 10 }, { 10, 12, 10 }, { 10, 12, 10 }, { 10, 12, 10 },
356+ { 10, 6, 15 }, { 10, 6, 15 }, { 10, 6, 15 }, { 10, 6, 15 },
357+ { 10, 7, 15 }, { 10, 7, 15 }, { 10, 7, 15 }, { 10, 7, 15 },
358+
359+ { 11, 9, 14 }, { 11, 9, 14 },
360+ { 11, 15, 8 }, { 11, 15, 8 },
361+ { 11, 11, 11 }, { 11, 11, 11 },
362+ { 11, 11, 14 }, { 11, 11, 14 },
363+ { 11, 1, 15 }, { 11, 1, 15 },
364+ { 11, 10, 12 }, { 11, 10, 12 },
365+ { 11, 10, 14 }, { 11, 10, 14 },
366+ { 11, 13, 11 }, { 11, 13, 11 },
367+ { 11, 13, 10 }, { 11, 13, 10 },
368+ { 11, 11, 13 }, { 11, 11, 13 },
369+ { 11, 11, 12 }, { 11, 11, 12 },
370+ { 11, 8, 15 }, { 11, 8, 15 },
371+ { 11, 14, 11 }, { 11, 14, 11 },
372+ { 11, 13, 12 }, { 11, 13, 12 },
373+ { 11, 12, 13 }, { 11, 12, 13 },
374+ { 11, 15, 9 }, { 11, 15, 9 },
375+ { 11, 14, 10 }, { 11, 14, 10 },
376+ { 11, 10, 0 }, { 11, 10, 0 },
377+ { 11, 12, 11 }, { 11, 12, 11 },
378+ { 11, 9, 15 }, { 11, 9, 15 },
379+ { 11, 0, 10 }, { 11, 0, 10 },
380+ { 11, 12, 12 }, { 11, 12, 12 },
381+ { 11, 11, 0 }, { 11, 11, 0 },
382+ { 11, 12, 14 }, { 11, 12, 14 },
383+ { 11, 10, 15 }, { 11, 10, 15 },
384+ { 11, 13, 13 }, { 11, 13, 13 },
385+ { 11, 0, 13 }, { 11, 0, 13 },
386+ { 11, 14, 12 }, { 11, 14, 12 },
387+ { 11, 15, 10 }, { 11, 15, 10 },
388+ { 11, 15, 11 }, { 11, 15, 11 },
389+ { 11, 11, 15 }, { 11, 11, 15 },
390+ { 11, 14, 13 }, { 11, 14, 13 },
391+ { 11, 13, 0 }, { 11, 13, 0 },
392+ { 11, 0, 11 }, { 11, 0, 11 },
393+ { 11, 13, 14 }, { 11, 13, 14 },
394+ { 11, 15, 12 }, { 11, 15, 12 },
395+ { 11, 15, 13 }, { 11, 15, 13 },
396+ { 11, 12, 15 }, { 11, 12, 15 },
397+ { 11, 14, 0 }, { 11, 14, 0 },
398+ { 11, 14, 14 }, { 11, 14, 14 },
399+ { 11, 13, 15 }, { 11, 13, 15 },
400+ { 11, 12, 0 }, { 11, 12, 0 },
401+ { 11, 14, 15 }, { 11, 14, 15 },
402+ { 12, 0, 14 },
403+ { 12, 0, 12 },
404+ { 12, 15, 14 },
405+ { 12, 15, 0 },
406+ { 12, 0, 15 },
407+ { 12, 15, 15 }
408+};
libfaad/codebook/hcb_2.c+178−0
@@ -0,0 +1,178 @@
1+/*
2+** FAAD - Freeware Advanced Audio Decoder
3+** Copyright (C) 2002 M. Bakker
4+**
5+** This program is free software; you can redistribute it and/or modify
6+** it under the terms of the GNU General Public License as published by
7+** the Free Software Foundation; either version 2 of the License, or
8+** (at your option) any later version.
9+**
10+** This program is distributed in the hope that it will be useful,
11+** but WITHOUT ANY WARRANTY; without even the implied warranty of
12+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+** GNU General Public License for more details.
14+**
15+** You should have received a copy of the GNU General Public License
16+** along with this program; if not, write to the Free Software
17+** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18+**
19+** $Id: hcb_2.c,v 1.1 2002/02/15 20:52:10 menno Exp $
20+**/
21+
22+#include "hcb.h"
23+
24+/* 2-step huffman table HCB_2 */
25+
26+
27+/* 1st step: 5 bits
28+ * 2^5 = 32 entries
29+ *
30+ * Used to find offset into 2nd step table and number of extra bits to get
31+ */
32+extern hcb hcb2_1[] = {
33+ { /* 00000 */ 0, 0 },
34+ { /* */ 0, 0 },
35+ { /* */ 0, 0 },
36+ { /* */ 0, 0 },
37+ { /* 00100 */ 1, 0 },
38+ { /* */ 1, 0 },
39+ { /* 00110 */ 2, 0 },
40+ { /* 00111 */ 3, 0 },
41+ { /* 01000 */ 4, 0 },
42+ { /* 01001 */ 5, 0 },
43+ { /* 01010 */ 6, 0 },
44+ { /* 01011 */ 7, 0 },
45+ { /* 01100 */ 8, 0 },
46+
47+ /* 6 bit codewords */
48+ { /* 01101 */ 9, 1 },
49+ { /* 01110 */ 11, 1 },
50+ { /* 01111 */ 13, 1 },
51+ { /* 10000 */ 15, 1 },
52+ { /* 10001 */ 17, 1 },
53+ { /* 10010 */ 19, 1 },
54+ { /* 10011 */ 21, 1 },
55+ { /* 10100 */ 23, 1 },
56+ { /* 10101 */ 25, 1 },
57+ { /* 10110 */ 27, 1 },
58+ { /* 10111 */ 29, 1 },
59+ { /* 11000 */ 31, 1 },
60+
61+ /* 7 bit codewords */
62+ { /* 11001 */ 33, 2 },
63+ { /* 11010 */ 37, 2 },
64+ { /* 11011 */ 41, 2 },
65+
66+ /* 7/8 bit codewords */
67+ { /* 11100 */ 45, 3 },
68+
69+ /* 8 bit codewords */
70+ { /* 11101 */ 53, 3 },
71+ { /* 11110 */ 61, 3 },
72+
73+ /* 8/9 bit codewords */
74+ { /* 11111 */ 69, 4 }
75+};
76+
77+/* 2nd step table
78+ *
79+ * Gives size of codeword and actual data (x,y,v,w)
80+ */
81+extern hcb_2_quad hcb2_2[] = {
82+ /* 3 bit codeword */
83+ { 3, 0, 0, 0, 0 },
84+
85+ /* 4 bit codeword */
86+ { 4, 1, 0, 0, 0 },
87+
88+ /* 5 bit codewords */
89+ { 5, -1, 0, 0, 0 },
90+ { 5, 0, 0, 0, 1 },
91+ { 5, 0, 0, -1, 0 },
92+ { 5, 0, 0, 0, -1 },
93+ { 5, 0, -1, 0, 0 },
94+ { 5, 0, 0, 1, 0 },
95+ { 5, 0, 1, 0, 0 },
96+
97+ /* 6 bit codewords */
98+ { 6, 0, -1, 1, 0 },
99+ { 6, -1, 1, 0, 0 },
100+ { 6, 0, 1, -1, 0 },
101+ { 6, 0, 0, 1, -1 },
102+ { 6, 0, 1, 0, -1 },
103+ { 6, 0, 0, -1, 1 },
104+ { 6, -1, 0, 0, -1 },
105+ { 6, 1, -1, 0, 0 },
106+ { 6, 1, 0, -1, 0 },
107+ { 6, -1, -1, 0, 0 },
108+ { 6, 0, 0, -1, -1 },
109+ { 6, 1, 0, 1, 0 },
110+ { 6, 1, 0, 0, 1 },
111+ { 6, 0, -1, 0, 1 },
112+ { 6, -1, 0, 1, 0 },
113+ { 6, 0, 1, 0, 1 },
114+ { 6, 0, -1, -1, 0 },
115+ { 6, -1, 0, 0, 1 },
116+ { 6, 0, -1, 0, -1 },
117+ { 6, -1, 0, -1, 0 },
118+ { 6, 1, 1, 0, 0 },
119+ { 6, 0, 1, 1, 0 },
120+ { 6, 0, 0, 1, 1 },
121+ { 6, 1, 0, 0, -1 },
122+
123+ /* 7 bit codewords */
124+ { 7, 0, 1, -1, 1 },
125+ { 7, 1, 0, -1, 1 },
126+ { 7, -1, 1, -1, 0 },
127+ { 7, 0, -1, 1, -1 },
128+ { 7, 1, -1, 1, 0 },
129+ { 7, 1, 1, 0, -1 },
130+ { 7, 1, 0, 1, 1 },
131+ { 7, -1, 1, 1, 0 },
132+ { 7, 0, -1, -1, 1 },
133+ { 7, 1, 1, 1, 0 },
134+ { 7, -1, 0, 1, -1 },
135+ { 7, -1, -1, -1, 0 },
136+
137+ /* 7/8 bit codewords */
138+ { 7, -1, 0, -1, 1 }, { 7, -1, 0, -1, 1 },
139+ { 7, 1, -1, -1, 0 }, { 7, 1, -1, -1, 0 },
140+ { 7, 1, 1, -1, 0 }, { 7, 1, 1, -1, 0 },
141+ { 8, 1, -1, 0, 1 },
142+ { 8, -1, 1, 0, -1 },
143+
144+ /* 8 bit codewords */
145+ { 8, -1, -1, 1, 0 },
146+ { 8, -1, 0, 1, 1 },
147+ { 8, -1, -1, 0, 1 },
148+ { 8, -1, -1, 0, -1 },
149+ { 8, 0, -1, -1, -1 },
150+ { 8, 1, 0, 1, -1 },
151+ { 8, 1, 0, -1, -1 },
152+ { 8, 0, 1, -1, -1 },
153+ { 8, 0, 1, 1, 1 },
154+ { 8, -1, 1, 0, 1 },
155+ { 8, -1, 0, -1, -1 },
156+ { 8, 0, 1, 1, -1 },
157+ { 8, 1, -1, 0, -1 },
158+ { 8, 0, -1, 1, 1 },
159+ { 8, 1, 1, 0, 1 },
160+ { 8, 1, -1, 1, -1 },
161+
162+ /* 8/9 bit codewords */
163+ { 8, -1, 1, -1, 1 }, { 8, -1, 1, -1, 1 },
164+ { 9, 1, -1, -1, 1 },
165+ { 9, -1, -1, -1, -1 },
166+ { 9, -1, 1, 1, -1 },
167+ { 9, -1, 1, 1, 1 },
168+ { 9, 1, 1, 1, 1 },
169+ { 9, -1, -1, 1, -1 },
170+ { 9, 1, -1, 1, 1 },
171+ { 9, -1, 1, -1, -1 },
172+ { 9, -1, -1, 1, 1 },
173+ { 9, 1, 1, -1, -1 },
174+ { 9, 1, -1, -1, -1 },
175+ { 9, -1, -1, -1, 1 },
176+ { 9, 1, 1, -1, 1 },
177+ { 9, 1, 1, 1, -1 }
178+};
libfaad/codebook/hcb_3.c+189−0
@@ -0,0 +1,189 @@
1+/*
2+** FAAD - Freeware Advanced Audio Decoder
3+** Copyright (C) 2002 M. Bakker
4+**
5+** This program is free software; you can redistribute it and/or modify
6+** it under the terms of the GNU General Public License as published by
7+** the Free Software Foundation; either version 2 of the License, or
8+** (at your option) any later version.
9+**
10+** This program is distributed in the hope that it will be useful,
11+** but WITHOUT ANY WARRANTY; without even the implied warranty of
12+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+** GNU General Public License for more details.
14+**
15+** You should have received a copy of the GNU General Public License
16+** along with this program; if not, write to the Free Software
17+** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18+**
19+** $Id: hcb_3.c,v 1.1 2002/02/15 20:52:10 menno Exp $
20+**/
21+
22+#include "hcb.h"
23+
24+/* Binary search huffman table HCB_3 */
25+
26+
27+extern hcb_bin_quad hcb3[] = {
28+ { /* 0 */ 0, { 1, 2, 0, 0 } },
29+ { /* 1 */ 1, { 0, 0, 0, 0 } }, /* 0 */
30+ { /* 2 */ 0, { 1, 2, 0, 0 } },
31+ { /* 3 */ 0, { 2, 3, 0, 0 } },
32+ { /* 4 */ 0, { 3, 4, 0, 0 } },
33+ { /* 5 */ 0, { 4, 5, 0, 0 } },
34+ { /* 6 */ 0, { 5, 6, 0, 0 } },
35+ { /* 7 */ 0, { 6, 7, 0, 0 } },
36+ { /* 8 */ 0, { 7, 8, 0, 0 } },
37+ { /* 9 */ 1, { 1, 0, 0, 0 } }, /* 1000 */
38+ { /* 10 */ 1, { 0, 0, 0, 1 } }, /* 1001 */
39+ { /* 11 */ 1, { 0, 1, 0, 0 } }, /* 1010 */
40+ { /* 12 */ 1, { 0, 0, 1, 0 } }, /* 1011 */
41+ { /* 13 */ 0, { 4, 5, 0, 0 } },
42+ { /* 14 */ 0, { 5, 6, 0, 0 } },
43+ { /* 15 */ 0, { 6, 7, 0, 0 } },
44+ { /* 16 */ 0, { 7, 8, 0, 0 } },
45+ { /* 17 */ 1, { 1, 1, 0, 0 } },
46+ { /* 18 */ 1, { 0, 0, 1, 1 } },
47+ { /* 19 */ 0, { 6, 7, 0, 0 } },
48+ { /* 20 */ 0, { 7, 8, 0, 0 } },
49+ { /* 21 */ 0, { 8, 9, 0, 0 } },
50+ { /* 22 */ 0, { 9, 10, 0, 0 } },
51+ { /* 23 */ 0, { 10, 11, 0, 0 } },
52+ { /* 24 */ 0, { 11, 12, 0, 0 } },
53+ { /* 25 */ 1, { 0, 1, 1, 0 } }, /* 110100 */
54+ { /* 26 */ 1, { 0, 1, 0, 1 } }, /* 110101 */
55+ { /* 27 */ 1, { 1, 0, 1, 0 } }, /* 110110 */
56+ { /* 28 */ 1, { 0, 1, 1, 1 } }, /* 110111 */
57+ { /* 29 */ 1, { 1, 0, 0, 1 } }, /* 111000 */
58+ { /* 30 */ 1, { 1, 1, 1, 0 } }, /* 111001 */
59+ { /* 31 */ 0, { 6, 7, 0, 0 } },
60+ { /* 32 */ 0, { 7, 8, 0, 0 } },
61+ { /* 33 */ 0, { 8, 9, 0, 0 } },
62+ { /* 34 */ 0, { 9, 10, 0, 0 } },
63+ { /* 35 */ 0, { 10, 11, 0, 0 } },
64+ { /* 36 */ 0, { 11, 12, 0, 0 } },
65+ { /* 37 */ 1, { 1, 1, 1, 1 } }, /* 1110100 */
66+ { /* 38 */ 1, { 1, 0, 1, 1 } }, /* 1110101 */
67+ { /* 39 */ 1, { 1, 1, 0, 1 } }, /* 1110110 */
68+ { /* 40 */ 0, { 9, 10, 0, 0 } },
69+ { /* 41 */ 0, { 10, 11, 0, 0 } },
70+ { /* 42 */ 0, { 11, 12, 0, 0 } },
71+ { /* 43 */ 0, { 12, 13, 0, 0 } },
72+ { /* 44 */ 0, { 13, 14, 0, 0 } },
73+ { /* 45 */ 0, { 14, 15, 0, 0 } },
74+ { /* 46 */ 0, { 15, 16, 0, 0 } },
75+ { /* 47 */ 0, { 16, 17, 0, 0 } },
76+ { /* 48 */ 0, { 17, 18, 0, 0 } },
77+ { /* 49 */ 1, { 2, 0, 0, 0 } }, /* 11101110 */
78+ { /* 50 */ 1, { 0, 0, 0, 2 } }, /* 11101111 */
79+ { /* 51 */ 1, { 0, 0, 1, 2 } }, /* 11110000 */
80+ { /* 52 */ 1, { 2, 1, 0, 0 } }, /* 11110001 */
81+ { /* 53 */ 1, { 1, 2, 1, 0 } }, /* 11110010 */
82+ { /* 54 */ 0, { 13, 14, 0, 0 } },
83+ { /* 55 */ 0, { 14, 15, 0, 0 } },
84+ { /* 56 */ 0, { 15, 16, 0, 0 } },
85+ { /* 57 */ 0, { 16, 17, 0, 0 } },
86+ { /* 58 */ 0, { 17, 18, 0, 0 } },
87+ { /* 59 */ 0, { 18, 19, 0, 0 } },
88+ { /* 60 */ 0, { 19, 20, 0, 0 } },
89+ { /* 61 */ 0, { 20, 21, 0, 0 } },
90+ { /* 62 */ 0, { 21, 22, 0, 0 } },
91+ { /* 63 */ 0, { 22, 23, 0, 0 } },
92+ { /* 64 */ 0, { 23, 24, 0, 0 } },
93+ { /* 65 */ 0, { 24, 25, 0, 0 } },
94+ { /* 66 */ 0, { 25, 26, 0, 0 } },
95+ { /* 67 */ 1, { 0, 0, 2, 1 } },
96+ { /* 68 */ 1, { 0, 1, 2, 1 } },
97+ { /* 69 */ 1, { 1, 2, 0, 0 } },
98+ { /* 70 */ 1, { 0, 1, 1, 2 } },
99+ { /* 71 */ 1, { 2, 1, 1, 0 } },
100+ { /* 72 */ 1, { 0, 0, 2, 0 } },
101+ { /* 73 */ 1, { 0, 2, 1, 0 } },
102+ { /* 74 */ 1, { 0, 1, 2, 0 } },
103+ { /* 75 */ 1, { 0, 2, 0, 0 } },
104+ { /* 76 */ 1, { 0, 1, 0, 2 } },
105+ { /* 77 */ 1, { 2, 0, 1, 0 } },
106+ { /* 78 */ 1, { 1, 2, 1, 1 } },
107+ { /* 79 */ 1, { 0, 2, 1, 1 } },
108+ { /* 80 */ 1, { 1, 1, 2, 0 } },
109+ { /* 81 */ 1, { 1, 1, 2, 1 } },
110+ { /* 82 */ 0, { 11, 12, 0, 0 } },
111+ { /* 83 */ 0, { 12, 13, 0, 0 } },
112+ { /* 84 */ 0, { 13, 14, 0, 0 } },
113+ { /* 85 */ 0, { 14, 15, 0, 0 } },
114+ { /* 86 */ 0, { 15, 16, 0, 0 } },
115+ { /* 87 */ 0, { 16, 17, 0, 0 } },
116+ { /* 88 */ 0, { 17, 18, 0, 0 } },
117+ { /* 89 */ 0, { 18, 19, 0, 0 } },
118+ { /* 90 */ 0, { 19, 20, 0, 0 } },
119+ { /* 91 */ 0, { 20, 21, 0, 0 } },
120+ { /* 92 */ 0, { 21, 22, 0, 0 } },
121+ { /* 93 */ 1, { 1, 2, 0, 1 } }, /* 1111101010 */
122+ { /* 94 */ 1, { 1, 0, 2, 0 } }, /* 1111101011 */
123+ { /* 95 */ 1, { 1, 0, 2, 1 } }, /* 1111101100 */
124+ { /* 96 */ 1, { 0, 2, 0, 1 } }, /* 1111101101 */
125+ { /* 97 */ 1, { 2, 1, 1, 1 } }, /* 1111101110 */
126+ { /* 98 */ 1, { 1, 1, 1, 2 } }, /* 1111101111 */
127+ { /* 99 */ 1, { 2, 1, 0, 1 } }, /* 1111110000 */
128+ { /* 00 */ 1, { 1, 0, 1, 2 } }, /* 1111110001 */
129+ { /* 01 */ 1, { 0, 0, 2, 2 } }, /* 1111110010 */
130+ { /* 02 */ 1, { 0, 1, 2, 2 } }, /* 1111110011 */
131+ { /* 03 */ 1, { 2, 2, 1, 0 } }, /* 1111110100 */
132+ { /* 04 */ 1, { 1, 2, 2, 0 } }, /* 1111110101 */
133+ { /* 05 */ 1, { 1, 0, 0, 2 } }, /* 1111110110 */
134+ { /* 06 */ 1, { 2, 0, 0, 1 } }, /* 1111110111 */
135+ { /* 07 */ 1, { 0, 2, 2, 1 } }, /* 1111111000 */
136+ { /* 08 */ 0, { 7, 8, 0, 0 } },
137+ { /* 09 */ 0, { 8, 9, 0, 0 } },
138+ { /* 10 */ 0, { 9, 10, 0, 0 } },
139+ { /* 11 */ 0, { 10, 11, 0, 0 } },
140+ { /* 12 */ 0, { 11, 12, 0, 0 } },
141+ { /* 13 */ 0, { 12, 13, 0, 0 } },
142+ { /* 14 */ 0, { 13, 14, 0, 0 } },
143+ { /* 15 */ 1, { 2, 2, 0, 0 } }, /* 11111110010 */
144+ { /* 16 */ 1, { 1, 2, 2, 1 } }, /* 11111110011 */
145+ { /* 17 */ 1, { 1, 1, 0, 2 } }, /* 11111110100 */
146+ { /* 18 */ 1, { 2, 0, 1, 1 } }, /* 11111110101 */
147+ { /* 19 */ 1, { 1, 1, 2, 2 } }, /* 11111110110 */
148+ { /* 20 */ 1, { 2, 2, 1, 1 } }, /* 11111110111 */
149+ { /* 21 */ 1, { 0, 2, 2, 0 } }, /* 11111111000 */
150+ { /* 22 */ 1, { 0, 2, 1, 2 } }, /* 11111111001 */
151+ { /* 23 */ 0, { 6, 7, 0, 0 } },
152+ { /* 24 */ 0, { 7, 8, 0, 0 } },
153+ { /* 25 */ 0, { 8, 9, 0, 0 } },
154+ { /* 26 */ 0, { 9, 10, 0, 0 } },
155+ { /* 27 */ 0, { 10, 11, 0, 0 } },
156+ { /* 28 */ 0, { 11, 12, 0, 0 } },
157+ { /* 29 */ 1, { 1, 0, 2, 2 } }, /* 111111110100 */
158+ { /* 30 */ 1, { 2, 2, 0, 1 } }, /* 111111110101 */
159+ { /* 31 */ 1, { 2, 1, 2, 0 } }, /* 111111110110 */
160+ { /* 32 */ 1, { 2, 2, 2, 0 } }, /* 111111110111 */
161+ { /* 33 */ 1, { 0, 2, 2, 2 } }, /* 111111111000 */
162+ { /* 34 */ 1, { 2, 2, 2, 1 } }, /* 111111111001 */
163+ { /* 35 */ 1, { 2, 1, 2, 1 } }, /* 111111111010 */
164+ { /* 36 */ 1, { 1, 2, 1, 2 } }, /* 111111111011 */
165+ { /* 37 */ 1, { 1, 2, 2, 2 } }, /* 111111111100 */
166+ { /* 38 */ 0, { 3, 4, 0, 0 } },
167+ { /* 39 */ 0, { 4, 5, 0, 0 } },
168+ { /* 40 */ 0, { 5, 6, 0, 0 } },
169+ { /* 41 */ 1, { 0, 2, 0, 2 } }, /* 1111111111010 */
170+ { /* 42 */ 1, { 2, 0, 2, 0 } }, /* 1111111111011 */
171+ { /* 43 */ 1, { 1, 2, 0, 2 } }, /* 1111111111100 */
172+ { /* 44 */ 0, { 3, 4, 0, 0 } },
173+ { /* 45 */ 0, { 4, 5, 0, 0 } },
174+ { /* 46 */ 0, { 5, 6, 0, 0 } },
175+ { /* 47 */ 1, { 2, 0, 2, 1 } }, /* 11111111111010 */
176+ { /* 48 */ 1, { 2, 1, 1, 2 } }, /* 11111111111011 */
177+ { /* 49 */ 1, { 2, 1, 0, 2 } }, /* 11111111111100 */
178+ { /* 50 */ 0, { 3, 4, 0, 0 } },
179+ { /* 51 */ 0, { 4, 5, 0, 0 } },
180+ { /* 52 */ 0, { 5, 6, 0, 0 } },
181+ { /* 53 */ 1, { 2, 2, 2, 2 } }, /* 111111111111010 */
182+ { /* 54 */ 1, { 2, 2, 1, 2 } }, /* 111111111111011 */
183+ { /* 55 */ 1, { 2, 1, 2, 2 } }, /* 111111111111100 */
184+ { /* 56 */ 1, { 2, 0, 1, 2 } }, /* 111111111111101 */
185+ { /* 57 */ 1, { 2, 0, 0, 2 } }, /* 111111111111110 */
186+ { /* 58 */ 0, { 1, 2, 0, 0 } },
187+ { /* 59 */ 1, { 2, 2, 0, 2 } }, /* 1111111111111110 */
188+ { /* 60 */ 1, { 2, 0, 2, 2 } } /* 1111111111111111 */
189+};
libfaad/codebook/hcb_4.c+192−0
@@ -0,0 +1,192 @@
1+/*
2+** FAAD - Freeware Advanced Audio Decoder
3+** Copyright (C) 2002 M. Bakker
4+**
5+** This program is free software; you can redistribute it and/or modify
6+** it under the terms of the GNU General Public License as published by
7+** the Free Software Foundation; either version 2 of the License, or
8+** (at your option) any later version.
9+**
10+** This program is distributed in the hope that it will be useful,
11+** but WITHOUT ANY WARRANTY; without even the implied warranty of
12+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+** GNU General Public License for more details.
14+**
15+** You should have received a copy of the GNU General Public License
16+** along with this program; if not, write to the Free Software
17+** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18+**
19+** $Id: hcb_4.c,v 1.1 2002/02/15 20:52:10 menno Exp $
20+**/
21+
22+#include "hcb.h"
23+
24+/* 2-step huffman table HCB_4 */
25+
26+
27+/* 1st step: 5 bits
28+ * 2^5 = 32 entries
29+ *
30+ * Used to find offset into 2nd step table and number of extra bits to get
31+ */
32+extern hcb hcb4_1[] = {
33+ /* 4 bit codewords */
34+ { /* 00000 */ 0, 0 },
35+ { /* */ 0, 0 },
36+ { /* 00010 */ 1, 0 },
37+ { /* */ 1, 0 },
38+ { /* 00100 */ 2, 0 },
39+ { /* */ 2, 0 },
40+ { /* 00110 */ 3, 0 },
41+ { /* */ 3, 0 },
42+ { /* 01000 */ 4, 0 },
43+ { /* */ 4, 0 },
44+ { /* 01010 */ 5, 0 },
45+ { /* */ 5, 0 },
46+ { /* 01100 */ 6, 0 },
47+ { /* */ 6, 0 },
48+ { /* 01110 */ 7, 0 },
49+ { /* */ 7, 0 },
50+ { /* 10000 */ 8, 0 },
51+ { /* */ 8, 0 },
52+ { /* 10010 */ 9, 0 },
53+ { /* */ 9, 0 },
54+
55+ /* 5 bit codewords */
56+ { /* 10100 */ 10, 0 },
57+ { /* 10101 */ 11, 0 },
58+ { /* 10110 */ 12, 0 },
59+ { /* 10111 */ 13, 0 },
60+ { /* 11000 */ 14, 0 },
61+ { /* 11001 */ 15, 0 },
62+
63+ /* 7 bit codewords */
64+ { /* 11010 */ 16, 2 },
65+ { /* 11011 */ 20, 2 },
66+
67+ /* 7/8 bit codewords */
68+ { /* 11100 */ 24, 3 },
69+
70+ /* 8 bit codewords */
71+ { /* 11101 */ 32, 3 },
72+
73+ /* 8/9 bit codewords */
74+ { /* 11110 */ 40, 4 },
75+
76+ /* 9/10/11/12 bit codewords */
77+ { /* 11111 */ 56, 7 }
78+};
79+
80+/* 2nd step table
81+ *
82+ * Gives size of codeword and actual data (x,y,v,w)
83+ */
84+extern hcb_2_quad hcb4_2[] = {
85+ /* 4 bit codewords */
86+ { 4, 1, 1, 1, 1 },
87+ { 4, 0, 1, 1, 1 },
88+ { 4, 1, 1, 0, 1 },
89+ { 4, 1, 1, 1, 0 },
90+ { 4, 1, 0, 1, 1 },
91+ { 4, 1, 0, 0, 0 },
92+ { 4, 1, 1, 0, 0 },
93+ { 4, 0, 0, 0, 0 },
94+ { 4, 0, 0, 1, 1 },
95+ { 4, 1, 0, 1, 0 },
96+
97+ /* 5 bit codewords */
98+ { 5, 1, 0, 0, 1 },
99+ { 5, 0, 1, 1, 0 },
100+ { 5, 0, 0, 0, 1 },
101+ { 5, 0, 1, 0, 1 },
102+ { 5, 0, 0, 1, 0 },
103+ { 5, 0, 1, 0, 0 },
104+
105+ /* 7 bit codewords */
106+ /* first 5 bits: 11010 */
107+ { 7, 2, 1, 1, 1 },
108+ { 7, 1, 1, 2, 1 },
109+ { 7, 1, 2, 1, 1 },
110+ { 7, 1, 1, 1, 2 },
111+ /* first 5 bits: 11011 */
112+ { 7, 2, 1, 1, 0 },
113+ { 7, 2, 1, 0, 1 },
114+ { 7, 1, 2, 1, 0 },
115+ { 7, 2, 0, 1, 1 },
116+
117+ /* 7/8 bit codewords */
118+ /* first 5 bits: 11100 */
119+ { 7, 0, 1, 2, 1 }, { 7, 0, 1, 2, 1 },
120+ { 8, 0, 1, 1, 2 },
121+ { 8, 1, 1, 2, 0 },
122+ { 8, 0, 2, 1, 1 },
123+ { 8, 1, 0, 1, 2 },
124+ { 8, 1, 2, 0, 1 },
125+ { 8, 1, 1, 0, 2 },
126+
127+ /* 8 bit codewords */
128+ { 8, 1, 0, 2, 1 },
129+ { 8, 2, 1, 0, 0 },
130+ { 8, 2, 0, 1, 0 },
131+ { 8, 1, 2, 0, 0 },
132+ { 8, 2, 0, 0, 1 },
133+ { 8, 0, 1, 0, 2 },
134+ { 8, 0, 2, 1, 0 },
135+ { 8, 0, 0, 1, 2 },
136+
137+ /* 8/9 bit codewords */
138+ { 8, 0, 1, 2, 0 }, { 8, 0, 1, 2, 0 },
139+ { 8, 0, 2, 0, 1 }, { 8, 0, 2, 0, 1 },
140+ { 8, 1, 0, 0, 2 }, { 8, 1, 0, 0, 2 },
141+ { 8, 0, 0, 2, 1 }, { 8, 0, 0, 2, 1 },
142+ { 8, 1, 0, 2, 0 }, { 8, 1, 0, 2, 0 },
143+ { 8, 2, 0, 0, 0 }, { 8, 2, 0, 0, 0 },
144+ { 8, 0, 0, 0, 2 }, { 8, 0, 0, 0, 2 },
145+ { 9, 0, 2, 0, 0 },
146+ { 9, 0, 0, 2, 0 },
147+
148+ /* 9/10/11 bit codewords */
149+ /* 9 bit codewords repeated 2^3 = 8 times */
150+ { 9, 1, 2, 2, 1 }, { 9, 1, 2, 2, 1 }, { 9, 1, 2, 2, 1 }, { 9, 1, 2, 2, 1 },
151+ { 9, 1, 2, 2, 1 }, { 9, 1, 2, 2, 1 }, { 9, 1, 2, 2, 1 }, { 9, 1, 2, 2, 1 },
152+ { 9, 2, 2, 1, 1 }, { 9, 2, 2, 1, 1 }, { 9, 2, 2, 1, 1 }, { 9, 2, 2, 1, 1 },
153+ { 9, 2, 2, 1, 1 }, { 9, 2, 2, 1, 1 }, { 9, 2, 2, 1, 1 }, { 9, 2, 2, 1, 1 },
154+ { 9, 2, 1, 2, 1 }, { 9, 2, 1, 2, 1 }, { 9, 2, 1, 2, 1 }, { 9, 2, 1, 2, 1 },
155+ { 9, 2, 1, 2, 1 }, { 9, 2, 1, 2, 1 }, { 9, 2, 1, 2, 1 }, { 9, 2, 1, 2, 1 },
156+ { 9, 1, 1, 2, 2 }, { 9, 1, 1, 2, 2 }, { 9, 1, 1, 2, 2 }, { 9, 1, 1, 2, 2 },
157+ { 9, 1, 1, 2, 2 }, { 9, 1, 1, 2, 2 }, { 9, 1, 1, 2, 2 }, { 9, 1, 1, 2, 2 },
158+ { 9, 1, 2, 1, 2 }, { 9, 1, 2, 1, 2 }, { 9, 1, 2, 1, 2 }, { 9, 1, 2, 1, 2 },
159+ { 9, 1, 2, 1, 2 }, { 9, 1, 2, 1, 2 }, { 9, 1, 2, 1, 2 }, { 9, 1, 2, 1, 2 },
160+ { 9, 2, 1, 1, 2 }, { 9, 2, 1, 1, 2 }, { 9, 2, 1, 1, 2 }, { 9, 2, 1, 1, 2 },
161+ { 9, 2, 1, 1, 2 }, { 9, 2, 1, 1, 2 }, { 9, 2, 1, 1, 2 }, { 9, 2, 1, 1, 2 },
162+ /* 10 bit codewords repeated 2^2 = 4 times */
163+ { 10, 1, 2, 2, 0 }, { 10, 1, 2, 2, 0 }, { 10, 1, 2, 2, 0 }, { 10, 1, 2, 2, 0 },
164+ { 10, 2, 2, 1, 0 }, { 10, 2, 2, 1, 0 }, { 10, 2, 2, 1, 0 }, { 10, 2, 2, 1, 0 },
165+ { 10, 2, 1, 2, 0 }, { 10, 2, 1, 2, 0 }, { 10, 2, 1, 2, 0 }, { 10, 2, 1, 2, 0 },
166+ { 10, 0, 2, 2, 1 }, { 10, 0, 2, 2, 1 }, { 10, 0, 2, 2, 1 }, { 10, 0, 2, 2, 1 },
167+ { 10, 0, 1, 2, 2 }, { 10, 0, 1, 2, 2 }, { 10, 0, 1, 2, 2 }, { 10, 0, 1, 2, 2 },
168+ { 10, 2, 2, 0, 1 }, { 10, 2, 2, 0, 1 }, { 10, 2, 2, 0, 1 }, { 10, 2, 2, 0, 1 },
169+ { 10, 0, 2, 1, 2 }, { 10, 0, 2, 1, 2 }, { 10, 0, 2, 1, 2 }, { 10, 0, 2, 1, 2 },
170+ { 10, 2, 0, 2, 1 }, { 10, 2, 0, 2, 1 }, { 10, 2, 0, 2, 1 }, { 10, 2, 0, 2, 1 },
171+ { 10, 1, 0, 2, 2 }, { 10, 1, 0, 2, 2 }, { 10, 1, 0, 2, 2 }, { 10, 1, 0, 2, 2 },
172+ { 10, 2, 2, 2, 1 }, { 10, 2, 2, 2, 1 }, { 10, 2, 2, 2, 1 }, { 10, 2, 2, 2, 1 },
173+ { 10, 1, 2, 0, 2 }, { 10, 1, 2, 0, 2 }, { 10, 1, 2, 0, 2 }, { 10, 1, 2, 0, 2 },
174+ { 10, 2, 0, 1, 2 }, { 10, 2, 0, 1, 2 }, { 10, 2, 0, 1, 2 }, { 10, 2, 0, 1, 2 },
175+ { 10, 2, 1, 0, 2 }, { 10, 2, 1, 0, 2 }, { 10, 2, 1, 0, 2 }, { 10, 2, 1, 0, 2 },
176+ { 10, 1, 2, 2, 2 }, { 10, 1, 2, 2, 2 }, { 10, 1, 2, 2, 2 }, { 10, 1, 2, 2, 2 },
177+ /* 11 bit codewords repeated 2^1 = 2 times */
178+ { 11, 2, 1, 2, 2 }, { 11, 2, 1, 2, 2 },
179+ { 11, 2, 2, 1, 2 }, { 11, 2, 2, 1, 2 },
180+ { 11, 0, 2, 2, 0 }, { 11, 0, 2, 2, 0 },
181+ { 11, 2, 2, 0, 0 }, { 11, 2, 2, 0, 0 },
182+ { 11, 0, 0, 2, 2 }, { 11, 0, 0, 2, 2 },
183+ { 11, 2, 0, 2, 0 }, { 11, 2, 0, 2, 0 },
184+ { 11, 0, 2, 0, 2 }, { 11, 0, 2, 0, 2 },
185+ { 11, 2, 0, 0, 2 }, { 11, 2, 0, 0, 2 },
186+ { 11, 2, 2, 2, 2 }, { 11, 2, 2, 2, 2 },
187+ { 11, 0, 2, 2, 2 }, { 11, 0, 2, 2, 2 },
188+ { 11, 2, 2, 2, 0 }, { 11, 2, 2, 2, 0 },
189+ /* 12 bit codewords */
190+ { 12, 2, 2, 0, 2 },
191+ { 12, 2, 0, 2, 2 },
192+};
libfaad/codebook/hcb_5.c+189−0
@@ -0,0 +1,189 @@
1+/*
2+** FAAD - Freeware Advanced Audio Decoder
3+** Copyright (C) 2002 M. Bakker
4+**
5+** This program is free software; you can redistribute it and/or modify
6+** it under the terms of the GNU General Public License as published by
7+** the Free Software Foundation; either version 2 of the License, or
8+** (at your option) any later version.
9+**
10+** This program is distributed in the hope that it will be useful,
11+** but WITHOUT ANY WARRANTY; without even the implied warranty of
12+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+** GNU General Public License for more details.
14+**
15+** You should have received a copy of the GNU General Public License
16+** along with this program; if not, write to the Free Software
17+** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18+**
19+** $Id: hcb_5.c,v 1.1 2002/02/15 20:52:10 menno Exp $
20+**/
21+
22+#include "hcb.h"
23+
24+/* Binary search huffman table HCB_5 */
25+
26+
27+extern hcb_bin_pair hcb5[] = {
28+ { /* 0 */ 0, { 1, 2 } },
29+ { /* 1 */ 1, { 0, 0 } }, /* 0 */
30+ { /* 2 */ 0, { 1, 2 } },
31+ { /* 3 */ 0, { 2, 3 } },
32+ { /* 4 */ 0, { 3, 4 } },
33+ { /* 5 */ 0, { 4, 5 } },
34+ { /* 6 */ 0, { 5, 6 } },
35+ { /* 7 */ 0, { 6, 7 } },
36+ { /* 8 */ 0, { 7, 8 } },
37+ { /* 9 */ 1, { -1, 0 } }, /* 1000 */
38+ { /* 10 */ 1, { 1, 0 } }, /* 1001 */
39+ { /* 11 */ 1, { 0, 1 } }, /* 1010 */
40+ { /* 12 */ 1, { 0, -1 } }, /* 1011 */
41+ { /* 13 */ 0, { 4, 5 } },
42+ { /* 14 */ 0, { 5, 6 } },
43+ { /* 15 */ 0, { 6, 7 } },
44+ { /* 16 */ 0, { 7, 8 } },
45+ { /* 17 */ 1, { 1, -1 } },
46+ { /* 18 */ 1, { -1, 1 } },
47+ { /* 19 */ 1, { -1, -1 } },
48+ { /* 20 */ 1, { 1, 1 } },
49+ { /* 21 */ 0, { 4, 5 } },
50+ { /* 22 */ 0, { 5, 6 } },
51+ { /* 23 */ 0, { 6, 7 } },
52+ { /* 24 */ 0, { 7, 8 } },
53+ { /* 25 */ 0, { 8, 9 } },
54+ { /* 26 */ 0, { 9, 10 } },
55+ { /* 27 */ 0, { 10, 11 } },
56+ { /* 28 */ 0, { 11, 12 } },
57+ { /* 29 */ 0, { 12, 13 } },
58+ { /* 30 */ 0, { 13, 14 } },
59+ { /* 31 */ 0, { 14, 15 } },
60+ { /* 32 */ 0, { 15, 16 } },
61+ { /* 33 */ 1, { -2, 0 } },
62+ { /* 34 */ 1, { 0, 2 } },
63+ { /* 35 */ 1, { 2, 0 } },
64+ { /* 36 */ 1, { 0, -2 } },
65+ { /* 37 */ 0, { 12, 13 } },
66+ { /* 38 */ 0, { 13, 14 } },
67+ { /* 39 */ 0, { 14, 15 } },
68+ { /* 40 */ 0, { 15, 16 } },
69+ { /* 41 */ 0, { 16, 17 } },
70+ { /* 42 */ 0, { 17, 18 } },
71+ { /* 43 */ 0, { 18, 19 } },
72+ { /* 44 */ 0, { 19, 20 } },
73+ { /* 45 */ 0, { 20, 21 } },
74+ { /* 46 */ 0, { 21, 22 } },
75+ { /* 47 */ 0, { 22, 23 } },
76+ { /* 48 */ 0, { 23, 24 } },
77+ { /* 49 */ 1, { -2, -1 } },
78+ { /* 50 */ 1, { 2, 1 } },
79+ { /* 51 */ 1, { -1, -2 } },
80+ { /* 52 */ 1, { 1, 2 } },
81+ { /* 53 */ 1, { -2, 1 } },
82+ { /* 54 */ 1, { 2, -1 } },
83+ { /* 55 */ 1, { -1, 2 } },
84+ { /* 56 */ 1, { 1, -2 } },
85+ { /* 57 */ 1, { -3, 0 } },
86+ { /* 58 */ 1, { 3, 0 } },
87+ { /* 59 */ 1, { 0, -3 } },
88+ { /* 60 */ 1, { 0, 3 } },
89+ { /* 61 */ 0, { 12, 13 } },
90+ { /* 62 */ 0, { 13, 14 } },
91+ { /* 63 */ 0, { 14, 15 } },
92+ { /* 64 */ 0, { 15, 16 } },
93+ { /* 65 */ 0, { 16, 17 } },
94+ { /* 66 */ 0, { 17, 18 } },
95+ { /* 67 */ 0, { 18, 19 } },
96+ { /* 68 */ 0, { 19, 20 } },
97+ { /* 69 */ 0, { 20, 21 } },
98+ { /* 70 */ 0, { 21, 22 } },
99+ { /* 71 */ 0, { 22, 23 } },
100+ { /* 72 */ 0, { 23, 24 } },
101+ { /* 73 */ 1, { -3, -1 } },
102+ { /* 74 */ 1, { 1, 3 } },
103+ { /* 75 */ 1, { 3, 1 } },
104+ { /* 76 */ 1, { -1, -3 } },
105+ { /* 77 */ 1, { -3, 1 } },
106+ { /* 78 */ 1, { 3, -1 } },
107+ { /* 79 */ 1, { 1, -3 } },
108+ { /* 80 */ 1, { -1, 3 } },
109+ { /* 81 */ 1, { -2, 2 } },
110+ { /* 82 */ 1, { 2, 2 } },
111+ { /* 83 */ 1, { -2, -2 } },
112+ { /* 84 */ 1, { 2, -2 } },
113+ { /* 85 */ 0, { 12, 13 } },
114+ { /* 86 */ 0, { 13, 14 } },
115+ { /* 87 */ 0, { 14, 15 } },
116+ { /* 88 */ 0, { 15, 16 } },
117+ { /* 89 */ 0, { 16, 17 } },
118+ { /* 90 */ 0, { 17, 18 } },
119+ { /* 91 */ 0, { 18, 19 } },
120+ { /* 92 */ 0, { 19, 20 } },
121+ { /* 93 */ 0, { 20, 21 } },
122+ { /* 94 */ 0, { 21, 22 } },
123+ { /* 95 */ 0, { 22, 23 } },
124+ { /* 96 */ 0, { 23, 24 } },
125+ { /* 97 */ 1, { -3, -2 } },
126+ { /* 98 */ 1, { 3, -2 } },
127+ { /* 99 */ 1, { -2, 3 } },
128+ { /* 00 */ 1, { 2, -3 } },
129+ { /* 01 */ 1, { 3, 2 } },
130+ { /* 02 */ 1, { 2, 3 } },
131+ { /* 03 */ 1, { -3, 2 } },
132+ { /* 04 */ 1, { -2, -3 } },
133+ { /* 05 */ 1, { 0, -4 } },
134+ { /* 06 */ 1, { -4, 0 } },
135+ { /* 07 */ 1, { 4, 1 } },
136+ { /* 08 */ 1, { 4, 0 } },
137+ { /* 09 */ 0, { 12, 13 } },
138+ { /* 10 */ 0, { 13, 14 } },
139+ { /* 11 */ 0, { 14, 15 } },
140+ { /* 12 */ 0, { 15, 16 } },
141+ { /* 13 */ 0, { 16, 17 } },
142+ { /* 14 */ 0, { 17, 18 } },
143+ { /* 15 */ 0, { 18, 19 } },
144+ { /* 16 */ 0, { 19, 20 } },
145+ { /* 17 */ 0, { 20, 21 } },
146+ { /* 18 */ 0, { 21, 22 } },
147+ { /* 19 */ 0, { 22, 23 } },
148+ { /* 20 */ 0, { 23, 24 } },
149+ { /* 21 */ 1, { -4, -1 } },
150+ { /* 22 */ 1, { 0, 4 } },
151+ { /* 23 */ 1, { 4, -1 } },
152+ { /* 24 */ 1, { -1, -4 } },
153+ { /* 25 */ 1, { 1, 4 } },
154+ { /* 26 */ 1, { -1, 4 } },
155+ { /* 27 */ 1, { -4, 1 } },
156+ { /* 28 */ 1, { 1, -4 } },
157+ { /* 29 */ 1, { 3, -3 } },
158+ { /* 30 */ 1, { -3, -3 } },
159+ { /* 31 */ 1, { -3, 3 } },
160+ { /* 32 */ 1, { -2, 4 } },
161+ { /* 33 */ 1, { -4, -2 } },
162+ { /* 34 */ 1, { 4, 2 } },
163+ { /* 35 */ 1, { 2, -4 } },
164+ { /* 36 */ 1, { 2, 4 } },
165+ { /* 37 */ 1, { 3, 3 } },
166+ { /* 38 */ 1, { -4, 2 } },
167+ { /* 39 */ 0, { 6, 7 } },
168+ { /* 40 */ 0, { 7, 8 } },
169+ { /* 41 */ 0, { 8, 9 } },
170+ { /* 42 */ 0, { 9, 10 } },
171+ { /* 43 */ 0, { 10, 11 } },
172+ { /* 44 */ 0, { 11, 12 } },
173+ { /* 45 */ 1, { -2, -4 } },
174+ { /* 46 */ 1, { 4, -2 } },
175+ { /* 47 */ 1, { 3, -4 } },
176+ { /* 48 */ 1, { -4, -3 } },
177+ { /* 49 */ 1, { -4, 3 } },
178+ { /* 50 */ 1, { 3, 4 } },
179+ { /* 51 */ 1, { -3, 4 } },
180+ { /* 52 */ 1, { 4, 3 } },
181+ { /* 53 */ 1, { 4, -3 } },
182+ { /* 54 */ 1, { -3, -4 } },
183+ { /* 55 */ 0, { 2, 3 } },
184+ { /* 56 */ 0, { 3, 4 } },
185+ { /* 57 */ 1, { 4, -4 } },
186+ { /* 58 */ 1, { -4, 4 } },
187+ { /* 59 */ 1, { 4, 4 } },
188+ { /* 60 */ 1, { -4, -4 } }
189+};
libfaad/codebook/hcb_6.c+175−0
@@ -0,0 +1,175 @@
1+/*
2+** FAAD - Freeware Advanced Audio Decoder
3+** Copyright (C) 2002 M. Bakker
4+**
5+** This program is free software; you can redistribute it and/or modify
6+** it under the terms of the GNU General Public License as published by
7+** the Free Software Foundation; either version 2 of the License, or
8+** (at your option) any later version.
9+**
10+** This program is distributed in the hope that it will be useful,
11+** but WITHOUT ANY WARRANTY; without even the implied warranty of
12+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+** GNU General Public License for more details.
14+**
15+** You should have received a copy of the GNU General Public License
16+** along with this program; if not, write to the Free Software
17+** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18+**
19+** $Id: hcb_6.c,v 1.1 2002/02/15 20:52:10 menno Exp $
20+**/
21+
22+#include "hcb.h"
23+
24+/* 2-step huffman table HCB_6 */
25+
26+
27+/* 1st step: 5 bits
28+ * 2^5 = 32 entries
29+ *
30+ * Used to find offset into 2nd step table and number of extra bits to get
31+ */
32+extern hcb hcb6_1[] = {
33+ /* 4 bit codewords */
34+ { /* 00000 */ 0, 0 },
35+ { /* */ 0, 0 },
36+ { /* 00010 */ 1, 0 },
37+ { /* */ 1, 0 },
38+ { /* 00100 */ 2, 0 },
39+ { /* */ 2, 0 },
40+ { /* 00110 */ 3, 0 },
41+ { /* */ 3, 0 },
42+ { /* 01000 */ 4, 0 },
43+ { /* */ 4, 0 },
44+ { /* 01010 */ 5, 0 },
45+ { /* */ 5, 0 },
46+ { /* 01100 */ 6, 0 },
47+ { /* */ 6, 0 },
48+ { /* 01110 */ 7, 0 },
49+ { /* */ 7, 0 },
50+ { /* 10000 */ 8, 0 },
51+ { /* */ 8, 0 },
52+
53+ /* 6 bit codewords */
54+ { /* 10010 */ 9, 1 },
55+ { /* 10011 */ 11, 1 },
56+ { /* 10100 */ 13, 1 },
57+ { /* 10101 */ 15, 1 },
58+ { /* 10110 */ 17, 1 },
59+ { /* 10111 */ 19, 1 },
60+ { /* 11000 */ 21, 1 },
61+ { /* 11001 */ 23, 1 },
62+
63+ /* 7 bit codewords */
64+ { /* 11010 */ 25, 2 },
65+ { /* 11011 */ 29, 2 },
66+ { /* 11100 */ 33, 2 },
67+
68+ /* 7/8 bit codewords */
69+ { /* 11101 */ 37, 3 },
70+
71+ /* 8/9 bit codewords */
72+ { /* 11110 */ 45, 4 },
73+
74+ /* 9/10/11 bit codewords */
75+ { /* 11111 */ 61, 6 }
76+};
77+
78+/* 2nd step table
79+ *
80+ * Gives size of codeword and actual data (x,y,v,w)
81+ */
82+extern hcb_2_pair hcb6_2[] = {
83+ /* 4 bit codewords */
84+ { 4, 0, 0 },
85+ { 4, 1, 0 },
86+ { 4, 0, -1 },
87+ { 4, 0, 1 },
88+ { 4, -1, 0 },
89+ { 4, 1, 1 },
90+ { 4, -1, 1 },
91+ { 4, 1, -1 },
92+ { 4, -1, -1 },
93+
94+ /* 6 bit codewords */
95+ { 6, 2, -1 },
96+ { 6, 2, 1 },
97+ { 6, -2, 1 },
98+ { 6, -2, -1 },
99+ { 6, -2, 0 },
100+ { 6, -1, 2 },
101+ { 6, 2, 0 },
102+ { 6, 1, -2 },
103+ { 6, 1, 2 },
104+ { 6, 0, -2 },
105+ { 6, -1, -2 },
106+ { 6, 0, 2 },
107+ { 6, 2, -2 },
108+ { 6, -2, 2 },
109+ { 6, -2, -2 },
110+ { 6, 2, 2 },
111+
112+ /* 7 bit codewords */
113+ { 7, -3, 1 },
114+ { 7, 3, 1 },
115+ { 7, 3, -1 },
116+ { 7, -1, 3 },
117+ { 7, -3, -1 },
118+ { 7, 1, 3 },
119+ { 7, 1, -3 },
120+ { 7, -1, -3 },
121+ { 7, 3, 0 },
122+ { 7, -3, 0 },
123+ { 7, 0, -3 },
124+ { 7, 0, 3 },
125+
126+ /* 7/8 bit codewords */
127+ { 7, 3, 2 }, { 7, 3, 2 },
128+ { 8, -3, -2 },
129+ { 8, -2, 3 },
130+ { 8, 2, 3 },
131+ { 8, 3, -2 },
132+ { 8, 2, -3 },
133+ { 8, -2, -3 },
134+
135+ /* 8 bit codewords */
136+ { 8, -3, 2 }, { 8, -3, 2 },
137+ { 8, 3, 3 }, { 8, 3, 3 },
138+ { 9, 3, -3 },
139+ { 9, -3, -3 },
140+ { 9, -3, 3 },
141+ { 9, 1, -4 },
142+ { 9, -1, -4 },
143+ { 9, 4, 1 },
144+ { 9, -4, 1 },
145+ { 9, -4, -1 },
146+ { 9, 1, 4 },
147+ { 9, 4, -1 },
148+ { 9, -1, 4 },
149+ { 9, 0, -4 },
150+
151+ /* 9/10/11 bit codewords */
152+ { 9, -4, 2 }, { 9, -4, 2 }, { 9, -4, 2 }, { 9, -4, 2 },
153+ { 9, -4, -2 }, { 9, -4, -2 }, { 9, -4, -2 }, { 9, -4, -2 },
154+ { 9, 2, 4 }, { 9, 2, 4 }, { 9, 2, 4 }, { 9, 2, 4 },
155+ { 9, -2, -4 }, { 9, -2, -4 }, { 9, -2, -4 }, { 9, -2, -4 },
156+ { 9, -4, 0 }, { 9, -4, 0 }, { 9, -4, 0 }, { 9, -4, 0 },
157+ { 9, 4, 2 }, { 9, 4, 2 }, { 9, 4, 2 }, { 9, 4, 2 },
158+ { 9, 4, -2 }, { 9, 4, -2 }, { 9, 4, -2 }, { 9, 4, -2 },
159+ { 9, -2, 4 }, { 9, -2, 4 }, { 9, -2, 4 }, { 9, -2, 4 },
160+ { 9, 4, 0 }, { 9, 4, 0 }, { 9, 4, 0 }, { 9, 4, 0 },
161+ { 9, 2, -4 }, { 9, 2, -4 }, { 9, 2, -4 }, { 9, 2, -4 },
162+ { 9, 0, 4 }, { 9, 0, 4 }, { 9, 0, 4 }, { 9, 0, 4 },
163+ { 10, -3, -4 }, { 10, -3, -4 },
164+ { 10, -3, 4 }, { 10, -3, 4 },
165+ { 10, 3, -4 }, { 10, 3, -4 },
166+ { 10, 4, -3 }, { 10, 4, -3 },
167+ { 10, 3, 4 }, { 10, 3, 4 },
168+ { 10, 4, 3 }, { 10, 4, 3 },
169+ { 10, -4, 3 }, { 10, -4, 3 },
170+ { 10, -4, -3 }, { 10, -4, -3 },
171+ { 11, 4, 4 },
172+ { 11, -4, 4 },
173+ { 11, -4, -4 },
174+ { 11, 4, -4 }
175+};
libfaad/codebook/hcb_7.c+155−0
@@ -0,0 +1,155 @@
1+/*
2+** FAAD - Freeware Advanced Audio Decoder
3+** Copyright (C) 2002 M. Bakker
4+**
5+** This program is free software; you can redistribute it and/or modify
6+** it under the terms of the GNU General Public License as published by
7+** the Free Software Foundation; either version 2 of the License, or
8+** (at your option) any later version.
9+**
10+** This program is distributed in the hope that it will be useful,
11+** but WITHOUT ANY WARRANTY; without even the implied warranty of
12+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+** GNU General Public License for more details.
14+**
15+** You should have received a copy of the GNU General Public License
16+** along with this program; if not, write to the Free Software
17+** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18+**
19+** $Id: hcb_7.c,v 1.1 2002/02/15 20:52:10 menno Exp $
20+**/
21+
22+#include "hcb.h"
23+
24+/* Binary search huffman table HCB_7 */
25+
26+
27+extern hcb_bin_pair hcb7[] = {
28+ { /* 0 */ 0, { 1, 2 } },
29+ { /* 1 */ 1, { 0, 0 } },
30+ { /* 2 */ 0, { 1, 2 } },
31+ { /* 3 */ 0, { 2, 3 } },
32+ { /* 4 */ 0, { 3, 4 } },
33+ { /* 5 */ 1, { 1, 0 } },
34+ { /* 6 */ 1, { 0, 1 } },
35+ { /* 7 */ 0, { 2, 3 } },
36+ { /* 8 */ 0, { 3, 4 } },
37+ { /* 9 */ 1, { 1, 1 } },
38+ { /* 10 */ 0, { 3, 4 } },
39+ { /* 11 */ 0, { 4, 5 } },
40+ { /* 12 */ 0, { 5, 6 } },
41+ { /* 13 */ 0, { 6, 7 } },
42+ { /* 14 */ 0, { 7, 8 } },
43+ { /* 15 */ 0, { 8, 9 } },
44+ { /* 16 */ 0, { 9, 10 } },
45+ { /* 17 */ 0, { 10, 11 } },
46+ { /* 18 */ 0, { 11, 12 } },
47+ { /* 19 */ 1, { 2, 1 } },
48+ { /* 20 */ 1, { 1, 2 } },
49+ { /* 21 */ 1, { 2, 0 } },
50+ { /* 22 */ 1, { 0, 2 } },
51+ { /* 23 */ 0, { 8, 9 } },
52+ { /* 24 */ 0, { 9, 10 } },
53+ { /* 25 */ 0, { 10, 11 } },
54+ { /* 26 */ 0, { 11, 12 } },
55+ { /* 27 */ 0, { 12, 13 } },
56+ { /* 28 */ 0, { 13, 14 } },
57+ { /* 29 */ 0, { 14, 15 } },
58+ { /* 30 */ 0, { 15, 16 } },
59+ { /* 31 */ 1, { 3, 1 } },
60+ { /* 32 */ 1, { 1, 3 } },
61+ { /* 33 */ 1, { 2, 2 } },
62+ { /* 34 */ 1, { 3, 0 } },
63+ { /* 35 */ 1, { 0, 3 } },
64+ { /* 36 */ 0, { 11, 12 } },
65+ { /* 37 */ 0, { 12, 13 } },
66+ { /* 38 */ 0, { 13, 14 } },
67+ { /* 39 */ 0, { 14, 15 } },
68+ { /* 40 */ 0, { 15, 16 } },
69+ { /* 41 */ 0, { 16, 17 } },
70+ { /* 42 */ 0, { 17, 18 } },
71+ { /* 43 */ 0, { 18, 19 } },
72+ { /* 44 */ 0, { 19, 20 } },
73+ { /* 45 */ 0, { 20, 21 } },
74+ { /* 46 */ 0, { 21, 22 } },
75+ { /* 47 */ 1, { 2, 3 } },
76+ { /* 48 */ 1, { 3, 2 } },
77+ { /* 49 */ 1, { 1, 4 } },
78+ { /* 50 */ 1, { 4, 1 } },
79+ { /* 51 */ 1, { 1, 5 } },
80+ { /* 52 */ 1, { 5, 1 } },
81+ { /* 53 */ 1, { 3, 3 } },
82+ { /* 54 */ 1, { 2, 4 } },
83+ { /* 55 */ 1, { 0, 4 } },
84+ { /* 56 */ 1, { 4, 0 } },
85+ { /* 57 */ 0, { 12, 13 } },
86+ { /* 58 */ 0, { 13, 14 } },
87+ { /* 59 */ 0, { 14, 15 } },
88+ { /* 60 */ 0, { 15, 16 } },
89+ { /* 61 */ 0, { 16, 17 } },
90+ { /* 62 */ 0, { 17, 18 } },
91+ { /* 63 */ 0, { 18, 19 } },
92+ { /* 64 */ 0, { 19, 20 } },
93+ { /* 65 */ 0, { 20, 21 } },
94+ { /* 66 */ 0, { 21, 22 } },
95+ { /* 67 */ 0, { 22, 23 } },
96+ { /* 68 */ 0, { 23, 24 } },
97+ { /* 69 */ 1, { 4, 2 } },
98+ { /* 70 */ 1, { 2, 5 } },
99+ { /* 71 */ 1, { 5, 2 } },
100+ { /* 72 */ 1, { 0, 5 } },
101+ { /* 73 */ 1, { 6, 1 } },
102+ { /* 74 */ 1, { 5, 0 } },
103+ { /* 75 */ 1, { 1, 6 } },
104+ { /* 76 */ 1, { 4, 3 } },
105+ { /* 77 */ 1, { 3, 5 } },
106+ { /* 78 */ 1, { 3, 4 } },
107+ { /* 79 */ 1, { 5, 3 } },
108+ { /* 80 */ 1, { 2, 6 } },
109+ { /* 81 */ 1, { 6, 2 } },
110+ { /* 82 */ 1, { 1, 7 } },
111+ { /* 83 */ 0, { 10, 11 } },
112+ { /* 84 */ 0, { 11, 12 } },
113+ { /* 85 */ 0, { 12, 13 } },
114+ { /* 86 */ 0, { 13, 14 } },
115+ { /* 87 */ 0, { 14, 15 } },
116+ { /* 88 */ 0, { 15, 16 } },
117+ { /* 89 */ 0, { 16, 17 } },
118+ { /* 90 */ 0, { 17, 18 } },
119+ { /* 91 */ 0, { 18, 19 } },
120+ { /* 92 */ 0, { 19, 20 } },
121+ { /* 93 */ 1, { 3, 6 } },
122+ { /* 94 */ 1, { 0, 6 } },
123+ { /* 95 */ 1, { 6, 0 } },
124+ { /* 96 */ 1, { 4, 4 } },
125+ { /* 97 */ 1, { 7, 1 } },
126+ { /* 98 */ 1, { 4, 5 } },
127+ { /* 99 */ 1, { 7, 2 } },
128+ { /* 00 */ 1, { 5, 4 } },
129+ { /* 01 */ 1, { 6, 3 } },
130+ { /* 02 */ 1, { 2, 7 } },
131+ { /* 03 */ 1, { 7, 3 } },
132+ { /* 04 */ 1, { 6, 4 } },
133+ { /* 05 */ 1, { 5, 5 } },
134+ { /* 06 */ 1, { 4, 6 } },
135+ { /* 07 */ 1, { 3, 7 } },
136+ { /* 08 */ 0, { 5, 6 } },
137+ { /* 09 */ 0, { 6, 7 } },
138+ { /* 10 */ 0, { 7, 8 } },
139+ { /* 11 */ 0, { 8, 9 } },
140+ { /* 12 */ 0, { 9, 10 } },
141+ { /* 13 */ 1, { 7, 0 } },
142+ { /* 14 */ 1, { 0, 7 } },
143+ { /* 15 */ 1, { 6, 5 } },
144+ { /* 16 */ 1, { 5, 6 } },
145+ { /* 17 */ 1, { 7, 4 } },
146+ { /* 18 */ 1, { 4, 7 } },
147+ { /* 19 */ 1, { 5, 7 } },
148+ { /* 20 */ 1, { 7, 5 } },
149+ { /* 21 */ 0, { 2, 3 } },
150+ { /* 22 */ 0, { 3, 4 } },
151+ { /* 23 */ 1, { 7, 6 } },
152+ { /* 24 */ 1, { 6, 6 } },
153+ { /* 25 */ 1, { 6, 7 } },
154+ { /* 26 */ 1, { 7, 7 } }
155+};
libfaad/codebook/hcb_8.c+166−0
@@ -0,0 +1,166 @@
1+/*
2+** FAAD - Freeware Advanced Audio Decoder
3+** Copyright (C) 2002 M. Bakker
4+**
5+** This program is free software; you can redistribute it and/or modify
6+** it under the terms of the GNU General Public License as published by
7+** the Free Software Foundation; either version 2 of the License, or
8+** (at your option) any later version.
9+**
10+** This program is distributed in the hope that it will be useful,
11+** but WITHOUT ANY WARRANTY; without even the implied warranty of
12+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+** GNU General Public License for more details.
14+**
15+** You should have received a copy of the GNU General Public License
16+** along with this program; if not, write to the Free Software
17+** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18+**
19+** $Id: hcb_8.c,v 1.1 2002/02/15 20:52:10 menno Exp $
20+**/
21+
22+#include "hcb.h"
23+
24+/* 2-step huffman table HCB_8 */
25+
26+
27+/* 1st step: 5 bits
28+ * 2^5 = 32 entries
29+ *
30+ * Used to find offset into 2nd step table and number of extra bits to get
31+ */
32+extern hcb hcb8_1[] = {
33+ /* 3 bit codeword */
34+ { /* 00000 */ 0, 0 },
35+ { /* */ 0, 0 },
36+ { /* */ 0, 0 },
37+ { /* */ 0, 0 },
38+
39+ /* 4 bit codewords */
40+ { /* 00100 */ 1, 0 },
41+ { /* */ 1, 0 },
42+ { /* 00110 */ 2, 0 },
43+ { /* */ 2, 0 },
44+ { /* 01000 */ 3, 0 },
45+ { /* */ 3, 0 },
46+ { /* 01010 */ 4, 0 },
47+ { /* */ 4, 0 },
48+ { /* 01100 */ 5, 0 },
49+ { /* */ 5, 0 },
50+
51+ /* 5 bit codewords */
52+ { /* 01110 */ 6, 0 },
53+ { /* 01111 */ 7, 0 },
54+ { /* 10000 */ 8, 0 },
55+ { /* 10001 */ 9, 0 },
56+ { /* 10010 */ 10, 0 },
57+ { /* 10011 */ 11, 0 },
58+ { /* 10100 */ 12, 0 },
59+
60+ /* 6 bit codewords */
61+ { /* 10101 */ 13, 1 },
62+ { /* 10110 */ 15, 1 },
63+ { /* 10111 */ 17, 1 },
64+ { /* 11000 */ 19, 1 },
65+ { /* 11001 */ 21, 1 },
66+
67+ /* 7 bit codewords */
68+ { /* 11010 */ 23, 2 },
69+ { /* 11011 */ 27, 2 },
70+ { /* 11100 */ 31, 2 },
71+
72+ /* 7/8 bit codewords */
73+ { /* 11101 */ 35, 3 },
74+
75+ /* 8 bit codewords */
76+ { /* 11110 */ 43, 3 },
77+
78+ /* 8/9/10 bit codewords */
79+ { /* 11111 */ 51, 5 }
80+};
81+
82+/* 2nd step table
83+ *
84+ * Gives size of codeword and actual data (x,y,v,w)
85+ */
86+extern hcb_2_pair hcb8_2[] = {
87+ /* 3 bit codeword */
88+ { 3, 1, 1 },
89+
90+ /* 4 bit codewords */
91+ { 4, 2, 1 },
92+ { 4, 1, 0 },
93+ { 4, 1, 2 },
94+ { 4, 0, 1 },
95+ { 4, 2, 2 },
96+
97+ /* 5 bit codewords */
98+ { 5, 0, 0 },
99+ { 5, 2, 0 },
100+ { 5, 0, 2 },
101+ { 5, 3, 1 },
102+ { 5, 1, 3 },
103+ { 5, 3, 2 },
104+ { 5, 2, 3 },
105+
106+ /* 6 bit codewords */
107+ { 6, 3, 3 },
108+ { 6, 4, 1 },
109+ { 6, 1, 4 },
110+ { 6, 4, 2 },
111+ { 6, 2, 4 },
112+ { 6, 3, 0 },
113+ { 6, 0, 3 },
114+ { 6, 4, 3 },
115+ { 6, 3, 4 },
116+ { 6, 5, 2 },
117+
118+ /* 7 bit codewords */
119+ { 7, 5, 1 },
120+ { 7, 2, 5 },
121+ { 7, 1, 5 },
122+ { 7, 5, 3 },
123+ { 7, 3, 5 },
124+ { 7, 4, 4 },
125+ { 7, 5, 4 },
126+ { 7, 0, 4 },
127+ { 7, 4, 5 },
128+ { 7, 4, 0 },
129+ { 7, 2, 6 },
130+ { 7, 6, 2 },
131+
132+ /* 7/8 bit codewords */
133+ { 7, 6, 1 }, { 7, 6, 1 },
134+ { 7, 1, 6 }, { 7, 1, 6 },
135+ { 8, 3, 6 },
136+ { 8, 6, 3 },
137+ { 8, 5, 5 },
138+ { 8, 5, 0 },
139+
140+ /* 8 bit codewords */
141+ { 8, 6, 4 },
142+ { 8, 0, 5 },
143+ { 8, 4, 6 },
144+ { 8, 7, 1 },
145+ { 8, 7, 2 },
146+ { 8, 2, 7 },
147+ { 8, 6, 5 },
148+ { 8, 7, 3 },
149+
150+ /* 8/9/10 bit codewords */
151+ { 8, 1, 7 }, { 8, 1, 7 }, { 8, 1, 7 }, { 8, 1, 7 },
152+ { 8, 5, 6 }, { 8, 5, 6 }, { 8, 5, 6 }, { 8, 5, 6 },
153+ { 8, 3, 7 }, { 8, 3, 7 }, { 8, 3, 7 }, { 8, 3, 7 },
154+ { 9, 6, 6 }, { 9, 6, 6 },
155+ { 9, 7, 4 }, { 9, 7, 4 },
156+ { 9, 6, 0 }, { 9, 6, 0 },
157+ { 9, 4, 7 }, { 9, 4, 7 },
158+ { 9, 0, 6 }, { 9, 0, 6 },
159+ { 9, 7, 5 }, { 9, 7, 5 },
160+ { 9, 7, 6 }, { 9, 7, 6 },
161+ { 9, 6, 7 }, { 9, 6, 7 },
162+ { 10, 5, 7 },
163+ { 10, 7, 0 },
164+ { 10, 0, 7 },
165+ { 10, 7, 7 }
166+};
libfaad/codebook/hcb_9.c+365−0
@@ -0,0 +1,365 @@
1+/*
2+** FAAD - Freeware Advanced Audio Decoder
3+** Copyright (C) 2002 M. Bakker
4+**
5+** This program is free software; you can redistribute it and/or modify
6+** it under the terms of the GNU General Public License as published by
7+** the Free Software Foundation; either version 2 of the License, or
8+** (at your option) any later version.
9+**
10+** This program is distributed in the hope that it will be useful,
11+** but WITHOUT ANY WARRANTY; without even the implied warranty of
12+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+** GNU General Public License for more details.
14+**
15+** You should have received a copy of the GNU General Public License
16+** along with this program; if not, write to the Free Software
17+** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18+**
19+** $Id: hcb_9.c,v 1.1 2002/02/15 20:52:10 menno Exp $
20+**/
21+
22+#include "hcb.h"
23+
24+/* Binary search huffman table HCB_9 */
25+
26+
27+extern hcb_bin_pair hcb9[] = {
28+ { /* 0 */ 0, { 1, 2 } },
29+ { /* 1 */ 1, { 0, 0 } },
30+ { /* 2 */ 0, { 1, 2 } },
31+ { /* 3 */ 0, { 2, 3 } },
32+ { /* 4 */ 0, { 3, 4 } },
33+ { /* 5 */ 1, { 1, 0 } },
34+ { /* 6 */ 1, { 0, 1 } },
35+ { /* 7 */ 0, { 2, 3 } },
36+ { /* 8 */ 0, { 3, 4 } },
37+ { /* 9 */ 1, { 1, 1 } },
38+ { /* 10 */ 0, { 3, 4 } },
39+ { /* 11 */ 0, { 4, 5 } },
40+ { /* 12 */ 0, { 5, 6 } },
41+ { /* 13 */ 0, { 6, 7 } },
42+ { /* 14 */ 0, { 7, 8 } },
43+ { /* 15 */ 0, { 8, 9 } },
44+ { /* 16 */ 0, { 9, 10 } },
45+ { /* 17 */ 0, { 10, 11 } },
46+ { /* 18 */ 0, { 11, 12 } },
47+ { /* 19 */ 1, { 2, 1 } },
48+ { /* 20 */ 1, { 1, 2 } },
49+ { /* 21 */ 1, { 2, 0 } },
50+ { /* 22 */ 1, { 0, 2 } },
51+ { /* 23 */ 0, { 8, 9 } },
52+ { /* 24 */ 0, { 9, 10 } },
53+ { /* 25 */ 0, { 10, 11 } },
54+ { /* 26 */ 0, { 11, 12 } },
55+ { /* 27 */ 0, { 12, 13 } },
56+ { /* 28 */ 0, { 13, 14 } },
57+ { /* 29 */ 0, { 14, 15 } },
58+ { /* 30 */ 0, { 15, 16 } },
59+ { /* 31 */ 1, { 3, 1 } },
60+ { /* 32 */ 1, { 2, 2 } },
61+ { /* 33 */ 1, { 1, 3 } },
62+ { /* 34 */ 0, { 13, 14 } },
63+ { /* 35 */ 0, { 14, 15 } },
64+ { /* 36 */ 0, { 15, 16 } },
65+ { /* 37 */ 0, { 16, 17 } },
66+ { /* 38 */ 0, { 17, 18 } },
67+ { /* 39 */ 0, { 18, 19 } },
68+ { /* 40 */ 0, { 19, 20 } },
69+ { /* 41 */ 0, { 20, 21 } },
70+ { /* 42 */ 0, { 21, 22 } },
71+ { /* 43 */ 0, { 22, 23 } },
72+ { /* 44 */ 0, { 23, 24 } },
73+ { /* 45 */ 0, { 24, 25 } },
74+ { /* 46 */ 0, { 25, 26 } },
75+ { /* 47 */ 1, { 3, 0 } },
76+ { /* 48 */ 1, { 0, 3 } },
77+ { /* 49 */ 1, { 2, 3 } },
78+ { /* 50 */ 1, { 3, 2 } },
79+ { /* 51 */ 1, { 1, 4 } },
80+ { /* 52 */ 1, { 4, 1 } },
81+ { /* 53 */ 1, { 2, 4 } },
82+ { /* 54 */ 1, { 1, 5 } },
83+ { /* 55 */ 0, { 18, 19 } },
84+ { /* 56 */ 0, { 19, 20 } },
85+ { /* 57 */ 0, { 20, 21 } },
86+ { /* 58 */ 0, { 21, 22 } },
87+ { /* 59 */ 0, { 22, 23 } },
88+ { /* 60 */ 0, { 23, 24 } },
89+ { /* 61 */ 0, { 24, 25 } },
90+ { /* 62 */ 0, { 25, 26 } },
91+ { /* 63 */ 0, { 26, 27 } },
92+ { /* 64 */ 0, { 27, 28 } },
93+ { /* 65 */ 0, { 28, 29 } },
94+ { /* 66 */ 0, { 29, 30 } },
95+ { /* 67 */ 0, { 30, 31 } },
96+ { /* 68 */ 0, { 31, 32 } },
97+ { /* 69 */ 0, { 32, 33 } },
98+ { /* 70 */ 0, { 33, 34 } },
99+ { /* 71 */ 0, { 34, 35 } },
100+ { /* 72 */ 0, { 35, 36 } },
101+ { /* 73 */ 1, { 4, 2 } },
102+ { /* 74 */ 1, { 3, 3 } },
103+ { /* 75 */ 1, { 0, 4 } },
104+ { /* 76 */ 1, { 4, 0 } },
105+ { /* 77 */ 1, { 5, 1 } },
106+ { /* 78 */ 1, { 2, 5 } },
107+ { /* 79 */ 1, { 1, 6 } },
108+ { /* 80 */ 1, { 3, 4 } },
109+ { /* 81 */ 1, { 5, 2 } },
110+ { /* 82 */ 1, { 6, 1 } },
111+ { /* 83 */ 1, { 4, 3 } },
112+ { /* 84 */ 0, { 25, 26 } },
113+ { /* 85 */ 0, { 26, 27 } },
114+ { /* 86 */ 0, { 27, 28 } },
115+ { /* 87 */ 0, { 28, 29 } },
116+ { /* 88 */ 0, { 29, 30 } },
117+ { /* 89 */ 0, { 30, 31 } },
118+ { /* 90 */ 0, { 31, 32 } },
119+ { /* 91 */ 0, { 32, 33 } },
120+ { /* 92 */ 0, { 33, 34 } },
121+ { /* 93 */ 0, { 34, 35 } },
122+ { /* 94 */ 0, { 35, 36 } },
123+ { /* 95 */ 0, { 36, 37 } },
124+ { /* 96 */ 0, { 37, 38 } },
125+ { /* 97 */ 0, { 38, 39 } },
126+ { /* 98 */ 0, { 39, 40 } },
127+ { /* 99 */ 0, { 40, 41 } },
128+ { /* 00 */ 0, { 41, 42 } },
129+ { /* 01 */ 0, { 42, 43 } },
130+ { /* 02 */ 0, { 43, 44 } },
131+ { /* 03 */ 0, { 44, 45 } },
132+ { /* 04 */ 0, { 45, 46 } },
133+ { /* 05 */ 0, { 46, 47 } },
134+ { /* 06 */ 0, { 47, 48 } },
135+ { /* 07 */ 0, { 48, 49 } },
136+ { /* 08 */ 0, { 49, 50 } },
137+ { /* 09 */ 1, { 0, 5 } },
138+ { /* 10 */ 1, { 2, 6 } },
139+ { /* 11 */ 1, { 5, 0 } },
140+ { /* 12 */ 1, { 1, 7 } },
141+ { /* 13 */ 1, { 3, 5 } },
142+ { /* 14 */ 1, { 1, 8 } },
143+ { /* 15 */ 1, { 8, 1 } },
144+ { /* 16 */ 1, { 4, 4 } },
145+ { /* 17 */ 1, { 5, 3 } },
146+ { /* 18 */ 1, { 6, 2 } },
147+ { /* 19 */ 1, { 7, 1 } },
148+ { /* 20 */ 1, { 0, 6 } },
149+ { /* 21 */ 1, { 8, 2 } },
150+ { /* 22 */ 1, { 2, 8 } },
151+ { /* 23 */ 1, { 3, 6 } },
152+ { /* 24 */ 1, { 2, 7 } },
153+ { /* 25 */ 1, { 4, 5 } },
154+ { /* 26 */ 1, { 9, 1 } },
155+ { /* 27 */ 1, { 1, 9 } },
156+ { /* 28 */ 1, { 7, 2 } },
157+ { /* 29 */ 0, { 30, 31 } },
158+ { /* 30 */ 0, { 31, 32 } },
159+ { /* 31 */ 0, { 32, 33 } },
160+ { /* 32 */ 0, { 33, 34 } },
161+ { /* 33 */ 0, { 34, 35 } },
162+ { /* 34 */ 0, { 35, 36 } },
163+ { /* 35 */ 0, { 36, 37 } },
164+ { /* 36 */ 0, { 37, 38 } },
165+ { /* 37 */ 0, { 38, 39 } },
166+ { /* 38 */ 0, { 39, 40 } },
167+ { /* 39 */ 0, { 40, 41 } },
168+ { /* 40 */ 0, { 41, 42 } },
169+ { /* 41 */ 0, { 42, 43 } },
170+ { /* 42 */ 0, { 43, 44 } },
171+ { /* 43 */ 0, { 44, 45 } },
172+ { /* 44 */ 0, { 45, 46 } },
173+ { /* 45 */ 0, { 46, 47 } },
174+ { /* 46 */ 0, { 47, 48 } },
175+ { /* 47 */ 0, { 48, 49 } },
176+ { /* 48 */ 0, { 49, 50 } },
177+ { /* 49 */ 0, { 50, 51 } },
178+ { /* 50 */ 0, { 51, 52 } },
179+ { /* 51 */ 0, { 52, 53 } },
180+ { /* 52 */ 0, { 53, 54 } },
181+ { /* 53 */ 0, { 54, 55 } },
182+ { /* 54 */ 0, { 55, 56 } },
183+ { /* 55 */ 0, { 56, 57 } },
184+ { /* 56 */ 0, { 57, 58 } },
185+ { /* 57 */ 0, { 58, 59 } },
186+ { /* 58 */ 0, { 59, 60 } },
187+ { /* 59 */ 1, { 6, 0 } },
188+ { /* 60 */ 1, { 5, 4 } },
189+ { /* 61 */ 1, { 6, 3 } },
190+ { /* 62 */ 1, { 8, 3 } },
191+ { /* 63 */ 1, { 0, 7 } },
192+ { /* 64 */ 1, { 9, 2 } },
193+ { /* 65 */ 1, { 3, 8 } },
194+ { /* 66 */ 1, { 4, 6 } },
195+ { /* 67 */ 1, { 3, 7 } },
196+ { /* 68 */ 1, { 0, 8 } },
197+ { /* 69 */ 1, { 10, 1 } },
198+ { /* 70 */ 1, { 6, 4 } },
199+ { /* 71 */ 1, { 2, 9 } },
200+ { /* 72 */ 1, { 5, 5 } },
201+ { /* 73 */ 1, { 8, 0 } },
202+ { /* 74 */ 1, { 7, 0 } },
203+ { /* 75 */ 1, { 7, 3 } },
204+ { /* 76 */ 1, { 10, 2 } },
205+ { /* 77 */ 1, { 9, 3 } },
206+ { /* 78 */ 1, { 8, 4 } },
207+ { /* 79 */ 1, { 1, 10 } },
208+ { /* 80 */ 1, { 7, 4 } },
209+ { /* 81 */ 1, { 6, 5 } },
210+ { /* 82 */ 1, { 5, 6 } },
211+ { /* 83 */ 1, { 4, 8 } },
212+ { /* 84 */ 1, { 4, 7 } },
213+ { /* 85 */ 1, { 3, 9 } },
214+ { /* 86 */ 1, { 11, 1 } },
215+ { /* 87 */ 1, { 5, 8 } },
216+ { /* 88 */ 1, { 9, 0 } },
217+ { /* 89 */ 1, { 8, 5 } },
218+ { /* 90 */ 0, { 29, 30 } },
219+ { /* 91 */ 0, { 30, 31 } },
220+ { /* 92 */ 0, { 31, 32 } },
221+ { /* 93 */ 0, { 32, 33 } },
222+ { /* 94 */ 0, { 33, 34 } },
223+ { /* 95 */ 0, { 34, 35 } },
224+ { /* 96 */ 0, { 35, 36 } },
225+ { /* 97 */ 0, { 36, 37 } },
226+ { /* 98 */ 0, { 37, 38 } },
227+ { /* 99 */ 0, { 38, 39 } },
228+ { /* 00 */ 0, { 39, 40 } },
229+ { /* 01 */ 0, { 40, 41 } },
230+ { /* 02 */ 0, { 41, 42 } },
231+ { /* 03 */ 0, { 42, 43 } },
232+ { /* 04 */ 0, { 43, 44 } },
233+ { /* 05 */ 0, { 44, 45 } },
234+ { /* 06 */ 0, { 45, 46 } },
235+ { /* 07 */ 0, { 46, 47 } },
236+ { /* 08 */ 0, { 47, 48 } },
237+ { /* 09 */ 0, { 48, 49 } },
238+ { /* 10 */ 0, { 49, 50 } },
239+ { /* 11 */ 0, { 50, 51 } },
240+ { /* 12 */ 0, { 51, 52 } },
241+ { /* 13 */ 0, { 52, 53 } },
242+ { /* 14 */ 0, { 53, 54 } },
243+ { /* 15 */ 0, { 54, 55 } },
244+ { /* 16 */ 0, { 55, 56 } },
245+ { /* 17 */ 0, { 56, 57 } },
246+ { /* 18 */ 0, { 57, 58 } },
247+ { /* 19 */ 1, { 10, 3 } },
248+ { /* 20 */ 1, { 2, 10 } },
249+ { /* 21 */ 1, { 0, 9 } },
250+ { /* 22 */ 1, { 11, 2 } },
251+ { /* 23 */ 1, { 9, 4 } },
252+ { /* 24 */ 1, { 6, 6 } },
253+ { /* 25 */ 1, { 12, 1 } },
254+ { /* 26 */ 1, { 4, 9 } },
255+ { /* 27 */ 1, { 8, 6 } },
256+ { /* 28 */ 1, { 1, 11 } },
257+ { /* 29 */ 1, { 9, 5 } },
258+ { /* 30 */ 1, { 10, 4 } },
259+ { /* 31 */ 1, { 5, 7 } },
260+ { /* 32 */ 1, { 7, 5 } },
261+ { /* 33 */ 1, { 2, 11 } },
262+ { /* 34 */ 1, { 1, 12 } },
263+ { /* 35 */ 1, { 12, 2 } },
264+ { /* 36 */ 1, { 11, 3 } },
265+ { /* 37 */ 1, { 3, 10 } },
266+ { /* 38 */ 1, { 5, 9 } },
267+ { /* 39 */ 1, { 6, 7 } },
268+ { /* 40 */ 1, { 8, 7 } },
269+ { /* 41 */ 1, { 11, 4 } },
270+ { /* 42 */ 1, { 0, 10 } },
271+ { /* 43 */ 1, { 7, 6 } },
272+ { /* 44 */ 1, { 12, 3 } },
273+ { /* 45 */ 1, { 10, 0 } },
274+ { /* 46 */ 1, { 10, 5 } },
275+ { /* 47 */ 1, { 4, 10 } },
276+ { /* 48 */ 1, { 6, 8 } },
277+ { /* 49 */ 1, { 2, 12 } },
278+ { /* 50 */ 1, { 9, 6 } },
279+ { /* 51 */ 1, { 9, 7 } },
280+ { /* 52 */ 1, { 4, 11 } },
281+ { /* 53 */ 1, { 11, 0 } },
282+ { /* 54 */ 1, { 6, 9 } },
283+ { /* 55 */ 1, { 3, 11 } },
284+ { /* 56 */ 1, { 5, 10 } },
285+ { /* 57 */ 0, { 20, 21 } },
286+ { /* 58 */ 0, { 21, 22 } },
287+ { /* 59 */ 0, { 22, 23 } },
288+ { /* 60 */ 0, { 23, 24 } },
289+ { /* 61 */ 0, { 24, 25 } },
290+ { /* 62 */ 0, { 25, 26 } },
291+ { /* 63 */ 0, { 26, 27 } },
292+ { /* 64 */ 0, { 27, 28 } },
293+ { /* 65 */ 0, { 28, 29 } },
294+ { /* 66 */ 0, { 29, 30 } },
295+ { /* 67 */ 0, { 30, 31 } },
296+ { /* 68 */ 0, { 31, 32 } },
297+ { /* 69 */ 0, { 32, 33 } },
298+ { /* 70 */ 0, { 33, 34 } },
299+ { /* 71 */ 0, { 34, 35 } },
300+ { /* 72 */ 0, { 35, 36 } },
301+ { /* 73 */ 0, { 36, 37 } },
302+ { /* 74 */ 0, { 37, 38 } },
303+ { /* 75 */ 0, { 38, 39 } },
304+ { /* 76 */ 0, { 39, 40 } },
305+ { /* 77 */ 1, { 8, 8 } },
306+ { /* 78 */ 1, { 7, 8 } },
307+ { /* 79 */ 1, { 12, 5 } },
308+ { /* 80 */ 1, { 3, 12 } },
309+ { /* 81 */ 1, { 11, 5 } },
310+ { /* 82 */ 1, { 7, 7 } },
311+ { /* 83 */ 1, { 12, 4 } },
312+ { /* 84 */ 1, { 11, 6 } },
313+ { /* 85 */ 1, { 10, 6 } },
314+ { /* 86 */ 1, { 4, 12 } },
315+ { /* 87 */ 1, { 7, 9 } },
316+ { /* 88 */ 1, { 5, 11 } },
317+ { /* 89 */ 1, { 0, 11 } },
318+ { /* 90 */ 1, { 12, 6 } },
319+ { /* 91 */ 1, { 6, 10 } },
320+ { /* 92 */ 1, { 12, 0 } },
321+ { /* 93 */ 1, { 10, 7 } },
322+ { /* 94 */ 1, { 5, 12 } },
323+ { /* 95 */ 1, { 7, 10 } },
324+ { /* 96 */ 1, { 9, 8 } },
325+ { /* 97 */ 1, { 0, 12 } },
326+ { /* 98 */ 1, { 11, 7 } },
327+ { /* 99 */ 1, { 8, 9 } },
328+ { /* 00 */ 1, { 9, 9 } },
329+ { /* 01 */ 1, { 10, 8 } },
330+ { /* 02 */ 1, { 7, 11 } },
331+ { /* 03 */ 1, { 12, 7 } },
332+ { /* 04 */ 1, { 6, 11 } },
333+ { /* 05 */ 1, { 8, 11 } },
334+ { /* 06 */ 1, { 11, 8 } },
335+ { /* 07 */ 1, { 7, 12 } },
336+ { /* 08 */ 1, { 6, 12 } },
337+ { /* 09 */ 0, { 8, 9 } },
338+ { /* 10 */ 0, { 9, 10 } },
339+ { /* 11 */ 0, { 10, 11 } },
340+ { /* 12 */ 0, { 11, 12 } },
341+ { /* 13 */ 0, { 12, 13 } },
342+ { /* 14 */ 0, { 13, 14 } },
343+ { /* 15 */ 0, { 14, 15 } },
344+ { /* 16 */ 0, { 15, 16 } },
345+ { /* 17 */ 1, { 8, 10 } },
346+ { /* 18 */ 1, { 10, 9 } },
347+ { /* 19 */ 1, { 8, 12 } },
348+ { /* 20 */ 1, { 9, 10 } },
349+ { /* 21 */ 1, { 9, 11 } },
350+ { /* 22 */ 1, { 9, 12 } },
351+ { /* 23 */ 1, { 10, 11 } },
352+ { /* 24 */ 1, { 12, 9 } },
353+ { /* 25 */ 1, { 10, 10 } },
354+ { /* 26 */ 1, { 11, 9 } },
355+ { /* 27 */ 1, { 12, 8 } },
356+ { /* 28 */ 1, { 11, 10 } },
357+ { /* 29 */ 1, { 12, 10 } },
358+ { /* 30 */ 1, { 12, 11 } },
359+ { /* 31 */ 0, { 2, 3 } },
360+ { /* 32 */ 0, { 3, 4 } },
361+ { /* 33 */ 1, { 10, 12 } },
362+ { /* 34 */ 1, { 11, 11 } },
363+ { /* 35 */ 1, { 11, 12 } },
364+ { /* 36 */ 1, { 12, 12 } }
365+};
libfaad/codebook/hcb_sf.c+269−0
@@ -0,0 +1,269 @@
1+/*
2+** FAAD - Freeware Advanced Audio Decoder
3+** Copyright (C) 2002 M. Bakker
4+**
5+** This program is free software; you can redistribute it and/or modify
6+** it under the terms of the GNU General Public License as published by
7+** the Free Software Foundation; either version 2 of the License, or
8+** (at your option) any later version.
9+**
10+** This program is distributed in the hope that it will be useful,
11+** but WITHOUT ANY WARRANTY; without even the implied warranty of
12+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+** GNU General Public License for more details.
14+**
15+** You should have received a copy of the GNU General Public License
16+** along with this program; if not, write to the Free Software
17+** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18+**
19+** $Id: hcb_sf.c,v 1.1 2002/02/15 20:52:10 menno Exp $
20+**/
21+
22+#include "hcb.h"
23+
24+/* Binary search huffman table HCB_SF */
25+
26+
27+extern char hcb_sf[][2] = {
28+ { /* 0 */ 1, 2 },
29+ { /* 1 */ 60, 0 },
30+ { /* 2 */ 1, 2 },
31+ { /* 3 */ 2, 3 },
32+ { /* 4 */ 3, 4 },
33+ { /* 5 */ 59, 0 },
34+ { /* 6 */ 3, 4 },
35+ { /* 7 */ 4, 5 },
36+ { /* 8 */ 5, 6 },
37+ { /* 9 */ 61, 0 },
38+ { /* 10 */ 58, 0 },
39+ { /* 11 */ 62, 0 },
40+ { /* 12 */ 3, 4 },
41+ { /* 13 */ 4, 5 },
42+ { /* 14 */ 5, 6 },
43+ { /* 15 */ 57, 0 },
44+ { /* 16 */ 63, 0 },
45+ { /* 17 */ 4, 5 },
46+ { /* 18 */ 5, 6 },
47+ { /* 19 */ 6, 7 },
48+ { /* 20 */ 7, 8 },
49+ { /* 21 */ 56, 0 },
50+ { /* 22 */ 64, 0 },
51+ { /* 23 */ 55, 0 },
52+ { /* 24 */ 65, 0 },
53+ { /* 25 */ 4, 5 },
54+ { /* 26 */ 5, 6 },
55+ { /* 27 */ 6, 7 },
56+ { /* 28 */ 7, 8 },
57+ { /* 29 */ 66, 0 },
58+ { /* 30 */ 54, 0 },
59+ { /* 31 */ 67, 0 },
60+ { /* 32 */ 5, 6 },
61+ { /* 33 */ 6, 7 },
62+ { /* 34 */ 7, 8 },
63+ { /* 35 */ 8, 9 },
64+ { /* 36 */ 9, 10 },
65+ { /* 37 */ 53, 0 },
66+ { /* 38 */ 68, 0 },
67+ { /* 39 */ 52, 0 },
68+ { /* 40 */ 69, 0 },
69+ { /* 41 */ 51, 0 },
70+ { /* 42 */ 5, 6 },
71+ { /* 43 */ 6, 7 },
72+ { /* 44 */ 7, 8 },
73+ { /* 45 */ 8, 9 },
74+ { /* 46 */ 9, 10 },
75+ { /* 47 */ 70, 0 },
76+ { /* 48 */ 50, 0 },
77+ { /* 49 */ 49, 0 },
78+ { /* 50 */ 71, 0 },
79+ { /* 51 */ 6, 7 },
80+ { /* 52 */ 7, 8 },
81+ { /* 53 */ 8, 9 },
82+ { /* 54 */ 9, 10 },
83+ { /* 55 */ 10, 11 },
84+ { /* 56 */ 11, 12 },
85+ { /* 57 */ 72, 0 },
86+ { /* 58 */ 48, 0 },
87+ { /* 59 */ 73, 0 },
88+ { /* 60 */ 47, 0 },
89+ { /* 61 */ 74, 0 },
90+ { /* 62 */ 46, 0 },
91+ { /* 63 */ 6, 7 },
92+ { /* 64 */ 7, 8 },
93+ { /* 65 */ 8, 9 },
94+ { /* 66 */ 9, 10 },
95+ { /* 67 */ 10, 11 },
96+ { /* 68 */ 11, 12 },
97+ { /* 69 */ 76, 0 },
98+ { /* 70 */ 75, 0 },
99+ { /* 71 */ 77, 0 },
100+ { /* 72 */ 78, 0 },
101+ { /* 73 */ 45, 0 },
102+ { /* 74 */ 43, 0 },
103+ { /* 75 */ 6, 7 },
104+ { /* 76 */ 7, 8 },
105+ { /* 77 */ 8, 9 },
106+ { /* 78 */ 9, 10 },
107+ { /* 79 */ 10, 11 },
108+ { /* 80 */ 11, 12 },
109+ { /* 81 */ 44, 0 },
110+ { /* 82 */ 79, 0 },
111+ { /* 83 */ 42, 0 },
112+ { /* 84 */ 41, 0 },
113+ { /* 85 */ 80, 0 },
114+ { /* 86 */ 40, 0 },
115+ { /* 87 */ 6, 7 },
116+ { /* 88 */ 7, 8 },
117+ { /* 89 */ 8, 9 },
118+ { /* 90 */ 9, 10 },
119+ { /* 91 */ 10, 11 },
120+ { /* 92 */ 11, 12 },
121+ { /* 93 */ 81, 0 },
122+ { /* 94 */ 39, 0 },
123+ { /* 95 */ 82, 0 },
124+ { /* 96 */ 38, 0 },
125+ { /* 97 */ 83, 0 },
126+ { /* 98 */ 7, 8 },
127+ { /* 99 */ 8, 9 },
128+ { /* 00 */ 9, 10 },
129+ { /* 01 */ 10, 11 },
130+ { /* 02 */ 11, 12 },
131+ { /* 03 */ 12, 13 },
132+ { /* 04 */ 13, 14 },
133+ { /* 05 */ 37, 0 },
134+ { /* 06 */ 35, 0 },
135+ { /* 07 */ 85, 0 },
136+ { /* 08 */ 33, 0 },
137+ { /* 09 */ 36, 0 },
138+ { /* 10 */ 34, 0 },
139+ { /* 11 */ 84, 0 },
140+ { /* 12 */ 32, 0 },
141+ { /* 13 */ 6, 7 },
142+ { /* 14 */ 7, 8 },
143+ { /* 15 */ 8, 9 },
144+ { /* 16 */ 9, 10 },
145+ { /* 17 */ 10, 11 },
146+ { /* 18 */ 11, 12 },
147+ { /* 19 */ 87, 0 },
148+ { /* 20 */ 89, 0 },
149+ { /* 21 */ 30, 0 },
150+ { /* 22 */ 31, 0 },
151+ { /* 23 */ 8, 9 },
152+ { /* 24 */ 9, 10 },
153+ { /* 25 */ 10, 11 },
154+ { /* 26 */ 11, 12 },
155+ { /* 27 */ 12, 13 },
156+ { /* 28 */ 13, 14 },
157+ { /* 29 */ 14, 15 },
158+ { /* 30 */ 15, 16 },
159+ { /* 31 */ 86, 0 },
160+ { /* 32 */ 29, 0 },
161+ { /* 33 */ 26, 0 },
162+ { /* 34 */ 27, 0 },
163+ { /* 35 */ 28, 0 },
164+ { /* 36 */ 24, 0 },
165+ { /* 37 */ 88, 0 },
166+ { /* 38 */ 9, 10 },
167+ { /* 39 */ 10, 11 },
168+ { /* 40 */ 11, 12 },
169+ { /* 41 */ 12, 13 },
170+ { /* 42 */ 13, 14 },
171+ { /* 43 */ 14, 15 },
172+ { /* 44 */ 15, 16 },
173+ { /* 45 */ 16, 17 },
174+ { /* 46 */ 17, 18 },
175+ { /* 47 */ 25, 0 },
176+ { /* 48 */ 22, 0 },
177+ { /* 49 */ 23, 0 },
178+ { /* 50 */ 15, 16 },
179+ { /* 51 */ 16, 17 },
180+ { /* 52 */ 17, 18 },
181+ { /* 53 */ 18, 19 },
182+ { /* 54 */ 19, 20 },
183+ { /* 55 */ 20, 21 },
184+ { /* 56 */ 21, 22 },
185+ { /* 57 */ 22, 23 },
186+ { /* 58 */ 23, 24 },
187+ { /* 59 */ 24, 25 },
188+ { /* 60 */ 25, 26 },
189+ { /* 61 */ 26, 27 },
190+ { /* 62 */ 27, 28 },
191+ { /* 63 */ 28, 29 },
192+ { /* 64 */ 29, 30 },
193+ { /* 65 */ 90, 0 },
194+ { /* 66 */ 21, 0 },
195+ { /* 67 */ 19, 0 },
196+ { /* 68 */ 3, 0 },
197+ { /* 69 */ 1, 0 },
198+ { /* 70 */ 2, 0 },
199+ { /* 71 */ 0, 0 },
200+ { /* 72 */ 23, 24 },
201+ { /* 73 */ 24, 25 },
202+ { /* 74 */ 25, 26 },
203+ { /* 75 */ 26, 27 },
204+ { /* 76 */ 27, 28 },
205+ { /* 77 */ 28, 29 },
206+ { /* 78 */ 29, 30 },
207+ { /* 79 */ 30, 31 },
208+ { /* 80 */ 31, 32 },
209+ { /* 81 */ 32, 33 },
210+ { /* 82 */ 33, 34 },
211+ { /* 83 */ 34, 35 },
212+ { /* 84 */ 35, 36 },
213+ { /* 85 */ 36, 37 },
214+ { /* 86 */ 37, 38 },
215+ { /* 87 */ 38, 39 },
216+ { /* 88 */ 39, 40 },
217+ { /* 89 */ 40, 41 },
218+ { /* 90 */ 41, 42 },
219+ { /* 91 */ 42, 43 },
220+ { /* 92 */ 43, 44 },
221+ { /* 93 */ 44, 45 },
222+ { /* 94 */ 45, 46 },
223+ { /* 95 */ 98, 0 },
224+ { /* 96 */ 99, 0 },
225+ { /* 97 */ 100, 0 },
226+ { /* 98 */ 101, 0 },
227+ { /* 99 */ 102, 0 },
228+ { /* 00 */ 117, 0 },
229+ { /* 01 */ 97, 0 },
230+ { /* 02 */ 91, 0 },
231+ { /* 03 */ 92, 0 },
232+ { /* 04 */ 93, 0 },
233+ { /* 05 */ 94, 0 },
234+ { /* 06 */ 95, 0 },
235+ { /* 07 */ 96, 0 },
236+ { /* 08 */ 104, 0 },
237+ { /* 09 */ 111, 0 },
238+ { /* 10 */ 112, 0 },
239+ { /* 11 */ 113, 0 },
240+ { /* 12 */ 114, 0 },
241+ { /* 13 */ 115, 0 },
242+ { /* 14 */ 116, 0 },
243+ { /* 15 */ 110, 0 },
244+ { /* 16 */ 105, 0 },
245+ { /* 17 */ 106, 0 },
246+ { /* 18 */ 107, 0 },
247+ { /* 19 */ 108, 0 },
248+ { /* 20 */ 109, 0 },
249+ { /* 21 */ 118, 0 },
250+ { /* 22 */ 6, 0 },
251+ { /* 23 */ 8, 0 },
252+ { /* 24 */ 9, 0 },
253+ { /* 25 */ 10, 0 },
254+ { /* 26 */ 5, 0 },
255+ { /* 27 */ 103, 0 },
256+ { /* 28 */ 120, 0 },
257+ { /* 29 */ 119, 0 },
258+ { /* 30 */ 4, 0 },
259+ { /* 31 */ 7, 0 },
260+ { /* 32 */ 15, 0 },
261+ { /* 33 */ 16, 0 },
262+ { /* 34 */ 18, 0 },
263+ { /* 35 */ 20, 0 },
264+ { /* 36 */ 17, 0 },
265+ { /* 37 */ 11, 0 },
266+ { /* 38 */ 12, 0 },
267+ { /* 39 */ 14, 0 },
268+ { /* 40 */ 13, 0 }
269+};
libfaad/huffman.c+0−1433
@@ -1,1433 +0,0 @@
1−/*
2−** FAAD - Freeware Advanced Audio Decoder
3−** Copyright (C) 2002 M. Bakker
4−**
5−** This program is free software; you can redistribute it and/or modify
6−** it under the terms of the GNU General Public License as published by
7−** the Free Software Foundation; either version 2 of the License, or
8−** (at your option) any later version.
9−**
10−** This program is distributed in the hope that it will be useful,
11−** but WITHOUT ANY WARRANTY; without even the implied warranty of
12−** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13−** GNU General Public License for more details.
14−**
15−** You should have received a copy of the GNU General Public License
16−** along with this program; if not, write to the Free Software
17−** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18−**
19−** $Id: huffman.c,v 1.2 2002/01/19 09:39:41 menno Exp $
20−**/
21−
22−#include "syntax.h"
23−#include "huffman.h"
24−
25−extern codebook book1[] = {
26− /* idx codeword len codew x y v w */
27− { /* 0: 0 */ 1, 0, 0, 0, 0, 0 },
28− { /* 1: 1 0000 */ 5, 16, 1, 0, 0, 0 },
29− { /* 2: 1 0001 */ 5, 17, -1, 0, 0, 0 },
30− { /* 3: 1 0010 */ 5, 18, 0, 0, 0, -1 },
31− { /* 4: 1 0011 */ 5, 19, 0, 1, 0, 0 },
32− { /* 5: 1 0100 */ 5, 20, 0, 0, 0, 1 },
33− { /* 6: 1 0101 */ 5, 21, 0, 0, -1, 0 },
34− { /* 7: 1 0110 */ 5, 22, 0, 0, 1, 0 },
35− { /* 8: 1 0111 */ 5, 23, 0, -1, 0, 0 },
36− { /* 9: 110 0000 */ 7, 96, 1, -1, 0, 0 },
37− { /* 10: 110 0001 */ 7, 97, -1, 1, 0, 0 },
38− { /* 11: 110 0010 */ 7, 98, 0, 0, -1, 1 },
39− { /* 12: 110 0011 */ 7, 99, 0, 1, -1, 0 },
40− { /* 13: 110 0100 */ 7, 100, 0, -1, 1, 0 },
41− { /* 14: 110 0101 */ 7, 101, 0, 0, 1, -1 },
42− { /* 15: 110 0110 */ 7, 102, 1, 1, 0, 0 },
43− { /* 16: 110 0111 */ 7, 103, 0, 0, -1, -1 },
44− { /* 17: 110 1000 */ 7, 104, -1, -1, 0, 0 },
45− { /* 18: 110 1001 */ 7, 105, 0, -1, -1, 0 },
46− { /* 19: 110 1010 */ 7, 106, 1, 0, -1, 0 },
47− { /* 20: 110 1011 */ 7, 107, 0, 1, 0, -1 },
48− { /* 21: 110 1100 */ 7, 108, -1, 0, 1, 0 },
49− { /* 22: 110 1101 */ 7, 109, 0, 0, 1, 1 },
50− { /* 23: 110 1110 */ 7, 110, 1, 0, 1, 0 },
51− { /* 24: 110 1111 */ 7, 111, 0, -1, 0, 1 },
52− { /* 25: 111 0000 */ 7, 112, 0, 1, 1, 0 },
53− { /* 26: 111 0001 */ 7, 113, 0, 1, 0, 1 },
54− { /* 27: 111 0010 */ 7, 114, -1, 0, -1, 0 },
55− { /* 28: 111 0011 */ 7, 115, 1, 0, 0, 1 },
56− { /* 29: 111 0100 */ 7, 116, -1, 0, 0, -1 },
57− { /* 30: 111 0101 */ 7, 117, 1, 0, 0, -1 },
58− { /* 31: 111 0110 */ 7, 118, -1, 0, 0, 1 },
59− { /* 32: 111 0111 */ 7, 119, 0, -1, 0, -1 },
60− { /* 33: 1 1110 0000 */ 9, 480, 1, 1, -1, 0 },
61− { /* 34: 1 1110 0001 */ 9, 481, -1, 1, -1, 0 },
62− { /* 35: 1 1110 0010 */ 9, 482, 1, -1, 1, 0 },
63− { /* 36: 1 1110 0011 */ 9, 483, 0, 1, 1, -1 },
64− { /* 37: 1 1110 0100 */ 9, 484, 0, 1, -1, 1 },
65− { /* 38: 1 1110 0101 */ 9, 485, 0, -1, 1, 1 },
66− { /* 39: 1 1110 0110 */ 9, 486, 0, -1, 1, -1 },
67− { /* 40: 1 1110 0111 */ 9, 487, 1, -1, -1, 0 },
68− { /* 41: 1 1110 1000 */ 9, 488, 1, 0, -1, 1 },
69− { /* 42: 1 1110 1001 */ 9, 489, 0, 1, -1, -1 },
70− { /* 43: 1 1110 1010 */ 9, 490, -1, 1, 1, 0 },
71− { /* 44: 1 1110 1011 */ 9, 491, -1, 0, 1, -1 },
72− { /* 45: 1 1110 1100 */ 9, 492, -1, -1, 1, 0 },
73− { /* 46: 1 1110 1101 */ 9, 493, 0, -1, -1, 1 },
74− { /* 47: 1 1110 1110 */ 9, 494, 1, -1, 0, 1 },
75− { /* 48: 1 1110 1111 */ 9, 495, 1, -1, 0, -1 },
76− { /* 49: 1 1111 0000 */ 9, 496, -1, 1, 0, -1 },
77− { /* 50: 1 1111 0001 */ 9, 497, -1, -1, -1, 0 },
78− { /* 51: 1 1111 0010 */ 9, 498, 0, -1, -1, -1 },
79− { /* 52: 1 1111 0011 */ 9, 499, 0, 1, 1, 1 },
80− { /* 53: 1 1111 0100 */ 9, 500, 1, 0, 1, -1 },
81− { /* 54: 1 1111 0101 */ 9, 501, 1, 1, 0, 1 },
82− { /* 55: 1 1111 0110 */ 9, 502, -1, 1, 0, 1 },
83− { /* 56: 1 1111 0111 */ 9, 503, 1, 1, 1, 0 },
84− { /* 57: 11 1111 0000 */ 10, 1008, -1, -1, 0, 1 },
85− { /* 58: 11 1111 0001 */ 10, 1009, -1, 0, -1, -1 },
86− { /* 59: 11 1111 0010 */ 10, 1010, 1, 1, 0, -1 },
87− { /* 60: 11 1111 0011 */ 10, 1011, 1, 0, -1, -1 },
88− { /* 61: 11 1111 0100 */ 10, 1012, -1, 0, -1, 1 },
89− { /* 62: 11 1111 0101 */ 10, 1013, -1, -1, 0, -1 },
90− { /* 63: 11 1111 0110 */ 10, 1014, -1, 0, 1, 1 },
91− { /* 64: 11 1111 0111 */ 10, 1015, 1, 0, 1, 1 },
92− { /* 65: 111 1111 0000 */ 11, 2032, 1, -1, 1, -1 },
93− { /* 66: 111 1111 0001 */ 11, 2033, -1, 1, -1, 1 },
94− { /* 67: 111 1111 0010 */ 11, 2034, -1, 1, 1, -1 },
95− { /* 68: 111 1111 0011 */ 11, 2035, 1, -1, -1, 1 },
96− { /* 69: 111 1111 0100 */ 11, 2036, 1, 1, 1, 1 },
97− { /* 70: 111 1111 0101 */ 11, 2037, -1, -1, 1, 1 },
98− { /* 71: 111 1111 0110 */ 11, 2038, 1, 1, -1, -1 },
99− { /* 72: 111 1111 0111 */ 11, 2039, -1, -1, 1, -1 },
100− { /* 73: 111 1111 1000 */ 11, 2040, -1, -1, -1, -1 },
101− { /* 74: 111 1111 1001 */ 11, 2041, 1, 1, -1, 1 },
102− { /* 75: 111 1111 1010 */ 11, 2042, 1, -1, 1, 1 },
103− { /* 76: 111 1111 1011 */ 11, 2043, -1, 1, 1, 1 },
104− { /* 77: 111 1111 1100 */ 11, 2044, -1, 1, -1, -1 },
105− { /* 78: 111 1111 1101 */ 11, 2045, -1, -1, -1, 1 },
106− { /* 79: 111 1111 1110 */ 11, 2046, 1, -1, -1, -1 },
107− { /* 80: 111 1111 1111 */ 11, 2047, 1, 1, 1, -1 }
108−};
109−
110−extern codebook book2[] = {
111− /* idx codeword len codew x y v w */
112− { /* 0: 000 */ 3, 0, 0, 0, 0, 0 },
113− { /* 1: 0010 */ 4, 2, 1, 0, 0, 0 },
114− { /* 2: 0 0110 */ 5, 6, -1, 0, 0, 0 },
115− { /* 3: 0 0111 */ 5, 7, 0, 0, 0, 1 },
116− { /* 4: 0 1000 */ 5, 8, 0, 0, -1, 0 },
117− { /* 5: 0 1001 */ 5, 9, 0, 0, 0, -1 },
118− { /* 6: 0 1010 */ 5, 10, 0, -1, 0, 0 },
119− { /* 7: 0 1011 */ 5, 11, 0, 0, 1, 0 },
120− { /* 8: 0 1100 */ 5, 12, 0, 1, 0, 0 },
121− { /* 9: 01 1010 */ 6, 26, 0, -1, 1, 0 },
122− { /* 10: 01 1011 */ 6, 27, -1, 1, 0, 0 },
123− { /* 11: 01 1100 */ 6, 28, 0, 1, -1, 0 },
124− { /* 12: 01 1101 */ 6, 29, 0, 0, 1, -1 },
125− { /* 13: 01 1110 */ 6, 30, 0, 1, 0, -1 },
126− { /* 14: 01 1111 */ 6, 31, 0, 0, -1, 1 },
127− { /* 15: 10 0000 */ 6, 32, -1, 0, 0, -1 },
128− { /* 16: 10 0001 */ 6, 33, 1, -1, 0, 0 },
129− { /* 17: 10 0010 */ 6, 34, 1, 0, -1, 0 },
130− { /* 18: 10 0011 */ 6, 35, -1, -1, 0, 0 },
131− { /* 19: 10 0100 */ 6, 36, 0, 0, -1, -1 },
132− { /* 20: 10 0101 */ 6, 37, 1, 0, 1, 0 },
133− { /* 21: 10 0110 */ 6, 38, 1, 0, 0, 1 },
134− { /* 22: 10 0111 */ 6, 39, 0, -1, 0, 1 },
135− { /* 23: 10 1000 */ 6, 40, -1, 0, 1, 0 },
136− { /* 24: 10 1001 */ 6, 41, 0, 1, 0, 1 },
137− { /* 25: 10 1010 */ 6, 42, 0, -1, -1, 0 },
138− { /* 26: 10 1011 */ 6, 43, -1, 0, 0, 1 },
139− { /* 27: 10 1100 */ 6, 44, 0, -1, 0, -1 },
140− { /* 28: 10 1101 */ 6, 45, -1, 0, -1, 0 },
141− { /* 29: 10 1110 */ 6, 46, 1, 1, 0, 0 },
142− { /* 30: 10 1111 */ 6, 47, 0, 1, 1, 0 },
143− { /* 31: 11 0000 */ 6, 48, 0, 0, 1, 1 },
144− { /* 32: 11 0001 */ 6, 49, 1, 0, 0, -1 },
145− { /* 33: 110 0100 */ 7, 100, 0, 1, -1, 1 },
146− { /* 34: 110 0101 */ 7, 101, 1, 0, -1, 1 },
147− { /* 35: 110 0110 */ 7, 102, -1, 1, -1, 0 },
148− { /* 36: 110 0111 */ 7, 103, 0, -1, 1, -1 },
149− { /* 37: 110 1000 */ 7, 104, 1, -1, 1, 0 },
150− { /* 38: 110 1001 */ 7, 105, 1, 1, 0, -1 },
151− { /* 39: 110 1010 */ 7, 106, 1, 0, 1, 1 },
152− { /* 40: 110 1011 */ 7, 107, -1, 1, 1, 0 },
153− { /* 41: 110 1100 */ 7, 108, 0, -1, -1, 1 },
154− { /* 42: 110 1101 */ 7, 109, 1, 1, 1, 0 },
155− { /* 43: 110 1110 */ 7, 110, -1, 0, 1, -1 },
156− { /* 44: 110 1111 */ 7, 111, -1, -1, -1, 0 },
157− { /* 45: 111 0000 */ 7, 112, -1, 0, -1, 1 },
158− { /* 46: 111 0001 */ 7, 113, 1, -1, -1, 0 },
159− { /* 47: 111 0010 */ 7, 114, 1, 1, -1, 0 },
160− { /* 48: 1110 0110 */ 8, 230, 1, -1, 0, 1 },
161− { /* 49: 1110 0111 */ 8, 231, -1, 1, 0, -1 },
162− { /* 50: 1110 1000 */ 8, 232, -1, -1, 1, 0 },
163− { /* 51: 1110 1001 */ 8, 233, -1, 0, 1, 1 },
164− { /* 52: 1110 1010 */ 8, 234, -1, -1, 0, 1 },
165− { /* 53: 1110 1011 */ 8, 235, -1, -1, 0, -1 },
166− { /* 54: 1110 1100 */ 8, 236, 0, -1, -1, -1 },
167− { /* 55: 1110 1101 */ 8, 237, 1, 0, 1, -1 },
168− { /* 56: 1110 1110 */ 8, 238, 1, 0, -1, -1 },
169− { /* 57: 1110 1111 */ 8, 239, 0, 1, -1, -1 },
170− { /* 58: 1111 0000 */ 8, 240, 0, 1, 1, 1 },
171− { /* 59: 1111 0001 */ 8, 241, -1, 1, 0, 1 },
172− { /* 60: 1111 0010 */ 8, 242, -1, 0, -1, -1 },
173− { /* 61: 1111 0011 */ 8, 243, 0, 1, 1, -1 },
174− { /* 62: 1111 0100 */ 8, 244, 1, -1, 0, -1 },
175− { /* 63: 1111 0101 */ 8, 245, 0, -1, 1, 1 },
176− { /* 64: 1111 0110 */ 8, 246, 1, 1, 0, 1 },
177− { /* 65: 1111 0111 */ 8, 247, 1, -1, 1, -1 },
178− { /* 66: 1111 1000 */ 8, 248, -1, 1, -1, 1 },
179− { /* 67: 1 1111 0010 */ 9, 498, 1, -1, -1, 1 },
180− { /* 68: 1 1111 0011 */ 9, 499, -1, -1, -1, -1 },
181− { /* 69: 1 1111 0100 */ 9, 500, -1, 1, 1, -1 },
182− { /* 70: 1 1111 0101 */ 9, 501, -1, 1, 1, 1 },
183− { /* 71: 1 1111 0110 */ 9, 502, 1, 1, 1, 1 },
184− { /* 72: 1 1111 0111 */ 9, 503, -1, -1, 1, -1 },
185− { /* 73: 1 1111 1000 */ 9, 504, 1, -1, 1, 1 },
186− { /* 74: 1 1111 1001 */ 9, 505, -1, 1, -1, -1 },
187− { /* 75: 1 1111 1010 */ 9, 506, -1, -1, 1, 1 },
188− { /* 76: 1 1111 1011 */ 9, 507, 1, 1, -1, -1 },
189− { /* 77: 1 1111 1100 */ 9, 508, 1, -1, -1, -1 },
190− { /* 78: 1 1111 1101 */ 9, 509, -1, -1, -1, 1 },
191− { /* 79: 1 1111 1110 */ 9, 510, 1, 1, -1, 1 },
192− { /* 80: 1 1111 1111 */ 9, 511, 1, 1, 1, -1 }
193−};
194−
195−extern codebook book3[] = {
196− /* idx codeword len codew x y v w */
197− { /* 0: 0 */ 1, 0, 0, 0, 0, 0 },
198− { /* 1: 1000 */ 4, 8, 1, 0, 0, 0 },
199− { /* 2: 1001 */ 4, 9, 0, 0, 0, 1 },
200− { /* 3: 1010 */ 4, 10, 0, 1, 0, 0 },
201− { /* 4: 1011 */ 4, 11, 0, 0, 1, 0 },
202− { /* 5: 1 1000 */ 5, 24, 1, 1, 0, 0 },
203− { /* 6: 1 1001 */ 5, 25, 0, 0, 1, 1 },
204− { /* 7: 11 0100 */ 6, 52, 0, 1, 1, 0 },
205− { /* 8: 11 0101 */ 6, 53, 0, 1, 0, 1 },
206− { /* 9: 11 0110 */ 6, 54, 1, 0, 1, 0 },
207− { /* 10: 11 0111 */ 6, 55, 0, 1, 1, 1 },
208− { /* 11: 11 1000 */ 6, 56, 1, 0, 0, 1 },
209− { /* 12: 11 1001 */ 6, 57, 1, 1, 1, 0 },
210− { /* 13: 111 0100 */ 7, 116, 1, 1, 1, 1 },
211− { /* 14: 111 0101 */ 7, 117, 1, 0, 1, 1 },
212− { /* 15: 111 0110 */ 7, 118, 1, 1, 0, 1 },
213− { /* 16: 1110 1110 */ 8, 238, 2, 0, 0, 0 },
214− { /* 17: 1110 1111 */ 8, 239, 0, 0, 0, 2 },
215− { /* 18: 1111 0000 */ 8, 240, 0, 0, 1, 2 },
216− { /* 19: 1111 0001 */ 8, 241, 2, 1, 0, 0 },
217− { /* 20: 1111 0010 */ 8, 242, 1, 2, 1, 0 },
218− { /* 21: 1 1110 0110 */ 9, 486, 0, 0, 2, 1 },
219− { /* 22: 1 1110 0111 */ 9, 487, 0, 1, 2, 1 },
220− { /* 23: 1 1110 1000 */ 9, 488, 1, 2, 0, 0 },
221− { /* 24: 1 1110 1001 */ 9, 489, 0, 1, 1, 2 },
222− { /* 25: 1 1110 1010 */ 9, 490, 2, 1, 1, 0 },
223− { /* 26: 1 1110 1011 */ 9, 491, 0, 0, 2, 0 },
224− { /* 27: 1 1110 1100 */ 9, 492, 0, 2, 1, 0 },
225− { /* 28: 1 1110 1101 */ 9, 493, 0, 1, 2, 0 },
226− { /* 29: 1 1110 1110 */ 9, 494, 0, 2, 0, 0 },
227− { /* 30: 1 1110 1111 */ 9, 495, 0, 1, 0, 2 },
228− { /* 31: 1 1111 0000 */ 9, 496, 2, 0, 1, 0 },
229− { /* 32: 1 1111 0001 */ 9, 497, 1, 2, 1, 1 },
230− { /* 33: 1 1111 0010 */ 9, 498, 0, 2, 1, 1 },
231− { /* 34: 1 1111 0011 */ 9, 499, 1, 1, 2, 0 },
232− { /* 35: 1 1111 0100 */ 9, 500, 1, 1, 2, 1 },
233− { /* 36: 11 1110 1010 */ 10, 1002, 1, 2, 0, 1 },
234− { /* 37: 11 1110 1011 */ 10, 1003, 1, 0, 2, 0 },
235− { /* 38: 11 1110 1100 */ 10, 1004, 1, 0, 2, 1 },
236− { /* 39: 11 1110 1101 */ 10, 1005, 0, 2, 0, 1 },
237− { /* 40: 11 1110 1110 */ 10, 1006, 2, 1, 1, 1 },
238− { /* 41: 11 1110 1111 */ 10, 1007, 1, 1, 1, 2 },
239− { /* 42: 11 1111 0000 */ 10, 1008, 2, 1, 0, 1 },
240− { /* 43: 11 1111 0001 */ 10, 1009, 1, 0, 1, 2 },
241− { /* 44: 11 1111 0010 */ 10, 1010, 0, 0, 2, 2 },
242− { /* 45: 11 1111 0011 */ 10, 1011, 0, 1, 2, 2 },
243− { /* 46: 11 1111 0100 */ 10, 1012, 2, 2, 1, 0 },
244− { /* 47: 11 1111 0101 */ 10, 1013, 1, 2, 2, 0 },
245− { /* 48: 11 1111 0110 */ 10, 1014, 1, 0, 0, 2 },
246− { /* 49: 11 1111 0111 */ 10, 1015, 2, 0, 0, 1 },
247− { /* 50: 11 1111 1000 */ 10, 1016, 0, 2, 2, 1 },
248− { /* 51: 111 1111 0010 */ 11, 2034, 2, 2, 0, 0 },
249− { /* 52: 111 1111 0011 */ 11, 2035, 1, 2, 2, 1 },
250− { /* 53: 111 1111 0100 */ 11, 2036, 1, 1, 0, 2 },
251− { /* 54: 111 1111 0101 */ 11, 2037, 2, 0, 1, 1 },
252− { /* 55: 111 1111 0110 */ 11, 2038, 1, 1, 2, 2 },
253− { /* 56: 111 1111 0111 */ 11, 2039, 2, 2, 1, 1 },
254− { /* 57: 111 1111 1000 */ 11, 2040, 0, 2, 2, 0 },
255− { /* 58: 111 1111 1001 */ 11, 2041, 0, 2, 1, 2 },
256− { /* 59: 1111 1111 0100 */ 12, 4084, 1, 0, 2, 2 },
257− { /* 60: 1111 1111 0101 */ 12, 4085, 2, 2, 0, 1 },
258− { /* 61: 1111 1111 0110 */ 12, 4086, 2, 1, 2, 0 },
259− { /* 62: 1111 1111 0111 */ 12, 4087, 2, 2, 2, 0 },
260− { /* 63: 1111 1111 1000 */ 12, 4088, 0, 2, 2, 2 },
261− { /* 64: 1111 1111 1001 */ 12, 4089, 2, 2, 2, 1 },
262− { /* 65: 1111 1111 1010 */ 12, 4090, 2, 1, 2, 1 },
263− { /* 66: 1111 1111 1011 */ 12, 4091, 1, 2, 1, 2 },
264− { /* 67: 1111 1111 1100 */ 12, 4092, 1, 2, 2, 2 },
265− { /* 68: 1 1111 1111 1010 */ 13, 8186, 0, 2, 0, 2 },
266− { /* 69: 1 1111 1111 1011 */ 13, 8187, 2, 0, 2, 0 },
267− { /* 70: 1 1111 1111 1100 */ 13, 8188, 1, 2, 0, 2 },
268− { /* 71: 11 1111 1111 1010 */ 14, 16378, 2, 0, 2, 1 },
269− { /* 72: 11 1111 1111 1011 */ 14, 16379, 2, 1, 1, 2 },
270− { /* 73: 11 1111 1111 1100 */ 14, 16380, 2, 1, 0, 2 },
271− { /* 74: 111 1111 1111 1010 */ 15, 32762, 2, 2, 2, 2 },
272− { /* 75: 111 1111 1111 1011 */ 15, 32763, 2, 2, 1, 2 },
273− { /* 76: 111 1111 1111 1100 */ 15, 32764, 2, 1, 2, 2 },
274− { /* 77: 111 1111 1111 1101 */ 15, 32765, 2, 0, 1, 2 },
275− { /* 78: 111 1111 1111 1110 */ 15, 32766, 2, 0, 0, 2 },
276− { /* 79: 1111 1111 1111 1110 */ 16, 65534, 2, 2, 0, 2 },
277− { /* 80: 1111 1111 1111 1111 */ 16, 65535, 2, 0, 2, 2 }
278−};
279−
280−extern codebook book4[] = {
281− /* idx codeword len codew x y v w */
282− { /* 0: 0000 */ 4, 0, 1, 1, 1, 1 },
283− { /* 1: 0001 */ 4, 1, 0, 1, 1, 1 },
284− { /* 2: 0010 */ 4, 2, 1, 1, 0, 1 },
285− { /* 3: 0011 */ 4, 3, 1, 1, 1, 0 },
286− { /* 4: 0100 */ 4, 4, 1, 0, 1, 1 },
287− { /* 5: 0101 */ 4, 5, 1, 0, 0, 0 },
288− { /* 6: 0110 */ 4, 6, 1, 1, 0, 0 },
289− { /* 7: 0111 */ 4, 7, 0, 0, 0, 0 },
290− { /* 8: 1000 */ 4, 8, 0, 0, 1, 1 },
291− { /* 9: 1001 */ 4, 9, 1, 0, 1, 0 },
292− { /* 10: 1 0100 */ 5, 20, 1, 0, 0, 1 },
293− { /* 11: 1 0101 */ 5, 21, 0, 1, 1, 0 },
294− { /* 12: 1 0110 */ 5, 22, 0, 0, 0, 1 },
295− { /* 13: 1 0111 */ 5, 23, 0, 1, 0, 1 },
296− { /* 14: 1 1000 */ 5, 24, 0, 0, 1, 0 },
297− { /* 15: 1 1001 */ 5, 25, 0, 1, 0, 0 },
298− { /* 16: 110 1000 */ 7, 104, 2, 1, 1, 1 },
299− { /* 17: 110 1001 */ 7, 105, 1, 1, 2, 1 },
300− { /* 18: 110 1010 */ 7, 106, 1, 2, 1, 1 },
301− { /* 19: 110 1011 */ 7, 107, 1, 1, 1, 2 },
302− { /* 20: 110 1100 */ 7, 108, 2, 1, 1, 0 },
303− { /* 21: 110 1101 */ 7, 109, 2, 1, 0, 1 },
304− { /* 22: 110 1110 */ 7, 110, 1, 2, 1, 0 },
305− { /* 23: 110 1111 */ 7, 111, 2, 0, 1, 1 },
306− { /* 24: 111 0000 */ 7, 112, 0, 1, 2, 1 },
307− { /* 25: 1110 0010 */ 8, 226, 0, 1, 1, 2 },
308− { /* 26: 1110 0011 */ 8, 227, 1, 1, 2, 0 },
309− { /* 27: 1110 0100 */ 8, 228, 0, 2, 1, 1 },
310− { /* 28: 1110 0101 */ 8, 229, 1, 0, 1, 2 },
311− { /* 29: 1110 0110 */ 8, 230, 1, 2, 0, 1 },
312− { /* 30: 1110 0111 */ 8, 231, 1, 1, 0, 2 },
313− { /* 31: 1110 1000 */ 8, 232, 1, 0, 2, 1 },
314− { /* 32: 1110 1001 */ 8, 233, 2, 1, 0, 0 },
315− { /* 33: 1110 1010 */ 8, 234, 2, 0, 1, 0 },
316− { /* 34: 1110 1011 */ 8, 235, 1, 2, 0, 0 },
317− { /* 35: 1110 1100 */ 8, 236, 2, 0, 0, 1 },
318− { /* 36: 1110 1101 */ 8, 237, 0, 1, 0, 2 },
319− { /* 37: 1110 1110 */ 8, 238, 0, 2, 1, 0 },
320− { /* 38: 1110 1111 */ 8, 239, 0, 0, 1, 2 },
321− { /* 39: 1111 0000 */ 8, 240, 0, 1, 2, 0 },
322− { /* 40: 1111 0001 */ 8, 241, 0, 2, 0, 1 },
323− { /* 41: 1111 0010 */ 8, 242, 1, 0, 0, 2 },
324− { /* 42: 1111 0011 */ 8, 243, 0, 0, 2, 1 },
325− { /* 43: 1111 0100 */ 8, 244, 1, 0, 2, 0 },
326− { /* 44: 1111 0101 */ 8, 245, 2, 0, 0, 0 },
327− { /* 45: 1111 0110 */ 8, 246, 0, 0, 0, 2 },
328− { /* 46: 1 1110 1110 */ 9, 494, 0, 2, 0, 0 },
329− { /* 47: 1 1110 1111 */ 9, 495, 0, 0, 2, 0 },
330− { /* 48: 1 1111 0000 */ 9, 496, 1, 2, 2, 1 },
331− { /* 49: 1 1111 0001 */ 9, 497, 2, 2, 1, 1 },
332− { /* 50: 1 1111 0010 */ 9, 498, 2, 1, 2, 1 },
333− { /* 51: 1 1111 0011 */ 9, 499, 1, 1, 2, 2 },
334− { /* 52: 1 1111 0100 */ 9, 500, 1, 2, 1, 2 },
335− { /* 53: 1 1111 0101 */ 9, 501, 2, 1, 1, 2 },
336− { /* 54: 11 1110 1100 */ 10, 1004, 1, 2, 2, 0 },
337− { /* 55: 11 1110 1101 */ 10, 1005, 2, 2, 1, 0 },
338− { /* 56: 11 1110 1110 */ 10, 1006, 2, 1, 2, 0 },
339− { /* 57: 11 1110 1111 */ 10, 1007, 0, 2, 2, 1 },
340− { /* 58: 11 1111 0000 */ 10, 1008, 0, 1, 2, 2 },
341− { /* 59: 11 1111 0001 */ 10, 1009, 2, 2, 0, 1 },
342− { /* 60: 11 1111 0010 */ 10, 1010, 0, 2, 1, 2 },
343− { /* 61: 11 1111 0011 */ 10, 1011, 2, 0, 2, 1 },
344− { /* 62: 11 1111 0100 */ 10, 1012, 1, 0, 2, 2 },
345− { /* 63: 11 1111 0101 */ 10, 1013, 2, 2, 2, 1 },
346− { /* 64: 11 1111 0110 */ 10, 1014, 1, 2, 0, 2 },
347− { /* 65: 11 1111 0111 */ 10, 1015, 2, 0, 1, 2 },
348− { /* 66: 11 1111 1000 */ 10, 1016, 2, 1, 0, 2 },
349− { /* 67: 11 1111 1001 */ 10, 1017, 1, 2, 2, 2 },
350− { /* 68: 111 1111 0100 */ 11, 2036, 2, 1, 2, 2 },
351− { /* 69: 111 1111 0101 */ 11, 2037, 2, 2, 1, 2 },
352− { /* 70: 111 1111 0110 */ 11, 2038, 0, 2, 2, 0 },
353− { /* 71: 111 1111 0111 */ 11, 2039, 2, 2, 0, 0 },
354− { /* 72: 111 1111 1000 */ 11, 2040, 0, 0, 2, 2 },
355− { /* 73: 111 1111 1001 */ 11, 2041, 2, 0, 2, 0 },
356− { /* 74: 111 1111 1010 */ 11, 2042, 0, 2, 0, 2 },
357− { /* 75: 111 1111 1011 */ 11, 2043, 2, 0, 0, 2 },
358− { /* 76: 111 1111 1100 */ 11, 2044, 2, 2, 2, 2 },
359− { /* 77: 111 1111 1101 */ 11, 2045, 0, 2, 2, 2 },
360− { /* 78: 111 1111 1110 */ 11, 2046, 2, 2, 2, 0 },
361− { /* 79: 1111 1111 1110 */ 12, 4094, 2, 2, 0, 2 },
362− { /* 80: 1111 1111 1111 */ 12, 4095, 2, 0, 2, 2 }
363−};
364−
365−extern codebook book5[] = {
366− /* idx codeword len codew x y v w */
367− { /* 0: 0 */ 1, 0, 0, 0, 0, 0 },
368− { /* 1: 1000 */ 4, 8, -1, 0, 0, 0 },
369− { /* 2: 1001 */ 4, 9, 1, 0, 0, 0 },
370− { /* 3: 1010 */ 4, 10, 0, 1, 0, 0 },
371− { /* 4: 1011 */ 4, 11, 0, -1, 0, 0 },
372− { /* 5: 1 1000 */ 5, 24, 1, -1, 0, 0 },
373− { /* 6: 1 1001 */ 5, 25, -1, 1, 0, 0 },
374− { /* 7: 1 1010 */ 5, 26, -1, -1, 0, 0 },
375− { /* 8: 1 1011 */ 5, 27, 1, 1, 0, 0 },
376− { /* 9: 111 0000 */ 7, 112, -2, 0, 0, 0 },
377− { /* 10: 111 0001 */ 7, 113, 0, 2, 0, 0 },
378− { /* 11: 111 0010 */ 7, 114, 2, 0, 0, 0 },
379− { /* 12: 111 0011 */ 7, 115, 0, -2, 0, 0 },
380− { /* 13: 1110 1000 */ 8, 232, -2, -1, 0, 0 },
381− { /* 14: 1110 1001 */ 8, 233, 2, 1, 0, 0 },
382− { /* 15: 1110 1010 */ 8, 234, -1, -2, 0, 0 },
383− { /* 16: 1110 1011 */ 8, 235, 1, 2, 0, 0 },
384− { /* 17: 1110 1100 */ 8, 236, -2, 1, 0, 0 },
385− { /* 18: 1110 1101 */ 8, 237, 2, -1, 0, 0 },
386− { /* 19: 1110 1110 */ 8, 238, -1, 2, 0, 0 },
387− { /* 20: 1110 1111 */ 8, 239, 1, -2, 0, 0 },
388− { /* 21: 1111 0000 */ 8, 240, -3, 0, 0, 0 },
389− { /* 22: 1111 0001 */ 8, 241, 3, 0, 0, 0 },
390− { /* 23: 1111 0010 */ 8, 242, 0, -3, 0, 0 },
391− { /* 24: 1111 0011 */ 8, 243, 0, 3, 0, 0 },
392− { /* 25: 1 1110 1000 */ 9, 488, -3, -1, 0, 0 },
393− { /* 26: 1 1110 1001 */ 9, 489, 1, 3, 0, 0 },
394− { /* 27: 1 1110 1010 */ 9, 490, 3, 1, 0, 0 },
395− { /* 28: 1 1110 1011 */ 9, 491, -1, -3, 0, 0 },
396− { /* 29: 1 1110 1100 */ 9, 492, -3, 1, 0, 0 },
397− { /* 30: 1 1110 1101 */ 9, 493, 3, -1, 0, 0 },
398− { /* 31: 1 1110 1110 */ 9, 494, 1, -3, 0, 0 },
399− { /* 32: 1 1110 1111 */ 9, 495, -1, 3, 0, 0 },
400− { /* 33: 1 1111 0000 */ 9, 496, -2, 2, 0, 0 },
401− { /* 34: 1 1111 0001 */ 9, 497, 2, 2, 0, 0 },
402− { /* 35: 1 1111 0010 */ 9, 498, -2, -2, 0, 0 },
403− { /* 36: 1 1111 0011 */ 9, 499, 2, -2, 0, 0 },
404− { /* 37: 11 1110 1000 */ 10, 1000, -3, -2, 0, 0 },
405− { /* 38: 11 1110 1001 */ 10, 1001, 3, -2, 0, 0 },
406− { /* 39: 11 1110 1010 */ 10, 1002, -2, 3, 0, 0 },
407− { /* 40: 11 1110 1011 */ 10, 1003, 2, -3, 0, 0 },
408− { /* 41: 11 1110 1100 */ 10, 1004, 3, 2, 0, 0 },
409− { /* 42: 11 1110 1101 */ 10, 1005, 2, 3, 0, 0 },
410− { /* 43: 11 1110 1110 */ 10, 1006, -3, 2, 0, 0 },
411− { /* 44: 11 1110 1111 */ 10, 1007, -2, -3, 0, 0 },
412− { /* 45: 11 1111 0000 */ 10, 1008, 0, -4, 0, 0 },
413− { /* 46: 11 1111 0001 */ 10, 1009, -4, 0, 0, 0 },
414− { /* 47: 11 1111 0010 */ 10, 1010, 4, 1, 0, 0 },
415− { /* 48: 11 1111 0011 */ 10, 1011, 4, 0, 0, 0 },
416− { /* 49: 111 1110 1000 */ 11, 2024, -4, -1, 0, 0 },
417− { /* 50: 111 1110 1001 */ 11, 2025, 0, 4, 0, 0 },
418− { /* 51: 111 1110 1010 */ 11, 2026, 4, -1, 0, 0 },
419− { /* 52: 111 1110 1011 */ 11, 2027, -1, -4, 0, 0 },
420− { /* 53: 111 1110 1100 */ 11, 2028, 1, 4, 0, 0 },
421− { /* 54: 111 1110 1101 */ 11, 2029, -1, 4, 0, 0 },
422− { /* 55: 111 1110 1110 */ 11, 2030, -4, 1, 0, 0 },
423− { /* 56: 111 1110 1111 */ 11, 2031, 1, -4, 0, 0 },
424− { /* 57: 111 1111 0000 */ 11, 2032, 3, -3, 0, 0 },
425− { /* 58: 111 1111 0001 */ 11, 2033, -3, -3, 0, 0 },
426− { /* 59: 111 1111 0010 */ 11, 2034, -3, 3, 0, 0 },
427− { /* 60: 111 1111 0011 */ 11, 2035, -2, 4, 0, 0 },
428− { /* 61: 111 1111 0100 */ 11, 2036, -4, -2, 0, 0 },
429− { /* 62: 111 1111 0101 */ 11, 2037, 4, 2, 0, 0 },
430− { /* 63: 111 1111 0110 */ 11, 2038, 2, -4, 0, 0 },
431− { /* 64: 111 1111 0111 */ 11, 2039, 2, 4, 0, 0 },
432− { /* 65: 111 1111 1000 */ 11, 2040, 3, 3, 0, 0 },
433− { /* 66: 111 1111 1001 */ 11, 2041, -4, 2, 0, 0 },
434− { /* 67: 1111 1111 0100 */ 12, 4084, -2, -4, 0, 0 },
435− { /* 68: 1111 1111 0101 */ 12, 4085, 4, -2, 0, 0 },
436− { /* 69: 1111 1111 0110 */ 12, 4086, 3, -4, 0, 0 },
437− { /* 70: 1111 1111 0111 */ 12, 4087, -4, -3, 0, 0 },
438− { /* 71: 1111 1111 1000 */ 12, 4088, -4, 3, 0, 0 },
439− { /* 72: 1111 1111 1001 */ 12, 4089, 3, 4, 0, 0 },
440− { /* 73: 1111 1111 1010 */ 12, 4090, -3, 4, 0, 0 },
441− { /* 74: 1111 1111 1011 */ 12, 4091, 4, 3, 0, 0 },
442− { /* 75: 1111 1111 1100 */ 12, 4092, 4, -3, 0, 0 },
443− { /* 76: 1111 1111 1101 */ 12, 4093, -3, -4, 0, 0 },
444− { /* 77: 1 1111 1111 1100 */ 13, 8188, 4, -4, 0, 0 },
445− { /* 78: 1 1111 1111 1101 */ 13, 8189, -4, 4, 0, 0 },
446− { /* 79: 1 1111 1111 1110 */ 13, 8190, 4, 4, 0, 0 },
447− { /* 80: 1 1111 1111 1111 */ 13, 8191, -4, -4, 0, 0 }
448−};
449−
450−extern codebook book6[] = {
451− /* idx codeword len codew x y v w */
452− { /* 0: 0000 */ 4, 0, 0, 0, 0, 0 },
453− { /* 1: 0001 */ 4, 1, 1, 0, 0, 0 },
454− { /* 2: 0010 */ 4, 2, 0, -1, 0, 0 },
455− { /* 3: 0011 */ 4, 3, 0, 1, 0, 0 },
456− { /* 4: 0100 */ 4, 4, -1, 0, 0, 0 },
457− { /* 5: 0101 */ 4, 5, 1, 1, 0, 0 },
458− { /* 6: 0110 */ 4, 6, -1, 1, 0, 0 },
459− { /* 7: 0111 */ 4, 7, 1, -1, 0, 0 },
460− { /* 8: 1000 */ 4, 8, -1, -1, 0, 0 },
461− { /* 9: 10 0100 */ 6, 36, 2, -1, 0, 0 },
462− { /* 10: 10 0101 */ 6, 37, 2, 1, 0, 0 },
463− { /* 11: 10 0110 */ 6, 38, -2, 1, 0, 0 },
464− { /* 12: 10 0111 */ 6, 39, -2, -1, 0, 0 },
465− { /* 13: 10 1000 */ 6, 40, -2, 0, 0, 0 },
466− { /* 14: 10 1001 */ 6, 41, -1, 2, 0, 0 },
467− { /* 15: 10 1010 */ 6, 42, 2, 0, 0, 0 },
468− { /* 16: 10 1011 */ 6, 43, 1, -2, 0, 0 },
469− { /* 17: 10 1100 */ 6, 44, 1, 2, 0, 0 },
470− { /* 18: 10 1101 */ 6, 45, 0, -2, 0, 0 },
471− { /* 19: 10 1110 */ 6, 46, -1, -2, 0, 0 },
472− { /* 20: 10 1111 */ 6, 47, 0, 2, 0, 0 },
473− { /* 21: 11 0000 */ 6, 48, 2, -2, 0, 0 },
474− { /* 22: 11 0001 */ 6, 49, -2, 2, 0, 0 },
475− { /* 23: 11 0010 */ 6, 50, -2, -2, 0, 0 },
476− { /* 24: 11 0011 */ 6, 51, 2, 2, 0, 0 },
477− { /* 25: 110 1000 */ 7, 104, -3, 1, 0, 0 },
478− { /* 26: 110 1001 */ 7, 105, 3, 1, 0, 0 },
479− { /* 27: 110 1010 */ 7, 106, 3, -1, 0, 0 },
480− { /* 28: 110 1011 */ 7, 107, -1, 3, 0, 0 },
481− { /* 29: 110 1100 */ 7, 108, -3, -1, 0, 0 },
482− { /* 30: 110 1101 */ 7, 109, 1, 3, 0, 0 },
483− { /* 31: 110 1110 */ 7, 110, 1, -3, 0, 0 },
484− { /* 32: 110 1111 */ 7, 111, -1, -3, 0, 0 },
485− { /* 33: 111 0000 */ 7, 112, 3, 0, 0, 0 },
486− { /* 34: 111 0001 */ 7, 113, -3, 0, 0, 0 },
487− { /* 35: 111 0010 */ 7, 114, 0, -3, 0, 0 },
488− { /* 36: 111 0011 */ 7, 115, 0, 3, 0, 0 },
489− { /* 37: 111 0100 */ 7, 116, 3, 2, 0, 0 },
490− { /* 38: 1110 1010 */ 8, 234, -3, -2, 0, 0 },
491− { /* 39: 1110 1011 */ 8, 235, -2, 3, 0, 0 },
492− { /* 40: 1110 1100 */ 8, 236, 2, 3, 0, 0 },
493− { /* 41: 1110 1101 */ 8, 237, 3, -2, 0, 0 },
494− { /* 42: 1110 1110 */ 8, 238, 2, -3, 0, 0 },
495− { /* 43: 1110 1111 */ 8, 239, -2, -3, 0, 0 },
496− { /* 44: 1111 0000 */ 8, 240, -3, 2, 0, 0 },
497− { /* 45: 1111 0001 */ 8, 241, 3, 3, 0, 0 },
498− { /* 46: 1 1110 0100 */ 9, 484, 3, -3, 0, 0 },
499− { /* 47: 1 1110 0101 */ 9, 485, -3, -3, 0, 0 },
500− { /* 48: 1 1110 0110 */ 9, 486, -3, 3, 0, 0 },
501− { /* 49: 1 1110 0111 */ 9, 487, 1, -4, 0, 0 },
502− { /* 50: 1 1110 1000 */ 9, 488, -1, -4, 0, 0 },
503− { /* 51: 1 1110 1001 */ 9, 489, 4, 1, 0, 0 },
504− { /* 52: 1 1110 1010 */ 9, 490, -4, 1, 0, 0 },
505− { /* 53: 1 1110 1011 */ 9, 491, -4, -1, 0, 0 },
506− { /* 54: 1 1110 1100 */ 9, 492, 1, 4, 0, 0 },
507− { /* 55: 1 1110 1101 */ 9, 493, 4, -1, 0, 0 },
508− { /* 56: 1 1110 1110 */ 9, 494, -1, 4, 0, 0 },
509− { /* 57: 1 1110 1111 */ 9, 495, 0, -4, 0, 0 },
510− { /* 58: 1 1111 0000 */ 9, 496, -4, 2, 0, 0 },
511− { /* 59: 1 1111 0001 */ 9, 497, -4, -2, 0, 0 },
512− { /* 60: 1 1111 0010 */ 9, 498, 2, 4, 0, 0 },
513− { /* 61: 1 1111 0011 */ 9, 499, -2, -4, 0, 0 },
514− { /* 62: 1 1111 0100 */ 9, 500, -4, 0, 0, 0 },
515− { /* 63: 1 1111 0101 */ 9, 501, 4, 2, 0, 0 },
516− { /* 64: 1 1111 0110 */ 9, 502, 4, -2, 0, 0 },
517− { /* 65: 1 1111 0111 */ 9, 503, -2, 4, 0, 0 },
518− { /* 66: 1 1111 1000 */ 9, 504, 4, 0, 0, 0 },
519− { /* 67: 1 1111 1001 */ 9, 505, 2, -4, 0, 0 },
520− { /* 68: 1 1111 1010 */ 9, 506, 0, 4, 0, 0 },
521− { /* 69: 11 1111 0110 */ 10, 1014, -3, -4, 0, 0 },
522− { /* 70: 11 1111 0111 */ 10, 1015, -3, 4, 0, 0 },
523− { /* 71: 11 1111 1000 */ 10, 1016, 3, -4, 0, 0 },
524− { /* 72: 11 1111 1001 */ 10, 1017, 4, -3, 0, 0 },
525− { /* 73: 11 1111 1010 */ 10, 1018, 3, 4, 0, 0 },
526− { /* 74: 11 1111 1011 */ 10, 1019, 4, 3, 0, 0 },
527− { /* 75: 11 1111 1100 */ 10, 1020, -4, 3, 0, 0 },
528− { /* 76: 11 1111 1101 */ 10, 1021, -4, -3, 0, 0 },
529− { /* 77: 111 1111 1100 */ 11, 2044, 4, 4, 0, 0 },
530− { /* 78: 111 1111 1101 */ 11, 2045, -4, 4, 0, 0 },
531− { /* 79: 111 1111 1110 */ 11, 2046, -4, -4, 0, 0 },
532− { /* 80: 111 1111 1111 */ 11, 2047, 4, -4, 0, 0 }
533−};
534−
535−extern codebook book7[] = {
536− /* idx codeword len codew x y v w */
537− { /* 0: 0 */ 1, 0, 0, 0, 0, 0 },
538− { /* 1: 100 */ 3, 4, 1, 0, 0, 0 },
539− { /* 2: 101 */ 3, 5, 0, 1, 0, 0 },
540− { /* 3: 1100 */ 4, 12, 1, 1, 0, 0 },
541− { /* 4: 11 0100 */ 6, 52, 2, 1, 0, 0 },
542− { /* 5: 11 0101 */ 6, 53, 1, 2, 0, 0 },
543− { /* 6: 11 0110 */ 6, 54, 2, 0, 0, 0 },
544− { /* 7: 11 0111 */ 6, 55, 0, 2, 0, 0 },
545− { /* 8: 111 0000 */ 7, 112, 3, 1, 0, 0 },
546− { /* 9: 111 0001 */ 7, 113, 1, 3, 0, 0 },
547− { /* 10: 111 0010 */ 7, 114, 2, 2, 0, 0 },
548− { /* 11: 111 0011 */ 7, 115, 3, 0, 0, 0 },
549− { /* 12: 111 0100 */ 7, 116, 0, 3, 0, 0 },
550− { /* 13: 1110 1010 */ 8, 234, 2, 3, 0, 0 },
551− { /* 14: 1110 1011 */ 8, 235, 3, 2, 0, 0 },
552− { /* 15: 1110 1100 */ 8, 236, 1, 4, 0, 0 },
553− { /* 16: 1110 1101 */ 8, 237, 4, 1, 0, 0 },
554− { /* 17: 1110 1110 */ 8, 238, 1, 5, 0, 0 },
555− { /* 18: 1110 1111 */ 8, 239, 5, 1, 0, 0 },
556− { /* 19: 1111 0000 */ 8, 240, 3, 3, 0, 0 },
557− { /* 20: 1111 0001 */ 8, 241, 2, 4, 0, 0 },
558− { /* 21: 1111 0010 */ 8, 242, 0, 4, 0, 0 },
559− { /* 22: 1111 0011 */ 8, 243, 4, 0, 0, 0 },
560− { /* 23: 1 1110 1000 */ 9, 488, 4, 2, 0, 0 },
561− { /* 24: 1 1110 1001 */ 9, 489, 2, 5, 0, 0 },
562− { /* 25: 1 1110 1010 */ 9, 490, 5, 2, 0, 0 },
563− { /* 26: 1 1110 1011 */ 9, 491, 0, 5, 0, 0 },
564− { /* 27: 1 1110 1100 */ 9, 492, 6, 1, 0, 0 },
565− { /* 28: 1 1110 1101 */ 9, 493, 5, 0, 0, 0 },
566− { /* 29: 1 1110 1110 */ 9, 494, 1, 6, 0, 0 },
567− { /* 30: 1 1110 1111 */ 9, 495, 4, 3, 0, 0 },
568− { /* 31: 1 1111 0000 */ 9, 496, 3, 5, 0, 0 },
569− { /* 32: 1 1111 0001 */ 9, 497, 3, 4, 0, 0 },
570− { /* 33: 1 1111 0010 */ 9, 498, 5, 3, 0, 0 },
571− { /* 34: 1 1111 0011 */ 9, 499, 2, 6, 0, 0 },
572− { /* 35: 1 1111 0100 */ 9, 500, 6, 2, 0, 0 },
573− { /* 36: 1 1111 0101 */ 9, 501, 1, 7, 0, 0 },
574− { /* 37: 11 1110 1100 */ 10, 1004, 3, 6, 0, 0 },
575− { /* 38: 11 1110 1101 */ 10, 1005, 0, 6, 0, 0 },
576− { /* 39: 11 1110 1110 */ 10, 1006, 6, 0, 0, 0 },
577− { /* 40: 11 1110 1111 */ 10, 1007, 4, 4, 0, 0 },
578− { /* 41: 11 1111 0000 */ 10, 1008, 7, 1, 0, 0 },
579− { /* 42: 11 1111 0001 */ 10, 1009, 4, 5, 0, 0 },
580− { /* 43: 11 1111 0010 */ 10, 1010, 7, 2, 0, 0 },
581− { /* 44: 11 1111 0011 */ 10, 1011, 5, 4, 0, 0 },
582− { /* 45: 11 1111 0100 */ 10, 1012, 6, 3, 0, 0 },
583− { /* 46: 11 1111 0101 */ 10, 1013, 2, 7, 0, 0 },
584− { /* 47: 11 1111 0110 */ 10, 1014, 7, 3, 0, 0 },
585− { /* 48: 11 1111 0111 */ 10, 1015, 6, 4, 0, 0 },
586− { /* 49: 11 1111 1000 */ 10, 1016, 5, 5, 0, 0 },
587− { /* 50: 11 1111 1001 */ 10, 1017, 4, 6, 0, 0 },
588− { /* 51: 11 1111 1010 */ 10, 1018, 3, 7, 0, 0 },
589− { /* 52: 111 1111 0110 */ 11, 2038, 7, 0, 0, 0 },
590− { /* 53: 111 1111 0111 */ 11, 2039, 0, 7, 0, 0 },
591− { /* 54: 111 1111 1000 */ 11, 2040, 6, 5, 0, 0 },
592− { /* 55: 111 1111 1001 */ 11, 2041, 5, 6, 0, 0 },
593− { /* 56: 111 1111 1010 */ 11, 2042, 7, 4, 0, 0 },
594− { /* 57: 111 1111 1011 */ 11, 2043, 4, 7, 0, 0 },
595− { /* 58: 111 1111 1100 */ 11, 2044, 5, 7, 0, 0 },
596− { /* 59: 111 1111 1101 */ 11, 2045, 7, 5, 0, 0 },
597− { /* 60: 1111 1111 1100 */ 12, 4092, 7, 6, 0, 0 },
598− { /* 61: 1111 1111 1101 */ 12, 4093, 6, 6, 0, 0 },
599− { /* 62: 1111 1111 1110 */ 12, 4094, 6, 7, 0, 0 },
600− { /* 63: 1111 1111 1111 */ 12, 4095, 7, 7, 0, 0 }
601−};
602−
603−extern codebook book8[] = {
604− /* idx codeword len codew x y v w */
605− { /* 0: 000 */ 3, 0, 1, 1, 0, 0 },
606− { /* 1: 0010 */ 4, 2, 2, 1, 0, 0 },
607− { /* 2: 0011 */ 4, 3, 1, 0, 0, 0 },
608− { /* 3: 0100 */ 4, 4, 1, 2, 0, 0 },
609− { /* 4: 0101 */ 4, 5, 0, 1, 0, 0 },
610− { /* 5: 0110 */ 4, 6, 2, 2, 0, 0 },
611− { /* 6: 0 1110 */ 5, 14, 0, 0, 0, 0 },
612− { /* 7: 0 1111 */ 5, 15, 2, 0, 0, 0 },
613− { /* 8: 1 0000 */ 5, 16, 0, 2, 0, 0 },
614− { /* 9: 1 0001 */ 5, 17, 3, 1, 0, 0 },
615− { /* 10: 1 0010 */ 5, 18, 1, 3, 0, 0 },
616− { /* 11: 1 0011 */ 5, 19, 3, 2, 0, 0 },
617− { /* 12: 1 0100 */ 5, 20, 2, 3, 0, 0 },
618− { /* 13: 10 1010 */ 6, 42, 3, 3, 0, 0 },
619− { /* 14: 10 1011 */ 6, 43, 4, 1, 0, 0 },
620− { /* 15: 10 1100 */ 6, 44, 1, 4, 0, 0 },
621− { /* 16: 10 1101 */ 6, 45, 4, 2, 0, 0 },
622− { /* 17: 10 1110 */ 6, 46, 2, 4, 0, 0 },
623− { /* 18: 10 1111 */ 6, 47, 3, 0, 0, 0 },
624− { /* 19: 11 0000 */ 6, 48, 0, 3, 0, 0 },
625− { /* 20: 11 0001 */ 6, 49, 4, 3, 0, 0 },
626− { /* 21: 11 0010 */ 6, 50, 3, 4, 0, 0 },
627− { /* 22: 11 0011 */ 6, 51, 5, 2, 0, 0 },
628− { /* 23: 110 1000 */ 7, 104, 5, 1, 0, 0 },
629− { /* 24: 110 1001 */ 7, 105, 2, 5, 0, 0 },
630− { /* 25: 110 1010 */ 7, 106, 1, 5, 0, 0 },
631− { /* 26: 110 1011 */ 7, 107, 5, 3, 0, 0 },
632− { /* 27: 110 1100 */ 7, 108, 3, 5, 0, 0 },
633− { /* 28: 110 1101 */ 7, 109, 4, 4, 0, 0 },
634− { /* 29: 110 1110 */ 7, 110, 5, 4, 0, 0 },
635− { /* 30: 110 1111 */ 7, 111, 0, 4, 0, 0 },
636− { /* 31: 111 0000 */ 7, 112, 4, 5, 0, 0 },
637− { /* 32: 111 0001 */ 7, 113, 4, 0, 0, 0 },
638− { /* 33: 111 0010 */ 7, 114, 2, 6, 0, 0 },
639− { /* 34: 111 0011 */ 7, 115, 6, 2, 0, 0 },
640− { /* 35: 111 0100 */ 7, 116, 6, 1, 0, 0 },
641− { /* 36: 111 0101 */ 7, 117, 1, 6, 0, 0 },
642− { /* 37: 1110 1100 */ 8, 236, 3, 6, 0, 0 },
643− { /* 38: 1110 1101 */ 8, 237, 6, 3, 0, 0 },
644− { /* 39: 1110 1110 */ 8, 238, 5, 5, 0, 0 },
645− { /* 40: 1110 1111 */ 8, 239, 5, 0, 0, 0 },
646− { /* 41: 1111 0000 */ 8, 240, 6, 4, 0, 0 },
647− { /* 42: 1111 0001 */ 8, 241, 0, 5, 0, 0 },
648− { /* 43: 1111 0010 */ 8, 242, 4, 6, 0, 0 },
649− { /* 44: 1111 0011 */ 8, 243, 7, 1, 0, 0 },
650− { /* 45: 1111 0100 */ 8, 244, 7, 2, 0, 0 },
651− { /* 46: 1111 0101 */ 8, 245, 2, 7, 0, 0 },
652− { /* 47: 1111 0110 */ 8, 246, 6, 5, 0, 0 },
653− { /* 48: 1111 0111 */ 8, 247, 7, 3, 0, 0 },
654− { /* 49: 1111 1000 */ 8, 248, 1, 7, 0, 0 },
655− { /* 50: 1111 1001 */ 8, 249, 5, 6, 0, 0 },
656− { /* 51: 1111 1010 */ 8, 250, 3, 7, 0, 0 },
657− { /* 52: 1 1111 0110 */ 9, 502, 6, 6, 0, 0 },
658− { /* 53: 1 1111 0111 */ 9, 503, 7, 4, 0, 0 },
659− { /* 54: 1 1111 1000 */ 9, 504, 6, 0, 0, 0 },
660− { /* 55: 1 1111 1001 */ 9, 505, 4, 7, 0, 0 },
661− { /* 56: 1 1111 1010 */ 9, 506, 0, 6, 0, 0 },
662− { /* 57: 1 1111 1011 */ 9, 507, 7, 5, 0, 0 },
663− { /* 58: 1 1111 1100 */ 9, 508, 7, 6, 0, 0 },
664− { /* 59: 1 1111 1101 */ 9, 509, 6, 7, 0, 0 },
665− { /* 60: 11 1111 1100 */ 10, 1020, 5, 7, 0, 0 },
666− { /* 61: 11 1111 1101 */ 10, 1021, 7, 0, 0, 0 },
667− { /* 62: 11 1111 1110 */ 10, 1022, 0, 7, 0, 0 },
668− { /* 63: 11 1111 1111 */ 10, 1023, 7, 7, 0, 0 }
669−};
670−
671−extern codebook book9[] = {
672− /* idx codeword len codew x y v w */
673− { /* 0: 0 */ 1, 0, 0, 0, 0, 0 },
674− { /* 1: 100 */ 3, 4, 1, 0, 0, 0 },
675− { /* 2: 101 */ 3, 5, 0, 1, 0, 0 },
676− { /* 3: 1100 */ 4, 12, 1, 1, 0, 0 },
677− { /* 4: 11 0100 */ 6, 52, 2, 1, 0, 0 },
678− { /* 5: 11 0101 */ 6, 53, 1, 2, 0, 0 },
679− { /* 6: 11 0110 */ 6, 54, 2, 0, 0, 0 },
680− { /* 7: 11 0111 */ 6, 55, 0, 2, 0, 0 },
681− { /* 8: 111 0000 */ 7, 112, 3, 1, 0, 0 },
682− { /* 9: 111 0001 */ 7, 113, 2, 2, 0, 0 },
683− { /* 10: 111 0010 */ 7, 114, 1, 3, 0, 0 },
684− { /* 11: 1110 0110 */ 8, 230, 3, 0, 0, 0 },
685− { /* 12: 1110 0111 */ 8, 231, 0, 3, 0, 0 },
686− { /* 13: 1110 1000 */ 8, 232, 2, 3, 0, 0 },
687− { /* 14: 1110 1001 */ 8, 233, 3, 2, 0, 0 },
688− { /* 15: 1110 1010 */ 8, 234, 1, 4, 0, 0 },
689− { /* 16: 1110 1011 */ 8, 235, 4, 1, 0, 0 },
690− { /* 17: 1110 1100 */ 8, 236, 2, 4, 0, 0 },
691− { /* 18: 1110 1101 */ 8, 237, 1, 5, 0, 0 },
692− { /* 19: 1 1101 1100 */ 9, 476, 4, 2, 0, 0 },
693− { /* 20: 1 1101 1101 */ 9, 477, 3, 3, 0, 0 },
694− { /* 21: 1 1101 1110 */ 9, 478, 0, 4, 0, 0 },
695− { /* 22: 1 1101 1111 */ 9, 479, 4, 0, 0, 0 },
696− { /* 23: 1 1110 0000 */ 9, 480, 5, 1, 0, 0 },
697− { /* 24: 1 1110 0001 */ 9, 481, 2, 5, 0, 0 },
698− { /* 25: 1 1110 0010 */ 9, 482, 1, 6, 0, 0 },
699− { /* 26: 1 1110 0011 */ 9, 483, 3, 4, 0, 0 },
700− { /* 27: 1 1110 0100 */ 9, 484, 5, 2, 0, 0 },
701− { /* 28: 1 1110 0101 */ 9, 485, 6, 1, 0, 0 },
702− { /* 29: 1 1110 0110 */ 9, 486, 4, 3, 0, 0 },
703− { /* 30: 11 1100 1110 */ 10, 974, 0, 5, 0, 0 },
704− { /* 31: 11 1100 1111 */ 10, 975, 2, 6, 0, 0 },
705− { /* 32: 11 1101 0000 */ 10, 976, 5, 0, 0, 0 },
706− { /* 33: 11 1101 0001 */ 10, 977, 1, 7, 0, 0 },
707− { /* 34: 11 1101 0010 */ 10, 978, 3, 5, 0, 0 },
708− { /* 35: 11 1101 0011 */ 10, 979, 1, 8, 0, 0 },
709− { /* 36: 11 1101 0100 */ 10, 980, 8, 1, 0, 0 },
710− { /* 37: 11 1101 0101 */ 10, 981, 4, 4, 0, 0 },
711− { /* 38: 11 1101 0110 */ 10, 982, 5, 3, 0, 0 },
712− { /* 39: 11 1101 0111 */ 10, 983, 6, 2, 0, 0 },
713− { /* 40: 11 1101 1000 */ 10, 984, 7, 1, 0, 0 },
714− { /* 41: 11 1101 1001 */ 10, 985, 0, 6, 0, 0 },
715− { /* 42: 11 1101 1010 */ 10, 986, 8, 2, 0, 0 },
716− { /* 43: 11 1101 1011 */ 10, 987, 2, 8, 0, 0 },
717− { /* 44: 11 1101 1100 */ 10, 988, 3, 6, 0, 0 },
718− { /* 45: 11 1101 1101 */ 10, 989, 2, 7, 0, 0 },
719− { /* 46: 11 1101 1110 */ 10, 990, 4, 5, 0, 0 },
720− { /* 47: 11 1101 1111 */ 10, 991, 9, 1, 0, 0 },
721− { /* 48: 11 1110 0000 */ 10, 992, 1, 9, 0, 0 },
722− { /* 49: 11 1110 0001 */ 10, 993, 7, 2, 0, 0 },
723− { /* 50: 111 1100 0100 */ 11, 1988, 6, 0, 0, 0 },
724− { /* 51: 111 1100 0101 */ 11, 1989, 5, 4, 0, 0 },
725− { /* 52: 111 1100 0110 */ 11, 1990, 6, 3, 0, 0 },
726− { /* 53: 111 1100 0111 */ 11, 1991, 8, 3, 0, 0 },
727− { /* 54: 111 1100 1000 */ 11, 1992, 0, 7, 0, 0 },
728− { /* 55: 111 1100 1001 */ 11, 1993, 9, 2, 0, 0 },
729− { /* 56: 111 1100 1010 */ 11, 1994, 3, 8, 0, 0 },
730− { /* 57: 111 1100 1011 */ 11, 1995, 4, 6, 0, 0 },
731− { /* 58: 111 1100 1100 */ 11, 1996, 3, 7, 0, 0 },
732− { /* 59: 111 1100 1101 */ 11, 1997, 0, 8, 0, 0 },
733− { /* 60: 111 1100 1110 */ 11, 1998, 10, 1, 0, 0 },
734− { /* 61: 111 1100 1111 */ 11, 1999, 6, 4, 0, 0 },
735− { /* 62: 111 1101 0000 */ 11, 2000, 2, 9, 0, 0 },
736− { /* 63: 111 1101 0001 */ 11, 2001, 5, 5, 0, 0 },
737− { /* 64: 111 1101 0010 */ 11, 2002, 8, 0, 0, 0 },
738− { /* 65: 111 1101 0011 */ 11, 2003, 7, 0, 0, 0 },
739− { /* 66: 111 1101 0100 */ 11, 2004, 7, 3, 0, 0 },
740− { /* 67: 111 1101 0101 */ 11, 2005, 10, 2, 0, 0 },
741− { /* 68: 111 1101 0110 */ 11, 2006, 9, 3, 0, 0 },
742− { /* 69: 111 1101 0111 */ 11, 2007, 8, 4, 0, 0 },
743− { /* 70: 111 1101 1000 */ 11, 2008, 1, 10, 0, 0 },
744− { /* 71: 111 1101 1001 */ 11, 2009, 7, 4, 0, 0 },
745− { /* 72: 111 1101 1010 */ 11, 2010, 6, 5, 0, 0 },
746− { /* 73: 111 1101 1011 */ 11, 2011, 5, 6, 0, 0 },
747− { /* 74: 111 1101 1100 */ 11, 2012, 4, 8, 0, 0 },
748− { /* 75: 111 1101 1101 */ 11, 2013, 4, 7, 0, 0 },
749− { /* 76: 111 1101 1110 */ 11, 2014, 3, 9, 0, 0 },
750− { /* 77: 111 1101 1111 */ 11, 2015, 11, 1, 0, 0 },
751− { /* 78: 111 1110 0000 */ 11, 2016, 5, 8, 0, 0 },
752− { /* 79: 111 1110 0001 */ 11, 2017, 9, 0, 0, 0 },
753− { /* 80: 111 1110 0010 */ 11, 2018, 8, 5, 0, 0 },
754− { /* 81: 1111 1100 0110 */ 12, 4038, 10, 3, 0, 0 },
755− { /* 82: 1111 1100 0111 */ 12, 4039, 2, 10, 0, 0 },
756− { /* 83: 1111 1100 1000 */ 12, 4040, 0, 9, 0, 0 },
757− { /* 84: 1111 1100 1001 */ 12, 4041, 11, 2, 0, 0 },
758− { /* 85: 1111 1100 1010 */ 12, 4042, 9, 4, 0, 0 },
759− { /* 86: 1111 1100 1011 */ 12, 4043, 6, 6, 0, 0 },
760− { /* 87: 1111 1100 1100 */ 12, 4044, 12, 1, 0, 0 },
761− { /* 88: 1111 1100 1101 */ 12, 4045, 4, 9, 0, 0 },
762− { /* 89: 1111 1100 1110 */ 12, 4046, 8, 6, 0, 0 },
763− { /* 90: 1111 1100 1111 */ 12, 4047, 1, 11, 0, 0 },
764− { /* 91: 1111 1101 0000 */ 12, 4048, 9, 5, 0, 0 },
765− { /* 92: 1111 1101 0001 */ 12, 4049, 10, 4, 0, 0 },
766− { /* 93: 1111 1101 0010 */ 12, 4050, 5, 7, 0, 0 },
767− { /* 94: 1111 1101 0011 */ 12, 4051, 7, 5, 0, 0 },
768− { /* 95: 1111 1101 0100 */ 12, 4052, 2, 11, 0, 0 },
769− { /* 96: 1111 1101 0101 */ 12, 4053, 1, 12, 0, 0 },
770− { /* 97: 1111 1101 0110 */ 12, 4054, 12, 2, 0, 0 },
771− { /* 98: 1111 1101 0111 */ 12, 4055, 11, 3, 0, 0 },
772− { /* 99: 1111 1101 1000 */ 12, 4056, 3, 10, 0, 0 },
773− { /* 100: 1111 1101 1001 */ 12, 4057, 5, 9, 0, 0 },
774− { /* 101: 1111 1101 1010 */ 12, 4058, 6, 7, 0, 0 },
775− { /* 102: 1111 1101 1011 */ 12, 4059, 8, 7, 0, 0 },
776− { /* 103: 1111 1101 1100 */ 12, 4060, 11, 4, 0, 0 },
777− { /* 104: 1111 1101 1101 */ 12, 4061, 0, 10, 0, 0 },
778− { /* 105: 1111 1101 1110 */ 12, 4062, 7, 6, 0, 0 },
779− { /* 106: 1111 1101 1111 */ 12, 4063, 12, 3, 0, 0 },
780− { /* 107: 1111 1110 0000 */ 12, 4064, 10, 0, 0, 0 },
781− { /* 108: 1111 1110 0001 */ 12, 4065, 10, 5, 0, 0 },
782− { /* 109: 1111 1110 0010 */ 12, 4066, 4, 10, 0, 0 },
783− { /* 110: 1111 1110 0011 */ 12, 4067, 6, 8, 0, 0 },
784− { /* 111: 1111 1110 0100 */ 12, 4068, 2, 12, 0, 0 },
785− { /* 112: 1111 1110 0101 */ 12, 4069, 9, 6, 0, 0 },
786− { /* 113: 1111 1110 0110 */ 12, 4070, 9, 7, 0, 0 },
787− { /* 114: 1111 1110 0111 */ 12, 4071, 4, 11, 0, 0 },
788− { /* 115: 1111 1110 1000 */ 12, 4072, 11, 0, 0, 0 },
789− { /* 116: 1111 1110 1001 */ 12, 4073, 6, 9, 0, 0 },
790− { /* 117: 1111 1110 1010 */ 12, 4074, 3, 11, 0, 0 },
791− { /* 118: 1111 1110 1011 */ 12, 4075, 5, 10, 0, 0 },
792− { /* 119: 1 1111 1101 1000 */ 13, 8152, 8, 8, 0, 0 },
793− { /* 120: 1 1111 1101 1001 */ 13, 8153, 7, 8, 0, 0 },
794− { /* 121: 1 1111 1101 1010 */ 13, 8154, 12, 5, 0, 0 },
795− { /* 122: 1 1111 1101 1011 */ 13, 8155, 3, 12, 0, 0 },
796− { /* 123: 1 1111 1101 1100 */ 13, 8156, 11, 5, 0, 0 },
797− { /* 124: 1 1111 1101 1101 */ 13, 8157, 7, 7, 0, 0 },
798− { /* 125: 1 1111 1101 1110 */ 13, 8158, 12, 4, 0, 0 },
799− { /* 126: 1 1111 1101 1111 */ 13, 8159, 11, 6, 0, 0 },
800− { /* 127: 1 1111 1110 0000 */ 13, 8160, 10, 6, 0, 0 },
801− { /* 128: 1 1111 1110 0001 */ 13, 8161, 4, 12, 0, 0 },
802− { /* 129: 1 1111 1110 0010 */ 13, 8162, 7, 9, 0, 0 },
803− { /* 130: 1 1111 1110 0011 */ 13, 8163, 5, 11, 0, 0 },
804− { /* 131: 1 1111 1110 0100 */ 13, 8164, 0, 11, 0, 0 },
805− { /* 132: 1 1111 1110 0101 */ 13, 8165, 12, 6, 0, 0 },
806− { /* 133: 1 1111 1110 0110 */ 13, 8166, 6, 10, 0, 0 },
807− { /* 134: 1 1111 1110 0111 */ 13, 8167, 12, 0, 0, 0 },
808− { /* 135: 1 1111 1110 1000 */ 13, 8168, 10, 7, 0, 0 },
809− { /* 136: 1 1111 1110 1001 */ 13, 8169, 5, 12, 0, 0 },
810− { /* 137: 1 1111 1110 1010 */ 13, 8170, 7, 10, 0, 0 },
811− { /* 138: 1 1111 1110 1011 */ 13, 8171, 9, 8, 0, 0 },
812− { /* 139: 1 1111 1110 1100 */ 13, 8172, 0, 12, 0, 0 },
813− { /* 140: 1 1111 1110 1101 */ 13, 8173, 11, 7, 0, 0 },
814− { /* 141: 1 1111 1110 1110 */ 13, 8174, 8, 9, 0, 0 },
815− { /* 142: 1 1111 1110 1111 */ 13, 8175, 9, 9, 0, 0 },
816− { /* 143: 1 1111 1111 0000 */ 13, 8176, 10, 8, 0, 0 },
817− { /* 144: 1 1111 1111 0001 */ 13, 8177, 7, 11, 0, 0 },
818− { /* 145: 1 1111 1111 0010 */ 13, 8178, 12, 7, 0, 0 },
819− { /* 146: 1 1111 1111 0011 */ 13, 8179, 6, 11, 0, 0 },
820− { /* 147: 1 1111 1111 0100 */ 13, 8180, 8, 11, 0, 0 },
821− { /* 148: 1 1111 1111 0101 */ 13, 8181, 11, 8, 0, 0 },
822− { /* 149: 1 1111 1111 0110 */ 13, 8182, 7, 12, 0, 0 },
823− { /* 150: 1 1111 1111 0111 */ 13, 8183, 6, 12, 0, 0 },
824− { /* 151: 11 1111 1111 0000 */ 14, 16368, 8, 10, 0, 0 },
825− { /* 152: 11 1111 1111 0001 */ 14, 16369, 10, 9, 0, 0 },
826− { /* 153: 11 1111 1111 0010 */ 14, 16370, 8, 12, 0, 0 },
827− { /* 154: 11 1111 1111 0011 */ 14, 16371, 9, 10, 0, 0 },
828− { /* 155: 11 1111 1111 0100 */ 14, 16372, 9, 11, 0, 0 },
829− { /* 156: 11 1111 1111 0101 */ 14, 16373, 9, 12, 0, 0 },
830− { /* 157: 11 1111 1111 0110 */ 14, 16374, 10, 11, 0, 0 },
831− { /* 158: 11 1111 1111 0111 */ 14, 16375, 12, 9, 0, 0 },
832− { /* 159: 11 1111 1111 1000 */ 14, 16376, 10, 10, 0, 0 },
833− { /* 160: 11 1111 1111 1001 */ 14, 16377, 11, 9, 0, 0 },
834− { /* 161: 11 1111 1111 1010 */ 14, 16378, 12, 8, 0, 0 },
835− { /* 162: 11 1111 1111 1011 */ 14, 16379, 11, 10, 0, 0 },
836− { /* 163: 11 1111 1111 1100 */ 14, 16380, 12, 10, 0, 0 },
837− { /* 164: 11 1111 1111 1101 */ 14, 16381, 12, 11, 0, 0 },
838− { /* 165: 111 1111 1111 1100 */ 15, 32764, 10, 12, 0, 0 },
839− { /* 166: 111 1111 1111 1101 */ 15, 32765, 11, 11, 0, 0 },
840− { /* 167: 111 1111 1111 1110 */ 15, 32766, 11, 12, 0, 0 },
841− { /* 168: 111 1111 1111 1111 */ 15, 32767, 12, 12, 0, 0 }
842−};
843−
844−extern codebook book10[] = {
845− /* idx codeword len codew x y v w */
846− { /* 0: 0000 */ 4, 0, 1, 1, 0, 0 },
847− { /* 1: 0001 */ 4, 1, 1, 2, 0, 0 },
848− { /* 2: 0010 */ 4, 2, 2, 1, 0, 0 },
849− { /* 3: 0 0110 */ 5, 6, 2, 2, 0, 0 },
850− { /* 4: 0 0111 */ 5, 7, 1, 0, 0, 0 },
851− { /* 5: 0 1000 */ 5, 8, 0, 1, 0, 0 },
852− { /* 6: 0 1001 */ 5, 9, 1, 3, 0, 0 },
853− { /* 7: 0 1010 */ 5, 10, 3, 2, 0, 0 },
854− { /* 8: 0 1011 */ 5, 11, 3, 1, 0, 0 },
855− { /* 9: 0 1100 */ 5, 12, 2, 3, 0, 0 },
856− { /* 10: 0 1101 */ 5, 13, 3, 3, 0, 0 },
857− { /* 11: 01 1100 */ 6, 28, 2, 0, 0, 0 },
858− { /* 12: 01 1101 */ 6, 29, 0, 2, 0, 0 },
859− { /* 13: 01 1110 */ 6, 30, 2, 4, 0, 0 },
860− { /* 14: 01 1111 */ 6, 31, 4, 2, 0, 0 },
861− { /* 15: 10 0000 */ 6, 32, 1, 4, 0, 0 },
862− { /* 16: 10 0001 */ 6, 33, 4, 1, 0, 0 },
863− { /* 17: 10 0010 */ 6, 34, 0, 0, 0, 0 },
864− { /* 18: 10 0011 */ 6, 35, 4, 3, 0, 0 },
865− { /* 19: 10 0100 */ 6, 36, 3, 4, 0, 0 },
866− { /* 20: 10 0101 */ 6, 37, 3, 0, 0, 0 },
867− { /* 21: 10 0110 */ 6, 38, 0, 3, 0, 0 },
868− { /* 22: 10 0111 */ 6, 39, 4, 4, 0, 0 },
869− { /* 23: 10 1000 */ 6, 40, 2, 5, 0, 0 },
870− { /* 24: 10 1001 */ 6, 41, 5, 2, 0, 0 },
871− { /* 25: 101 0100 */ 7, 84, 1, 5, 0, 0 },
872− { /* 26: 101 0101 */ 7, 85, 5, 1, 0, 0 },
873− { /* 27: 101 0110 */ 7, 86, 5, 3, 0, 0 },
874− { /* 28: 101 0111 */ 7, 87, 3, 5, 0, 0 },
875− { /* 29: 101 1000 */ 7, 88, 5, 4, 0, 0 },
876− { /* 30: 101 1001 */ 7, 89, 4, 5, 0, 0 },
877− { /* 31: 101 1010 */ 7, 90, 6, 2, 0, 0 },
878− { /* 32: 101 1011 */ 7, 91, 2, 6, 0, 0 },
879− { /* 33: 101 1100 */ 7, 92, 6, 3, 0, 0 },
880− { /* 34: 101 1101 */ 7, 93, 4, 0, 0, 0 },
881− { /* 35: 101 1110 */ 7, 94, 6, 1, 0, 0 },
882− { /* 36: 101 1111 */ 7, 95, 0, 4, 0, 0 },
883− { /* 37: 110 0000 */ 7, 96, 1, 6, 0, 0 },
884− { /* 38: 110 0001 */ 7, 97, 3, 6, 0, 0 },
885− { /* 39: 110 0010 */ 7, 98, 5, 5, 0, 0 },
886− { /* 40: 110 0011 */ 7, 99, 6, 4, 0, 0 },
887− { /* 41: 110 0100 */ 7, 100, 4, 6, 0, 0 },
888− { /* 42: 1100 1010 */ 8, 202, 6, 5, 0, 0 },
889− { /* 43: 1100 1011 */ 8, 203, 7, 2, 0, 0 },
890− { /* 44: 1100 1100 */ 8, 204, 3, 7, 0, 0 },
891− { /* 45: 1100 1101 */ 8, 205, 2, 7, 0, 0 },
892− { /* 46: 1100 1110 */ 8, 206, 5, 6, 0, 0 },
893− { /* 47: 1100 1111 */ 8, 207, 8, 2, 0, 0 },
894− { /* 48: 1101 0000 */ 8, 208, 7, 3, 0, 0 },
895− { /* 49: 1101 0001 */ 8, 209, 5, 0, 0, 0 },
896− { /* 50: 1101 0010 */ 8, 210, 7, 1, 0, 0 },
897− { /* 51: 1101 0011 */ 8, 211, 0, 5, 0, 0 },
898− { /* 52: 1101 0100 */ 8, 212, 8, 1, 0, 0 },
899− { /* 53: 1101 0101 */ 8, 213, 1, 7, 0, 0 },
900− { /* 54: 1101 0110 */ 8, 214, 8, 3, 0, 0 },
901− { /* 55: 1101 0111 */ 8, 215, 7, 4, 0, 0 },
902− { /* 56: 1101 1000 */ 8, 216, 4, 7, 0, 0 },
903− { /* 57: 1101 1001 */ 8, 217, 2, 8, 0, 0 },
904− { /* 58: 1101 1010 */ 8, 218, 6, 6, 0, 0 },
905− { /* 59: 1101 1011 */ 8, 219, 7, 5, 0, 0 },
906− { /* 60: 1101 1100 */ 8, 220, 1, 8, 0, 0 },
907− { /* 61: 1101 1101 */ 8, 221, 3, 8, 0, 0 },
908− { /* 62: 1101 1110 */ 8, 222, 8, 4, 0, 0 },
909− { /* 63: 1101 1111 */ 8, 223, 4, 8, 0, 0 },
910− { /* 64: 1110 0000 */ 8, 224, 5, 7, 0, 0 },
911− { /* 65: 1110 0001 */ 8, 225, 8, 5, 0, 0 },
912− { /* 66: 1110 0010 */ 8, 226, 5, 8, 0, 0 },
913− { /* 67: 1 1100 0110 */ 9, 454, 7, 6, 0, 0 },
914− { /* 68: 1 1100 0111 */ 9, 455, 6, 7, 0, 0 },
915− { /* 69: 1 1100 1000 */ 9, 456, 9, 2, 0, 0 },
916− { /* 70: 1 1100 1001 */ 9, 457, 6, 0, 0, 0 },
917− { /* 71: 1 1100 1010 */ 9, 458, 6, 8, 0, 0 },
918− { /* 72: 1 1100 1011 */ 9, 459, 9, 3, 0, 0 },
919− { /* 73: 1 1100 1100 */ 9, 460, 3, 9, 0, 0 },
920− { /* 74: 1 1100 1101 */ 9, 461, 9, 1, 0, 0 },
921− { /* 75: 1 1100 1110 */ 9, 462, 2, 9, 0, 0 },
922− { /* 76: 1 1100 1111 */ 9, 463, 0, 6, 0, 0 },
923− { /* 77: 1 1101 0000 */ 9, 464, 8, 6, 0, 0 },
924− { /* 78: 1 1101 0001 */ 9, 465, 9, 4, 0, 0 },
925− { /* 79: 1 1101 0010 */ 9, 466, 4, 9, 0, 0 },
926− { /* 80: 1 1101 0011 */ 9, 467, 10, 2, 0, 0 },
927− { /* 81: 1 1101 0100 */ 9, 468, 1, 9, 0, 0 },
928− { /* 82: 1 1101 0101 */ 9, 469, 7, 7, 0, 0 },
929− { /* 83: 1 1101 0110 */ 9, 470, 8, 7, 0, 0 },
930− { /* 84: 1 1101 0111 */ 9, 471, 9, 5, 0, 0 },
931− { /* 85: 1 1101 1000 */ 9, 472, 7, 8, 0, 0 },
932− { /* 86: 1 1101 1001 */ 9, 473, 10, 3, 0, 0 },
933− { /* 87: 1 1101 1010 */ 9, 474, 5, 9, 0, 0 },
934− { /* 88: 1 1101 1011 */ 9, 475, 10, 4, 0, 0 },
935− { /* 89: 1 1101 1100 */ 9, 476, 2, 10, 0, 0 },
936− { /* 90: 1 1101 1101 */ 9, 477, 10, 1, 0, 0 },
937− { /* 91: 1 1101 1110 */ 9, 478, 3, 10, 0, 0 },
938− { /* 92: 1 1101 1111 */ 9, 479, 9, 6, 0, 0 },
939− { /* 93: 1 1110 0000 */ 9, 480, 6, 9, 0, 0 },
940− { /* 94: 1 1110 0001 */ 9, 481, 8, 0, 0, 0 },
941− { /* 95: 1 1110 0010 */ 9, 482, 4, 10, 0, 0 },
942− { /* 96: 1 1110 0011 */ 9, 483, 7, 0, 0, 0 },
943− { /* 97: 1 1110 0100 */ 9, 484, 11, 2, 0, 0 },
944− { /* 98: 11 1100 1010 */ 10, 970, 7, 9, 0, 0 },
945− { /* 99: 11 1100 1011 */ 10, 971, 11, 3, 0, 0 },
946− { /* 100: 11 1100 1100 */ 10, 972, 10, 6, 0, 0 },
947− { /* 101: 11 1100 1101 */ 10, 973, 1, 10, 0, 0 },
948− { /* 102: 11 1100 1110 */ 10, 974, 11, 1, 0, 0 },
949− { /* 103: 11 1100 1111 */ 10, 975, 9, 7, 0, 0 },
950− { /* 104: 11 1101 0000 */ 10, 976, 0, 7, 0, 0 },
951− { /* 105: 11 1101 0001 */ 10, 977, 8, 8, 0, 0 },
952− { /* 106: 11 1101 0010 */ 10, 978, 10, 5, 0, 0 },
953− { /* 107: 11 1101 0011 */ 10, 979, 3, 11, 0, 0 },
954− { /* 108: 11 1101 0100 */ 10, 980, 5, 10, 0, 0 },
955− { /* 109: 11 1101 0101 */ 10, 981, 8, 9, 0, 0 },
956− { /* 110: 11 1101 0110 */ 10, 982, 11, 5, 0, 0 },
957− { /* 111: 11 1101 0111 */ 10, 983, 0, 8, 0, 0 },
958− { /* 112: 11 1101 1000 */ 10, 984, 11, 4, 0, 0 },
959− { /* 113: 11 1101 1001 */ 10, 985, 2, 11, 0, 0 },
960− { /* 114: 11 1101 1010 */ 10, 986, 7, 10, 0, 0 },
961− { /* 115: 11 1101 1011 */ 10, 987, 6, 10, 0, 0 },
962− { /* 116: 11 1101 1100 */ 10, 988, 10, 7, 0, 0 },
963− { /* 117: 11 1101 1101 */ 10, 989, 4, 11, 0, 0 },
964− { /* 118: 11 1101 1110 */ 10, 990, 1, 11, 0, 0 },
965− { /* 119: 11 1101 1111 */ 10, 991, 12, 2, 0, 0 },
966− { /* 120: 11 1110 0000 */ 10, 992, 9, 8, 0, 0 },
967− { /* 121: 11 1110 0001 */ 10, 993, 12, 3, 0, 0 },
968− { /* 122: 11 1110 0010 */ 10, 994, 11, 6, 0, 0 },
969− { /* 123: 11 1110 0011 */ 10, 995, 5, 11, 0, 0 },
970− { /* 124: 11 1110 0100 */ 10, 996, 12, 4, 0, 0 },
971− { /* 125: 11 1110 0101 */ 10, 997, 11, 7, 0, 0 },
972− { /* 126: 11 1110 0110 */ 10, 998, 12, 5, 0, 0 },
973− { /* 127: 11 1110 0111 */ 10, 999, 3, 12, 0, 0 },
974− { /* 128: 11 1110 1000 */ 10, 1000, 6, 11, 0, 0 },
975− { /* 129: 11 1110 1001 */ 10, 1001, 9, 0, 0, 0 },
976− { /* 130: 11 1110 1010 */ 10, 1002, 10, 8, 0, 0 },
977− { /* 131: 11 1110 1011 */ 10, 1003, 10, 0, 0, 0 },
978− { /* 132: 11 1110 1100 */ 10, 1004, 12, 1, 0, 0 },
979− { /* 133: 11 1110 1101 */ 10, 1005, 0, 9, 0, 0 },
980− { /* 134: 11 1110 1110 */ 10, 1006, 4, 12, 0, 0 },
981− { /* 135: 11 1110 1111 */ 10, 1007, 9, 9, 0, 0 },
982− { /* 136: 11 1111 0000 */ 10, 1008, 12, 6, 0, 0 },
983− { /* 137: 11 1111 0001 */ 10, 1009, 2, 12, 0, 0 },
984− { /* 138: 11 1111 0010 */ 10, 1010, 8, 10, 0, 0 },
985− { /* 139: 111 1110 0110 */ 11, 2022, 9, 10, 0, 0 },
986− { /* 140: 111 1110 0111 */ 11, 2023, 1, 12, 0, 0 },
987− { /* 141: 111 1110 1000 */ 11, 2024, 11, 8, 0, 0 },
988− { /* 142: 111 1110 1001 */ 11, 2025, 12, 7, 0, 0 },
989− { /* 143: 111 1110 1010 */ 11, 2026, 7, 11, 0, 0 },
990− { /* 144: 111 1110 1011 */ 11, 2027, 5, 12, 0, 0 },
991− { /* 145: 111 1110 1100 */ 11, 2028, 6, 12, 0, 0 },
992− { /* 146: 111 1110 1101 */ 11, 2029, 10, 9, 0, 0 },
993− { /* 147: 111 1110 1110 */ 11, 2030, 8, 11, 0, 0 },
994− { /* 148: 111 1110 1111 */ 11, 2031, 12, 8, 0, 0 },
995− { /* 149: 111 1111 0000 */ 11, 2032, 0, 10, 0, 0 },
996− { /* 150: 111 1111 0001 */ 11, 2033, 7, 12, 0, 0 },
997− { /* 151: 111 1111 0010 */ 11, 2034, 11, 0, 0, 0 },
998− { /* 152: 111 1111 0011 */ 11, 2035, 10, 10, 0, 0 },
999− { /* 153: 111 1111 0100 */ 11, 2036, 11, 9, 0, 0 },
1000− { /* 154: 111 1111 0101 */ 11, 2037, 11, 10, 0, 0 },
1001− { /* 155: 111 1111 0110 */ 11, 2038, 0, 11, 0, 0 },
1002− { /* 156: 111 1111 0111 */ 11, 2039, 11, 11, 0, 0 },
1003− { /* 157: 111 1111 1000 */ 11, 2040, 9, 11, 0, 0 },
1004− { /* 158: 111 1111 1001 */ 11, 2041, 10, 11, 0, 0 },
1005− { /* 159: 111 1111 1010 */ 11, 2042, 12, 0, 0, 0 },
1006− { /* 160: 111 1111 1011 */ 11, 2043, 8, 12, 0, 0 },
1007− { /* 161: 1111 1111 1000 */ 12, 4088, 12, 9, 0, 0 },
1008− { /* 162: 1111 1111 1001 */ 12, 4089, 10, 12, 0, 0 },
1009− { /* 163: 1111 1111 1010 */ 12, 4090, 9, 12, 0, 0 },
1010− { /* 164: 1111 1111 1011 */ 12, 4091, 11, 12, 0, 0 },
1011− { /* 165: 1111 1111 1100 */ 12, 4092, 12, 11, 0, 0 },
1012− { /* 166: 1111 1111 1101 */ 12, 4093, 0, 12, 0, 0 },
1013− { /* 167: 1111 1111 1110 */ 12, 4094, 12, 10, 0, 0 },
1014− { /* 168: 1111 1111 1111 */ 12, 4095, 12, 12, 0, 0 }
1015−};
1016−
1017−extern codebook book11[] = {
1018− /* idx codeword len codew x y v w */
1019− { /* 0: 0000 */ 4, 0, 0, 0, 0, 0 },
1020− { /* 1: 0001 */ 4, 1, 1, 1, 0, 0 },
1021− { /* 2: 0 0100 */ 5, 4, 16, 16, 0, 0 },
1022− { /* 3: 0 0101 */ 5, 5, 1, 0, 0, 0 },
1023− { /* 4: 0 0110 */ 5, 6, 0, 1, 0, 0 },
1024− { /* 5: 0 0111 */ 5, 7, 2, 1, 0, 0 },
1025− { /* 6: 0 1000 */ 5, 8, 1, 2, 0, 0 },
1026− { /* 7: 0 1001 */ 5, 9, 2, 2, 0, 0 },
1027− { /* 8: 01 0100 */ 6, 20, 1, 3, 0, 0 },
1028− { /* 9: 01 0101 */ 6, 21, 3, 1, 0, 0 },
1029− { /* 10: 01 0110 */ 6, 22, 3, 2, 0, 0 },
1030− { /* 11: 01 0111 */ 6, 23, 2, 0, 0, 0 },
1031− { /* 12: 01 1000 */ 6, 24, 2, 3, 0, 0 },
1032− { /* 13: 01 1001 */ 6, 25, 0, 2, 0, 0 },
1033− { /* 14: 01 1010 */ 6, 26, 3, 3, 0, 0 },
1034− { /* 15: 011 0110 */ 7, 54, 4, 1, 0, 0 },
1035− { /* 16: 011 0111 */ 7, 55, 1, 4, 0, 0 },
1036− { /* 17: 011 1000 */ 7, 56, 4, 2, 0, 0 },
1037− { /* 18: 011 1001 */ 7, 57, 2, 4, 0, 0 },
1038− { /* 19: 011 1010 */ 7, 58, 4, 3, 0, 0 },
1039− { /* 20: 011 1011 */ 7, 59, 3, 4, 0, 0 },
1040− { /* 21: 011 1100 */ 7, 60, 3, 0, 0, 0 },
1041− { /* 22: 011 1101 */ 7, 61, 0, 3, 0, 0 },
1042− { /* 23: 011 1110 */ 7, 62, 5, 1, 0, 0 },
1043− { /* 24: 011 1111 */ 7, 63, 5, 2, 0, 0 },
1044− { /* 25: 100 0000 */ 7, 64, 2, 5, 0, 0 },
1045− { /* 26: 100 0001 */ 7, 65, 4, 4, 0, 0 },
1046− { /* 27: 100 0010 */ 7, 66, 1, 5, 0, 0 },
1047− { /* 28: 100 0011 */ 7, 67, 5, 3, 0, 0 },
1048− { /* 29: 100 0100 */ 7, 68, 3, 5, 0, 0 },
1049− { /* 30: 100 0101 */ 7, 69, 5, 4, 0, 0 },
1050− { /* 31: 1000 1100 */ 8, 140, 4, 5, 0, 0 },
1051− { /* 32: 1000 1101 */ 8, 141, 6, 2, 0, 0 },
1052− { /* 33: 1000 1110 */ 8, 142, 2, 6, 0, 0 },
1053− { /* 34: 1000 1111 */ 8, 143, 6, 1, 0, 0 },
1054− { /* 35: 1001 0000 */ 8, 144, 6, 3, 0, 0 },
1055− { /* 36: 1001 0001 */ 8, 145, 3, 6, 0, 0 },
1056− { /* 37: 1001 0010 */ 8, 146, 1, 6, 0, 0 },
1057− { /* 38: 1001 0011 */ 8, 147, 4, 16, 0, 0 },
1058− { /* 39: 1001 0100 */ 8, 148, 3, 16, 0, 0 },
1059− { /* 40: 1001 0101 */ 8, 149, 16, 5, 0, 0 },
1060− { /* 41: 1001 0110 */ 8, 150, 16, 3, 0, 0 },
1061− { /* 42: 1001 0111 */ 8, 151, 16, 4, 0, 0 },
1062− { /* 43: 1001 1000 */ 8, 152, 6, 4, 0, 0 },
1063− { /* 44: 1001 1001 */ 8, 153, 16, 6, 0, 0 },
1064− { /* 45: 1001 1010 */ 8, 154, 4, 0, 0, 0 },
1065− { /* 46: 1001 1011 */ 8, 155, 4, 6, 0, 0 },
1066− { /* 47: 1001 1100 */ 8, 156, 0, 4, 0, 0 },
1067− { /* 48: 1001 1101 */ 8, 157, 2, 16, 0, 0 },
1068− { /* 49: 1001 1110 */ 8, 158, 5, 5, 0, 0 },
1069− { /* 50: 1001 1111 */ 8, 159, 5, 16, 0, 0 },
1070− { /* 51: 1010 0000 */ 8, 160, 16, 7, 0, 0 },
1071− { /* 52: 1010 0001 */ 8, 161, 16, 2, 0, 0 },
1072− { /* 53: 1010 0010 */ 8, 162, 16, 8, 0, 0 },
1073− { /* 54: 1010 0011 */ 8, 163, 2, 7, 0, 0 },
1074− { /* 55: 1010 0100 */ 8, 164, 7, 2, 0, 0 },
1075− { /* 56: 1010 0101 */ 8, 165, 3, 7, 0, 0 },
1076− { /* 57: 1010 0110 */ 8, 166, 6, 5, 0, 0 },
1077− { /* 58: 1010 0111 */ 8, 167, 5, 6, 0, 0 },
1078− { /* 59: 1010 1000 */ 8, 168, 6, 16, 0, 0 },
1079− { /* 60: 1010 1001 */ 8, 169, 16, 10, 0, 0 },
1080− { /* 61: 1010 1010 */ 8, 170, 7, 3, 0, 0 },
1081− { /* 62: 1010 1011 */ 8, 171, 7, 1, 0, 0 },
1082− { /* 63: 1010 1100 */ 8, 172, 16, 9, 0, 0 },
1083− { /* 64: 1010 1101 */ 8, 173, 7, 16, 0, 0 },
1084− { /* 65: 1010 1110 */ 8, 174, 1, 16, 0, 0 },
1085− { /* 66: 1010 1111 */ 8, 175, 1, 7, 0, 0 },
1086− { /* 67: 1011 0000 */ 8, 176, 4, 7, 0, 0 },
1087− { /* 68: 1011 0001 */ 8, 177, 16, 11, 0, 0 },
1088− { /* 69: 1011 0010 */ 8, 178, 7, 4, 0, 0 },
1089− { /* 70: 1011 0011 */ 8, 179, 16, 12, 0, 0 },
1090− { /* 71: 1011 0100 */ 8, 180, 8, 16, 0, 0 },
1091− { /* 72: 1011 0101 */ 8, 181, 16, 1, 0, 0 },
1092− { /* 73: 1011 0110 */ 8, 182, 6, 6, 0, 0 },
1093− { /* 74: 1011 0111 */ 8, 183, 9, 16, 0, 0 },
1094− { /* 75: 1011 1000 */ 8, 184, 2, 8, 0, 0 },
1095− { /* 76: 1011 1001 */ 8, 185, 5, 7, 0, 0 },
1096− { /* 77: 1011 1010 */ 8, 186, 10, 16, 0, 0 },
1097− { /* 78: 1011 1011 */ 8, 187, 16, 13, 0, 0 },
1098− { /* 79: 1011 1100 */ 8, 188, 8, 3, 0, 0 },
1099− { /* 80: 1011 1101 */ 8, 189, 8, 2, 0, 0 },
1100− { /* 81: 1011 1110 */ 8, 190, 3, 8, 0, 0 },
1101− { /* 82: 1011 1111 */ 8, 191, 5, 0, 0, 0 },
1102− { /* 83: 1100 0000 */ 8, 192, 16, 14, 0, 0 },
1103− { /* 84: 1100 0001 */ 8, 193, 11, 16, 0, 0 },
1104− { /* 85: 1100 0010 */ 8, 194, 7, 5, 0, 0 },
1105− { /* 86: 1100 0011 */ 8, 195, 4, 8, 0, 0 },
1106− { /* 87: 1100 0100 */ 8, 196, 6, 7, 0, 0 },
1107− { /* 88: 1100 0101 */ 8, 197, 7, 6, 0, 0 },
1108− { /* 89: 1100 0110 */ 8, 198, 0, 5, 0, 0 },
1109− { /* 90: 1 1000 1110 */ 9, 398, 8, 4, 0, 0 },
1110− { /* 91: 1 1000 1111 */ 9, 399, 16, 15, 0, 0 },
1111− { /* 92: 1 1001 0000 */ 9, 400, 12, 16, 0, 0 },
1112− { /* 93: 1 1001 0001 */ 9, 401, 1, 8, 0, 0 },
1113− { /* 94: 1 1001 0010 */ 9, 402, 8, 1, 0, 0 },
1114− { /* 95: 1 1001 0011 */ 9, 403, 14, 16, 0, 0 },
1115− { /* 96: 1 1001 0100 */ 9, 404, 5, 8, 0, 0 },
1116− { /* 97: 1 1001 0101 */ 9, 405, 13, 16, 0, 0 },
1117− { /* 98: 1 1001 0110 */ 9, 406, 3, 9, 0, 0 },
1118− { /* 99: 1 1001 0111 */ 9, 407, 8, 5, 0, 0 },
1119− { /* 100: 1 1001 1000 */ 9, 408, 7, 7, 0, 0 },
1120− { /* 101: 1 1001 1001 */ 9, 409, 2, 9, 0, 0 },
1121− { /* 102: 1 1001 1010 */ 9, 410, 8, 6, 0, 0 },
1122− { /* 103: 1 1001 1011 */ 9, 411, 9, 2, 0, 0 },
1123− { /* 104: 1 1001 1100 */ 9, 412, 9, 3, 0, 0 },
1124− { /* 105: 1 1001 1101 */ 9, 413, 15, 16, 0, 0 },
1125− { /* 106: 1 1001 1110 */ 9, 414, 4, 9, 0, 0 },
1126− { /* 107: 1 1001 1111 */ 9, 415, 6, 8, 0, 0 },
1127− { /* 108: 1 1010 0000 */ 9, 416, 6, 0, 0, 0 },
1128− { /* 109: 1 1010 0001 */ 9, 417, 9, 4, 0, 0 },
1129− { /* 110: 1 1010 0010 */ 9, 418, 5, 9, 0, 0 },
1130− { /* 111: 1 1010 0011 */ 9, 419, 8, 7, 0, 0 },
1131− { /* 112: 1 1010 0100 */ 9, 420, 7, 8, 0, 0 },
1132− { /* 113: 1 1010 0101 */ 9, 421, 1, 9, 0, 0 },
1133− { /* 114: 1 1010 0110 */ 9, 422, 10, 3, 0, 0 },
1134− { /* 115: 1 1010 0111 */ 9, 423, 0, 6, 0, 0 },
1135− { /* 116: 1 1010 1000 */ 9, 424, 10, 2, 0, 0 },
1136− { /* 117: 1 1010 1001 */ 9, 425, 9, 1, 0, 0 },
1137− { /* 118: 1 1010 1010 */ 9, 426, 9, 5, 0, 0 },
1138− { /* 119: 1 1010 1011 */ 9, 427, 4, 10, 0, 0 },
1139− { /* 120: 1 1010 1100 */ 9, 428, 2, 10, 0, 0 },
1140− { /* 121: 1 1010 1101 */ 9, 429, 9, 6, 0, 0 },
1141− { /* 122: 1 1010 1110 */ 9, 430, 3, 10, 0, 0 },
1142− { /* 123: 1 1010 1111 */ 9, 431, 6, 9, 0, 0 },
1143− { /* 124: 1 1011 0000 */ 9, 432, 10, 4, 0, 0 },
1144− { /* 125: 1 1011 0001 */ 9, 433, 8, 8, 0, 0 },
1145− { /* 126: 1 1011 0010 */ 9, 434, 10, 5, 0, 0 },
1146− { /* 127: 1 1011 0011 */ 9, 435, 9, 7, 0, 0 },
1147− { /* 128: 1 1011 0100 */ 9, 436, 11, 3, 0, 0 },
1148− { /* 129: 1 1011 0101 */ 9, 437, 1, 10, 0, 0 },
1149− { /* 130: 1 1011 0110 */ 9, 438, 7, 0, 0, 0 },
1150− { /* 131: 1 1011 0111 */ 9, 439, 10, 6, 0, 0 },
1151− { /* 132: 1 1011 1000 */ 9, 440, 7, 9, 0, 0 },
1152− { /* 133: 1 1011 1001 */ 9, 441, 3, 11, 0, 0 },
1153− { /* 134: 1 1011 1010 */ 9, 442, 5, 10, 0, 0 },
1154− { /* 135: 1 1011 1011 */ 9, 443, 10, 1, 0, 0 },
1155− { /* 136: 1 1011 1100 */ 9, 444, 4, 11, 0, 0 },
1156− { /* 137: 1 1011 1101 */ 9, 445, 11, 2, 0, 0 },
1157− { /* 138: 1 1011 1110 */ 9, 446, 13, 2, 0, 0 },
1158− { /* 139: 1 1011 1111 */ 9, 447, 6, 10, 0, 0 },
1159− { /* 140: 1 1100 0000 */ 9, 448, 13, 3, 0, 0 },
1160− { /* 141: 1 1100 0001 */ 9, 449, 2, 11, 0, 0 },
1161− { /* 142: 1 1100 0010 */ 9, 450, 16, 0, 0, 0 },
1162− { /* 143: 1 1100 0011 */ 9, 451, 5, 11, 0, 0 },
1163− { /* 144: 1 1100 0100 */ 9, 452, 11, 5, 0, 0 },
1164− { /* 145: 11 1000 1010 */ 10, 906, 11, 4, 0, 0 },
1165− { /* 146: 11 1000 1011 */ 10, 907, 9, 8, 0, 0 },
1166− { /* 147: 11 1000 1100 */ 10, 908, 7, 10, 0, 0 },
1167− { /* 148: 11 1000 1101 */ 10, 909, 8, 9, 0, 0 },
1168− { /* 149: 11 1000 1110 */ 10, 910, 0, 16, 0, 0 },
1169− { /* 150: 11 1000 1111 */ 10, 911, 4, 13, 0, 0 },
1170− { /* 151: 11 1001 0000 */ 10, 912, 0, 7, 0, 0 },
1171− { /* 152: 11 1001 0001 */ 10, 913, 3, 13, 0, 0 },
1172− { /* 153: 11 1001 0010 */ 10, 914, 11, 6, 0, 0 },
1173− { /* 154: 11 1001 0011 */ 10, 915, 13, 1, 0, 0 },
1174− { /* 155: 11 1001 0100 */ 10, 916, 13, 4, 0, 0 },
1175− { /* 156: 11 1001 0101 */ 10, 917, 12, 3, 0, 0 },
1176− { /* 157: 11 1001 0110 */ 10, 918, 2, 13, 0, 0 },
1177− { /* 158: 11 1001 0111 */ 10, 919, 13, 5, 0, 0 },
1178− { /* 159: 11 1001 1000 */ 10, 920, 8, 10, 0, 0 },
1179− { /* 160: 11 1001 1001 */ 10, 921, 6, 11, 0, 0 },
1180− { /* 161: 11 1001 1010 */ 10, 922, 10, 8, 0, 0 },
1181− { /* 162: 11 1001 1011 */ 10, 923, 10, 7, 0, 0 },
1182− { /* 163: 11 1001 1100 */ 10, 924, 14, 2, 0, 0 },
1183− { /* 164: 11 1001 1101 */ 10, 925, 12, 4, 0, 0 },
1184− { /* 165: 11 1001 1110 */ 10, 926, 1, 11, 0, 0 },
1185− { /* 166: 11 1001 1111 */ 10, 927, 4, 12, 0, 0 },
1186− { /* 167: 11 1010 0000 */ 10, 928, 11, 1, 0, 0 },
1187− { /* 168: 11 1010 0001 */ 10, 929, 3, 12, 0, 0 },
1188− { /* 169: 11 1010 0010 */ 10, 930, 1, 13, 0, 0 },
1189− { /* 170: 11 1010 0011 */ 10, 931, 12, 2, 0, 0 },
1190− { /* 171: 11 1010 0100 */ 10, 932, 7, 11, 0, 0 },
1191− { /* 172: 11 1010 0101 */ 10, 933, 3, 14, 0, 0 },
1192− { /* 173: 11 1010 0110 */ 10, 934, 5, 12, 0, 0 },
1193− { /* 174: 11 1010 0111 */ 10, 935, 5, 13, 0, 0 },
1194− { /* 175: 11 1010 1000 */ 10, 936, 14, 4, 0, 0 },
1195− { /* 176: 11 1010 1001 */ 10, 937, 4, 14, 0, 0 },
1196− { /* 177: 11 1010 1010 */ 10, 938, 11, 7, 0, 0 },
1197− { /* 178: 11 1010 1011 */ 10, 939, 14, 3, 0, 0 },
1198− { /* 179: 11 1010 1100 */ 10, 940, 12, 5, 0, 0 },
1199− { /* 180: 11 1010 1101 */ 10, 941, 13, 6, 0, 0 },
1200− { /* 181: 11 1010 1110 */ 10, 942, 12, 6, 0, 0 },
1201− { /* 182: 11 1010 1111 */ 10, 943, 8, 0, 0, 0 },
1202− { /* 183: 11 1011 0000 */ 10, 944, 11, 8, 0, 0 },
1203− { /* 184: 11 1011 0001 */ 10, 945, 2, 12, 0, 0 },
1204− { /* 185: 11 1011 0010 */ 10, 946, 9, 9, 0, 0 },
1205− { /* 186: 11 1011 0011 */ 10, 947, 14, 5, 0, 0 },
1206− { /* 187: 11 1011 0100 */ 10, 948, 6, 13, 0, 0 },
1207− { /* 188: 11 1011 0101 */ 10, 949, 10, 10, 0, 0 },
1208− { /* 189: 11 1011 0110 */ 10, 950, 15, 2, 0, 0 },
1209− { /* 190: 11 1011 0111 */ 10, 951, 8, 11, 0, 0 },
1210− { /* 191: 11 1011 1000 */ 10, 952, 9, 10, 0, 0 },
1211− { /* 192: 11 1011 1001 */ 10, 953, 14, 6, 0, 0 },
1212− { /* 193: 11 1011 1010 */ 10, 954, 10, 9, 0, 0 },
1213− { /* 194: 11 1011 1011 */ 10, 955, 5, 14, 0, 0 },
1214− { /* 195: 11 1011 1100 */ 10, 956, 11, 9, 0, 0 },
1215− { /* 196: 11 1011 1101 */ 10, 957, 14, 1, 0, 0 },
1216− { /* 197: 11 1011 1110 */ 10, 958, 2, 14, 0, 0 },
1217− { /* 198: 11 1011 1111 */ 10, 959, 6, 12, 0, 0 },
1218− { /* 199: 11 1100 0000 */ 10, 960, 1, 12, 0, 0 },
1219− { /* 200: 11 1100 0001 */ 10, 961, 13, 8, 0, 0 },
1220− { /* 201: 11 1100 0010 */ 10, 962, 0, 8, 0, 0 },
1221− { /* 202: 11 1100 0011 */ 10, 963, 13, 7, 0, 0 },
1222− { /* 203: 11 1100 0100 */ 10, 964, 7, 12, 0, 0 },
1223− { /* 204: 11 1100 0101 */ 10, 965, 12, 7, 0, 0 },
1224− { /* 205: 11 1100 0110 */ 10, 966, 7, 13, 0, 0 },
1225− { /* 206: 11 1100 0111 */ 10, 967, 15, 3, 0, 0 },
1226− { /* 207: 11 1100 1000 */ 10, 968, 12, 1, 0, 0 },
1227− { /* 208: 11 1100 1001 */ 10, 969, 6, 14, 0, 0 },
1228− { /* 209: 11 1100 1010 */ 10, 970, 2, 15, 0, 0 },
1229− { /* 210: 11 1100 1011 */ 10, 971, 15, 5, 0, 0 },
1230− { /* 211: 11 1100 1100 */ 10, 972, 15, 4, 0, 0 },
1231− { /* 212: 11 1100 1101 */ 10, 973, 1, 14, 0, 0 },
1232− { /* 213: 11 1100 1110 */ 10, 974, 9, 11, 0, 0 },
1233− { /* 214: 11 1100 1111 */ 10, 975, 4, 15, 0, 0 },
1234− { /* 215: 11 1101 0000 */ 10, 976, 14, 7, 0, 0 },
1235− { /* 216: 11 1101 0001 */ 10, 977, 8, 13, 0, 0 },
1236− { /* 217: 11 1101 0010 */ 10, 978, 13, 9, 0, 0 },
1237− { /* 218: 11 1101 0011 */ 10, 979, 8, 12, 0, 0 },
1238− { /* 219: 11 1101 0100 */ 10, 980, 5, 15, 0, 0 },
1239− { /* 220: 11 1101 0101 */ 10, 981, 3, 15, 0, 0 },
1240− { /* 221: 11 1101 0110 */ 10, 982, 10, 11, 0, 0 },
1241− { /* 222: 11 1101 0111 */ 10, 983, 11, 10, 0, 0 },
1242− { /* 223: 11 1101 1000 */ 10, 984, 12, 8, 0, 0 },
1243− { /* 224: 11 1101 1001 */ 10, 985, 15, 6, 0, 0 },
1244− { /* 225: 11 1101 1010 */ 10, 986, 15, 7, 0, 0 },
1245− { /* 226: 11 1101 1011 */ 10, 987, 8, 14, 0, 0 },
1246− { /* 227: 11 1101 1100 */ 10, 988, 15, 1, 0, 0 },
1247− { /* 228: 11 1101 1101 */ 10, 989, 7, 14, 0, 0 },
1248− { /* 229: 11 1101 1110 */ 10, 990, 9, 0, 0, 0 },
1249− { /* 230: 11 1101 1111 */ 10, 991, 0, 9, 0, 0 },
1250− { /* 231: 11 1110 0000 */ 10, 992, 9, 13, 0, 0 },
1251− { /* 232: 11 1110 0001 */ 10, 993, 9, 12, 0, 0 },
1252− { /* 233: 11 1110 0010 */ 10, 994, 12, 9, 0, 0 },
1253− { /* 234: 11 1110 0011 */ 10, 995, 14, 8, 0, 0 },
1254− { /* 235: 11 1110 0100 */ 10, 996, 10, 13, 0, 0 },
1255− { /* 236: 11 1110 0101 */ 10, 997, 14, 9, 0, 0 },
1256− { /* 237: 11 1110 0110 */ 10, 998, 12, 10, 0, 0 },
1257− { /* 238: 11 1110 0111 */ 10, 999, 6, 15, 0, 0 },
1258− { /* 239: 11 1110 1000 */ 10, 1000, 7, 15, 0, 0 },
1259− { /* 240: 111 1101 0010 */ 11, 2002, 9, 14, 0, 0 },
1260− { /* 241: 111 1101 0011 */ 11, 2003, 15, 8, 0, 0 },
1261− { /* 242: 111 1101 0100 */ 11, 2004, 11, 11, 0, 0 },
1262− { /* 243: 111 1101 0101 */ 11, 2005, 11, 14, 0, 0 },
1263− { /* 244: 111 1101 0110 */ 11, 2006, 1, 15, 0, 0 },
1264− { /* 245: 111 1101 0111 */ 11, 2007, 10, 12, 0, 0 },
1265− { /* 246: 111 1101 1000 */ 11, 2008, 10, 14, 0, 0 },
1266− { /* 247: 111 1101 1001 */ 11, 2009, 13, 11, 0, 0 },
1267− { /* 248: 111 1101 1010 */ 11, 2010, 13, 10, 0, 0 },
1268− { /* 249: 111 1101 1011 */ 11, 2011, 11, 13, 0, 0 },
1269− { /* 250: 111 1101 1100 */ 11, 2012, 11, 12, 0, 0 },
1270− { /* 251: 111 1101 1101 */ 11, 2013, 8, 15, 0, 0 },
1271− { /* 252: 111 1101 1110 */ 11, 2014, 14, 11, 0, 0 },
1272− { /* 253: 111 1101 1111 */ 11, 2015, 13, 12, 0, 0 },
1273− { /* 254: 111 1110 0000 */ 11, 2016, 12, 13, 0, 0 },
1274− { /* 255: 111 1110 0001 */ 11, 2017, 15, 9, 0, 0 },
1275− { /* 256: 111 1110 0010 */ 11, 2018, 14, 10, 0, 0 },
1276− { /* 257: 111 1110 0011 */ 11, 2019, 10, 0, 0, 0 },
1277− { /* 258: 111 1110 0100 */ 11, 2020, 12, 11, 0, 0 },
1278− { /* 259: 111 1110 0101 */ 11, 2021, 9, 15, 0, 0 },
1279− { /* 260: 111 1110 0110 */ 11, 2022, 0, 10, 0, 0 },
1280− { /* 261: 111 1110 0111 */ 11, 2023, 12, 12, 0, 0 },
1281− { /* 262: 111 1110 1000 */ 11, 2024, 11, 0, 0, 0 },
1282− { /* 263: 111 1110 1001 */ 11, 2025, 12, 14, 0, 0 },
1283− { /* 264: 111 1110 1010 */ 11, 2026, 10, 15, 0, 0 },
1284− { /* 265: 111 1110 1011 */ 11, 2027, 13, 13, 0, 0 },
1285− { /* 266: 111 1110 1100 */ 11, 2028, 0, 13, 0, 0 },
1286− { /* 267: 111 1110 1101 */ 11, 2029, 14, 12, 0, 0 },
1287− { /* 268: 111 1110 1110 */ 11, 2030, 15, 10, 0, 0 },
1288− { /* 269: 111 1110 1111 */ 11, 2031, 15, 11, 0, 0 },
1289− { /* 270: 111 1111 0000 */ 11, 2032, 11, 15, 0, 0 },
1290− { /* 271: 111 1111 0001 */ 11, 2033, 14, 13, 0, 0 },
1291− { /* 272: 111 1111 0010 */ 11, 2034, 13, 0, 0, 0 },
1292− { /* 273: 111 1111 0011 */ 11, 2035, 0, 11, 0, 0 },
1293− { /* 274: 111 1111 0100 */ 11, 2036, 13, 14, 0, 0 },
1294− { /* 275: 111 1111 0101 */ 11, 2037, 15, 12, 0, 0 },
1295− { /* 276: 111 1111 0110 */ 11, 2038, 15, 13, 0, 0 },
1296− { /* 277: 111 1111 0111 */ 11, 2039, 12, 15, 0, 0 },
1297− { /* 278: 111 1111 1000 */ 11, 2040, 14, 0, 0, 0 },
1298− { /* 279: 111 1111 1001 */ 11, 2041, 14, 14, 0, 0 },
1299− { /* 280: 111 1111 1010 */ 11, 2042, 13, 15, 0, 0 },
1300− { /* 281: 111 1111 1011 */ 11, 2043, 12, 0, 0, 0 },
1301− { /* 282: 111 1111 1100 */ 11, 2044, 14, 15, 0, 0 },
1302− { /* 283: 1111 1111 1010 */ 12, 4090, 0, 14, 0, 0 },
1303− { /* 284: 1111 1111 1011 */ 12, 4091, 0, 12, 0, 0 },
1304− { /* 285: 1111 1111 1100 */ 12, 4092, 15, 14, 0, 0 },
1305− { /* 286: 1111 1111 1101 */ 12, 4093, 15, 0, 0, 0 },
1306− { /* 287: 1111 1111 1110 */ 12, 4094, 0, 15, 0, 0 },
1307− { /* 288: 1111 1111 1111 */ 12, 4095, 15, 15, 0, 0 }
1308−};
1309−
1310−extern codebook_scl bookscl[] = {
1311− /* idx codeword len codew idx */
1312− { /* 0: 0 */ 1, 0, 60 },
1313− { /* 1: 100 */ 3, 4, 59 },
1314− { /* 2: 1010 */ 4, 10, 61 },
1315− { /* 3: 1011 */ 4, 11, 58 },
1316− { /* 4: 1100 */ 4, 12, 62 },
1317− { /* 5: 1 1010 */ 5, 26, 57 },
1318− { /* 6: 1 1011 */ 5, 27, 63 },
1319− { /* 7: 11 1000 */ 6, 56, 56 },
1320− { /* 8: 11 1001 */ 6, 57, 64 },
1321− { /* 9: 11 1010 */ 6, 58, 55 },
1322− { /* 10: 11 1011 */ 6, 59, 65 },
1323− { /* 11: 111 1000 */ 7, 120, 66 },
1324− { /* 12: 111 1001 */ 7, 121, 54 },
1325− { /* 13: 111 1010 */ 7, 122, 67 },
1326− { /* 14: 1111 0110 */ 8, 246, 53 },
1327− { /* 15: 1111 0111 */ 8, 247, 68 },
1328− { /* 16: 1111 1000 */ 8, 248, 52 },
1329− { /* 17: 1111 1001 */ 8, 249, 69 },
1330− { /* 18: 1111 1010 */ 8, 250, 51 },
1331− { /* 19: 1 1111 0110 */ 9, 502, 70 },
1332− { /* 20: 1 1111 0111 */ 9, 503, 50 },
1333− { /* 21: 1 1111 1000 */ 9, 504, 49 },
1334− { /* 22: 1 1111 1001 */ 9, 505, 71 },
1335− { /* 23: 11 1111 0100 */ 10, 1012, 72 },
1336− { /* 24: 11 1111 0101 */ 10, 1013, 48 },
1337− { /* 25: 11 1111 0110 */ 10, 1014, 73 },
1338− { /* 26: 11 1111 0111 */ 10, 1015, 47 },
1339− { /* 27: 11 1111 1000 */ 10, 1016, 74 },
1340− { /* 28: 11 1111 1001 */ 10, 1017, 46 },
1341− { /* 29: 111 1111 0100 */ 11, 2036, 76 },
1342− { /* 30: 111 1111 0101 */ 11, 2037, 75 },
1343− { /* 31: 111 1111 0110 */ 11, 2038, 77 },
1344− { /* 32: 111 1111 0111 */ 11, 2039, 78 },
1345− { /* 33: 111 1111 1000 */ 11, 2040, 45 },
1346− { /* 34: 111 1111 1001 */ 11, 2041, 43 },
1347− { /* 35: 1111 1111 0100 */ 12, 4084, 44 },
1348− { /* 36: 1111 1111 0101 */ 12, 4085, 79 },
1349− { /* 37: 1111 1111 0110 */ 12, 4086, 42 },
1350− { /* 38: 1111 1111 0111 */ 12, 4087, 41 },
1351− { /* 39: 1111 1111 1000 */ 12, 4088, 80 },
1352− { /* 40: 1111 1111 1001 */ 12, 4089, 40 },
1353− { /* 41: 1 1111 1111 0100 */ 13, 8180, 81 },
1354− { /* 42: 1 1111 1111 0101 */ 13, 8181, 39 },
1355− { /* 43: 1 1111 1111 0110 */ 13, 8182, 82 },
1356− { /* 44: 1 1111 1111 0111 */ 13, 8183, 38 },
1357− { /* 45: 1 1111 1111 1000 */ 13, 8184, 83 },
1358− { /* 46: 11 1111 1111 0010 */ 14, 16370, 37 },
1359− { /* 47: 11 1111 1111 0011 */ 14, 16371, 35 },
1360− { /* 48: 11 1111 1111 0100 */ 14, 16372, 85 },
1361− { /* 49: 11 1111 1111 0101 */ 14, 16373, 33 },
1362− { /* 50: 11 1111 1111 0110 */ 14, 16374, 36 },
1363− { /* 51: 11 1111 1111 0111 */ 14, 16375, 34 },
1364− { /* 52: 11 1111 1111 1000 */ 14, 16376, 84 },
1365− { /* 53: 11 1111 1111 1001 */ 14, 16377, 32 },
1366− { /* 54: 111 1111 1111 0100 */ 15, 32756, 87 },
1367− { /* 55: 111 1111 1111 0101 */ 15, 32757, 89 },
1368− { /* 56: 111 1111 1111 0110 */ 15, 32758, 30 },
1369− { /* 57: 111 1111 1111 0111 */ 15, 32759, 31 },
1370− { /* 58: 1111 1111 1111 0000 */ 16, 65520, 86 },
1371− { /* 59: 1111 1111 1111 0001 */ 16, 65521, 29 },
1372− { /* 60: 1111 1111 1111 0010 */ 16, 65522, 26 },
1373− { /* 61: 1111 1111 1111 0011 */ 16, 65523, 27 },
1374− { /* 62: 1111 1111 1111 0100 */ 16, 65524, 28 },
1375− { /* 63: 1111 1111 1111 0101 */ 16, 65525, 24 },
1376− { /* 64: 1111 1111 1111 0110 */ 16, 65526, 88 },
1377− { /* 65: 1 1111 1111 1110 1110 */ 17, 131054, 25 },
1378− { /* 66: 1 1111 1111 1110 1111 */ 17, 131055, 22 },
1379− { /* 67: 1 1111 1111 1111 0000 */ 17, 131056, 23 },
1380− { /* 68: 11 1111 1111 1110 0010 */ 18, 262114, 90 },
1381− { /* 69: 11 1111 1111 1110 0011 */ 18, 262115, 21 },
1382− { /* 70: 11 1111 1111 1110 0100 */ 18, 262116, 19 },
1383− { /* 71: 11 1111 1111 1110 0101 */ 18, 262117, 3 },
1384− { /* 72: 11 1111 1111 1110 0110 */ 18, 262118, 1 },
1385− { /* 73: 11 1111 1111 1110 0111 */ 18, 262119, 2 },
1386− { /* 74: 11 1111 1111 1110 1000 */ 18, 262120, 0 },
1387− { /* 75: 111 1111 1111 1101 0010 */ 19, 524242, 98 },
1388− { /* 76: 111 1111 1111 1101 0011 */ 19, 524243, 99 },
1389− { /* 77: 111 1111 1111 1101 0100 */ 19, 524244, 100 },
1390− { /* 78: 111 1111 1111 1101 0101 */ 19, 524245, 101 },
1391− { /* 79: 111 1111 1111 1101 0110 */ 19, 524246, 102 },
1392− { /* 80: 111 1111 1111 1101 0111 */ 19, 524247, 117 },
1393− { /* 81: 111 1111 1111 1101 1000 */ 19, 524248, 97 },
1394− { /* 82: 111 1111 1111 1101 1001 */ 19, 524249, 91 },
1395− { /* 83: 111 1111 1111 1101 1010 */ 19, 524250, 92 },
1396− { /* 84: 111 1111 1111 1101 1011 */ 19, 524251, 93 },
1397− { /* 85: 111 1111 1111 1101 1100 */ 19, 524252, 94 },
1398− { /* 86: 111 1111 1111 1101 1101 */ 19, 524253, 95 },
1399− { /* 87: 111 1111 1111 1101 1110 */ 19, 524254, 96 },
1400− { /* 88: 111 1111 1111 1101 1111 */ 19, 524255, 104 },
1401− { /* 89: 111 1111 1111 1110 0000 */ 19, 524256, 111 },
1402− { /* 90: 111 1111 1111 1110 0001 */ 19, 524257, 112 },
1403− { /* 91: 111 1111 1111 1110 0010 */ 19, 524258, 113 },
1404− { /* 92: 111 1111 1111 1110 0011 */ 19, 524259, 114 },
1405− { /* 93: 111 1111 1111 1110 0100 */ 19, 524260, 115 },
1406− { /* 94: 111 1111 1111 1110 0101 */ 19, 524261, 116 },
1407− { /* 95: 111 1111 1111 1110 0110 */ 19, 524262, 110 },
1408− { /* 96: 111 1111 1111 1110 0111 */ 19, 524263, 105 },
1409− { /* 97: 111 1111 1111 1110 1000 */ 19, 524264, 106 },
1410− { /* 98: 111 1111 1111 1110 1001 */ 19, 524265, 107 },
1411− { /* 99: 111 1111 1111 1110 1010 */ 19, 524266, 108 },
1412− { /* 100: 111 1111 1111 1110 1011 */ 19, 524267, 109 },
1413− { /* 101: 111 1111 1111 1110 1100 */ 19, 524268, 118 },
1414− { /* 102: 111 1111 1111 1110 1101 */ 19, 524269, 6 },
1415− { /* 103: 111 1111 1111 1110 1110 */ 19, 524270, 8 },
1416− { /* 104: 111 1111 1111 1110 1111 */ 19, 524271, 9 },
1417− { /* 105: 111 1111 1111 1111 0000 */ 19, 524272, 10 },
1418− { /* 106: 111 1111 1111 1111 0001 */ 19, 524273, 5 },
1419− { /* 107: 111 1111 1111 1111 0010 */ 19, 524274, 103 },
1420− { /* 108: 111 1111 1111 1111 0011 */ 19, 524275, 120 },
1421− { /* 109: 111 1111 1111 1111 0100 */ 19, 524276, 119 },
1422− { /* 110: 111 1111 1111 1111 0101 */ 19, 524277, 4 },
1423− { /* 111: 111 1111 1111 1111 0110 */ 19, 524278, 7 },
1424− { /* 112: 111 1111 1111 1111 0111 */ 19, 524279, 15 },
1425− { /* 113: 111 1111 1111 1111 1000 */ 19, 524280, 16 },
1426− { /* 114: 111 1111 1111 1111 1001 */ 19, 524281, 18 },
1427− { /* 115: 111 1111 1111 1111 1010 */ 19, 524282, 20 },
1428− { /* 116: 111 1111 1111 1111 1011 */ 19, 524283, 17 },
1429− { /* 117: 111 1111 1111 1111 1100 */ 19, 524284, 11 },
1430− { /* 118: 111 1111 1111 1111 1101 */ 19, 524285, 12 },
1431− { /* 119: 111 1111 1111 1111 1110 */ 19, 524286, 14 },
1432− { /* 120: 111 1111 1111 1111 1111 */ 19, 524287, 13 }
1433−};
libfaad/huffman.h+103−93
@@ -16,7 +16,7 @@ · 15 unmodified lines
1616 ** along with this program; if not, write to the Free Software
1717 ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
1818 **
19−** $Id: huffman.h,v 1.3 2002/01/19 16:19:54 menno Exp $
19+** $Id: huffman.h,v 1.4 2002/02/15 20:52:09 menno Exp $
2020 **/
2121
2222 #ifndef __HUFFMAN_H__
@@ -31,53 +31,12 @@ extern "C" { · 8 unmodified lines
3131 #include <stdio.h>
3232 #endif
3333 #include "bits.h"
34+#include "codebook/hcb.h"
3435
3536
36−typedef struct
37−{
38− short len;
39− unsigned long cw;
40− char x, y, v, w;
41−} codebook;
42−
43−typedef struct
44−{
45− short len;
46− unsigned long cw;
47− int scl;
48−} codebook_scl;
49−
50−extern codebook book1[];
51−extern codebook book2[];
52−extern codebook book3[];
53−extern codebook book4[];
54−extern codebook book5[];
55−extern codebook book6[];
56−extern codebook book7[];
57−extern codebook book8[];
58−extern codebook book9[];
59−extern codebook book10[];
60−extern codebook book11[];
61−extern codebook_scl bookscl[];
62−
63−static codebook *book_table[] = {
64− 0,
65− book1,
66− book2,
67− book3,
68− book4,
69− book5,
70− book6,
71− book7,
72− book8,
73− book9,
74− book10,
75− book11
76−};
77−
7837 #if defined(LINUX)
7938 #define huff_inline inline
80−#elif defined(WIN32)
39+#elif defined(_WIN32)
8140 #define huff_inline __inline
8241 #else
8342 #define huff_inline
@@ -85,69 +44,120 @@ static codebook *book_table[] = { · 1 unmodified line
8544
8645 static huff_inline int huffman_scale_factor(bitfile *ld)
8746 {
88− int i, j;
89− long cw;
90− codebook_scl *h = bookscl;
91−
92− i = h->len;
93− cw = faad_getbits(ld, i);
47+ unsigned int offset = 0;
9448
95− while ((unsigned long)cw != h->cw)
49+ while (hcb_sf[offset][1])
9650 {
97− h++;
98− j = h->len-i;
99− i = h->len;
100− if (j!=0) {
101− while (j--)
102− cw = (cw<<1) | faad_get1bit(ld);
103− }
51+ int b = faad_get1bit(ld);
52+ offset += hcb_sf[offset][b];
10453 }
54+ return hcb_sf[offset][0];
55+}
10556
106−#ifdef ANALYSIS
107− fprintf(stdout, "%4d %2d bits, huffman_scale_factor(): huffman codeword (scalefactor)\n",
108− dbg_count++, h->len);
109−#endif
11057
111− return h->scl;
112−}
58+static hcb *hcb_table[] = {
59+ 0, hcb1_1, hcb2_1, 0, hcb4_1, 0, hcb6_1, 0, hcb8_1, 0, hcb10_1, hcb11_1
60+};
61+
62+static hcb_2_quad *hcb_2_quad_table[] = {
63+ 0, hcb1_2, hcb2_2, 0, hcb4_2, 0, 0, 0, 0, 0, 0, 0
64+};
65+
66+static hcb_2_pair *hcb_2_pair_table[] = {
67+ 0, 0, 0, 0, 0, 0, hcb6_2, 0, hcb8_2, 0, hcb10_2, hcb11_2
68+};
69+
70+static hcb_bin_pair *hcb_bin_table[] = {
71+ 0, 0, 0, 0, 0, hcb5, 0, hcb7, 0, hcb9, 0, 0
72+};
73+
74+static int hcbN[] = { 0, 5, 5, 0, 5, 0, 5, 0, 5, 0, 6, 5 };
11375
114−static int codebookN[] = { 0, 7, 7, 9 };
11576
11677 static huff_inline void huffman_spectral_data(int cb, bitfile *ld, short *sp)
11778 {
118− int i, j;
119− unsigned long cw;
120− codebook *h;
121−
122− h = book_table[cb];
123− i = h->len;
124− cw = faad_getbits(ld, i DEBUGVAR(0,0,""));
79+ unsigned int cw;
80+ unsigned int offset = 0;
81+ unsigned int extra_bits;
12582
126− while (cw != h->cw)
83+ switch (cb)
12784 {
128− h++;
129− j = h->len-i;
130− i = h->len;
131− if (j!=0) {
132− while (j--)
133− cw = (cw<<1) | faad_get1bit(ld DEBUGVAR(0,0,""));
85+ case 1: /* 2-step method for data quadruples */
86+ case 2:
87+ case 4:
88+
89+ cw = faad_showbits(ld, hcbN[cb]);
90+ offset = hcb_table[cb][cw].offset;
91+ extra_bits = hcb_table[cb][cw].extra_bits;
92+
93+ if (extra_bits)
94+ {
95+ /* we know for sure it's more than hcbN[cb] bits long */
96+ faad_flushbits(ld, hcbN[cb]);
97+ offset += faad_showbits(ld, extra_bits);
98+ faad_flushbits(ld, hcb_2_quad_table[cb][offset].bits - hcbN[cb]);
99+ } else {
100+ faad_flushbits(ld, hcb_2_quad_table[cb][offset].bits);
134101 }
135− }
136102
137−#ifdef ANALYSIS
138− fprintf(stdout, "%4d %2d bits, huffman_spectral_data(): huffman codeword\n",
139− dbg_count++, h->len);
140−#endif
103+ sp[0] = hcb_2_quad_table[cb][offset].x;
104+ sp[1] = hcb_2_quad_table[cb][offset].y;
105+ sp[2] = hcb_2_quad_table[cb][offset].v;
106+ sp[3] = hcb_2_quad_table[cb][offset].w;
107+ break;
141108
142− if(cb < FIRST_PAIR_HCB)
143− {
144− sp[0] = h->x;
145− sp[1] = h->y;
146− sp[2] = h->v;
147− sp[3] = h->w;
148− } else {
149− sp[0] = h->x;
150− sp[1] = h->y;
109+ case 6: /* 2-step method for data pairs */
110+ case 8:
111+ case 10:
112+ case 11:
113+
114+ cw = faad_showbits(ld, hcbN[cb]);
115+ offset = hcb_table[cb][cw].offset;
116+ extra_bits = hcb_table[cb][cw].extra_bits;
117+
118+ if (extra_bits)
119+ {
120+ /* we know for sure it's more than hcbN[cb] bits long */
121+ faad_flushbits(ld, hcbN[cb]);
122+ offset += faad_showbits(ld, extra_bits);
123+ faad_flushbits(ld, hcb_2_pair_table[cb][offset].bits - hcbN[cb]);
124+ } else {
125+ faad_flushbits(ld, hcb_2_pair_table[cb][offset].bits);
126+ }
127+
128+ sp[0] = hcb_2_pair_table[cb][offset].x;
129+ sp[1] = hcb_2_pair_table[cb][offset].y;
130+ break;
131+
132+ case 3: /* binary search for data quadruples */
133+
134+ while (!hcb3[offset].is_leaf)
135+ {
136+ int b = faad_get1bit(ld);
137+ offset += hcb3[offset].data[b];
138+ }
139+
140+ sp[0] = hcb3[offset].data[0];
141+ sp[1] = hcb3[offset].data[1];
142+ sp[2] = hcb3[offset].data[2];
143+ sp[3] = hcb3[offset].data[3];
144+
145+ break;
146+
147+ case 5: /* binary search for data pairs */
148+ case 7:
149+ case 9:
150+
151+ while (!hcb_bin_table[cb][offset].is_leaf)
152+ {
153+ int b = faad_get1bit(ld);
154+ offset += hcb_bin_table[cb][offset].data[b];
155+ }
156+
157+ sp[0] = hcb_bin_table[cb][offset].data[0];
158+ sp[1] = hcb_bin_table[cb][offset].data[1];
159+
160+ break;
151161 }
152162 }
153163
libfaad/libfaad.dsp+56−4
@@ -83,6 +83,58 @@ LIB32=xilink6.exe -lib · 82 unmodified lines
8383 # Begin Group "Source Files"
8484
8585 # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
86+# Begin Group "codebook"
87+
88+# PROP Default_Filter ""
89+# Begin Source File
90+
91+SOURCE=.\codebook\hcb_1.c
92+# End Source File
93+# Begin Source File
94+
95+SOURCE=.\codebook\hcb_10.c
96+# End Source File
97+# Begin Source File
98+
99+SOURCE=.\codebook\hcb_11.c
100+# End Source File
101+# Begin Source File
102+
103+SOURCE=.\codebook\hcb_2.c
104+# End Source File
105+# Begin Source File
106+
107+SOURCE=.\codebook\hcb_3.c
108+# End Source File
109+# Begin Source File
110+
111+SOURCE=.\codebook\hcb_4.c
112+# End Source File
113+# Begin Source File
114+
115+SOURCE=.\codebook\hcb_5.c
116+# End Source File
117+# Begin Source File
118+
119+SOURCE=.\codebook\hcb_6.c
120+# End Source File
121+# Begin Source File
122+
123+SOURCE=.\codebook\hcb_7.c
124+# End Source File
125+# Begin Source File
126+
127+SOURCE=.\codebook\hcb_8.c
128+# End Source File
129+# Begin Source File
130+
131+SOURCE=.\codebook\hcb_9.c
132+# End Source File
133+# Begin Source File
134+
135+SOURCE=.\codebook\hcb_sf.c
136+# End Source File
137+# End Group
86138 # Begin Source File
87139
88140 SOURCE=.\bits.c
@@ -109,10 +161,6 @@ SOURCE=.\filtbank.c · 20 unmodified lines
109161 # End Source File
110162 # Begin Source File
111163
112−SOURCE=.\huffman.c
113−# End Source File
114−# Begin Source File
115−
116164 SOURCE=.\ic_predict.c
117165 # End Source File
118166 # Begin Source File
@@ -193,6 +241,10 @@ SOURCE=.\filtbank.h · 74 unmodified lines
193241 # End Source File
194242 # Begin Source File
195243
244+SOURCE=.\codebook\hcb.h
245+# End Source File
246+# Begin Source File
247+
196248 SOURCE=.\huffman.h
197249 # End Source File
198250 # Begin Source File

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t