annotate libfaad2/ps_syntax.c @ 24678:9aab9d7b51f0

Fix missing subtitles after seeking back Subtitle packets that had been demuxed but whose start time had not yet been reached were left in the demuxer stream after seeking. When using the default (non-libass) subtitle rendering this could block subtitles from appearing as long as the playback position stayed below the original one before seek. External subtitle files were not affected. Fixed by making seek code free all packets from the subtitle stream.
author uau
date Thu, 04 Oct 2007 02:35:34 +0000
parents 59b6fa5b4201
children
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 **
18141
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents: 14727
diff changeset
25 ** $Id: ps_syntax.c,v 1.6 2004/09/04 14:56:28 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
18141
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents: 14727
diff changeset
325 uint16_t ps_data(ps_info *ps, bitfile *ld, uint8_t *header)
13453
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
18141
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents: 14727
diff changeset
330 *header = 0;
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents: 14727
diff changeset
331
13453
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
332 /* check for new PS header */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
333 if (faad_get1bit(ld
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
334 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
335 {
18141
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents: 14727
diff changeset
336 *header = 1;
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents: 14727
diff changeset
337
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents: 14727
diff changeset
338 ps->header_read = 1;
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents: 14727
diff changeset
339
13453
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
340 ps->use34hybrid_bands = 0;
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 /* 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
343 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
344 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
345
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
346 if (ps->enable_iid)
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 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
349 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
350
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
351 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
352 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
353
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
354 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
355 ps->use34hybrid_bands = 1;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
356
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
357 /* 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
358 ps->ipd_mode = ps->iid_mode;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
359 }
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 /* Inter-channel Coherence (ICC) parameters enabled */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
362 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
363 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
364
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
365 if (ps->enable_icc)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
366 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
367 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
368 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
369
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
370 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
371
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
372 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
373 ps->use34hybrid_bands = 1;
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
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
376 /* PS extension layer enabled */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
377 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
378 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
379 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
380
18141
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents: 14727
diff changeset
381 /* we are here, but no header has been read yet */
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents: 14727
diff changeset
382 if (ps->header_read == 0)
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents: 14727
diff changeset
383 return 1;
59b6fa5b4201 Update to faad2 cvs 20040915+MPlayer fixes
rtognimp
parents: 14727
diff changeset
384
13453
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
385 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
386 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
387 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
388 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
389
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
390 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
391
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
392 if (ps->frame_class)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
393 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
394 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
395 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
396 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
397 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
398 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
399 }
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 if (ps->enable_iid)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
402 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
403 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
404 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
405 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
406 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
407
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
408 /* iid_data */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
409 if (ps->iid_mode < 3)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
410 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
411 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
412 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
413 } else {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
414 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
415 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
416 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
417 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
418 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
419
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
420 if (ps->enable_icc)
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 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
423 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
424 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
425 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
426
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
427 /* icc_data */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
428 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
429 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
430 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
431 }
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 if (ps->enable_ext)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
434 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
435 uint16_t num_bits_left;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
436 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
437 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
438 if (cnt == 15)
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 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
441 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
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 num_bits_left = 8 * cnt;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
445 while (num_bits_left > 7)
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 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
448 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
449
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
450 num_bits_left -= 2;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
451 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
452 }
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 faad_getbits(ld, num_bits_left
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
455 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
456 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
457
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
458 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
459
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
460 ps->ps_data_available = 1;
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 return bits;
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
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
465 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
466 const uint8_t ps_extension_id,
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
467 const uint16_t num_bits_left)
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 uint8_t n;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
470 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
471
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
472 if (ps_extension_id == 0)
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 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
475 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
476
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
477 if (ps->enable_ipdopd)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
478 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
479 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
480 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
481 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
482 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
483
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
484 /* ipd_data */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
485 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
486 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
487
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
488 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
489 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
490
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
491 /* opd_data */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
492 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
493 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
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 faad_get1bit(ld
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
497 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
498 }
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 /* return number of bits read */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
501 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
502
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
503 return bits;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
504 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
505
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
506 /* 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
507 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
508 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
509 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
510 uint8_t n;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
511
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
512 if (dt)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
513 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
514 /* coded in time direction */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
515 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
516 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
517 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
518 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
519 } else {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
520 /* coded in frequency direction */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
521 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
522
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
523 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
524 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
525 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
526 }
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 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
529
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
530 /* binary search huffman decoding */
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
531 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
532 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
533 uint8_t bit;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
534 int16_t index = 0;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
535
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
536 while (index >= 0)
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
537 {
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
538 bit = (uint8_t)faad_get1bit(ld);
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
539 index = t_huff[index][bit];
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
540 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
541
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
542 return index + 31;
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
543 }
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
544
6d50ef45a058 Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
diego
parents:
diff changeset
545 #endif