History

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

menno committed 24 years ago

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

Showing the changes to libfaad/codebook (13 of 18 files). Show all

Unified · Split

13 files
  1. libfaad/codebook/hcb.h +137 −0
  2. libfaad/codebook/hcb_1.c +179 −0
  3. libfaad/codebook/hcb_10.c +305 −0
  4. libfaad/codebook/hcb_11.c +408 −0
  5. libfaad/codebook/hcb_2.c +178 −0
  6. libfaad/codebook/hcb_3.c +189 −0
  7. libfaad/codebook/hcb_4.c +192 −0
  8. libfaad/codebook/hcb_5.c +189 −0
  9. libfaad/codebook/hcb_6.c +175 −0
  10. libfaad/codebook/hcb_7.c +155 −0
  11. libfaad/codebook/hcb_8.c +166 −0
  12. libfaad/codebook/hcb_9.c +365 −0
  13. libfaad/codebook/hcb_sf.c +269 −0
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+};

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