diff options
Diffstat (limited to 'songdbj/javazoom/jl/decoder/LayerIIDecoder.java')
-rw-r--r-- | songdbj/javazoom/jl/decoder/LayerIIDecoder.java | 1064 |
1 files changed, 1064 insertions, 0 deletions
diff --git a/songdbj/javazoom/jl/decoder/LayerIIDecoder.java b/songdbj/javazoom/jl/decoder/LayerIIDecoder.java new file mode 100644 index 0000000000..7265b1f8fa --- /dev/null +++ b/songdbj/javazoom/jl/decoder/LayerIIDecoder.java | |||
@@ -0,0 +1,1064 @@ | |||
1 | /* | ||
2 | * 11/19/04 1.0 moved to LGPL. | ||
3 | * | ||
4 | * 29/05/01 Michael Scheerer, Fixed some C++ to Java porting bugs. | ||
5 | * | ||
6 | * 16/07/01 Michael Scheerer, Catched a bug in method | ||
7 | * read_sampledata, which causes an outOfIndexException. | ||
8 | * | ||
9 | * 12/12/99 Initial version. Adapted from javalayer.java | ||
10 | * and Subband*.java. mdm@techie.com | ||
11 | * | ||
12 | * 02/28/99 Initial version : javalayer.java by E.B | ||
13 | *----------------------------------------------------------------------- | ||
14 | * This program is free software; you can redistribute it and/or modify | ||
15 | * it under the terms of the GNU Library General Public License as published | ||
16 | * by the Free Software Foundation; either version 2 of the License, or | ||
17 | * (at your option) any later version. | ||
18 | * | ||
19 | * This program is distributed in the hope that it will be useful, | ||
20 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
21 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
22 | * GNU Library General Public License for more details. | ||
23 | * | ||
24 | * You should have received a copy of the GNU Library General Public | ||
25 | * License along with this program; if not, write to the Free Software | ||
26 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
27 | *---------------------------------------------------------------------- | ||
28 | */ | ||
29 | |||
30 | package javazoom.jl.decoder; | ||
31 | |||
32 | /** | ||
33 | * Implements decoding of MPEG Audio Layer II frames. | ||
34 | */ | ||
35 | class LayerIIDecoder extends LayerIDecoder implements FrameDecoder | ||
36 | { | ||
37 | |||
38 | public LayerIIDecoder() | ||
39 | { | ||
40 | } | ||
41 | |||
42 | |||
43 | protected void createSubbands() | ||
44 | { | ||
45 | int i; | ||
46 | if (mode == Header.SINGLE_CHANNEL) | ||
47 | for (i = 0; i < num_subbands; ++i) | ||
48 | subbands[i] = new SubbandLayer2(i); | ||
49 | else if (mode == Header.JOINT_STEREO) | ||
50 | { | ||
51 | for (i = 0; i < header.intensity_stereo_bound(); ++i) | ||
52 | subbands[i] = new SubbandLayer2Stereo(i); | ||
53 | for (; i < num_subbands; ++i) | ||
54 | subbands[i] = new SubbandLayer2IntensityStereo(i); | ||
55 | } | ||
56 | else | ||
57 | { | ||
58 | for (i = 0; i < num_subbands; ++i) | ||
59 | subbands[i] = new SubbandLayer2Stereo(i); | ||
60 | } | ||
61 | |||
62 | } | ||
63 | |||
64 | protected void readScaleFactorSelection() | ||
65 | { | ||
66 | for (int i = 0; i < num_subbands; ++i) | ||
67 | ((SubbandLayer2)subbands[i]).read_scalefactor_selection(stream, crc); | ||
68 | } | ||
69 | |||
70 | |||
71 | |||
72 | /** | ||
73 | * Class for layer II subbands in single channel mode. | ||
74 | */ | ||
75 | static class SubbandLayer2 extends Subband | ||
76 | { | ||
77 | // this table contains 3 requantized samples for each legal codeword | ||
78 | // when grouped in 5 bits, i.e. 3 quantizationsteps per sample | ||
79 | public static final float grouping_5bits[] = new float[] | ||
80 | { | ||
81 | -2.0f/3.0f, -2.0f/3.0f, -2.0f/3.0f, | ||
82 | 0.0f, -2.0f/3.0f, -2.0f/3.0f, | ||
83 | 2.0f/3.0f, -2.0f/3.0f, -2.0f/3.0f, | ||
84 | -2.0f/3.0f, 0.0f, -2.0f/3.0f, | ||
85 | 0.0f, 0.0f, -2.0f/3.0f, | ||
86 | 2.0f/3.0f, 0.0f, -2.0f/3.0f, | ||
87 | -2.0f/3.0f, 2.0f/3.0f, -2.0f/3.0f, | ||
88 | 0.0f, 2.0f/3.0f, -2.0f/3.0f, | ||
89 | 2.0f/3.0f, 2.0f/3.0f, -2.0f/3.0f, | ||
90 | -2.0f/3.0f, -2.0f/3.0f, 0.0f, | ||
91 | 0.0f, -2.0f/3.0f, 0.0f, | ||
92 | 2.0f/3.0f, -2.0f/3.0f, 0.0f, | ||
93 | -2.0f/3.0f, 0.0f, 0.0f, | ||
94 | 0.0f, 0.0f, 0.0f, | ||
95 | 2.0f/3.0f, 0.0f, 0.0f, | ||
96 | -2.0f/3.0f, 2.0f/3.0f, 0.0f, | ||
97 | 0.0f, 2.0f/3.0f, 0.0f, | ||
98 | 2.0f/3.0f, 2.0f/3.0f, 0.0f, | ||
99 | -2.0f/3.0f, -2.0f/3.0f, 2.0f/3.0f, | ||
100 | 0.0f, -2.0f/3.0f, 2.0f/3.0f, | ||
101 | 2.0f/3.0f, -2.0f/3.0f, 2.0f/3.0f, | ||
102 | -2.0f/3.0f, 0.0f, 2.0f/3.0f, | ||
103 | 0.0f, 0.0f, 2.0f/3.0f, | ||
104 | 2.0f/3.0f, 0.0f, 2.0f/3.0f, | ||
105 | -2.0f/3.0f, 2.0f/3.0f, 2.0f/3.0f, | ||
106 | 0.0f, 2.0f/3.0f, 2.0f/3.0f, | ||
107 | 2.0f/3.0f, 2.0f/3.0f, 2.0f/3.0f | ||
108 | }; | ||
109 | |||
110 | // this table contains 3 requantized samples for each legal codeword | ||
111 | // when grouped in 7 bits, i.e. 5 quantizationsteps per sample | ||
112 | public static final float grouping_7bits[] = new float[] | ||
113 | { | ||
114 | -0.8f, -0.8f, -0.8f, -0.4f, -0.8f, -0.8f, 0.0f, -0.8f, -0.8f, 0.4f, -0.8f, -0.8f, 0.8f, -0.8f, -0.8f, | ||
115 | -0.8f, -0.4f, -0.8f, -0.4f, -0.4f, -0.8f, 0.0f, -0.4f, -0.8f, 0.4f, -0.4f, -0.8f, 0.8f, -0.4f, -0.8f, | ||
116 | -0.8f, 0.0f, -0.8f, -0.4f, 0.0f, -0.8f, 0.0f, 0.0f, -0.8f, 0.4f, 0.0f, -0.8f, 0.8f, 0.0f, -0.8f, | ||
117 | -0.8f, 0.4f, -0.8f, -0.4f, 0.4f, -0.8f, 0.0f, 0.4f, -0.8f, 0.4f, 0.4f, -0.8f, 0.8f, 0.4f, -0.8f, | ||
118 | -0.8f, 0.8f, -0.8f, -0.4f, 0.8f, -0.8f, 0.0f, 0.8f, -0.8f, 0.4f, 0.8f, -0.8f, 0.8f, 0.8f, -0.8f, | ||
119 | -0.8f, -0.8f, -0.4f, -0.4f, -0.8f, -0.4f, 0.0f, -0.8f, -0.4f, 0.4f, -0.8f, -0.4f, 0.8f, -0.8f, -0.4f, | ||
120 | -0.8f, -0.4f, -0.4f, -0.4f, -0.4f, -0.4f, 0.0f, -0.4f, -0.4f, 0.4f, -0.4f, -0.4f, 0.8f, -0.4f, -0.4f, | ||
121 | -0.8f, 0.0f, -0.4f, -0.4f, 0.0f, -0.4f, 0.0f, 0.0f, -0.4f, 0.4f, 0.0f, -0.4f, 0.8f, 0.0f, -0.4f, | ||
122 | -0.8f, 0.4f, -0.4f, -0.4f, 0.4f, -0.4f, 0.0f, 0.4f, -0.4f, 0.4f, 0.4f, -0.4f, 0.8f, 0.4f, -0.4f, | ||
123 | -0.8f, 0.8f, -0.4f, -0.4f, 0.8f, -0.4f, 0.0f, 0.8f, -0.4f, 0.4f, 0.8f, -0.4f, 0.8f, 0.8f, -0.4f, | ||
124 | -0.8f, -0.8f, 0.0f, -0.4f, -0.8f, 0.0f, 0.0f, -0.8f, 0.0f, 0.4f, -0.8f, 0.0f, 0.8f, -0.8f, 0.0f, | ||
125 | -0.8f, -0.4f, 0.0f, -0.4f, -0.4f, 0.0f, 0.0f, -0.4f, 0.0f, 0.4f, -0.4f, 0.0f, 0.8f, -0.4f, 0.0f, | ||
126 | -0.8f, 0.0f, 0.0f, -0.4f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.4f, 0.0f, 0.0f, 0.8f, 0.0f, 0.0f, | ||
127 | -0.8f, 0.4f, 0.0f, -0.4f, 0.4f, 0.0f, 0.0f, 0.4f, 0.0f, 0.4f, 0.4f, 0.0f, 0.8f, 0.4f, 0.0f, | ||
128 | -0.8f, 0.8f, 0.0f, -0.4f, 0.8f, 0.0f, 0.0f, 0.8f, 0.0f, 0.4f, 0.8f, 0.0f, 0.8f, 0.8f, 0.0f, | ||
129 | -0.8f, -0.8f, 0.4f, -0.4f, -0.8f, 0.4f, 0.0f, -0.8f, 0.4f, 0.4f, -0.8f, 0.4f, 0.8f, -0.8f, 0.4f, | ||
130 | -0.8f, -0.4f, 0.4f, -0.4f, -0.4f, 0.4f, 0.0f, -0.4f, 0.4f, 0.4f, -0.4f, 0.4f, 0.8f, -0.4f, 0.4f, | ||
131 | -0.8f, 0.0f, 0.4f, -0.4f, 0.0f, 0.4f, 0.0f, 0.0f, 0.4f, 0.4f, 0.0f, 0.4f, 0.8f, 0.0f, 0.4f, | ||
132 | -0.8f, 0.4f, 0.4f, -0.4f, 0.4f, 0.4f, 0.0f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.8f, 0.4f, 0.4f, | ||
133 | -0.8f, 0.8f, 0.4f, -0.4f, 0.8f, 0.4f, 0.0f, 0.8f, 0.4f, 0.4f, 0.8f, 0.4f, 0.8f, 0.8f, 0.4f, | ||
134 | -0.8f, -0.8f, 0.8f, -0.4f, -0.8f, 0.8f, 0.0f, -0.8f, 0.8f, 0.4f, -0.8f, 0.8f, 0.8f, -0.8f, 0.8f, | ||
135 | -0.8f, -0.4f, 0.8f, -0.4f, -0.4f, 0.8f, 0.0f, -0.4f, 0.8f, 0.4f, -0.4f, 0.8f, 0.8f, -0.4f, 0.8f, | ||
136 | -0.8f, 0.0f, 0.8f, -0.4f, 0.0f, 0.8f, 0.0f, 0.0f, 0.8f, 0.4f, 0.0f, 0.8f, 0.8f, 0.0f, 0.8f, | ||
137 | -0.8f, 0.4f, 0.8f, -0.4f, 0.4f, 0.8f, 0.0f, 0.4f, 0.8f, 0.4f, 0.4f, 0.8f, 0.8f, 0.4f, 0.8f, | ||
138 | -0.8f, 0.8f, 0.8f, -0.4f, 0.8f, 0.8f, 0.0f, 0.8f, 0.8f, 0.4f, 0.8f, 0.8f, 0.8f, 0.8f, 0.8f | ||
139 | }; | ||
140 | |||
141 | // this table contains 3 requantized samples for each legal codeword | ||
142 | // when grouped in 10 bits, i.e. 9 quantizationsteps per sample | ||
143 | public static final float grouping_10bits[] = | ||
144 | { | ||
145 | -8.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, | ||
146 | -2.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, 0.0f, -8.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, | ||
147 | 4.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, | ||
148 | -8.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, | ||
149 | -2.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, 0.0f, -6.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, | ||
150 | 4.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, | ||
151 | -8.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, | ||
152 | -2.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, 0.0f, -4.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, | ||
153 | 4.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, | ||
154 | -8.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, | ||
155 | -2.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, 0.0f, -2.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, | ||
156 | 4.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, | ||
157 | -8.0f/9.0f, 0.0f, -8.0f/9.0f, -6.0f/9.0f, 0.0f, -8.0f/9.0f, -4.0f/9.0f, 0.0f, -8.0f/9.0f, | ||
158 | -2.0f/9.0f, 0.0f, -8.0f/9.0f, 0.0f, 0.0f, -8.0f/9.0f, 2.0f/9.0f, 0.0f, -8.0f/9.0f, | ||
159 | 4.0f/9.0f, 0.0f, -8.0f/9.0f, 6.0f/9.0f, 0.0f, -8.0f/9.0f, 8.0f/9.0f, 0.0f, -8.0f/9.0f, | ||
160 | -8.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, | ||
161 | -2.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, 0.0f, 2.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, | ||
162 | 4.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, | ||
163 | -8.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, | ||
164 | -2.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, 0.0f, 4.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, | ||
165 | 4.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, | ||
166 | -8.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, | ||
167 | -2.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, 0.0f, 6.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, | ||
168 | 4.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, | ||
169 | -8.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, | ||
170 | -2.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, 0.0f, 8.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, | ||
171 | 4.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, | ||
172 | -8.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, | ||
173 | -2.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, 0.0f, -8.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, | ||
174 | 4.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, | ||
175 | -8.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, | ||
176 | -2.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, 0.0f, -6.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, | ||
177 | 4.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, | ||
178 | -8.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, | ||
179 | -2.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, 0.0f, -4.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, | ||
180 | 4.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, | ||
181 | -8.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, | ||
182 | -2.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, 0.0f, -2.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, | ||
183 | 4.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, | ||
184 | -8.0f/9.0f, 0.0f, -6.0f/9.0f, -6.0f/9.0f, 0.0f, -6.0f/9.0f, -4.0f/9.0f, 0.0f, -6.0f/9.0f, | ||
185 | -2.0f/9.0f, 0.0f, -6.0f/9.0f, 0.0f, 0.0f, -6.0f/9.0f, 2.0f/9.0f, 0.0f, -6.0f/9.0f, | ||
186 | 4.0f/9.0f, 0.0f, -6.0f/9.0f, 6.0f/9.0f, 0.0f, -6.0f/9.0f, 8.0f/9.0f, 0.0f, -6.0f/9.0f, | ||
187 | -8.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, | ||
188 | -2.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, 0.0f, 2.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, | ||
189 | 4.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, | ||
190 | -8.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, | ||
191 | -2.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, 0.0f, 4.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, | ||
192 | 4.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, | ||
193 | -8.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, | ||
194 | -2.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, 0.0f, 6.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, | ||
195 | 4.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, | ||
196 | -8.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, | ||
197 | -2.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, 0.0f, 8.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, | ||
198 | 4.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, | ||
199 | -8.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, | ||
200 | -2.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, 0.0f, -8.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, | ||
201 | 4.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, | ||
202 | -8.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, | ||
203 | -2.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, 0.0f, -6.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, | ||
204 | 4.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, | ||
205 | -8.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, | ||
206 | -2.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, 0.0f, -4.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, | ||
207 | 4.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, | ||
208 | -8.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, | ||
209 | -2.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, 0.0f, -2.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, | ||
210 | 4.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, | ||
211 | -8.0f/9.0f, 0.0f, -4.0f/9.0f, -6.0f/9.0f, 0.0f, -4.0f/9.0f, -4.0f/9.0f, 0.0f, -4.0f/9.0f, | ||
212 | -2.0f/9.0f, 0.0f, -4.0f/9.0f, 0.0f, 0.0f, -4.0f/9.0f, 2.0f/9.0f, 0.0f, -4.0f/9.0f, | ||
213 | 4.0f/9.0f, 0.0f, -4.0f/9.0f, 6.0f/9.0f, 0.0f, -4.0f/9.0f, 8.0f/9.0f, 0.0f, -4.0f/9.0f, | ||
214 | -8.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, | ||
215 | -2.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, 0.0f, 2.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, | ||
216 | 4.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, | ||
217 | -8.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, | ||
218 | -2.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, 0.0f, 4.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, | ||
219 | 4.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, | ||
220 | -8.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, | ||
221 | -2.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, 0.0f, 6.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, | ||
222 | 4.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, | ||
223 | -8.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, | ||
224 | -2.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, 0.0f, 8.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, | ||
225 | 4.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, | ||
226 | -8.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, | ||
227 | -2.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, 0.0f, -8.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, | ||
228 | 4.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, | ||
229 | -8.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, | ||
230 | -2.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, 0.0f, -6.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, | ||
231 | 4.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, | ||
232 | -8.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, | ||
233 | -2.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, 0.0f, -4.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, | ||
234 | 4.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, | ||
235 | -8.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, | ||
236 | -2.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, 0.0f, -2.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, | ||
237 | 4.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, | ||
238 | -8.0f/9.0f, 0.0f, -2.0f/9.0f, -6.0f/9.0f, 0.0f, -2.0f/9.0f, -4.0f/9.0f, 0.0f, -2.0f/9.0f, | ||
239 | -2.0f/9.0f, 0.0f, -2.0f/9.0f, 0.0f, 0.0f, -2.0f/9.0f, 2.0f/9.0f, 0.0f, -2.0f/9.0f, | ||
240 | 4.0f/9.0f, 0.0f, -2.0f/9.0f, 6.0f/9.0f, 0.0f, -2.0f/9.0f, 8.0f/9.0f, 0.0f, -2.0f/9.0f, | ||
241 | -8.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, | ||
242 | -2.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, 0.0f, 2.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, | ||
243 | 4.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, | ||
244 | -8.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, | ||
245 | -2.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, 0.0f, 4.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, | ||
246 | 4.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, | ||
247 | -8.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, | ||
248 | -2.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, 0.0f, 6.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, | ||
249 | 4.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, | ||
250 | -8.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, | ||
251 | -2.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, 0.0f, 8.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, | ||
252 | 4.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, | ||
253 | -8.0f/9.0f, -8.0f/9.0f, 0.0f, -6.0f/9.0f, -8.0f/9.0f, 0.0f, -4.0f/9.0f, -8.0f/9.0f, 0.0f, | ||
254 | -2.0f/9.0f, -8.0f/9.0f, 0.0f, 0.0f, -8.0f/9.0f, 0.0f, 2.0f/9.0f, -8.0f/9.0f, 0.0f, | ||
255 | 4.0f/9.0f, -8.0f/9.0f, 0.0f, 6.0f/9.0f, -8.0f/9.0f, 0.0f, 8.0f/9.0f, -8.0f/9.0f, 0.0f, | ||
256 | -8.0f/9.0f, -6.0f/9.0f, 0.0f, -6.0f/9.0f, -6.0f/9.0f, 0.0f, -4.0f/9.0f, -6.0f/9.0f, 0.0f, | ||
257 | -2.0f/9.0f, -6.0f/9.0f, 0.0f, 0.0f, -6.0f/9.0f, 0.0f, 2.0f/9.0f, -6.0f/9.0f, 0.0f, | ||
258 | 4.0f/9.0f, -6.0f/9.0f, 0.0f, 6.0f/9.0f, -6.0f/9.0f, 0.0f, 8.0f/9.0f, -6.0f/9.0f, 0.0f, | ||
259 | -8.0f/9.0f, -4.0f/9.0f, 0.0f, -6.0f/9.0f, -4.0f/9.0f, 0.0f, -4.0f/9.0f, -4.0f/9.0f, 0.0f, | ||
260 | -2.0f/9.0f, -4.0f/9.0f, 0.0f, 0.0f, -4.0f/9.0f, 0.0f, 2.0f/9.0f, -4.0f/9.0f, 0.0f, | ||
261 | 4.0f/9.0f, -4.0f/9.0f, 0.0f, 6.0f/9.0f, -4.0f/9.0f, 0.0f, 8.0f/9.0f, -4.0f/9.0f, 0.0f, | ||
262 | -8.0f/9.0f, -2.0f/9.0f, 0.0f, -6.0f/9.0f, -2.0f/9.0f, 0.0f, -4.0f/9.0f, -2.0f/9.0f, 0.0f, | ||
263 | -2.0f/9.0f, -2.0f/9.0f, 0.0f, 0.0f, -2.0f/9.0f, 0.0f, 2.0f/9.0f, -2.0f/9.0f, 0.0f, | ||
264 | 4.0f/9.0f, -2.0f/9.0f, 0.0f, 6.0f/9.0f, -2.0f/9.0f, 0.0f, 8.0f/9.0f, -2.0f/9.0f, 0.0f, | ||
265 | -8.0f/9.0f, 0.0f, 0.0f, -6.0f/9.0f, 0.0f, 0.0f, -4.0f/9.0f, 0.0f, 0.0f, | ||
266 | -2.0f/9.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 2.0f/9.0f, 0.0f, 0.0f, | ||
267 | 4.0f/9.0f, 0.0f, 0.0f, 6.0f/9.0f, 0.0f, 0.0f, 8.0f/9.0f, 0.0f, 0.0f, | ||
268 | -8.0f/9.0f, 2.0f/9.0f, 0.0f, -6.0f/9.0f, 2.0f/9.0f, 0.0f, -4.0f/9.0f, 2.0f/9.0f, 0.0f, | ||
269 | -2.0f/9.0f, 2.0f/9.0f, 0.0f, 0.0f, 2.0f/9.0f, 0.0f, 2.0f/9.0f, 2.0f/9.0f, 0.0f, | ||
270 | 4.0f/9.0f, 2.0f/9.0f, 0.0f, 6.0f/9.0f, 2.0f/9.0f, 0.0f, 8.0f/9.0f, 2.0f/9.0f, 0.0f, | ||
271 | -8.0f/9.0f, 4.0f/9.0f, 0.0f, -6.0f/9.0f, 4.0f/9.0f, 0.0f, -4.0f/9.0f, 4.0f/9.0f, 0.0f, | ||
272 | -2.0f/9.0f, 4.0f/9.0f, 0.0f, 0.0f, 4.0f/9.0f, 0.0f, 2.0f/9.0f, 4.0f/9.0f, 0.0f, | ||
273 | 4.0f/9.0f, 4.0f/9.0f, 0.0f, 6.0f/9.0f, 4.0f/9.0f, 0.0f, 8.0f/9.0f, 4.0f/9.0f, 0.0f, | ||
274 | -8.0f/9.0f, 6.0f/9.0f, 0.0f, -6.0f/9.0f, 6.0f/9.0f, 0.0f, -4.0f/9.0f, 6.0f/9.0f, 0.0f, | ||
275 | -2.0f/9.0f, 6.0f/9.0f, 0.0f, 0.0f, 6.0f/9.0f, 0.0f, 2.0f/9.0f, 6.0f/9.0f, 0.0f, | ||
276 | 4.0f/9.0f, 6.0f/9.0f, 0.0f, 6.0f/9.0f, 6.0f/9.0f, 0.0f, 8.0f/9.0f, 6.0f/9.0f, 0.0f, | ||
277 | -8.0f/9.0f, 8.0f/9.0f, 0.0f, -6.0f/9.0f, 8.0f/9.0f, 0.0f, -4.0f/9.0f, 8.0f/9.0f, 0.0f, | ||
278 | -2.0f/9.0f, 8.0f/9.0f, 0.0f, 0.0f, 8.0f/9.0f, 0.0f, 2.0f/9.0f, 8.0f/9.0f, 0.0f, | ||
279 | 4.0f/9.0f, 8.0f/9.0f, 0.0f, 6.0f/9.0f, 8.0f/9.0f, 0.0f, 8.0f/9.0f, 8.0f/9.0f, 0.0f, | ||
280 | -8.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, | ||
281 | -2.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, 0.0f, -8.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, | ||
282 | 4.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, | ||
283 | -8.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, | ||
284 | -2.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, 0.0f, -6.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, | ||
285 | 4.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, | ||
286 | -8.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, | ||
287 | -2.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, 0.0f, -4.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, | ||
288 | 4.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, | ||
289 | -8.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, | ||
290 | -2.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, 0.0f, -2.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, | ||
291 | 4.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, | ||
292 | -8.0f/9.0f, 0.0f, 2.0f/9.0f, -6.0f/9.0f, 0.0f, 2.0f/9.0f, -4.0f/9.0f, 0.0f, 2.0f/9.0f, | ||
293 | -2.0f/9.0f, 0.0f, 2.0f/9.0f, 0.0f, 0.0f, 2.0f/9.0f, 2.0f/9.0f, 0.0f, 2.0f/9.0f, | ||
294 | 4.0f/9.0f, 0.0f, 2.0f/9.0f, 6.0f/9.0f, 0.0f, 2.0f/9.0f, 8.0f/9.0f, 0.0f, 2.0f/9.0f, | ||
295 | -8.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, | ||
296 | -2.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, 0.0f, 2.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, | ||
297 | 4.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, | ||
298 | -8.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, | ||
299 | -2.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, 0.0f, 4.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, | ||
300 | 4.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, | ||
301 | -8.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, | ||
302 | -2.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, 0.0f, 6.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, | ||
303 | 4.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, | ||
304 | -8.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, | ||
305 | -2.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, 0.0f, 8.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, | ||
306 | 4.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, | ||
307 | -8.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, | ||
308 | -2.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, 0.0f, -8.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, | ||
309 | 4.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, | ||
310 | -8.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, | ||
311 | -2.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, 0.0f, -6.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, | ||
312 | 4.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, | ||
313 | -8.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, | ||
314 | -2.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, 0.0f, -4.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, | ||
315 | 4.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, | ||
316 | -8.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, | ||
317 | -2.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, 0.0f, -2.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, | ||
318 | 4.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, | ||
319 | -8.0f/9.0f, 0.0f, 4.0f/9.0f, -6.0f/9.0f, 0.0f, 4.0f/9.0f, -4.0f/9.0f, 0.0f, 4.0f/9.0f, | ||
320 | -2.0f/9.0f, 0.0f, 4.0f/9.0f, 0.0f, 0.0f, 4.0f/9.0f, 2.0f/9.0f, 0.0f, 4.0f/9.0f, | ||
321 | 4.0f/9.0f, 0.0f, 4.0f/9.0f, 6.0f/9.0f, 0.0f, 4.0f/9.0f, 8.0f/9.0f, 0.0f, 4.0f/9.0f, | ||
322 | -8.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, | ||
323 | -2.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, 0.0f, 2.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, | ||
324 | 4.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, | ||
325 | -8.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, | ||
326 | -2.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, 0.0f, 4.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, | ||
327 | 4.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, | ||
328 | -8.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, | ||
329 | -2.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, 0.0f, 6.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, | ||
330 | 4.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, | ||
331 | -8.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, | ||
332 | -2.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, 0.0f, 8.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, | ||
333 | 4.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, | ||
334 | -8.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, | ||
335 | -2.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, 0.0f, -8.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, | ||
336 | 4.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, | ||
337 | -8.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, | ||
338 | -2.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, 0.0f, -6.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, | ||
339 | 4.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, | ||
340 | -8.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, | ||
341 | -2.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, 0.0f, -4.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, | ||
342 | 4.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, | ||
343 | -8.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, | ||
344 | -2.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, 0.0f, -2.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, | ||
345 | 4.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, | ||
346 | -8.0f/9.0f, 0.0f, 6.0f/9.0f, -6.0f/9.0f, 0.0f, 6.0f/9.0f, -4.0f/9.0f, 0.0f, 6.0f/9.0f, | ||
347 | -2.0f/9.0f, 0.0f, 6.0f/9.0f, 0.0f, 0.0f, 6.0f/9.0f, 2.0f/9.0f, 0.0f, 6.0f/9.0f, | ||
348 | 4.0f/9.0f, 0.0f, 6.0f/9.0f, 6.0f/9.0f, 0.0f, 6.0f/9.0f, 8.0f/9.0f, 0.0f, 6.0f/9.0f, | ||
349 | -8.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, | ||
350 | -2.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, 0.0f, 2.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, | ||
351 | 4.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, | ||
352 | -8.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, | ||
353 | -2.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, 0.0f, 4.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, | ||
354 | 4.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, | ||
355 | -8.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, | ||
356 | -2.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, 0.0f, 6.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, | ||
357 | 4.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, | ||
358 | -8.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, | ||
359 | -2.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, 0.0f, 8.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, | ||
360 | 4.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, | ||
361 | -8.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, | ||
362 | -2.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, 0.0f, -8.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, | ||
363 | 4.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, | ||
364 | -8.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, | ||
365 | -2.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, 0.0f, -6.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, | ||
366 | 4.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, | ||
367 | -8.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, | ||
368 | -2.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, 0.0f, -4.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, | ||
369 | 4.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, | ||
370 | -8.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, | ||
371 | -2.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, 0.0f, -2.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, | ||
372 | 4.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, | ||
373 | -8.0f/9.0f, 0.0f, 8.0f/9.0f, -6.0f/9.0f, 0.0f, 8.0f/9.0f, -4.0f/9.0f, 0.0f, 8.0f/9.0f, | ||
374 | -2.0f/9.0f, 0.0f, 8.0f/9.0f, 0.0f, 0.0f, 8.0f/9.0f, 2.0f/9.0f, 0.0f, 8.0f/9.0f, | ||
375 | 4.0f/9.0f, 0.0f, 8.0f/9.0f, 6.0f/9.0f, 0.0f, 8.0f/9.0f, 8.0f/9.0f, 0.0f, 8.0f/9.0f, | ||
376 | -8.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, | ||
377 | -2.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, 0.0f, 2.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, | ||
378 | 4.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, | ||
379 | -8.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, | ||
380 | -2.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, 0.0f, 4.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, | ||
381 | 4.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, | ||
382 | -8.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, | ||
383 | -2.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, 0.0f, 6.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, | ||
384 | 4.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, | ||
385 | -8.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, | ||
386 | -2.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, 0.0f, 8.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, | ||
387 | 4.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f | ||
388 | }; | ||
389 | |||
390 | // data taken from ISO/IEC DIS 11172, Annexes 3-B.2[abcd] and 3-B.4: | ||
391 | |||
392 | // subbands 0-2 in tables 3-B.2a and 2b: (index is allocation) | ||
393 | public static final int table_ab1_codelength[] = | ||
394 | // bits per codeword | ||
395 | { 0, 5, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; | ||
396 | |||
397 | public static final float table_ab1_groupingtables[][] = | ||
398 | // pointer to sample grouping table, or NULL-pointer if ungrouped | ||
399 | { null, grouping_5bits, null, null, null, null, null, null, null, null, null, null, null, null, null, null }; | ||
400 | |||
401 | public static final float table_ab1_factor[] = | ||
402 | // factor for requantization: (real)sample * factor - 1.0 gives requantized sample | ||
403 | { 0.0f, 1.0f/2.0f, 1.0f/4.0f, 1.0f/8.0f, 1.0f/16.0f, 1.0f/32.0f, 1.0f/64.0f, | ||
404 | 1.0f/128.0f, 1.0f/256.0f, 1.0f/512.0f, 1.0f/1024.0f, 1.0f/2048.0f, | ||
405 | 1.0f/4096.0f, 1.0f/8192.0f, 1.0f/16384.0f, 1.0f/32768.0f }; | ||
406 | |||
407 | public static final float table_ab1_c[] = | ||
408 | // factor c for requantization from table 3-B.4 | ||
409 | { 0.0f, 1.33333333333f, 1.14285714286f, 1.06666666666f, 1.03225806452f, | ||
410 | 1.01587301587f, 1.00787401575f, 1.00392156863f, 1.00195694716f, 1.00097751711f, | ||
411 | 1.00048851979f, 1.00024420024f, 1.00012208522f, 1.00006103888f, 1.00003051851f, | ||
412 | 1.00001525902f }; | ||
413 | |||
414 | public static final float table_ab1_d[] = | ||
415 | // addend d for requantization from table 3-B.4 | ||
416 | { 0.0f, 0.50000000000f, 0.25000000000f, 0.12500000000f, 0.06250000000f, | ||
417 | 0.03125000000f, 0.01562500000f, 0.00781250000f, 0.00390625000f, 0.00195312500f, | ||
418 | 0.00097656250f, 0.00048828125f, 0.00024414063f, 0.00012207031f, 0.00006103516f, | ||
419 | 0.00003051758f }; | ||
420 | |||
421 | // subbands 3-... tables 3-B.2a and 2b: | ||
422 | public static final float[] table_ab234_groupingtables[] = | ||
423 | { null, grouping_5bits, grouping_7bits, null, grouping_10bits, null, null, null, null, null, null, null, null, null, null, null }; | ||
424 | |||
425 | // subbands 3-10 in tables 3-B.2a and 2b: | ||
426 | public static final int table_ab2_codelength[] = | ||
427 | { 0, 5, 7, 3, 10, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16 }; | ||
428 | public static final float table_ab2_factor[] = | ||
429 | { 0.0f, 1.0f/2.0f, 1.0f/4.0f, 1.0f/4.0f, 1.0f/8.0f, 1.0f/8.0f, 1.0f/16.0f, | ||
430 | 1.0f/32.0f, 1.0f/64.0f, 1.0f/128.0f, 1.0f/256.0f, 1.0f/512.0f, | ||
431 | 1.0f/1024.0f, 1.0f/2048.0f, 1.0f/4096.0f, 1.0f/32768.0f }; | ||
432 | public static final float table_ab2_c[] = | ||
433 | { 0.0f, 1.33333333333f, 1.60000000000f, 1.14285714286f, 1.77777777777f, | ||
434 | 1.06666666666f, 1.03225806452f, 1.01587301587f, 1.00787401575f, 1.00392156863f, | ||
435 | 1.00195694716f, 1.00097751711f, 1.00048851979f, 1.00024420024f, 1.00012208522f, | ||
436 | 1.00001525902f }; | ||
437 | public static final float table_ab2_d[] = | ||
438 | { 0.0f, 0.50000000000f, 0.50000000000f, 0.25000000000f, 0.50000000000f, | ||
439 | 0.12500000000f, 0.06250000000f, 0.03125000000f, 0.01562500000f, 0.00781250000f, | ||
440 | 0.00390625000f, 0.00195312500f, 0.00097656250f, 0.00048828125f, 0.00024414063f, | ||
441 | 0.00003051758f }; | ||
442 | |||
443 | // subbands 11-22 in tables 3-B.2a and 2b: | ||
444 | public static final int table_ab3_codelength[] = { 0, 5, 7, 3, 10, 4, 5, 16 }; | ||
445 | public static final float table_ab3_factor[] = | ||
446 | { 0.0f, 1.0f/2.0f, 1.0f/4.0f, 1.0f/4.0f, 1.0f/8.0f, 1.0f/8.0f, 1.0f/16.0f, 1.0f/32768.0f }; | ||
447 | public static final float table_ab3_c[] = | ||
448 | { 0.0f, 1.33333333333f, 1.60000000000f, 1.14285714286f, 1.77777777777f, | ||
449 | 1.06666666666f, 1.03225806452f, 1.00001525902f }; | ||
450 | public static final float table_ab3_d[] = | ||
451 | { 0.0f, 0.50000000000f, 0.50000000000f, 0.25000000000f, 0.50000000000f, | ||
452 | 0.12500000000f, 0.06250000000f, 0.00003051758f }; | ||
453 | |||
454 | // subbands 23-... in tables 3-B.2a and 2b: | ||
455 | public static final int table_ab4_codelength[] = { 0, 5, 7, 16 }; | ||
456 | public static final float table_ab4_factor[] = { 0.0f, 1.0f/2.0f, 1.0f/4.0f, 1.0f/32768.0f }; | ||
457 | public static final float table_ab4_c[] = { 0.0f, 1.33333333333f, 1.60000000000f, 1.00001525902f }; | ||
458 | public static final float table_ab4_d[] = { 0.0f, 0.50000000000f, 0.50000000000f, 0.00003051758f }; | ||
459 | |||
460 | // subbands in tables 3-B.2c and 2d: | ||
461 | public static final int table_cd_codelength[] = | ||
462 | { 0, 5, 7, 10, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; | ||
463 | public static final float table_cd_groupingtables[][] = | ||
464 | { null, grouping_5bits, grouping_7bits, grouping_10bits, null, null, null, null, null, null, null, null, null, null, null, null }; | ||
465 | public static final float table_cd_factor[] = | ||
466 | { 0.0f, 1.0f/2.0f, 1.0f/4.0f, 1.0f/8.0f, 1.0f/8.0f, 1.0f/16.0f, 1.0f/32.0f, 1.0f/64.0f, | ||
467 | 1.0f/128.0f, 1.0f/256.0f, 1.0f/512.0f, 1.0f/1024.0f, 1.0f/2048.0f, 1.0f/4096.0f, | ||
468 | 1.0f/8192.0f, 1.0f/16384.0f }; | ||
469 | public static final float table_cd_c[] = | ||
470 | { 0.0f, 1.33333333333f, 1.60000000000f, 1.77777777777f, 1.06666666666f, | ||
471 | 1.03225806452f, 1.01587301587f, 1.00787401575f, 1.00392156863f, 1.00195694716f, | ||
472 | 1.00097751711f, 1.00048851979f, 1.00024420024f, 1.00012208522f, 1.00006103888f, | ||
473 | 1.00003051851f }; | ||
474 | public static final float table_cd_d[] = | ||
475 | { 0.0f, 0.50000000000f, 0.50000000000f, 0.50000000000f, 0.12500000000f, | ||
476 | 0.06250000000f, 0.03125000000f, 0.01562500000f, 0.00781250000f, 0.00390625000f, | ||
477 | 0.00195312500f, 0.00097656250f, 0.00048828125f, 0.00024414063f, 0.00012207031f, | ||
478 | 0.00006103516f }; | ||
479 | |||
480 | |||
481 | |||
482 | protected int subbandnumber; | ||
483 | protected int allocation; | ||
484 | protected int scfsi; | ||
485 | protected float scalefactor1, scalefactor2, scalefactor3; | ||
486 | protected int[] codelength = {0}; | ||
487 | protected float groupingtable[][] = new float[2][]; | ||
488 | //protected float[][] groupingtable = {{0},{0}} ; | ||
489 | protected float[] factor = {0.0f}; | ||
490 | protected int groupnumber; | ||
491 | protected int samplenumber; | ||
492 | protected float[] samples = new float[3]; | ||
493 | protected float[] c = {0}; | ||
494 | protected float[] d = {0}; | ||
495 | /** | ||
496 | * Constructor | ||
497 | */ | ||
498 | public SubbandLayer2(int subbandnumber) | ||
499 | { | ||
500 | this.subbandnumber = subbandnumber; | ||
501 | groupnumber = samplenumber = 0; | ||
502 | } | ||
503 | |||
504 | |||
505 | /** | ||
506 | * | ||
507 | */ | ||
508 | protected int get_allocationlength (Header header) | ||
509 | { | ||
510 | if (header.version() == Header.MPEG1) | ||
511 | { | ||
512 | int channel_bitrate = header.bitrate_index(); | ||
513 | |||
514 | // calculate bitrate per channel: | ||
515 | if (header.mode() != Header.SINGLE_CHANNEL) | ||
516 | if (channel_bitrate == 4) | ||
517 | channel_bitrate = 1; | ||
518 | else | ||
519 | channel_bitrate -= 4; | ||
520 | |||
521 | if (channel_bitrate == 1 || channel_bitrate == 2) | ||
522 | // table 3-B.2c or 3-B.2d | ||
523 | if (subbandnumber <= 1) | ||
524 | return 4; | ||
525 | else | ||
526 | return 3; | ||
527 | else | ||
528 | // tables 3-B.2a or 3-B.2b | ||
529 | if (subbandnumber <= 10) | ||
530 | return 4; | ||
531 | else if (subbandnumber <= 22) | ||
532 | return 3; | ||
533 | else | ||
534 | return 2; | ||
535 | } | ||
536 | else | ||
537 | { // MPEG-2 LSF -- Jeff | ||
538 | |||
539 | // table B.1 of ISO/IEC 13818-3 | ||
540 | if (subbandnumber <= 3) | ||
541 | return 4; | ||
542 | else if (subbandnumber <= 10) | ||
543 | return 3; | ||
544 | else | ||
545 | return 2; | ||
546 | } | ||
547 | } | ||
548 | |||
549 | /** | ||
550 | * | ||
551 | */ | ||
552 | protected void prepare_sample_reading(Header header, int allocation, | ||
553 | //float[][] groupingtable, | ||
554 | int channel, | ||
555 | float[] factor, int[] codelength, | ||
556 | float[] c, float[] d) | ||
557 | { | ||
558 | int channel_bitrate = header.bitrate_index(); | ||
559 | // calculate bitrate per channel: | ||
560 | if (header.mode() != Header.SINGLE_CHANNEL) | ||
561 | if (channel_bitrate == 4) | ||
562 | channel_bitrate = 1; | ||
563 | else | ||
564 | channel_bitrate -= 4; | ||
565 | |||
566 | if (channel_bitrate == 1 || channel_bitrate == 2) | ||
567 | { | ||
568 | // table 3-B.2c or 3-B.2d | ||
569 | groupingtable[channel] = table_cd_groupingtables[allocation]; | ||
570 | factor[0] = table_cd_factor[allocation]; | ||
571 | codelength[0] = table_cd_codelength[allocation]; | ||
572 | c[0] = table_cd_c[allocation]; | ||
573 | d[0] = table_cd_d[allocation]; | ||
574 | } | ||
575 | else | ||
576 | { | ||
577 | // tables 3-B.2a or 3-B.2b | ||
578 | if (subbandnumber <= 2) | ||
579 | { | ||
580 | groupingtable[channel] = table_ab1_groupingtables[allocation]; | ||
581 | factor[0] = table_ab1_factor[allocation]; | ||
582 | codelength[0] = table_ab1_codelength[allocation]; | ||
583 | c[0] = table_ab1_c[allocation]; | ||
584 | d[0] = table_ab1_d[allocation]; | ||
585 | } | ||
586 | else | ||
587 | { | ||
588 | groupingtable[channel] = table_ab234_groupingtables[allocation]; | ||
589 | if (subbandnumber <= 10) | ||
590 | { | ||
591 | factor[0] = table_ab2_factor[allocation]; | ||
592 | codelength[0] = table_ab2_codelength[allocation]; | ||
593 | c[0] = table_ab2_c[allocation]; | ||
594 | d[0] = table_ab2_d[allocation]; | ||
595 | } | ||
596 | else if (subbandnumber <= 22) | ||
597 | { | ||
598 | factor[0] = table_ab3_factor[allocation]; | ||
599 | codelength[0] = table_ab3_codelength[allocation]; | ||
600 | c[0] = table_ab3_c[allocation]; | ||
601 | d[0] = table_ab3_d[allocation]; | ||
602 | } | ||
603 | else | ||
604 | { | ||
605 | factor[0] = table_ab4_factor[allocation]; | ||
606 | codelength[0] = table_ab4_codelength[allocation]; | ||
607 | c[0] = table_ab4_c[allocation]; | ||
608 | d[0] = table_ab4_d[allocation]; | ||
609 | } | ||
610 | } | ||
611 | } | ||
612 | } | ||
613 | |||
614 | |||
615 | /** | ||
616 | * | ||
617 | */ | ||
618 | public void read_allocation(Bitstream stream, Header header, Crc16 crc) | ||
619 | { | ||
620 | int length = get_allocationlength(header); | ||
621 | allocation = stream.get_bits(length); | ||
622 | if (crc != null) | ||
623 | crc.add_bits(allocation, length); | ||
624 | } | ||
625 | |||
626 | /** | ||
627 | * | ||
628 | */ | ||
629 | public void read_scalefactor_selection (Bitstream stream, Crc16 crc) | ||
630 | { | ||
631 | if (allocation != 0) | ||
632 | { | ||
633 | scfsi = stream.get_bits(2); | ||
634 | if (crc != null) crc.add_bits(scfsi, 2); | ||
635 | } | ||
636 | } | ||
637 | |||
638 | /** | ||
639 | * | ||
640 | */ | ||
641 | public void read_scalefactor (Bitstream stream, Header header) | ||
642 | { | ||
643 | if (allocation != 0) | ||
644 | { | ||
645 | switch (scfsi) | ||
646 | { | ||
647 | case 0: | ||
648 | scalefactor1 = scalefactors[stream.get_bits(6)]; | ||
649 | scalefactor2 = scalefactors[stream.get_bits(6)]; | ||
650 | scalefactor3 = scalefactors[stream.get_bits(6)]; | ||
651 | break; | ||
652 | case 1: | ||
653 | scalefactor1 = scalefactor2 = scalefactors[stream.get_bits(6)]; | ||
654 | scalefactor3 = scalefactors[stream.get_bits(6)]; | ||
655 | break; | ||
656 | case 2: | ||
657 | scalefactor1 = scalefactor2 = scalefactor3 = scalefactors[stream.get_bits(6)]; | ||
658 | break; | ||
659 | case 3: | ||
660 | scalefactor1 = scalefactors[stream.get_bits(6)]; | ||
661 | scalefactor2 = scalefactor3 = scalefactors[stream.get_bits(6)]; | ||
662 | break; | ||
663 | } | ||
664 | prepare_sample_reading(header, allocation, 0, | ||
665 | factor, codelength, c, d); | ||
666 | } | ||
667 | } | ||
668 | |||
669 | /** | ||
670 | * | ||
671 | */ | ||
672 | public boolean read_sampledata (Bitstream stream) | ||
673 | { | ||
674 | if (allocation != 0) | ||
675 | if (groupingtable[0] != null) | ||
676 | { | ||
677 | int samplecode = stream.get_bits(codelength[0]); | ||
678 | // create requantized samples: | ||
679 | samplecode += samplecode << 1; | ||
680 | float[] target = samples; | ||
681 | float[] source = groupingtable[0]; | ||
682 | /* | ||
683 | int tmp = 0; | ||
684 | int temp = 0; | ||
685 | target[tmp++] = source[samplecode + temp]; | ||
686 | temp++; | ||
687 | target[tmp++] = source[samplecode + temp]; | ||
688 | temp++; | ||
689 | target[tmp] = source[samplecode + temp]; | ||
690 | */ | ||
691 | //Bugfix: | ||
692 | int tmp = 0; | ||
693 | int temp = samplecode; | ||
694 | |||
695 | if(temp > source.length - 3) temp = source.length - 3; | ||
696 | |||
697 | target[tmp] = source[temp]; | ||
698 | temp++;tmp++; | ||
699 | target[tmp] = source[temp]; | ||
700 | temp++;tmp++; | ||
701 | target[tmp] = source[temp]; | ||
702 | |||
703 | // memcpy (samples, groupingtable + samplecode, 3 * sizeof (real)); | ||
704 | } | ||
705 | else | ||
706 | { | ||
707 | samples[0] = (float) ((stream.get_bits(codelength[0])) * factor[0] - 1.0); | ||
708 | samples[1] = (float) ((stream.get_bits(codelength[0])) * factor[0] - 1.0); | ||
709 | samples[2] = (float) ((stream.get_bits(codelength[0])) * factor[0] - 1.0); | ||
710 | } | ||
711 | |||
712 | samplenumber = 0; | ||
713 | if (++groupnumber == 12) | ||
714 | return true; | ||
715 | else | ||
716 | return false; | ||
717 | } | ||
718 | |||
719 | /** | ||
720 | * | ||
721 | */ | ||
722 | public boolean put_next_sample(int channels, SynthesisFilter filter1, SynthesisFilter filter2) | ||
723 | { | ||
724 | if ((allocation != 0) && (channels != OutputChannels.RIGHT_CHANNEL)) | ||
725 | { | ||
726 | float sample = samples[samplenumber]; | ||
727 | |||
728 | if (groupingtable[0] == null) | ||
729 | sample = (sample + d[0]) * c[0]; | ||
730 | if (groupnumber <= 4) | ||
731 | sample *= scalefactor1; | ||
732 | else if (groupnumber <= 8) | ||
733 | sample *= scalefactor2; | ||
734 | else | ||
735 | sample *= scalefactor3; | ||
736 | filter1.input_sample(sample, subbandnumber); | ||
737 | } | ||
738 | |||
739 | if (++samplenumber == 3) | ||
740 | return true; | ||
741 | else | ||
742 | return false; | ||
743 | } | ||
744 | }; | ||
745 | |||
746 | /** | ||
747 | * Class for layer II subbands in joint stereo mode. | ||
748 | */ | ||
749 | static class SubbandLayer2IntensityStereo extends SubbandLayer2 | ||
750 | { | ||
751 | protected int channel2_scfsi; | ||
752 | protected float channel2_scalefactor1, channel2_scalefactor2, channel2_scalefactor3; | ||
753 | |||
754 | /** | ||
755 | * Constructor | ||
756 | */ | ||
757 | public SubbandLayer2IntensityStereo (int subbandnumber) | ||
758 | { | ||
759 | super(subbandnumber); | ||
760 | } | ||
761 | |||
762 | /** | ||
763 | * | ||
764 | */ | ||
765 | public void read_allocation(Bitstream stream, Header header, Crc16 crc) | ||
766 | { | ||
767 | super.read_allocation (stream, header, crc); | ||
768 | } | ||
769 | |||
770 | /** | ||
771 | * | ||
772 | */ | ||
773 | public void read_scalefactor_selection(Bitstream stream, Crc16 crc) | ||
774 | { | ||
775 | if (allocation != 0) | ||
776 | { | ||
777 | scfsi = stream.get_bits(2); | ||
778 | channel2_scfsi = stream.get_bits(2); | ||
779 | if (crc != null) | ||
780 | { | ||
781 | crc.add_bits(scfsi, 2); | ||
782 | crc.add_bits(channel2_scfsi, 2); | ||
783 | } | ||
784 | } | ||
785 | } | ||
786 | |||
787 | /** | ||
788 | * | ||
789 | */ | ||
790 | public void read_scalefactor(Bitstream stream, Header header) | ||
791 | { | ||
792 | if (allocation != 0) | ||
793 | { | ||
794 | super.read_scalefactor(stream, header); | ||
795 | switch (channel2_scfsi) | ||
796 | { | ||
797 | case 0: | ||
798 | channel2_scalefactor1 = scalefactors[stream.get_bits(6)]; | ||
799 | channel2_scalefactor2 = scalefactors[stream.get_bits(6)]; | ||
800 | channel2_scalefactor3 = scalefactors[stream.get_bits(6)]; | ||
801 | break; | ||
802 | |||
803 | case 1: | ||
804 | channel2_scalefactor1 = channel2_scalefactor2 = scalefactors[stream.get_bits (6)]; | ||
805 | channel2_scalefactor3 = scalefactors[stream.get_bits(6)]; | ||
806 | break; | ||
807 | |||
808 | case 2: | ||
809 | channel2_scalefactor1 = channel2_scalefactor2 = | ||
810 | channel2_scalefactor3 = scalefactors[stream.get_bits(6)]; | ||
811 | break; | ||
812 | |||
813 | case 3: | ||
814 | channel2_scalefactor1 = scalefactors[stream.get_bits(6)]; | ||
815 | channel2_scalefactor2 = channel2_scalefactor3 = scalefactors[stream.get_bits (6)]; | ||
816 | break; | ||
817 | } | ||
818 | } | ||
819 | |||
820 | } | ||
821 | |||
822 | /** | ||
823 | * | ||
824 | */ | ||
825 | public boolean read_sampledata(Bitstream stream) | ||
826 | { | ||
827 | return super.read_sampledata (stream); | ||
828 | } | ||
829 | |||
830 | /** | ||
831 | * | ||
832 | */ | ||
833 | public boolean put_next_sample(int channels, SynthesisFilter filter1, SynthesisFilter filter2) | ||
834 | { | ||
835 | if (allocation != 0) | ||
836 | { | ||
837 | float sample = samples[samplenumber]; | ||
838 | |||
839 | if (groupingtable[0] == null) | ||
840 | sample = (sample + d[0]) * c[0]; | ||
841 | if (channels == OutputChannels.BOTH_CHANNELS) | ||
842 | { | ||
843 | float sample2 = sample; | ||
844 | if (groupnumber <= 4) | ||
845 | { | ||
846 | sample *= scalefactor1; | ||
847 | sample2 *= channel2_scalefactor1; | ||
848 | } | ||
849 | else if (groupnumber <= 8) | ||
850 | { | ||
851 | sample *= scalefactor2; | ||
852 | sample2 *= channel2_scalefactor2; | ||
853 | } | ||
854 | else | ||
855 | { | ||
856 | sample *= scalefactor3; | ||
857 | sample2 *= channel2_scalefactor3; | ||
858 | } | ||
859 | filter1.input_sample(sample, subbandnumber); | ||
860 | filter2.input_sample(sample2, subbandnumber); | ||
861 | } | ||
862 | else if (channels == OutputChannels.LEFT_CHANNEL) | ||
863 | { | ||
864 | if (groupnumber <= 4) | ||
865 | sample *= scalefactor1; | ||
866 | else if (groupnumber <= 8) | ||
867 | sample *= scalefactor2; | ||
868 | else | ||
869 | sample *= scalefactor3; | ||
870 | filter1.input_sample(sample, subbandnumber); | ||
871 | } | ||
872 | else | ||
873 | { | ||
874 | if (groupnumber <= 4) | ||
875 | sample *= channel2_scalefactor1; | ||
876 | else if (groupnumber <= 8) | ||
877 | sample *= channel2_scalefactor2; | ||
878 | else | ||
879 | sample *= channel2_scalefactor3; | ||
880 | filter1.input_sample(sample, subbandnumber); | ||
881 | } | ||
882 | } | ||
883 | |||
884 | if (++samplenumber == 3) | ||
885 | return true; | ||
886 | else | ||
887 | return false; | ||
888 | } | ||
889 | }; | ||
890 | |||
891 | /** | ||
892 | * Class for layer II subbands in stereo mode. | ||
893 | */ | ||
894 | static class SubbandLayer2Stereo extends SubbandLayer2 | ||
895 | { | ||
896 | protected int channel2_allocation; | ||
897 | protected int channel2_scfsi; | ||
898 | protected float channel2_scalefactor1, channel2_scalefactor2, channel2_scalefactor3; | ||
899 | //protected boolean channel2_grouping; ???? Never used! | ||
900 | protected int[] channel2_codelength = {0}; | ||
901 | //protected float[][] channel2_groupingtable = {{0},{0}}; | ||
902 | protected float[] channel2_factor = {0}; | ||
903 | protected float[] channel2_samples; | ||
904 | protected float[] channel2_c = {0}; | ||
905 | protected float[] channel2_d = {0}; | ||
906 | |||
907 | /** | ||
908 | * Constructor | ||
909 | */ | ||
910 | public SubbandLayer2Stereo(int subbandnumber) | ||
911 | { | ||
912 | super(subbandnumber); | ||
913 | channel2_samples = new float[3]; | ||
914 | } | ||
915 | |||
916 | /** | ||
917 | * | ||
918 | */ | ||
919 | public void read_allocation (Bitstream stream, Header header, Crc16 crc) | ||
920 | { | ||
921 | int length = get_allocationlength(header); | ||
922 | allocation = stream.get_bits(length); | ||
923 | channel2_allocation = stream.get_bits(length); | ||
924 | if (crc != null) | ||
925 | { | ||
926 | crc.add_bits(allocation, length); | ||
927 | crc.add_bits(channel2_allocation, length); | ||
928 | } | ||
929 | } | ||
930 | |||
931 | /** | ||
932 | * | ||
933 | */ | ||
934 | public void read_scalefactor_selection(Bitstream stream, Crc16 crc) | ||
935 | { | ||
936 | if (allocation != 0) | ||
937 | { | ||
938 | scfsi = stream.get_bits(2); | ||
939 | if (crc != null) | ||
940 | crc.add_bits(scfsi, 2); | ||
941 | } | ||
942 | if (channel2_allocation != 0) | ||
943 | { | ||
944 | channel2_scfsi = stream.get_bits(2); | ||
945 | if (crc != null) | ||
946 | crc.add_bits(channel2_scfsi, 2); | ||
947 | } | ||
948 | } | ||
949 | |||
950 | /** | ||
951 | * | ||
952 | */ | ||
953 | public void read_scalefactor(Bitstream stream, Header header) | ||
954 | { | ||
955 | super.read_scalefactor(stream, header); | ||
956 | if (channel2_allocation != 0) | ||
957 | { | ||
958 | switch (channel2_scfsi) | ||
959 | { | ||
960 | case 0: | ||
961 | channel2_scalefactor1 = scalefactors[stream.get_bits(6)]; | ||
962 | channel2_scalefactor2 = scalefactors[stream.get_bits(6)]; | ||
963 | channel2_scalefactor3 = scalefactors[stream.get_bits(6)]; | ||
964 | break; | ||
965 | |||
966 | case 1: | ||
967 | channel2_scalefactor1 = channel2_scalefactor2 = | ||
968 | scalefactors[stream.get_bits(6)]; | ||
969 | channel2_scalefactor3 = scalefactors[stream.get_bits(6)]; | ||
970 | break; | ||
971 | |||
972 | case 2: | ||
973 | channel2_scalefactor1 = channel2_scalefactor2 = | ||
974 | channel2_scalefactor3 = scalefactors[stream.get_bits(6)]; | ||
975 | break; | ||
976 | |||
977 | case 3: | ||
978 | channel2_scalefactor1 = scalefactors[stream.get_bits(6)]; | ||
979 | channel2_scalefactor2 = channel2_scalefactor3 = | ||
980 | scalefactors[stream.get_bits(6)]; | ||
981 | break; | ||
982 | } | ||
983 | prepare_sample_reading(header, channel2_allocation, 1, | ||
984 | channel2_factor, channel2_codelength, channel2_c, | ||
985 | channel2_d); | ||
986 | } | ||
987 | } | ||
988 | |||
989 | /** | ||
990 | * | ||
991 | */ | ||
992 | public boolean read_sampledata (Bitstream stream) | ||
993 | { | ||
994 | boolean returnvalue = super.read_sampledata(stream); | ||
995 | |||
996 | if (channel2_allocation != 0) | ||
997 | if (groupingtable[1] != null) | ||
998 | { | ||
999 | int samplecode = stream.get_bits(channel2_codelength[0]); | ||
1000 | // create requantized samples: | ||
1001 | samplecode += samplecode << 1; | ||
1002 | /* | ||
1003 | float[] target = channel2_samples; | ||
1004 | float[] source = channel2_groupingtable[0]; | ||
1005 | int tmp = 0; | ||
1006 | int temp = 0; | ||
1007 | target[tmp++] = source[samplecode + temp]; | ||
1008 | temp++; | ||
1009 | target[tmp++] = source[samplecode + temp]; | ||
1010 | temp++; | ||
1011 | target[tmp] = source[samplecode + temp]; | ||
1012 | // memcpy (channel2_samples, channel2_groupingtable + samplecode, 3 * sizeof (real)); | ||
1013 | */ | ||
1014 | float[] target = channel2_samples; | ||
1015 | float[] source = groupingtable[1]; | ||
1016 | int tmp = 0; | ||
1017 | int temp = samplecode; | ||
1018 | target[tmp] = source[temp]; | ||
1019 | temp++;tmp++; | ||
1020 | target[tmp] = source[temp]; | ||
1021 | temp++;tmp++; | ||
1022 | target[tmp] = source[temp]; | ||
1023 | |||
1024 | } | ||
1025 | else | ||
1026 | { | ||
1027 | channel2_samples[0] = (float) ((stream.get_bits(channel2_codelength[0])) * | ||
1028 | channel2_factor[0] - 1.0); | ||
1029 | channel2_samples[1] = (float) ((stream.get_bits(channel2_codelength[0])) * | ||
1030 | channel2_factor[0] - 1.0); | ||
1031 | channel2_samples[2] = (float) ((stream.get_bits(channel2_codelength[0])) * | ||
1032 | channel2_factor[0] - 1.0); | ||
1033 | } | ||
1034 | return returnvalue; | ||
1035 | } | ||
1036 | |||
1037 | /** | ||
1038 | * | ||
1039 | */ | ||
1040 | public boolean put_next_sample(int channels, SynthesisFilter filter1, SynthesisFilter filter2) | ||
1041 | { | ||
1042 | boolean returnvalue = super.put_next_sample(channels, filter1, filter2); | ||
1043 | if ((channel2_allocation != 0) && (channels != OutputChannels.LEFT_CHANNEL)) | ||
1044 | { | ||
1045 | float sample = channel2_samples[samplenumber - 1]; | ||
1046 | |||
1047 | if (groupingtable[1] == null) | ||
1048 | sample = (sample + channel2_d[0]) * channel2_c[0]; | ||
1049 | |||
1050 | if (groupnumber <= 4) | ||
1051 | sample *= channel2_scalefactor1; | ||
1052 | else if (groupnumber <= 8) | ||
1053 | sample *= channel2_scalefactor2; | ||
1054 | else | ||
1055 | sample *= channel2_scalefactor3; | ||
1056 | if (channels == OutputChannels.BOTH_CHANNELS) | ||
1057 | filter2.input_sample(sample, subbandnumber); | ||
1058 | else | ||
1059 | filter1.input_sample(sample, subbandnumber); | ||
1060 | } | ||
1061 | return returnvalue; | ||
1062 | } | ||
1063 | } | ||
1064 | } | ||