annotate libfaad2/ps_syntax.c @ 18049:77a3b0d11ca5

Limit the number of entires to the amount that does fit into the chunk. the function need rewrite as it assumes quite many things that are not guaranteed by the specifications.
author iive
date Thu, 06 Apr 2006 20:04:02 +0000
parents 2ae5ab4331ca
children 59b6fa5b4201
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13453
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
1 /*
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
2 ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR and PS decoding
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
3 ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
4 **
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
5 ** This program is free software; you can redistribute it and/or modify
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
6 ** it under the terms of the GNU General Public License as published by
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
7 ** the Free Software Foundation; either version 2 of the License, or
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
8 ** (at your option) any later version.
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
9 **
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
10 ** This program is distributed in the hope that it will be useful,
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
11 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
12 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
13 ** GNU General Public License for more details.
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
14 **
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
15 ** You should have received a copy of the GNU General Public License
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
16 ** along with this program; if not, write to the Free Software
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
17 ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
18 **
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
19 ** Any non-GPL usage of this software or parts of this software is strictly
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
20 ** forbidden.
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
21 **
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
22 ** Commercial non-GPL licensing of this software is possible.
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
23 ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com.
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
24 **
14727
2ae5ab4331ca Remove modification notice from files that have not been locally modified.
diego
parents: 13453
diff changeset
25 ** $Id: ps_syntax.c,v 1.3 2004/06/30 12:45:56 menno Exp $
13453
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
26 **/
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
27
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
28 #include "common.h"
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
29
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
30 #ifdef PS_DEC
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
31
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
32 #include "bits.h"
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
33 #include "ps_dec.h"
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
34
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
35 /* type definitaions */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
36 typedef const int8_t (*ps_huff_tab)[2];
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
37
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
38 /* static data tables */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
39 static const uint8_t nr_iid_par_tab[] = {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
40 10, 20, 34, 10, 20, 34, 0, 0
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
41 };
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
42 static const uint8_t nr_ipdopd_par_tab[] = {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
43 5, 11, 17, 5, 11, 17, 0, 0
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
44 };
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
45 static const uint8_t nr_icc_par_tab[] = {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
46 10, 20, 34, 10, 20, 34, 0, 0
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
47 };
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
48 static const uint8_t num_env_tab[][4] = {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
49 { 0, 1, 2, 4 },
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
50 { 1, 2, 3, 4 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
51 };
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
52
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
53 /* binary lookup huffman tables */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
54 static const int8_t f_huff_iid_def[][2] = {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
55 { /*0*/ -31, 1 }, /* index 0: 1 bits: x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
56 { 2, 3 }, /* index 1: 2 bits: 1x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
57 { /*1*/ -30, /*-1*/ -32 }, /* index 2: 3 bits: 10x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
58 { 4, 5 }, /* index 3: 3 bits: 11x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
59 { /*2*/ -29, /*-2*/ -33 }, /* index 4: 4 bits: 110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
60 { 6, 7 }, /* index 5: 4 bits: 111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
61 { /*3*/ -28, /*-3*/ -34 }, /* index 6: 5 bits: 1110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
62 { 8, 9 }, /* index 7: 5 bits: 1111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
63 { /*-4*/ -35, /*4*/ -27 }, /* index 8: 6 bits: 11110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
64 { /*5*/ -26, 10 }, /* index 9: 6 bits: 11111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
65 { /*-5*/ -36, 11 }, /* index 10: 7 bits: 111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
66 { /*6*/ -25, 12 }, /* index 11: 8 bits: 1111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
67 { /*-6*/ -37, 13 }, /* index 12: 9 bits: 11111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
68 { /*-7*/ -38, 14 }, /* index 13: 10 bits: 111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
69 { /*7*/ -24, 15 }, /* index 14: 11 bits: 1111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
70 { 16, 17 }, /* index 15: 12 bits: 11111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
71 { /*8*/ -23, /*-8*/ -39 }, /* index 16: 13 bits: 111111111110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
72 { 18, 19 }, /* index 17: 13 bits: 111111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
73 { /*9*/ -22, /*10*/ -21 }, /* index 18: 14 bits: 1111111111110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
74 { 20, 21 }, /* index 19: 14 bits: 1111111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
75 { /*-9*/ -40, /*11*/ -20 }, /* index 20: 15 bits: 11111111111110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
76 { 22, 23 }, /* index 21: 15 bits: 11111111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
77 { /*-10*/ -41, 24 }, /* index 22: 16 bits: 111111111111110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
78 { 25, 26 }, /* index 23: 16 bits: 111111111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
79 { /*-11*/ -42, /*-14*/ -45 }, /* index 24: 17 bits: 1111111111111101x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
80 { /*-13*/ -44, /*-12*/ -43 }, /* index 25: 17 bits: 1111111111111110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
81 { /*12*/ -19, 27 }, /* index 26: 17 bits: 1111111111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
82 { /*13*/ -18, /*14*/ -17 } /* index 27: 18 bits: 11111111111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
83 };
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
84
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
85 static const int8_t t_huff_iid_def[][2] = {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
86 { /*0*/ -31, 1 }, /* index 0: 1 bits: x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
87 { /*-1*/ -32, 2 }, /* index 1: 2 bits: 1x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
88 { /*1*/ -30, 3 }, /* index 2: 3 bits: 11x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
89 { /*-2*/ -33, 4 }, /* index 3: 4 bits: 111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
90 { /*2*/ -29, 5 }, /* index 4: 5 bits: 1111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
91 { /*-3*/ -34, 6 }, /* index 5: 6 bits: 11111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
92 { /*3*/ -28, 7 }, /* index 6: 7 bits: 111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
93 { /*-4*/ -35, 8 }, /* index 7: 8 bits: 1111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
94 { /*4*/ -27, 9 }, /* index 8: 9 bits: 11111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
95 { /*-5*/ -36, 10 }, /* index 9: 10 bits: 111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
96 { /*5*/ -26, 11 }, /* index 10: 11 bits: 1111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
97 { /*-6*/ -37, 12 }, /* index 11: 12 bits: 11111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
98 { /*6*/ -25, 13 }, /* index 12: 13 bits: 111111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
99 { /*7*/ -24, 14 }, /* index 13: 14 bits: 1111111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
100 { /*-7*/ -38, 15 }, /* index 14: 15 bits: 11111111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
101 { 16, 17 }, /* index 15: 16 bits: 111111111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
102 { /*8*/ -23, /*-8*/ -39 }, /* index 16: 17 bits: 1111111111111110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
103 { 18, 19 }, /* index 17: 17 bits: 1111111111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
104 { 20, 21 }, /* index 18: 18 bits: 11111111111111110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
105 { 22, 23 }, /* index 19: 18 bits: 11111111111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
106 { /*9*/ -22, /*-14*/ -45 }, /* index 20: 19 bits: 111111111111111100x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
107 { /*-13*/ -44, /*-12*/ -43 }, /* index 21: 19 bits: 111111111111111101x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
108 { 24, 25 }, /* index 22: 19 bits: 111111111111111110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
109 { 26, 27 }, /* index 23: 19 bits: 111111111111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
110 { /*-11*/ -42, /*-10*/ -41 }, /* index 24: 20 bits: 1111111111111111100x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
111 { /*-9*/ -40, /*10*/ -21 }, /* index 25: 20 bits: 1111111111111111101x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
112 { /*11*/ -20, /*12*/ -19 }, /* index 26: 20 bits: 1111111111111111110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
113 { /*13*/ -18, /*14*/ -17 } /* index 27: 20 bits: 1111111111111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
114 };
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
115
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
116 static const int8_t f_huff_iid_fine[][2] = {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
117 { 1, /*0*/ -31 }, /* index 0: 1 bits: x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
118 { 2, 3 }, /* index 1: 2 bits: 0x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
119 { 4, /*-1*/ -32 }, /* index 2: 3 bits: 00x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
120 { /*1*/ -30, 5 }, /* index 3: 3 bits: 01x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
121 { /*-2*/ -33, /*2*/ -29 }, /* index 4: 4 bits: 000x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
122 { 6, 7 }, /* index 5: 4 bits: 011x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
123 { /*-3*/ -34, /*3*/ -28 }, /* index 6: 5 bits: 0110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
124 { 8, 9 }, /* index 7: 5 bits: 0111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
125 { /*-4*/ -35, /*4*/ -27 }, /* index 8: 6 bits: 01110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
126 { 10, 11 }, /* index 9: 6 bits: 01111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
127 { /*-5*/ -36, /*5*/ -26 }, /* index 10: 7 bits: 011110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
128 { 12, 13 }, /* index 11: 7 bits: 011111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
129 { /*-6*/ -37, /*6*/ -25 }, /* index 12: 8 bits: 0111110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
130 { 14, 15 }, /* index 13: 8 bits: 0111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
131 { /*7*/ -24, 16 }, /* index 14: 9 bits: 01111110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
132 { 17, 18 }, /* index 15: 9 bits: 01111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
133 { 19, /*-8*/ -39 }, /* index 16: 10 bits: 011111101x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
134 { /*8*/ -23, 20 }, /* index 17: 10 bits: 011111110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
135 { 21, /*-7*/ -38 }, /* index 18: 10 bits: 011111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
136 { /*10*/ -21, 22 }, /* index 19: 11 bits: 0111111010x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
137 { 23, /*-9*/ -40 }, /* index 20: 11 bits: 0111111101x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
138 { /*9*/ -22, 24 }, /* index 21: 11 bits: 0111111110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
139 { /*-11*/ -42, /*11*/ -20 }, /* index 22: 12 bits: 01111110101x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
140 { 25, 26 }, /* index 23: 12 bits: 01111111010x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
141 { 27, /*-10*/ -41 }, /* index 24: 12 bits: 01111111101x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
142 { 28, /*-12*/ -43 }, /* index 25: 13 bits: 011111110100x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
143 { /*12*/ -19, 29 }, /* index 26: 13 bits: 011111110101x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
144 { 30, 31 }, /* index 27: 13 bits: 011111111010x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
145 { 32, /*-14*/ -45 }, /* index 28: 14 bits: 0111111101000x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
146 { /*14*/ -17, 33 }, /* index 29: 14 bits: 0111111101011x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
147 { 34, /*-13*/ -44 }, /* index 30: 14 bits: 0111111110100x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
148 { /*13*/ -18, 35 }, /* index 31: 14 bits: 0111111110101x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
149 { 36, 37 }, /* index 32: 15 bits: 01111111010000x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
150 { 38, /*-15*/ -46 }, /* index 33: 15 bits: 01111111010111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
151 { /*15*/ -16, 39 }, /* index 34: 15 bits: 01111111101000x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
152 { 40, 41 }, /* index 35: 15 bits: 01111111101011x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
153 { 42, 43 }, /* index 36: 16 bits: 011111110100000x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
154 { /*-17*/ -48, /*17*/ -14 }, /* index 37: 16 bits: 011111110100001x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
155 { 44, 45 }, /* index 38: 16 bits: 011111110101110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
156 { 46, 47 }, /* index 39: 16 bits: 011111111010001x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
157 { 48, 49 }, /* index 40: 16 bits: 011111111010110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
158 { /*-16*/ -47, /*16*/ -15 }, /* index 41: 16 bits: 011111111010111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
159 { /*-21*/ -52, /*21*/ -10 }, /* index 42: 17 bits: 0111111101000000x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
160 { /*-19*/ -50, /*19*/ -12 }, /* index 43: 17 bits: 0111111101000001x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
161 { /*-18*/ -49, /*18*/ -13 }, /* index 44: 17 bits: 0111111101011100x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
162 { 50, 51 }, /* index 45: 17 bits: 0111111101011101x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
163 { 52, 53 }, /* index 46: 17 bits: 0111111110100010x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
164 { 54, 55 }, /* index 47: 17 bits: 0111111110100011x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
165 { 56, 57 }, /* index 48: 17 bits: 0111111110101100x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
166 { 58, 59 }, /* index 49: 17 bits: 0111111110101101x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
167 { /*-26*/ -57, /*-25*/ -56 }, /* index 50: 18 bits: 01111111010111010x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
168 { /*-28*/ -59, /*-27*/ -58 }, /* index 51: 18 bits: 01111111010111011x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
169 { /*-22*/ -53, /*22*/ -9 }, /* index 52: 18 bits: 01111111101000100x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
170 { /*-24*/ -55, /*-23*/ -54 }, /* index 53: 18 bits: 01111111101000101x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
171 { /*25*/ -6, /*26*/ -5 }, /* index 54: 18 bits: 01111111101000110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
172 { /*23*/ -8, /*24*/ -7 }, /* index 55: 18 bits: 01111111101000111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
173 { /*29*/ -2, /*30*/ -1 }, /* index 56: 18 bits: 01111111101011000x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
174 { /*27*/ -4, /*28*/ -3 }, /* index 57: 18 bits: 01111111101011001x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
175 { /*-30*/ -61, /*-29*/ -60 }, /* index 58: 18 bits: 01111111101011010x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
176 { /*-20*/ -51, /*20*/ -11 } /* index 59: 18 bits: 01111111101011011x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
177 };
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
178
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
179 static const int8_t t_huff_iid_fine[][2] = {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
180 { 1, /*0*/ -31 }, /* index 0: 1 bits: x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
181 { /*1*/ -30, 2 }, /* index 1: 2 bits: 0x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
182 { 3, /*-1*/ -32 }, /* index 2: 3 bits: 01x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
183 { 4, 5 }, /* index 3: 4 bits: 010x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
184 { 6, 7 }, /* index 4: 5 bits: 0100x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
185 { /*-2*/ -33, /*2*/ -29 }, /* index 5: 5 bits: 0101x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
186 { 8, /*-3*/ -34 }, /* index 6: 6 bits: 01000x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
187 { /*3*/ -28, 9 }, /* index 7: 6 bits: 01001x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
188 { /*-4*/ -35, /*4*/ -27 }, /* index 8: 7 bits: 010000x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
189 { 10, 11 }, /* index 9: 7 bits: 010011x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
190 { /*5*/ -26, 12 }, /* index 10: 8 bits: 0100110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
191 { 13, 14 }, /* index 11: 8 bits: 0100111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
192 { /*-6*/ -37, /*6*/ -25 }, /* index 12: 9 bits: 01001101x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
193 { 15, 16 }, /* index 13: 9 bits: 01001110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
194 { 17, /*-5*/ -36 }, /* index 14: 9 bits: 01001111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
195 { 18, /*-7*/ -38 }, /* index 15: 10 bits: 010011100x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
196 { /*7*/ -24, 19 }, /* index 16: 10 bits: 010011101x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
197 { 20, 21 }, /* index 17: 10 bits: 010011110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
198 { /*9*/ -22, 22 }, /* index 18: 11 bits: 0100111000x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
199 { 23, 24 }, /* index 19: 11 bits: 0100111011x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
200 { /*-8*/ -39, /*8*/ -23 }, /* index 20: 11 bits: 0100111100x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
201 { 25, 26 }, /* index 21: 11 bits: 0100111101x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
202 { /*11*/ -20, 27 }, /* index 22: 12 bits: 01001110001x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
203 { 28, 29 }, /* index 23: 12 bits: 01001110110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
204 { /*-10*/ -41, /*10*/ -21 }, /* index 24: 12 bits: 01001110111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
205 { 30, 31 }, /* index 25: 12 bits: 01001111010x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
206 { 32, /*-9*/ -40 }, /* index 26: 12 bits: 01001111011x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
207 { 33, /*-13*/ -44 }, /* index 27: 13 bits: 010011100011x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
208 { /*13*/ -18, 34 }, /* index 28: 13 bits: 010011101100x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
209 { 35, 36 }, /* index 29: 13 bits: 010011101101x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
210 { 37, /*-12*/ -43 }, /* index 30: 13 bits: 010011110100x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
211 { /*12*/ -19, 38 }, /* index 31: 13 bits: 010011110101x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
212 { 39, /*-11*/ -42 }, /* index 32: 13 bits: 010011110110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
213 { 40, 41 }, /* index 33: 14 bits: 0100111000110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
214 { 42, 43 }, /* index 34: 14 bits: 0100111011001x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
215 { 44, 45 }, /* index 35: 14 bits: 0100111011010x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
216 { 46, /*-15*/ -46 }, /* index 36: 14 bits: 0100111011011x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
217 { /*15*/ -16, 47 }, /* index 37: 14 bits: 0100111101000x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
218 { /*-14*/ -45, /*14*/ -17 }, /* index 38: 14 bits: 0100111101011x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
219 { 48, 49 }, /* index 39: 14 bits: 0100111101100x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
220 { /*-21*/ -52, /*-20*/ -51 }, /* index 40: 15 bits: 01001110001100x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
221 { /*18*/ -13, /*19*/ -12 }, /* index 41: 15 bits: 01001110001101x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
222 { /*-19*/ -50, /*-18*/ -49 }, /* index 42: 15 bits: 01001110110010x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
223 { 50, 51 }, /* index 43: 15 bits: 01001110110011x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
224 { 52, 53 }, /* index 44: 15 bits: 01001110110100x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
225 { 54, 55 }, /* index 45: 15 bits: 01001110110101x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
226 { 56, /*-17*/ -48 }, /* index 46: 15 bits: 01001110110110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
227 { /*17*/ -14, 57 }, /* index 47: 15 bits: 01001111010001x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
228 { 58, /*-16*/ -47 }, /* index 48: 15 bits: 01001111011000x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
229 { /*16*/ -15, 59 }, /* index 49: 15 bits: 01001111011001x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
230 { /*-26*/ -57, /*26*/ -5 }, /* index 50: 16 bits: 010011101100110x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
231 { /*-28*/ -59, /*-27*/ -58 }, /* index 51: 16 bits: 010011101100111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
232 { /*29*/ -2, /*30*/ -1 }, /* index 52: 16 bits: 010011101101000x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
233 { /*27*/ -4, /*28*/ -3 }, /* index 53: 16 bits: 010011101101001x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
234 { /*-30*/ -61, /*-29*/ -60 }, /* index 54: 16 bits: 010011101101010x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
235 { /*-25*/ -56, /*25*/ -6 }, /* index 55: 16 bits: 010011101101011x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
236 { /*-24*/ -55, /*24*/ -7 }, /* index 56: 16 bits: 010011101101100x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
237 { /*-23*/ -54, /*23*/ -8 }, /* index 57: 16 bits: 010011110100011x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
238 { /*-22*/ -53, /*22*/ -9 }, /* index 58: 16 bits: 010011110110000x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
239 { /*20*/ -11, /*21*/ -10 } /* index 59: 16 bits: 010011110110011x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
240 };
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
241
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
242 static const int8_t f_huff_icc[][2] = {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
243 { /*0*/ -31, 1 }, /* index 0: 1 bits: x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
244 { /*1*/ -30, 2 }, /* index 1: 2 bits: 1x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
245 { /*-1*/ -32, 3 }, /* index 2: 3 bits: 11x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
246 { /*2*/ -29, 4 }, /* index 3: 4 bits: 111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
247 { /*-2*/ -33, 5 }, /* index 4: 5 bits: 1111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
248 { /*3*/ -28, 6 }, /* index 5: 6 bits: 11111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
249 { /*-3*/ -34, 7 }, /* index 6: 7 bits: 111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
250 { /*4*/ -27, 8 }, /* index 7: 8 bits: 1111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
251 { /*5*/ -26, 9 }, /* index 8: 9 bits: 11111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
252 { /*-4*/ -35, 10 }, /* index 9: 10 bits: 111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
253 { /*6*/ -25, 11 }, /* index 10: 11 bits: 1111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
254 { /*-5*/ -36, 12 }, /* index 11: 12 bits: 11111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
255 { /*7*/ -24, 13 }, /* index 12: 13 bits: 111111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
256 { /*-6*/ -37, /*-7*/ -38 } /* index 13: 14 bits: 1111111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
257 };
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
258
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
259 static const int8_t t_huff_icc[][2] = {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
260 { /*0*/ -31, 1 }, /* index 0: 1 bits: x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
261 { /*1*/ -30, 2 }, /* index 1: 2 bits: 1x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
262 { /*-1*/ -32, 3 }, /* index 2: 3 bits: 11x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
263 { /*2*/ -29, 4 }, /* index 3: 4 bits: 111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
264 { /*-2*/ -33, 5 }, /* index 4: 5 bits: 1111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
265 { /*3*/ -28, 6 }, /* index 5: 6 bits: 11111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
266 { /*-3*/ -34, 7 }, /* index 6: 7 bits: 111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
267 { /*4*/ -27, 8 }, /* index 7: 8 bits: 1111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
268 { /*-4*/ -35, 9 }, /* index 8: 9 bits: 11111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
269 { /*5*/ -26, 10 }, /* index 9: 10 bits: 111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
270 { /*-5*/ -36, 11 }, /* index 10: 11 bits: 1111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
271 { /*6*/ -25, 12 }, /* index 11: 12 bits: 11111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
272 { /*-6*/ -37, 13 }, /* index 12: 13 bits: 111111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
273 { /*-7*/ -38, /*7*/ -24 } /* index 13: 14 bits: 1111111111111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
274 };
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
275
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
276 static const int8_t f_huff_ipd[][2] = {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
277 { 1, /*0*/ -31 }, /* index 0: 1 bits: x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
278 { 2, 3 }, /* index 1: 2 bits: 0x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
279 { /*1*/ -30, 4 }, /* index 2: 3 bits: 00x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
280 { 5, 6 }, /* index 3: 3 bits: 01x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
281 { /*4*/ -27, /*5*/ -26 }, /* index 4: 4 bits: 001x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
282 { /*3*/ -28, /*6*/ -25 }, /* index 5: 4 bits: 010x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
283 { /*2*/ -29, /*7*/ -24 } /* index 6: 4 bits: 011x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
284 };
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
285
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
286 static const int8_t t_huff_ipd[][2] = {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
287 { 1, /*0*/ -31 }, /* index 0: 1 bits: x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
288 { 2, 3 }, /* index 1: 2 bits: 0x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
289 { 4, 5 }, /* index 2: 3 bits: 00x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
290 { /*1*/ -30, /*7*/ -24 }, /* index 3: 3 bits: 01x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
291 { /*5*/ -26, 6 }, /* index 4: 4 bits: 000x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
292 { /*2*/ -29, /*6*/ -25 }, /* index 5: 4 bits: 001x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
293 { /*4*/ -27, /*3*/ -28 } /* index 6: 5 bits: 0001x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
294 };
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
295
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
296 static const int8_t f_huff_opd[][2] = {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
297 { 1, /*0*/ -31 }, /* index 0: 1 bits: x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
298 { 2, 3 }, /* index 1: 2 bits: 0x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
299 { /*7*/ -24, /*1*/ -30 }, /* index 2: 3 bits: 00x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
300 { 4, 5 }, /* index 3: 3 bits: 01x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
301 { /*3*/ -28, /*6*/ -25 }, /* index 4: 4 bits: 010x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
302 { /*2*/ -29, 6 }, /* index 5: 4 bits: 011x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
303 { /*5*/ -26, /*4*/ -27 } /* index 6: 5 bits: 0111x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
304 };
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
305
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
306 static const int8_t t_huff_opd[][2] = {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
307 { 1, /*0*/ -31 }, /* index 0: 1 bits: x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
308 { 2, 3 }, /* index 1: 2 bits: 0x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
309 { 4, 5 }, /* index 2: 3 bits: 00x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
310 { /*1*/ -30, /*7*/ -24 }, /* index 3: 3 bits: 01x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
311 { /*5*/ -26, 6 }, /* index 4: 4 bits: 000x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
312 { /*2*/ -29, /*6*/ -25 }, /* index 5: 4 bits: 001x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
313 { /*4*/ -27, /*3*/ -28 } /* index 6: 5 bits: 0001x */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
314 };
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
315
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
316 /* static function declarations */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
317 static uint16_t ps_extension(ps_info *ps, bitfile *ld,
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
318 const uint8_t ps_extension_id,
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
319 const uint16_t num_bits_left);
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
320 static void huff_data(bitfile *ld, const uint8_t dt, const uint8_t nr_par,
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
321 ps_huff_tab t_huff, ps_huff_tab f_huff, int8_t *par);
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
322 static INLINE int8_t ps_huff_dec(bitfile *ld, ps_huff_tab t_huff);
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
323
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
324
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
325 uint16_t ps_data(ps_info *ps, bitfile *ld)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
326 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
327 uint8_t tmp, n;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
328 uint16_t bits = (uint16_t)faad_get_processed_bits(ld);
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
329
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
330 /* check for new PS header */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
331 if (faad_get1bit(ld
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
332 DEBUGVAR(1,1000,"ps_data(): enable_ps_header")))
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
333 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
334 ps->use34hybrid_bands = 0;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
335
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
336 /* Inter-channel Intensity Difference (IID) parameters enabled */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
337 ps->enable_iid = (uint8_t)faad_get1bit(ld
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
338 DEBUGVAR(1,1001,"ps_data(): enable_iid"));
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
339
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
340 if (ps->enable_iid)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
341 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
342 ps->iid_mode = (uint8_t)faad_getbits(ld, 3
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
343 DEBUGVAR(1,1002,"ps_data(): iid_mode"));
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
344
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
345 ps->nr_iid_par = nr_iid_par_tab[ps->iid_mode];
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
346 ps->nr_ipdopd_par = nr_ipdopd_par_tab[ps->iid_mode];
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
347
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
348 if (ps->iid_mode == 2 || ps->iid_mode == 5)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
349 ps->use34hybrid_bands = 1;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
350
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
351 /* IPD freq res equal to IID freq res */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
352 ps->ipd_mode = ps->iid_mode;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
353 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
354
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
355 /* Inter-channel Coherence (ICC) parameters enabled */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
356 ps->enable_icc = (uint8_t)faad_get1bit(ld
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
357 DEBUGVAR(1,1003,"ps_data(): enable_icc"));
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
358
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
359 if (ps->enable_icc)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
360 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
361 ps->icc_mode = (uint8_t)faad_getbits(ld, 3
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
362 DEBUGVAR(1,1004,"ps_data(): icc_mode"));
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
363
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
364 ps->nr_icc_par = nr_icc_par_tab[ps->icc_mode];
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
365
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
366 if (ps->icc_mode == 2 || ps->icc_mode == 5)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
367 ps->use34hybrid_bands = 1;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
368 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
369
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
370 /* PS extension layer enabled */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
371 ps->enable_ext = (uint8_t)faad_get1bit(ld
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
372 DEBUGVAR(1,1005,"ps_data(): enable_ext"));
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
373 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
374
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
375 ps->frame_class = (uint8_t)faad_get1bit(ld
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
376 DEBUGVAR(1,1006,"ps_data(): frame_class"));
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
377 tmp = (uint8_t)faad_getbits(ld, 2
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
378 DEBUGVAR(1,1007,"ps_data(): num_env_idx"));
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
379
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
380 ps->num_env = num_env_tab[ps->frame_class][tmp];
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
381
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
382 if (ps->frame_class)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
383 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
384 for (n = 1; n < ps->num_env+1; n++)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
385 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
386 ps->border_position[n] = (uint8_t)faad_getbits(ld, 5
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
387 DEBUGVAR(1,1008,"ps_data(): border_position"));
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
388 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
389 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
390
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
391 if (ps->enable_iid)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
392 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
393 for (n = 0; n < ps->num_env; n++)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
394 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
395 ps->iid_dt[n] = (uint8_t)faad_get1bit(ld
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
396 DEBUGVAR(1,1009,"ps_data(): iid_dt"));
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
397
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
398 /* iid_data */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
399 if (ps->iid_mode < 3)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
400 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
401 huff_data(ld, ps->iid_dt[n], ps->nr_iid_par, t_huff_iid_def,
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
402 f_huff_iid_def, ps->iid_index[n]);
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
403 } else {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
404 huff_data(ld, ps->iid_dt[n], ps->nr_iid_par, t_huff_iid_fine,
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
405 f_huff_iid_fine, ps->iid_index[n]);
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
406 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
407 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
408 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
409
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
410 if (ps->enable_icc)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
411 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
412 for (n = 0; n < ps->num_env; n++)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
413 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
414 ps->icc_dt[n] = (uint8_t)faad_get1bit(ld
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
415 DEBUGVAR(1,1010,"ps_data(): icc_dt"));
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
416
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
417 /* icc_data */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
418 huff_data(ld, ps->icc_dt[n], ps->nr_icc_par, t_huff_icc,
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
419 f_huff_icc, ps->icc_index[n]);
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
420 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
421 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
422
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
423 if (ps->enable_ext)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
424 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
425 uint16_t num_bits_left;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
426 uint16_t cnt = (uint16_t)faad_getbits(ld, 4
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
427 DEBUGVAR(1,1011,"ps_data(): ps_extension_size"));
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
428 if (cnt == 15)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
429 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
430 cnt += (uint16_t)faad_getbits(ld, 8
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
431 DEBUGVAR(1,1012,"ps_data(): esc_count"));
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
432 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
433
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
434 num_bits_left = 8 * cnt;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
435 while (num_bits_left > 7)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
436 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
437 uint8_t ps_extension_id = (uint8_t)faad_getbits(ld, 2
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
438 DEBUGVAR(1,1013,"ps_data(): ps_extension_size"));
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
439
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
440 num_bits_left -= 2;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
441 num_bits_left -= ps_extension(ps, ld, ps_extension_id, num_bits_left);
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
442 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
443
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
444 faad_getbits(ld, num_bits_left
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
445 DEBUGVAR(1,1014,"ps_data(): fill_bits"));
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
446 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
447
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
448 bits = (uint16_t)faad_get_processed_bits(ld) - bits;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
449
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
450 ps->ps_data_available = 1;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
451
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
452 return bits;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
453 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
454
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
455 static uint16_t ps_extension(ps_info *ps, bitfile *ld,
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
456 const uint8_t ps_extension_id,
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
457 const uint16_t num_bits_left)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
458 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
459 uint8_t n;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
460 uint16_t bits = (uint16_t)faad_get_processed_bits(ld);
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
461
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
462 if (ps_extension_id == 0)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
463 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
464 ps->enable_ipdopd = (uint8_t)faad_get1bit(ld
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
465 DEBUGVAR(1,1015,"ps_extension(): enable_ipdopd"));
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
466
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
467 if (ps->enable_ipdopd)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
468 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
469 for (n = 0; n < ps->num_env; n++)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
470 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
471 ps->ipd_dt[n] = (uint8_t)faad_get1bit(ld
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
472 DEBUGVAR(1,1016,"ps_extension(): ipd_dt"));
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
473
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
474 /* ipd_data */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
475 huff_data(ld, ps->ipd_dt[n], ps->nr_ipdopd_par, t_huff_ipd,
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
476 f_huff_ipd, ps->ipd_index[n]);
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
477
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
478 ps->opd_dt[n] = (uint8_t)faad_get1bit(ld
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
479 DEBUGVAR(1,1017,"ps_extension(): opd_dt"));
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
480
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
481 /* opd_data */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
482 huff_data(ld, ps->opd_dt[n], ps->nr_ipdopd_par, t_huff_opd,
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
483 f_huff_opd, ps->opd_index[n]);
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
484 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
485 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
486 faad_get1bit(ld
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
487 DEBUGVAR(1,1018,"ps_extension(): reserved_ps"));
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
488 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
489
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
490 /* return number of bits read */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
491 bits = (uint16_t)faad_get_processed_bits(ld) - bits;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
492
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
493 return bits;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
494 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
495
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
496 /* read huffman data coded in either the frequency or the time direction */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
497 static void huff_data(bitfile *ld, const uint8_t dt, const uint8_t nr_par,
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
498 ps_huff_tab t_huff, ps_huff_tab f_huff, int8_t *par)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
499 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
500 uint8_t n;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
501
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
502 if (dt)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
503 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
504 /* coded in time direction */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
505 for (n = 0; n < nr_par; n++)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
506 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
507 par[n] = ps_huff_dec(ld, t_huff);
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
508 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
509 } else {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
510 /* coded in frequency direction */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
511 par[0] = ps_huff_dec(ld, f_huff);
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
512
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
513 for (n = 1; n < nr_par; n++)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
514 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
515 par[n] = ps_huff_dec(ld, f_huff);
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
516 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
517 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
518 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
519
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
520 /* binary search huffman decoding */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
521 static INLINE int8_t ps_huff_dec(bitfile *ld, ps_huff_tab t_huff)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
522 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
523 uint8_t bit;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
524 int16_t index = 0;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
525
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
526 while (index >= 0)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
527 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
528 bit = (uint8_t)faad_get1bit(ld);
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
529 index = t_huff[index][bit];
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
530 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
531
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
532 return index + 31;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
533 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
534
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
535 #endif