it passes the definitely written analysis.
[IRC.git] / Robust / src / Tests / ssJava / mp3decoder / SynthesisFilter.java
1 /*\r
2  * 11/19/04 1.0 moved to LGPL.\r
3  * \r
4  * 04/01/00 Fixes for running under build 23xx Microsoft JVM. mdm.\r
5  * \r
6  * 19/12/99 Performance improvements to compute_pcm_samples().  \r
7  *                      Mat McGowan. mdm@techie.com. \r
8  *\r
9  * 16/02/99 Java Conversion by E.B , javalayer@javazoom.net\r
10  *\r
11  *  @(#) synthesis_filter.h 1.8, last edit: 6/15/94 16:52:00\r
12  *  @(#) Copyright (C) 1993, 1994 Tobias Bading (bading@cs.tu-berlin.de)\r
13  *  @(#) Berlin University of Technology\r
14  *\r
15  *-----------------------------------------------------------------------\r
16  *   This program is free software; you can redistribute it and/or modify\r
17  *   it under the terms of the GNU Library General Public License as published\r
18  *   by the Free Software Foundation; either version 2 of the License, or\r
19  *   (at your option) any later version.\r
20  *\r
21  *   This program is distributed in the hope that it will be useful,\r
22  *   but WITHOUT ANY WARRANTY; without even the implied warranty of\r
23  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
24  *   GNU Library General Public License for more details.\r
25  *\r
26  *   You should have received a copy of the GNU Library General Public\r
27  *   License along with this program; if not, write to the Free Software\r
28  *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r
29  *----------------------------------------------------------------------\r
30  */\r
31 \r
32 /**\r
33  * A class for the synthesis filter bank. This class does a fast downsampling\r
34  * from 32, 44.1 or 48 kHz to 8 kHz, if ULAW is defined. Frequencies above 4 kHz\r
35  * are removed by ignoring higher subbands.\r
36  */\r
37 @LATTICE("OUT<V2,V2<V1,V1<V,V<NEWV,NEWV<SAMPLE,SAMPLE<EQ,EQ<IDX,V*,NEWV*,IDX*")\r
38 @METHODDEFAULT("OUT<THIS,THIS<C,C<IN,C*,THISLOC=THIS,GLOBALLOC=THIS")\r
39 final class SynthesisFilter {\r
40 \r
41   @LOC("IDX")\r
42   public int vidx;\r
43   @LOC("V1")\r
44   public float[] v1;\r
45   @LOC("V1")\r
46   public float[] v2;\r
47 \r
48   @LOC("V")\r
49   public float[] prev1;\r
50   @LOC("V")\r
51   public float[] prev2;\r
52 \r
53   // private float[] actual_v; // v1 or v2\r
54   @LOC("IDX")\r
55   public int actual_write_pos; // 0-15\r
56   @LOC("SAMPLE")\r
57   private float[] samples; // 32 new subband samples\r
58   @LOC("V")\r
59   public final int channel;\r
60   @LOC("V")\r
61   public final float scalefactor;\r
62   @LOC("EQ")\r
63   private float[] eq;\r
64 \r
65   /**\r
66    * Quality value for controlling CPU usage/quality tradeoff.\r
67    */\r
68   /*\r
69    * private int quality;\r
70    * \r
71    * private int v_inc;\r
72    * \r
73    * \r
74    * \r
75    * public static final int HIGH_QUALITY = 1; public static final int\r
76    * MEDIUM_QUALITY = 2; public static final int LOW_QUALITY = 4;\r
77    */\r
78 \r
79   /**\r
80    * Contructor. The scalefactor scales the calculated float pcm samples to\r
81    * short values (raw pcm samples are in [-1.0, 1.0], if no violations occur).\r
82    */\r
83   public SynthesisFilter(int channelnumber, float factor, float[] eq0) {\r
84 \r
85     vidx = 1;\r
86     d16 = splitArray(d, 16);\r
87 \r
88     v1 = new float[512];\r
89     v2 = new float[512];\r
90     prev1 = new float[512];\r
91     prev2 = new float[512];\r
92     samples = new float[32];\r
93     channel = channelnumber;\r
94     scalefactor = factor;\r
95     // setEQ(eq);\r
96     // setQuality(HIGH_QUALITY);\r
97 \r
98     if (eq == null) {\r
99       eq = new float[32];\r
100       for (int i = 0; i < 32; i++)\r
101         eq[i] = 1.0f;\r
102     }\r
103     if (eq.length < 32) {\r
104       throw new IllegalArgumentException("eq0");\r
105     }\r
106 \r
107     // reset();\r
108 \r
109     for (int p = 0; p < 512; p++)\r
110       v1[p] = v2[p] = 0.0f;\r
111 \r
112     for (int p2 = 0; p2 < 32; p2++)\r
113       samples[p2] = 0.0f;\r
114 \r
115     // actual_v = v1;\r
116     actual_write_pos = 15;\r
117 \r
118   }\r
119 \r
120   /*\r
121    * private void setQuality(int quality0) { switch (quality0) { case\r
122    * HIGH_QUALITY: case MEDIUM_QUALITY: case LOW_QUALITY: v_inc = 16 * quality0;\r
123    * quality = quality0; break; default : throw new\r
124    * IllegalArgumentException("Unknown quality value"); } }\r
125    * \r
126    * public int getQuality() { return quality; }\r
127    */\r
128 \r
129   /**\r
130    * Inject Sample.\r
131    */\r
132   public void input_sample(@LOC("IN") float sample, @LOC("IN") int subbandnumber) {\r
133     samples[subbandnumber] = eq[subbandnumber] * sample;\r
134   }\r
135 \r
136   public void input_samples(@LOC("IN") float[] s) {\r
137     TERMINATE: for (@LOC("C") int i = 31; i >= 0; i--) {\r
138       samples[i] = s[i] * eq[i];\r
139     }\r
140   }\r
141 \r
142   private void compute_new_v2_v1() {\r
143 \r
144     @LOC("THIS,SynthesisFilter.NEWV") float new_v0 = 0.0f;\r
145     @LOC("THIS,SynthesisFilter.NEWV") float new_v1 = 0.0f;\r
146     @LOC("THIS,SynthesisFilter.NEWV") float new_v2 = 0.0f;\r
147     @LOC("THIS,SynthesisFilter.NEWV") float new_v3 = 0.0f;\r
148     @LOC("THIS,SynthesisFilter.NEWV") float new_v4 = 0.0f;\r
149     @LOC("THIS,SynthesisFilter.NEWV") float new_v5 = 0.0f;\r
150     @LOC("THIS,SynthesisFilter.NEWV") float new_v6 = 0.0f;\r
151     @LOC("THIS,SynthesisFilter.NEWV") float new_v7 = 0.0f;\r
152     @LOC("THIS,SynthesisFilter.NEWV") float new_v8 = 0.0f;\r
153     @LOC("THIS,SynthesisFilter.NEWV") float new_v9 = 0.0f;\r
154     @LOC("THIS,SynthesisFilter.NEWV") float new_v10 = 0.0f;\r
155     @LOC("THIS,SynthesisFilter.NEWV") float new_v11 = 0.0f;\r
156     @LOC("THIS,SynthesisFilter.NEWV") float new_v12 = 0.0f;\r
157     @LOC("THIS,SynthesisFilter.NEWV") float new_v13 = 0.0f;\r
158     @LOC("THIS,SynthesisFilter.NEWV") float new_v14 = 0.0f;\r
159     @LOC("THIS,SynthesisFilter.NEWV") float new_v15 = 0.0f;\r
160     @LOC("THIS,SynthesisFilter.NEWV") float new_v16 = 0.0f;\r
161     @LOC("THIS,SynthesisFilter.NEWV") float new_v17 = 0.0f;\r
162     @LOC("THIS,SynthesisFilter.NEWV") float new_v18 = 0.0f;\r
163     @LOC("THIS,SynthesisFilter.NEWV") float new_v19 = 0.0f;\r
164     @LOC("THIS,SynthesisFilter.NEWV") float new_v20 = 0.0f;\r
165     @LOC("THIS,SynthesisFilter.NEWV") float new_v21 = 0.0f;\r
166     @LOC("THIS,SynthesisFilter.NEWV") float new_v22 = 0.0f;\r
167     @LOC("THIS,SynthesisFilter.NEWV") float new_v23 = 0.0f;\r
168     @LOC("THIS,SynthesisFilter.NEWV") float new_v24 = 0.0f;\r
169     @LOC("THIS,SynthesisFilter.NEWV") float new_v25 = 0.0f;\r
170     @LOC("THIS,SynthesisFilter.NEWV") float new_v26 = 0.0f;\r
171     @LOC("THIS,SynthesisFilter.NEWV") float new_v27 = 0.0f;\r
172     @LOC("THIS,SynthesisFilter.NEWV") float new_v28 = 0.0f;\r
173     @LOC("THIS,SynthesisFilter.NEWV") float new_v29 = 0.0f;\r
174     @LOC("THIS,SynthesisFilter.NEWV") float new_v30 = 0.0f;\r
175     @LOC("THIS,SynthesisFilter.NEWV") float new_v31 = 0.0f;\r
176 \r
177     // float[] new_v = new float[32]; // new V[0-15] and V[33-48] of Figure\r
178     // 3-A.2 in ISO DIS 11172-3\r
179     // float[] p = new float[16];\r
180     // float[] pp = new float[16];\r
181 \r
182     // float[] s = samples;\r
183 \r
184     @LOC("THIS,SynthesisFilter.NEWV") float s0 = samples[0];\r
185     @LOC("THIS,SynthesisFilter.NEWV") float s1 = samples[1];\r
186     @LOC("THIS,SynthesisFilter.NEWV") float s2 = samples[2];\r
187     @LOC("THIS,SynthesisFilter.NEWV") float s3 = samples[3];\r
188     @LOC("THIS,SynthesisFilter.NEWV") float s4 = samples[4];\r
189     @LOC("THIS,SynthesisFilter.NEWV") float s5 = samples[5];\r
190     @LOC("THIS,SynthesisFilter.NEWV") float s6 = samples[6];\r
191     @LOC("THIS,SynthesisFilter.NEWV") float s7 = samples[7];\r
192     @LOC("THIS,SynthesisFilter.NEWV") float s8 = samples[8];\r
193     @LOC("THIS,SynthesisFilter.NEWV") float s9 = samples[9];\r
194     @LOC("THIS,SynthesisFilter.NEWV") float s10 = samples[10];\r
195     @LOC("THIS,SynthesisFilter.NEWV") float s11 = samples[11];\r
196     @LOC("THIS,SynthesisFilter.NEWV") float s12 = samples[12];\r
197     @LOC("THIS,SynthesisFilter.NEWV") float s13 = samples[13];\r
198     @LOC("THIS,SynthesisFilter.NEWV") float s14 = samples[14];\r
199     @LOC("THIS,SynthesisFilter.NEWV") float s15 = samples[15];\r
200     @LOC("THIS,SynthesisFilter.NEWV") float s16 = samples[16];\r
201     @LOC("THIS,SynthesisFilter.NEWV") float s17 = samples[17];\r
202     @LOC("THIS,SynthesisFilter.NEWV") float s18 = samples[18];\r
203     @LOC("THIS,SynthesisFilter.NEWV") float s19 = samples[19];\r
204     @LOC("THIS,SynthesisFilter.NEWV") float s20 = samples[20];\r
205     @LOC("THIS,SynthesisFilter.NEWV") float s21 = samples[21];\r
206     @LOC("THIS,SynthesisFilter.NEWV") float s22 = samples[22];\r
207     @LOC("THIS,SynthesisFilter.NEWV") float s23 = samples[23];\r
208     @LOC("THIS,SynthesisFilter.NEWV") float s24 = samples[24];\r
209     @LOC("THIS,SynthesisFilter.NEWV") float s25 = samples[25];\r
210     @LOC("THIS,SynthesisFilter.NEWV") float s26 = samples[26];\r
211     @LOC("THIS,SynthesisFilter.NEWV") float s27 = samples[27];\r
212     @LOC("THIS,SynthesisFilter.NEWV") float s28 = samples[28];\r
213     @LOC("THIS,SynthesisFilter.NEWV") float s29 = samples[29];\r
214     @LOC("THIS,SynthesisFilter.NEWV") float s30 = samples[30];\r
215     @LOC("THIS,SynthesisFilter.NEWV") float s31 = samples[31];\r
216 \r
217     @LOC("THIS,SynthesisFilter.NEWV") float p0 = s0 + s31;\r
218     @LOC("THIS,SynthesisFilter.NEWV") float p1 = s1 + s30;\r
219     @LOC("THIS,SynthesisFilter.NEWV") float p2 = s2 + s29;\r
220     @LOC("THIS,SynthesisFilter.NEWV") float p3 = s3 + s28;\r
221     @LOC("THIS,SynthesisFilter.NEWV") float p4 = s4 + s27;\r
222     @LOC("THIS,SynthesisFilter.NEWV") float p5 = s5 + s26;\r
223     @LOC("THIS,SynthesisFilter.NEWV") float p6 = s6 + s25;\r
224     @LOC("THIS,SynthesisFilter.NEWV") float p7 = s7 + s24;\r
225     @LOC("THIS,SynthesisFilter.NEWV") float p8 = s8 + s23;\r
226     @LOC("THIS,SynthesisFilter.NEWV") float p9 = s9 + s22;\r
227     @LOC("THIS,SynthesisFilter.NEWV") float p10 = s10 + s21;\r
228     @LOC("THIS,SynthesisFilter.NEWV") float p11 = s11 + s20;\r
229     @LOC("THIS,SynthesisFilter.NEWV") float p12 = s12 + s19;\r
230     @LOC("THIS,SynthesisFilter.NEWV") float p13 = s13 + s18;\r
231     @LOC("THIS,SynthesisFilter.NEWV") float p14 = s14 + s17;\r
232     @LOC("THIS,SynthesisFilter.NEWV") float p15 = s15 + s16;\r
233 \r
234     @LOC("THIS,SynthesisFilter.NEWV") float pp0 = p0 + p15;\r
235     @LOC("THIS,SynthesisFilter.NEWV") float pp1 = p1 + p14;\r
236     @LOC("THIS,SynthesisFilter.NEWV") float pp2 = p2 + p13;\r
237     @LOC("THIS,SynthesisFilter.NEWV") float pp3 = p3 + p12;\r
238     @LOC("THIS,SynthesisFilter.NEWV") float pp4 = p4 + p11;\r
239     @LOC("THIS,SynthesisFilter.NEWV") float pp5 = p5 + p10;\r
240     @LOC("THIS,SynthesisFilter.NEWV") float pp6 = p6 + p9;\r
241     @LOC("THIS,SynthesisFilter.NEWV") float pp7 = p7 + p8;\r
242     @LOC("THIS,SynthesisFilter.NEWV") float pp8 = (p0 - p15) * cos1_32;\r
243     @LOC("THIS,SynthesisFilter.NEWV") float pp9 = (p1 - p14) * cos3_32;\r
244     @LOC("THIS,SynthesisFilter.NEWV") float pp10 = (p2 - p13) * cos5_32;\r
245     @LOC("THIS,SynthesisFilter.NEWV") float pp11 = (p3 - p12) * cos7_32;\r
246     @LOC("THIS,SynthesisFilter.NEWV") float pp12 = (p4 - p11) * cos9_32;\r
247     @LOC("THIS,SynthesisFilter.NEWV") float pp13 = (p5 - p10) * cos11_32;\r
248     @LOC("THIS,SynthesisFilter.NEWV") float pp14 = (p6 - p9) * cos13_32;\r
249     @LOC("THIS,SynthesisFilter.NEWV") float pp15 = (p7 - p8) * cos15_32;\r
250 \r
251     p0 = pp0 + pp7;\r
252     p1 = pp1 + pp6;\r
253     p2 = pp2 + pp5;\r
254     p3 = pp3 + pp4;\r
255     p4 = (pp0 - pp7) * cos1_16;\r
256     p5 = (pp1 - pp6) * cos3_16;\r
257     p6 = (pp2 - pp5) * cos5_16;\r
258     p7 = (pp3 - pp4) * cos7_16;\r
259     p8 = pp8 + pp15;\r
260     p9 = pp9 + pp14;\r
261     p10 = pp10 + pp13;\r
262     p11 = pp11 + pp12;\r
263     p12 = (pp8 - pp15) * cos1_16;\r
264     p13 = (pp9 - pp14) * cos3_16;\r
265     p14 = (pp10 - pp13) * cos5_16;\r
266     p15 = (pp11 - pp12) * cos7_16;\r
267 \r
268     pp0 = p0 + p3;\r
269     pp1 = p1 + p2;\r
270     pp2 = (p0 - p3) * cos1_8;\r
271     pp3 = (p1 - p2) * cos3_8;\r
272     pp4 = p4 + p7;\r
273     pp5 = p5 + p6;\r
274     pp6 = (p4 - p7) * cos1_8;\r
275     pp7 = (p5 - p6) * cos3_8;\r
276     pp8 = p8 + p11;\r
277     pp9 = p9 + p10;\r
278     pp10 = (p8 - p11) * cos1_8;\r
279     pp11 = (p9 - p10) * cos3_8;\r
280     pp12 = p12 + p15;\r
281     pp13 = p13 + p14;\r
282     pp14 = (p12 - p15) * cos1_8;\r
283     pp15 = (p13 - p14) * cos3_8;\r
284 \r
285     p0 = pp0 + pp1;\r
286     p1 = (pp0 - pp1) * cos1_4;\r
287     p2 = pp2 + pp3;\r
288     p3 = (pp2 - pp3) * cos1_4;\r
289     p4 = pp4 + pp5;\r
290     p5 = (pp4 - pp5) * cos1_4;\r
291     p6 = pp6 + pp7;\r
292     p7 = (pp6 - pp7) * cos1_4;\r
293     p8 = pp8 + pp9;\r
294     p9 = (pp8 - pp9) * cos1_4;\r
295     p10 = pp10 + pp11;\r
296     p11 = (pp10 - pp11) * cos1_4;\r
297     p12 = pp12 + pp13;\r
298     p13 = (pp12 - pp13) * cos1_4;\r
299     p14 = pp14 + pp15;\r
300     p15 = (pp14 - pp15) * cos1_4;\r
301 \r
302     // this is pretty insane coding\r
303     @LOC("THIS,SynthesisFilter.NEWV") float tmp1;\r
304     new_v19/* 36-17 */= -(new_v4 = (new_v12 = p7) + p5) - p6;\r
305     new_v27/* 44-17 */= -p6 - p7 - p4;\r
306     new_v6 = (new_v10 = (new_v14 = p15) + p11) + p13;\r
307     new_v17/* 34-17 */= -(new_v2 = p15 + p13 + p9) - p14;\r
308     new_v21/* 38-17 */= (tmp1 = -p14 - p15 - p10 - p11) - p13;\r
309     new_v29/* 46-17 */= -p14 - p15 - p12 - p8;\r
310     new_v25/* 42-17 */= tmp1 - p12;\r
311     new_v31/* 48-17 */= -p0;\r
312     new_v0 = p1;\r
313     new_v23/* 40-17 */= -(new_v8 = p3) - p2;\r
314 \r
315     p0 = (s0 - s31) * cos1_64;\r
316     p1 = (s1 - s30) * cos3_64;\r
317     p2 = (s2 - s29) * cos5_64;\r
318     p3 = (s3 - s28) * cos7_64;\r
319     p4 = (s4 - s27) * cos9_64;\r
320     p5 = (s5 - s26) * cos11_64;\r
321     p6 = (s6 - s25) * cos13_64;\r
322     p7 = (s7 - s24) * cos15_64;\r
323     p8 = (s8 - s23) * cos17_64;\r
324     p9 = (s9 - s22) * cos19_64;\r
325     p10 = (s10 - s21) * cos21_64;\r
326     p11 = (s11 - s20) * cos23_64;\r
327     p12 = (s12 - s19) * cos25_64;\r
328     p13 = (s13 - s18) * cos27_64;\r
329     p14 = (s14 - s17) * cos29_64;\r
330     p15 = (s15 - s16) * cos31_64;\r
331 \r
332     pp0 = p0 + p15;\r
333     pp1 = p1 + p14;\r
334     pp2 = p2 + p13;\r
335     pp3 = p3 + p12;\r
336     pp4 = p4 + p11;\r
337     pp5 = p5 + p10;\r
338     pp6 = p6 + p9;\r
339     pp7 = p7 + p8;\r
340     pp8 = (p0 - p15) * cos1_32;\r
341     pp9 = (p1 - p14) * cos3_32;\r
342     pp10 = (p2 - p13) * cos5_32;\r
343     pp11 = (p3 - p12) * cos7_32;\r
344     pp12 = (p4 - p11) * cos9_32;\r
345     pp13 = (p5 - p10) * cos11_32;\r
346     pp14 = (p6 - p9) * cos13_32;\r
347     pp15 = (p7 - p8) * cos15_32;\r
348 \r
349     p0 = pp0 + pp7;\r
350     p1 = pp1 + pp6;\r
351     p2 = pp2 + pp5;\r
352     p3 = pp3 + pp4;\r
353     p4 = (pp0 - pp7) * cos1_16;\r
354     p5 = (pp1 - pp6) * cos3_16;\r
355     p6 = (pp2 - pp5) * cos5_16;\r
356     p7 = (pp3 - pp4) * cos7_16;\r
357     p8 = pp8 + pp15;\r
358     p9 = pp9 + pp14;\r
359     p10 = pp10 + pp13;\r
360     p11 = pp11 + pp12;\r
361     p12 = (pp8 - pp15) * cos1_16;\r
362     p13 = (pp9 - pp14) * cos3_16;\r
363     p14 = (pp10 - pp13) * cos5_16;\r
364     p15 = (pp11 - pp12) * cos7_16;\r
365 \r
366     pp0 = p0 + p3;\r
367     pp1 = p1 + p2;\r
368     pp2 = (p0 - p3) * cos1_8;\r
369     pp3 = (p1 - p2) * cos3_8;\r
370     pp4 = p4 + p7;\r
371     pp5 = p5 + p6;\r
372     pp6 = (p4 - p7) * cos1_8;\r
373     pp7 = (p5 - p6) * cos3_8;\r
374     pp8 = p8 + p11;\r
375     pp9 = p9 + p10;\r
376     pp10 = (p8 - p11) * cos1_8;\r
377     pp11 = (p9 - p10) * cos3_8;\r
378     pp12 = p12 + p15;\r
379     pp13 = p13 + p14;\r
380     pp14 = (p12 - p15) * cos1_8;\r
381     pp15 = (p13 - p14) * cos3_8;\r
382 \r
383     p0 = pp0 + pp1;\r
384     p1 = (pp0 - pp1) * cos1_4;\r
385     p2 = pp2 + pp3;\r
386     p3 = (pp2 - pp3) * cos1_4;\r
387     p4 = pp4 + pp5;\r
388     p5 = (pp4 - pp5) * cos1_4;\r
389     p6 = pp6 + pp7;\r
390     p7 = (pp6 - pp7) * cos1_4;\r
391     p8 = pp8 + pp9;\r
392     p9 = (pp8 - pp9) * cos1_4;\r
393     p10 = pp10 + pp11;\r
394     p11 = (pp10 - pp11) * cos1_4;\r
395     p12 = pp12 + pp13;\r
396     p13 = (pp12 - pp13) * cos1_4;\r
397     p14 = pp14 + pp15;\r
398     p15 = (pp14 - pp15) * cos1_4;\r
399 \r
400     // manually doing something that a compiler should handle sucks\r
401     // coding like this is hard to read\r
402     @LOC("THIS,SynthesisFilter.NEWV") float tmp2;\r
403     new_v5 = (new_v11 = (new_v13 = (new_v15 = p15) + p7) + p11) + p5 + p13;\r
404     new_v7 = (new_v9 = p15 + p11 + p3) + p13;\r
405     new_v16/* 33-17 */= -(new_v1 = (tmp1 = p13 + p15 + p9) + p1) - p14;\r
406     new_v18/* 35-17 */= -(new_v3 = tmp1 + p5 + p7) - p6 - p14;\r
407 \r
408     new_v22/* 39-17 */= (tmp1 = -p10 - p11 - p14 - p15) - p13 - p2 - p3;\r
409     new_v20/* 37-17 */= tmp1 - p13 - p5 - p6 - p7;\r
410     new_v24/* 41-17 */= tmp1 - p12 - p2 - p3;\r
411     new_v26/* 43-17 */= tmp1 - p12 - (tmp2 = p4 + p6 + p7);\r
412     new_v30/* 47-17 */= (tmp1 = -p8 - p12 - p14 - p15) - p0;\r
413     new_v28/* 45-17 */= tmp1 - tmp2;\r
414 \r
415     // insert V[0-15] (== new_v[0-15]) into actual v:\r
416     // float[] x2 = actual_v + actual_write_pos;\r
417     // float dest[] = actual_v; v2\r
418 \r
419     @LOC("THIS,SynthesisFilter.NEWV") int pos = actual_write_pos;\r
420 \r
421     v2[0 + pos] = new_v0;\r
422     v2[16 + pos] = new_v1;\r
423     v2[32 + pos] = new_v2;\r
424     v2[48 + pos] = new_v3;\r
425     v2[64 + pos] = new_v4;\r
426     v2[80 + pos] = new_v5;\r
427     v2[96 + pos] = new_v6;\r
428     v2[112 + pos] = new_v7;\r
429     v2[128 + pos] = new_v8;\r
430     v2[144 + pos] = new_v9;\r
431     v2[160 + pos] = new_v10;\r
432     v2[176 + pos] = new_v11;\r
433     v2[192 + pos] = new_v12;\r
434     v2[208 + pos] = new_v13;\r
435     v2[224 + pos] = new_v14;\r
436     v2[240 + pos] = new_v15;\r
437 \r
438     // V[16] is always 0.0:\r
439     v2[256 + pos] = 0.0f;\r
440 \r
441     // insert V[17-31] (== -new_v[15-1]) into actual v:\r
442     v2[272 + pos] = -new_v15;\r
443     v2[288 + pos] = -new_v14;\r
444     v2[304 + pos] = -new_v13;\r
445     v2[320 + pos] = -new_v12;\r
446     v2[336 + pos] = -new_v11;\r
447     v2[352 + pos] = -new_v10;\r
448     v2[368 + pos] = -new_v9;\r
449     v2[384 + pos] = -new_v8;\r
450     v2[400 + pos] = -new_v7;\r
451     v2[416 + pos] = -new_v6;\r
452     v2[432 + pos] = -new_v5;\r
453     v2[448 + pos] = -new_v4;\r
454     v2[464 + pos] = -new_v3;\r
455     v2[480 + pos] = -new_v2;\r
456     v2[496 + pos] = -new_v1;\r
457 \r
458     // insert V[32] (== -new_v[0]) into other v:\r
459     // dest = (actual_v == v1) ? v2 : v1;\r
460 \r
461     v1[0 + pos] = -new_v0;\r
462     // insert V[33-48] (== new_v[16-31]) into other v:\r
463     v1[16 + pos] = new_v16;\r
464     v1[32 + pos] = new_v17;\r
465     v1[48 + pos] = new_v18;\r
466     v1[64 + pos] = new_v19;\r
467     v1[80 + pos] = new_v20;\r
468     v1[96 + pos] = new_v21;\r
469     v1[112 + pos] = new_v22;\r
470     v1[128 + pos] = new_v23;\r
471     v1[144 + pos] = new_v24;\r
472     v1[160 + pos] = new_v25;\r
473     v1[176 + pos] = new_v26;\r
474     v1[192 + pos] = new_v27;\r
475     v1[208 + pos] = new_v28;\r
476     v1[224 + pos] = new_v29;\r
477     v1[240 + pos] = new_v30;\r
478     v1[256 + pos] = new_v31;\r
479 \r
480     // insert V[49-63] (== new_v[30-16]) into other v:\r
481     v1[272 + pos] = new_v30;\r
482     v1[288 + pos] = new_v29;\r
483     v1[304 + pos] = new_v28;\r
484     v1[320 + pos] = new_v27;\r
485     v1[336 + pos] = new_v26;\r
486     v1[352 + pos] = new_v25;\r
487     v1[368 + pos] = new_v24;\r
488     v1[384 + pos] = new_v23;\r
489     v1[400 + pos] = new_v22;\r
490     v1[416 + pos] = new_v21;\r
491     v1[432 + pos] = new_v20;\r
492     v1[448 + pos] = new_v19;\r
493     v1[464 + pos] = new_v18;\r
494     v1[480 + pos] = new_v17;\r
495     v1[496 + pos] = new_v16;\r
496 \r
497     /*\r
498      * setup PREV\r
499      */\r
500 \r
501     prev2[0 + pos] = new_v0;\r
502     prev2[16 + pos] = new_v1;\r
503     prev2[32 + pos] = new_v2;\r
504     prev2[48 + pos] = new_v3;\r
505     prev2[64 + pos] = new_v4;\r
506     prev2[80 + pos] = new_v5;\r
507     prev2[96 + pos] = new_v6;\r
508     prev2[112 + pos] = new_v7;\r
509     prev2[128 + pos] = new_v8;\r
510     prev2[144 + pos] = new_v9;\r
511     prev2[160 + pos] = new_v10;\r
512     prev2[176 + pos] = new_v11;\r
513     prev2[192 + pos] = new_v12;\r
514     prev2[208 + pos] = new_v13;\r
515     prev2[224 + pos] = new_v14;\r
516     prev2[240 + pos] = new_v15;\r
517 \r
518     // V[16] is always 0.0:\r
519     prev2[256 + pos] = 0.0f;\r
520 \r
521     // insert V[17-31] (== -new_v[15-1]) into actual v:\r
522     prev2[272 + pos] = -new_v15;\r
523     prev2[288 + pos] = -new_v14;\r
524     prev2[304 + pos] = -new_v13;\r
525     prev2[320 + pos] = -new_v12;\r
526     prev2[336 + pos] = -new_v11;\r
527     prev2[352 + pos] = -new_v10;\r
528     prev2[368 + pos] = -new_v9;\r
529     prev2[384 + pos] = -new_v8;\r
530     prev2[400 + pos] = -new_v7;\r
531     prev2[416 + pos] = -new_v6;\r
532     prev2[432 + pos] = -new_v5;\r
533     prev2[448 + pos] = -new_v4;\r
534     prev2[464 + pos] = -new_v3;\r
535     prev2[480 + pos] = -new_v2;\r
536     prev2[496 + pos] = -new_v1;\r
537 \r
538     // insert V[32] (== -new_v[0]) into other v:\r
539     // dest = (actual_v == v1) ? v2 : v1;\r
540 \r
541     prev1[0 + pos] = -new_v0;\r
542     // insert V[33-48] (== new_v[16-31]) into other v:\r
543     prev1[16 + pos] = new_v16;\r
544     prev1[32 + pos] = new_v17;\r
545     prev1[48 + pos] = new_v18;\r
546     prev1[64 + pos] = new_v19;\r
547     prev1[80 + pos] = new_v20;\r
548     prev1[96 + pos] = new_v21;\r
549     prev1[112 + pos] = new_v22;\r
550     prev1[128 + pos] = new_v23;\r
551     prev1[144 + pos] = new_v24;\r
552     prev1[160 + pos] = new_v25;\r
553     prev1[176 + pos] = new_v26;\r
554     prev1[192 + pos] = new_v27;\r
555     prev1[208 + pos] = new_v28;\r
556     prev1[224 + pos] = new_v29;\r
557     prev1[240 + pos] = new_v30;\r
558     prev1[256 + pos] = new_v31;\r
559 \r
560     // insert V[49-63] (== new_v[30-16]) into other v:\r
561     prev1[272 + pos] = new_v30;\r
562     prev1[288 + pos] = new_v29;\r
563     prev1[304 + pos] = new_v28;\r
564     prev1[320 + pos] = new_v27;\r
565     prev1[336 + pos] = new_v26;\r
566     prev1[352 + pos] = new_v25;\r
567     prev1[368 + pos] = new_v24;\r
568     prev1[384 + pos] = new_v23;\r
569     prev1[400 + pos] = new_v22;\r
570     prev1[416 + pos] = new_v21;\r
571     prev1[432 + pos] = new_v20;\r
572     prev1[448 + pos] = new_v19;\r
573     prev1[464 + pos] = new_v18;\r
574     prev1[480 + pos] = new_v17;\r
575     prev1[496 + pos] = new_v16;\r
576   }\r
577 \r
578   private void compute_new_v1_v2() {\r
579 \r
580     @LOC("THIS,SynthesisFilter.NEWV") float new_v0 = 0.0f;\r
581     @LOC("THIS,SynthesisFilter.NEWV") float new_v1 = 0.0f;\r
582     @LOC("THIS,SynthesisFilter.NEWV") float new_v2 = 0.0f;\r
583     @LOC("THIS,SynthesisFilter.NEWV") float new_v3 = 0.0f;\r
584     @LOC("THIS,SynthesisFilter.NEWV") float new_v4 = 0.0f;\r
585     @LOC("THIS,SynthesisFilter.NEWV") float new_v5 = 0.0f;\r
586     @LOC("THIS,SynthesisFilter.NEWV") float new_v6 = 0.0f;\r
587     @LOC("THIS,SynthesisFilter.NEWV") float new_v7 = 0.0f;\r
588     @LOC("THIS,SynthesisFilter.NEWV") float new_v8 = 0.0f;\r
589     @LOC("THIS,SynthesisFilter.NEWV") float new_v9 = 0.0f;\r
590     @LOC("THIS,SynthesisFilter.NEWV") float new_v10 = 0.0f;\r
591     @LOC("THIS,SynthesisFilter.NEWV") float new_v11 = 0.0f;\r
592     @LOC("THIS,SynthesisFilter.NEWV") float new_v12 = 0.0f;\r
593     @LOC("THIS,SynthesisFilter.NEWV") float new_v13 = 0.0f;\r
594     @LOC("THIS,SynthesisFilter.NEWV") float new_v14 = 0.0f;\r
595     @LOC("THIS,SynthesisFilter.NEWV") float new_v15 = 0.0f;\r
596     @LOC("THIS,SynthesisFilter.NEWV") float new_v16 = 0.0f;\r
597     @LOC("THIS,SynthesisFilter.NEWV") float new_v17 = 0.0f;\r
598     @LOC("THIS,SynthesisFilter.NEWV") float new_v18 = 0.0f;\r
599     @LOC("THIS,SynthesisFilter.NEWV") float new_v19 = 0.0f;\r
600     @LOC("THIS,SynthesisFilter.NEWV") float new_v20 = 0.0f;\r
601     @LOC("THIS,SynthesisFilter.NEWV") float new_v21 = 0.0f;\r
602     @LOC("THIS,SynthesisFilter.NEWV") float new_v22 = 0.0f;\r
603     @LOC("THIS,SynthesisFilter.NEWV") float new_v23 = 0.0f;\r
604     @LOC("THIS,SynthesisFilter.NEWV") float new_v24 = 0.0f;\r
605     @LOC("THIS,SynthesisFilter.NEWV") float new_v25 = 0.0f;\r
606     @LOC("THIS,SynthesisFilter.NEWV") float new_v26 = 0.0f;\r
607     @LOC("THIS,SynthesisFilter.NEWV") float new_v27 = 0.0f;\r
608     @LOC("THIS,SynthesisFilter.NEWV") float new_v28 = 0.0f;\r
609     @LOC("THIS,SynthesisFilter.NEWV") float new_v29 = 0.0f;\r
610     @LOC("THIS,SynthesisFilter.NEWV") float new_v30 = 0.0f;\r
611     @LOC("THIS,SynthesisFilter.NEWV") float new_v31 = 0.0f;\r
612 \r
613     // float[] new_v = new float[32]; // new V[0-15] and V[33-48] of Figure\r
614     // 3-A.2 in ISO DIS 11172-3\r
615     // float[] p = new float[16];\r
616     // float[] pp = new float[16];\r
617 \r
618     // float[] s = samples;\r
619 \r
620     @LOC("THIS,SynthesisFilter.NEWV") float s0 = samples[0];\r
621     @LOC("THIS,SynthesisFilter.NEWV") float s1 = samples[1];\r
622     @LOC("THIS,SynthesisFilter.NEWV") float s2 = samples[2];\r
623     @LOC("THIS,SynthesisFilter.NEWV") float s3 = samples[3];\r
624     @LOC("THIS,SynthesisFilter.NEWV") float s4 = samples[4];\r
625     @LOC("THIS,SynthesisFilter.NEWV") float s5 = samples[5];\r
626     @LOC("THIS,SynthesisFilter.NEWV") float s6 = samples[6];\r
627     @LOC("THIS,SynthesisFilter.NEWV") float s7 = samples[7];\r
628     @LOC("THIS,SynthesisFilter.NEWV") float s8 = samples[8];\r
629     @LOC("THIS,SynthesisFilter.NEWV") float s9 = samples[9];\r
630     @LOC("THIS,SynthesisFilter.NEWV") float s10 = samples[10];\r
631     @LOC("THIS,SynthesisFilter.NEWV") float s11 = samples[11];\r
632     @LOC("THIS,SynthesisFilter.NEWV") float s12 = samples[12];\r
633     @LOC("THIS,SynthesisFilter.NEWV") float s13 = samples[13];\r
634     @LOC("THIS,SynthesisFilter.NEWV") float s14 = samples[14];\r
635     @LOC("THIS,SynthesisFilter.NEWV") float s15 = samples[15];\r
636     @LOC("THIS,SynthesisFilter.NEWV") float s16 = samples[16];\r
637     @LOC("THIS,SynthesisFilter.NEWV") float s17 = samples[17];\r
638     @LOC("THIS,SynthesisFilter.NEWV") float s18 = samples[18];\r
639     @LOC("THIS,SynthesisFilter.NEWV") float s19 = samples[19];\r
640     @LOC("THIS,SynthesisFilter.NEWV") float s20 = samples[20];\r
641     @LOC("THIS,SynthesisFilter.NEWV") float s21 = samples[21];\r
642     @LOC("THIS,SynthesisFilter.NEWV") float s22 = samples[22];\r
643     @LOC("THIS,SynthesisFilter.NEWV") float s23 = samples[23];\r
644     @LOC("THIS,SynthesisFilter.NEWV") float s24 = samples[24];\r
645     @LOC("THIS,SynthesisFilter.NEWV") float s25 = samples[25];\r
646     @LOC("THIS,SynthesisFilter.NEWV") float s26 = samples[26];\r
647     @LOC("THIS,SynthesisFilter.NEWV") float s27 = samples[27];\r
648     @LOC("THIS,SynthesisFilter.NEWV") float s28 = samples[28];\r
649     @LOC("THIS,SynthesisFilter.NEWV") float s29 = samples[29];\r
650     @LOC("THIS,SynthesisFilter.NEWV") float s30 = samples[30];\r
651     @LOC("THIS,SynthesisFilter.NEWV") float s31 = samples[31];\r
652 \r
653     @LOC("THIS,SynthesisFilter.NEWV") float p0 = s0 + s31;\r
654     @LOC("THIS,SynthesisFilter.NEWV") float p1 = s1 + s30;\r
655     @LOC("THIS,SynthesisFilter.NEWV") float p2 = s2 + s29;\r
656     @LOC("THIS,SynthesisFilter.NEWV") float p3 = s3 + s28;\r
657     @LOC("THIS,SynthesisFilter.NEWV") float p4 = s4 + s27;\r
658     @LOC("THIS,SynthesisFilter.NEWV") float p5 = s5 + s26;\r
659     @LOC("THIS,SynthesisFilter.NEWV") float p6 = s6 + s25;\r
660     @LOC("THIS,SynthesisFilter.NEWV") float p7 = s7 + s24;\r
661     @LOC("THIS,SynthesisFilter.NEWV") float p8 = s8 + s23;\r
662     @LOC("THIS,SynthesisFilter.NEWV") float p9 = s9 + s22;\r
663     @LOC("THIS,SynthesisFilter.NEWV") float p10 = s10 + s21;\r
664     @LOC("THIS,SynthesisFilter.NEWV") float p11 = s11 + s20;\r
665     @LOC("THIS,SynthesisFilter.NEWV") float p12 = s12 + s19;\r
666     @LOC("THIS,SynthesisFilter.NEWV") float p13 = s13 + s18;\r
667     @LOC("THIS,SynthesisFilter.NEWV") float p14 = s14 + s17;\r
668     @LOC("THIS,SynthesisFilter.NEWV") float p15 = s15 + s16;\r
669 \r
670     @LOC("THIS,SynthesisFilter.NEWV") float pp0 = p0 + p15;\r
671     @LOC("THIS,SynthesisFilter.NEWV") float pp1 = p1 + p14;\r
672     @LOC("THIS,SynthesisFilter.NEWV") float pp2 = p2 + p13;\r
673     @LOC("THIS,SynthesisFilter.NEWV") float pp3 = p3 + p12;\r
674     @LOC("THIS,SynthesisFilter.NEWV") float pp4 = p4 + p11;\r
675     @LOC("THIS,SynthesisFilter.NEWV") float pp5 = p5 + p10;\r
676     @LOC("THIS,SynthesisFilter.NEWV") float pp6 = p6 + p9;\r
677     @LOC("THIS,SynthesisFilter.NEWV") float pp7 = p7 + p8;\r
678     @LOC("THIS,SynthesisFilter.NEWV") float pp8 = (p0 - p15) * cos1_32;\r
679     @LOC("THIS,SynthesisFilter.NEWV") float pp9 = (p1 - p14) * cos3_32;\r
680     @LOC("THIS,SynthesisFilter.NEWV") float pp10 = (p2 - p13) * cos5_32;\r
681     @LOC("THIS,SynthesisFilter.NEWV") float pp11 = (p3 - p12) * cos7_32;\r
682     @LOC("THIS,SynthesisFilter.NEWV") float pp12 = (p4 - p11) * cos9_32;\r
683     @LOC("THIS,SynthesisFilter.NEWV") float pp13 = (p5 - p10) * cos11_32;\r
684     @LOC("THIS,SynthesisFilter.NEWV") float pp14 = (p6 - p9) * cos13_32;\r
685     @LOC("THIS,SynthesisFilter.NEWV") float pp15 = (p7 - p8) * cos15_32;\r
686 \r
687     p0 = pp0 + pp7;\r
688     p1 = pp1 + pp6;\r
689     p2 = pp2 + pp5;\r
690     p3 = pp3 + pp4;\r
691     p4 = (pp0 - pp7) * cos1_16;\r
692     p5 = (pp1 - pp6) * cos3_16;\r
693     p6 = (pp2 - pp5) * cos5_16;\r
694     p7 = (pp3 - pp4) * cos7_16;\r
695     p8 = pp8 + pp15;\r
696     p9 = pp9 + pp14;\r
697     p10 = pp10 + pp13;\r
698     p11 = pp11 + pp12;\r
699     p12 = (pp8 - pp15) * cos1_16;\r
700     p13 = (pp9 - pp14) * cos3_16;\r
701     p14 = (pp10 - pp13) * cos5_16;\r
702     p15 = (pp11 - pp12) * cos7_16;\r
703 \r
704     pp0 = p0 + p3;\r
705     pp1 = p1 + p2;\r
706     pp2 = (p0 - p3) * cos1_8;\r
707     pp3 = (p1 - p2) * cos3_8;\r
708     pp4 = p4 + p7;\r
709     pp5 = p5 + p6;\r
710     pp6 = (p4 - p7) * cos1_8;\r
711     pp7 = (p5 - p6) * cos3_8;\r
712     pp8 = p8 + p11;\r
713     pp9 = p9 + p10;\r
714     pp10 = (p8 - p11) * cos1_8;\r
715     pp11 = (p9 - p10) * cos3_8;\r
716     pp12 = p12 + p15;\r
717     pp13 = p13 + p14;\r
718     pp14 = (p12 - p15) * cos1_8;\r
719     pp15 = (p13 - p14) * cos3_8;\r
720 \r
721     p0 = pp0 + pp1;\r
722     p1 = (pp0 - pp1) * cos1_4;\r
723     p2 = pp2 + pp3;\r
724     p3 = (pp2 - pp3) * cos1_4;\r
725     p4 = pp4 + pp5;\r
726     p5 = (pp4 - pp5) * cos1_4;\r
727     p6 = pp6 + pp7;\r
728     p7 = (pp6 - pp7) * cos1_4;\r
729     p8 = pp8 + pp9;\r
730     p9 = (pp8 - pp9) * cos1_4;\r
731     p10 = pp10 + pp11;\r
732     p11 = (pp10 - pp11) * cos1_4;\r
733     p12 = pp12 + pp13;\r
734     p13 = (pp12 - pp13) * cos1_4;\r
735     p14 = pp14 + pp15;\r
736     p15 = (pp14 - pp15) * cos1_4;\r
737 \r
738     // this is pretty insane coding\r
739     @LOC("THIS,SynthesisFilter.NEWV") float tmp1;\r
740     new_v19/* 36-17 */= -(new_v4 = (new_v12 = p7) + p5) - p6;\r
741     new_v27/* 44-17 */= -p6 - p7 - p4;\r
742     new_v6 = (new_v10 = (new_v14 = p15) + p11) + p13;\r
743     new_v17/* 34-17 */= -(new_v2 = p15 + p13 + p9) - p14;\r
744     new_v21/* 38-17 */= (tmp1 = -p14 - p15 - p10 - p11) - p13;\r
745     new_v29/* 46-17 */= -p14 - p15 - p12 - p8;\r
746     new_v25/* 42-17 */= tmp1 - p12;\r
747     new_v31/* 48-17 */= -p0;\r
748     new_v0 = p1;\r
749     new_v23/* 40-17 */= -(new_v8 = p3) - p2;\r
750 \r
751     p0 = (s0 - s31) * cos1_64;\r
752     p1 = (s1 - s30) * cos3_64;\r
753     p2 = (s2 - s29) * cos5_64;\r
754     p3 = (s3 - s28) * cos7_64;\r
755     p4 = (s4 - s27) * cos9_64;\r
756     p5 = (s5 - s26) * cos11_64;\r
757     p6 = (s6 - s25) * cos13_64;\r
758     p7 = (s7 - s24) * cos15_64;\r
759     p8 = (s8 - s23) * cos17_64;\r
760     p9 = (s9 - s22) * cos19_64;\r
761     p10 = (s10 - s21) * cos21_64;\r
762     p11 = (s11 - s20) * cos23_64;\r
763     p12 = (s12 - s19) * cos25_64;\r
764     p13 = (s13 - s18) * cos27_64;\r
765     p14 = (s14 - s17) * cos29_64;\r
766     p15 = (s15 - s16) * cos31_64;\r
767 \r
768     pp0 = p0 + p15;\r
769     pp1 = p1 + p14;\r
770     pp2 = p2 + p13;\r
771     pp3 = p3 + p12;\r
772     pp4 = p4 + p11;\r
773     pp5 = p5 + p10;\r
774     pp6 = p6 + p9;\r
775     pp7 = p7 + p8;\r
776     pp8 = (p0 - p15) * cos1_32;\r
777     pp9 = (p1 - p14) * cos3_32;\r
778     pp10 = (p2 - p13) * cos5_32;\r
779     pp11 = (p3 - p12) * cos7_32;\r
780     pp12 = (p4 - p11) * cos9_32;\r
781     pp13 = (p5 - p10) * cos11_32;\r
782     pp14 = (p6 - p9) * cos13_32;\r
783     pp15 = (p7 - p8) * cos15_32;\r
784 \r
785     p0 = pp0 + pp7;\r
786     p1 = pp1 + pp6;\r
787     p2 = pp2 + pp5;\r
788     p3 = pp3 + pp4;\r
789     p4 = (pp0 - pp7) * cos1_16;\r
790     p5 = (pp1 - pp6) * cos3_16;\r
791     p6 = (pp2 - pp5) * cos5_16;\r
792     p7 = (pp3 - pp4) * cos7_16;\r
793     p8 = pp8 + pp15;\r
794     p9 = pp9 + pp14;\r
795     p10 = pp10 + pp13;\r
796     p11 = pp11 + pp12;\r
797     p12 = (pp8 - pp15) * cos1_16;\r
798     p13 = (pp9 - pp14) * cos3_16;\r
799     p14 = (pp10 - pp13) * cos5_16;\r
800     p15 = (pp11 - pp12) * cos7_16;\r
801 \r
802     pp0 = p0 + p3;\r
803     pp1 = p1 + p2;\r
804     pp2 = (p0 - p3) * cos1_8;\r
805     pp3 = (p1 - p2) * cos3_8;\r
806     pp4 = p4 + p7;\r
807     pp5 = p5 + p6;\r
808     pp6 = (p4 - p7) * cos1_8;\r
809     pp7 = (p5 - p6) * cos3_8;\r
810     pp8 = p8 + p11;\r
811     pp9 = p9 + p10;\r
812     pp10 = (p8 - p11) * cos1_8;\r
813     pp11 = (p9 - p10) * cos3_8;\r
814     pp12 = p12 + p15;\r
815     pp13 = p13 + p14;\r
816     pp14 = (p12 - p15) * cos1_8;\r
817     pp15 = (p13 - p14) * cos3_8;\r
818 \r
819     p0 = pp0 + pp1;\r
820     p1 = (pp0 - pp1) * cos1_4;\r
821     p2 = pp2 + pp3;\r
822     p3 = (pp2 - pp3) * cos1_4;\r
823     p4 = pp4 + pp5;\r
824     p5 = (pp4 - pp5) * cos1_4;\r
825     p6 = pp6 + pp7;\r
826     p7 = (pp6 - pp7) * cos1_4;\r
827     p8 = pp8 + pp9;\r
828     p9 = (pp8 - pp9) * cos1_4;\r
829     p10 = pp10 + pp11;\r
830     p11 = (pp10 - pp11) * cos1_4;\r
831     p12 = pp12 + pp13;\r
832     p13 = (pp12 - pp13) * cos1_4;\r
833     p14 = pp14 + pp15;\r
834     p15 = (pp14 - pp15) * cos1_4;\r
835 \r
836     // manually doing something that a compiler should handle sucks\r
837     // coding like this is hard to read\r
838     @LOC("THIS,SynthesisFilter.NEWV") float tmp2;\r
839     new_v5 = (new_v11 = (new_v13 = (new_v15 = p15) + p7) + p11) + p5 + p13;\r
840     new_v7 = (new_v9 = p15 + p11 + p3) + p13;\r
841     new_v16/* 33-17 */= -(new_v1 = (tmp1 = p13 + p15 + p9) + p1) - p14;\r
842     new_v18/* 35-17 */= -(new_v3 = tmp1 + p5 + p7) - p6 - p14;\r
843 \r
844     new_v22/* 39-17 */= (tmp1 = -p10 - p11 - p14 - p15) - p13 - p2 - p3;\r
845     new_v20/* 37-17 */= tmp1 - p13 - p5 - p6 - p7;\r
846     new_v24/* 41-17 */= tmp1 - p12 - p2 - p3;\r
847     new_v26/* 43-17 */= tmp1 - p12 - (tmp2 = p4 + p6 + p7);\r
848     new_v30/* 47-17 */= (tmp1 = -p8 - p12 - p14 - p15) - p0;\r
849     new_v28/* 45-17 */= tmp1 - tmp2;\r
850 \r
851     // insert V[0-15] (== new_v[0-15]) into actual v:\r
852     // float[] x2 = actual_v + actual_write_pos;\r
853     // float dest[] = actual_v; actual_v=v1;\r
854 \r
855     @LOC("THIS,SynthesisFilter.NEWV") int pos = actual_write_pos;\r
856 \r
857     v1[0 + pos] = new_v0;\r
858     v1[16 + pos] = new_v1;\r
859     v1[32 + pos] = new_v2;\r
860     v1[48 + pos] = new_v3;\r
861     v1[64 + pos] = new_v4;\r
862     v1[80 + pos] = new_v5;\r
863     v1[96 + pos] = new_v6;\r
864     v1[112 + pos] = new_v7;\r
865     v1[128 + pos] = new_v8;\r
866     v1[144 + pos] = new_v9;\r
867     v1[160 + pos] = new_v10;\r
868     v1[176 + pos] = new_v11;\r
869     v1[192 + pos] = new_v12;\r
870     v1[208 + pos] = new_v13;\r
871     v1[224 + pos] = new_v14;\r
872     v1[240 + pos] = new_v15;\r
873 \r
874     // V[16] is always 0.0:\r
875     v1[256 + pos] = 0.0f;\r
876 \r
877     // insert V[17-31] (== -new_v[15-1]) into actual v:\r
878     v1[272 + pos] = -new_v15;\r
879     v1[288 + pos] = -new_v14;\r
880     v1[304 + pos] = -new_v13;\r
881     v1[320 + pos] = -new_v12;\r
882     v1[336 + pos] = -new_v11;\r
883     v1[352 + pos] = -new_v10;\r
884     v1[368 + pos] = -new_v9;\r
885     v1[384 + pos] = -new_v8;\r
886     v1[400 + pos] = -new_v7;\r
887     v1[416 + pos] = -new_v6;\r
888     v1[432 + pos] = -new_v5;\r
889     v1[448 + pos] = -new_v4;\r
890     v1[464 + pos] = -new_v3;\r
891     v1[480 + pos] = -new_v2;\r
892     v1[496 + pos] = -new_v1;\r
893 \r
894     // insert V[32] (== -new_v[0]) into other v:\r
895     // dest = (actual_v == v1) ? v2 : v1;\r
896 \r
897     v2[0 + pos] = -new_v0;\r
898     // insert V[33-48] (== new_v[16-31]) into other v:\r
899     v2[16 + pos] = new_v16;\r
900     v2[32 + pos] = new_v17;\r
901     v2[48 + pos] = new_v18;\r
902     v2[64 + pos] = new_v19;\r
903     v2[80 + pos] = new_v20;\r
904     v2[96 + pos] = new_v21;\r
905     v2[112 + pos] = new_v22;\r
906     v2[128 + pos] = new_v23;\r
907     v2[144 + pos] = new_v24;\r
908     v2[160 + pos] = new_v25;\r
909     v2[176 + pos] = new_v26;\r
910     v2[192 + pos] = new_v27;\r
911     v2[208 + pos] = new_v28;\r
912     v2[224 + pos] = new_v29;\r
913     v2[240 + pos] = new_v30;\r
914     v2[256 + pos] = new_v31;\r
915 \r
916     // insert V[49-63] (== new_v[30-16]) into other v:\r
917     v2[272 + pos] = new_v30;\r
918     v2[288 + pos] = new_v29;\r
919     v2[304 + pos] = new_v28;\r
920     v2[320 + pos] = new_v27;\r
921     v2[336 + pos] = new_v26;\r
922     v2[352 + pos] = new_v25;\r
923     v2[368 + pos] = new_v24;\r
924     v2[384 + pos] = new_v23;\r
925     v2[400 + pos] = new_v22;\r
926     v2[416 + pos] = new_v21;\r
927     v2[432 + pos] = new_v20;\r
928     v2[448 + pos] = new_v19;\r
929     v2[464 + pos] = new_v18;\r
930     v2[480 + pos] = new_v17;\r
931     v2[496 + pos] = new_v16;\r
932 \r
933     /*\r
934      * setup PREV\r
935      */\r
936 \r
937     prev1[0 + pos] = new_v0;\r
938     prev1[16 + pos] = new_v1;\r
939     prev1[32 + pos] = new_v2;\r
940     prev1[48 + pos] = new_v3;\r
941     prev1[64 + pos] = new_v4;\r
942     prev1[80 + pos] = new_v5;\r
943     prev1[96 + pos] = new_v6;\r
944     prev1[112 + pos] = new_v7;\r
945     prev1[128 + pos] = new_v8;\r
946     prev1[144 + pos] = new_v9;\r
947     prev1[160 + pos] = new_v10;\r
948     prev1[176 + pos] = new_v11;\r
949     prev1[192 + pos] = new_v12;\r
950     prev1[208 + pos] = new_v13;\r
951     prev1[224 + pos] = new_v14;\r
952     prev1[240 + pos] = new_v15;\r
953 \r
954     // V[16] is always 0.0:\r
955     prev1[256 + pos] = 0.0f;\r
956 \r
957     // insert V[17-31] (== -new_v[15-1]) into actual v:\r
958     prev1[272 + pos] = -new_v15;\r
959     prev1[288 + pos] = -new_v14;\r
960     prev1[304 + pos] = -new_v13;\r
961     prev1[320 + pos] = -new_v12;\r
962     prev1[336 + pos] = -new_v11;\r
963     prev1[352 + pos] = -new_v10;\r
964     prev1[368 + pos] = -new_v9;\r
965     prev1[384 + pos] = -new_v8;\r
966     prev1[400 + pos] = -new_v7;\r
967     prev1[416 + pos] = -new_v6;\r
968     prev1[432 + pos] = -new_v5;\r
969     prev1[448 + pos] = -new_v4;\r
970     prev1[464 + pos] = -new_v3;\r
971     prev1[480 + pos] = -new_v2;\r
972     prev1[496 + pos] = -new_v1;\r
973 \r
974     // insert V[32] (== -new_v[0]) into other v:\r
975     // dest = (actual_v == v1) ? v2 : v1;\r
976 \r
977     prev2[0 + pos] = -new_v0;\r
978     // insert V[33-48] (== new_v[16-31]) into other v:\r
979     prev2[16 + pos] = new_v16;\r
980     prev2[32 + pos] = new_v17;\r
981     prev2[48 + pos] = new_v18;\r
982     prev2[64 + pos] = new_v19;\r
983     prev2[80 + pos] = new_v20;\r
984     prev2[96 + pos] = new_v21;\r
985     prev2[112 + pos] = new_v22;\r
986     prev2[128 + pos] = new_v23;\r
987     prev2[144 + pos] = new_v24;\r
988     prev2[160 + pos] = new_v25;\r
989     prev2[176 + pos] = new_v26;\r
990     prev2[192 + pos] = new_v27;\r
991     prev2[208 + pos] = new_v28;\r
992     prev2[224 + pos] = new_v29;\r
993     prev2[240 + pos] = new_v30;\r
994     prev2[256 + pos] = new_v31;\r
995 \r
996     // insert V[49-63] (== new_v[30-16]) into other v:\r
997     prev2[272 + pos] = new_v30;\r
998     prev2[288 + pos] = new_v29;\r
999     prev2[304 + pos] = new_v28;\r
1000     prev2[320 + pos] = new_v27;\r
1001     prev2[336 + pos] = new_v26;\r
1002     prev2[352 + pos] = new_v25;\r
1003     prev2[368 + pos] = new_v24;\r
1004     prev2[384 + pos] = new_v23;\r
1005     prev2[400 + pos] = new_v22;\r
1006     prev2[416 + pos] = new_v21;\r
1007     prev2[432 + pos] = new_v20;\r
1008     prev2[448 + pos] = new_v19;\r
1009     prev2[464 + pos] = new_v18;\r
1010     prev2[480 + pos] = new_v17;\r
1011     prev2[496 + pos] = new_v16;\r
1012   }\r
1013 \r
1014   /**\r
1015    * Compute PCM Samples.\r
1016    */\r
1017 \r
1018   @LOC("OUT")\r
1019   private float[] _tmpOut = new float[32];\r
1020 \r
1021   private void compute_pcm_samples0() {\r
1022 \r
1023     if (vidx == 1) {\r
1024       // final float[] vp = actual_v;\r
1025       // int inc = v_inc;\r
1026       // final float[] tmpOut = _tmpOut;\r
1027       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1028 \r
1029       // fat chance of having this loop unroll\r
1030       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1031         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1032         // final float[] dp = d16[i];\r
1033         pcm_sample =\r
1034             (float) (((v1[0 + dvp] * d16[i][0]) + (v1[15 + dvp] * d16[i][1])\r
1035                 + (v1[14 + dvp] * d16[i][2]) + (v1[13 + dvp] * d16[i][3])\r
1036                 + (v1[12 + dvp] * d16[i][4]) + (v1[11 + dvp] * d16[i][5])\r
1037                 + (v1[10 + dvp] * d16[i][6]) + (v1[9 + dvp] * d16[i][7])\r
1038                 + (v1[8 + dvp] * d16[i][8]) + (v1[7 + dvp] * d16[i][9])\r
1039                 + (v1[6 + dvp] * d16[i][10]) + (v1[5 + dvp] * d16[i][11])\r
1040                 + (v1[4 + dvp] * d16[i][12]) + (v1[3 + dvp] * d16[i][13])\r
1041                 + (v1[2 + dvp] * d16[i][14]) + (v1[1 + dvp] * d16[i][15])) * scalefactor);\r
1042 \r
1043         _tmpOut[i] = pcm_sample;\r
1044 \r
1045         dvp += 16;\r
1046       } // for\r
1047     } else {\r
1048       // final float[] vp = actual_v;\r
1049       // int inc = v_inc;\r
1050       // final float[] tmpOut = _tmpOut;\r
1051       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1052 \r
1053       // fat chance of having this loop unroll\r
1054       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1055         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1056         // final float[] dp = d16[i];\r
1057         pcm_sample =\r
1058             (float) (((v2[0 + dvp] * d16[i][0]) + (v2[15 + dvp] * d16[i][1])\r
1059                 + (v2[14 + dvp] * d16[i][2]) + (v2[13 + dvp] * d16[i][3])\r
1060                 + (v2[12 + dvp] * d16[i][4]) + (v2[11 + dvp] * d16[i][5])\r
1061                 + (v2[10 + dvp] * d16[i][6]) + (v2[9 + dvp] * d16[i][7])\r
1062                 + (v2[8 + dvp] * d16[i][8]) + (v2[7 + dvp] * d16[i][9])\r
1063                 + (v2[6 + dvp] * d16[i][10]) + (v2[5 + dvp] * d16[i][11])\r
1064                 + (v2[4 + dvp] * d16[i][12]) + (v2[3 + dvp] * d16[i][13])\r
1065                 + (v2[2 + dvp] * d16[i][14]) + (v2[1 + dvp] * d16[i][15])) * scalefactor);\r
1066 \r
1067         _tmpOut[i] = pcm_sample;\r
1068 \r
1069         dvp += 16;\r
1070       } // for\r
1071     }\r
1072 \r
1073   }\r
1074 \r
1075   private void compute_pcm_samples1() {\r
1076 \r
1077     if (vidx == 1) {\r
1078       // final float[] vp = actual_v;\r
1079       // int inc = v_inc;\r
1080       // final float[] tmpOut = _tmpOut;\r
1081       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1082 \r
1083       // fat chance of having this loop unroll\r
1084       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1085         // final float[] dp = d16[i];\r
1086         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1087 \r
1088         pcm_sample =\r
1089             (float) (((v1[1 + dvp] * d16[i][0]) + (v1[0 + dvp] * d16[i][1])\r
1090                 + (v1[15 + dvp] * d16[i][2]) + (v1[14 + dvp] * d16[i][3])\r
1091                 + (v1[13 + dvp] * d16[i][4]) + (v1[12 + dvp] * d16[i][5])\r
1092                 + (v1[11 + dvp] * d16[i][6]) + (v1[10 + dvp] * d16[i][7])\r
1093                 + (v1[9 + dvp] * d16[i][8]) + (v1[8 + dvp] * d16[i][9])\r
1094                 + (v1[7 + dvp] * d16[i][10]) + (v1[6 + dvp] * d16[i][11])\r
1095                 + (v1[5 + dvp] * d16[i][12]) + (v1[4 + dvp] * d16[i][13])\r
1096                 + (v1[3 + dvp] * d16[i][14]) + (v1[2 + dvp] * d16[i][15])) * scalefactor);\r
1097 \r
1098         _tmpOut[i] = pcm_sample;\r
1099 \r
1100         dvp += 16;\r
1101       } // for\r
1102     } else {\r
1103       // final float[] vp = actual_v;\r
1104       // int inc = v_inc;\r
1105       // final float[] tmpOut = _tmpOut;\r
1106       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1107 \r
1108       // fat chance of having this loop unroll\r
1109       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1110         // final float[] dp = d16[i];\r
1111         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1112 \r
1113         pcm_sample =\r
1114             (float) (((v2[1 + dvp] * d16[i][0]) + (v2[0 + dvp] * d16[i][1])\r
1115                 + (v2[15 + dvp] * d16[i][2]) + (v2[14 + dvp] * d16[i][3])\r
1116                 + (v2[13 + dvp] * d16[i][4]) + (v2[12 + dvp] * d16[i][5])\r
1117                 + (v2[11 + dvp] * d16[i][6]) + (v2[10 + dvp] * d16[i][7])\r
1118                 + (v2[9 + dvp] * d16[i][8]) + (v2[8 + dvp] * d16[i][9])\r
1119                 + (v2[7 + dvp] * d16[i][10]) + (v2[6 + dvp] * d16[i][11])\r
1120                 + (v2[5 + dvp] * d16[i][12]) + (v2[4 + dvp] * d16[i][13])\r
1121                 + (v2[3 + dvp] * d16[i][14]) + (v2[2 + dvp] * d16[i][15])) * scalefactor);\r
1122 \r
1123         _tmpOut[i] = pcm_sample;\r
1124 \r
1125         dvp += 16;\r
1126       } // for\r
1127     }\r
1128 \r
1129   }\r
1130 \r
1131   private void compute_pcm_samples2() {\r
1132 \r
1133     if (vidx == 1) {\r
1134       // final float[] vp = actual_v;\r
1135       // int inc = v_inc;\r
1136       // final float[] tmpOut = _tmpOut;\r
1137       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1138 \r
1139       // fat chance of having this loop unroll\r
1140       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1141         // final float[] dp = d16[i];\r
1142         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1143 \r
1144         pcm_sample =\r
1145             (float) (((v1[2 + dvp] * d16[i][0]) + (v1[1 + dvp] * d16[i][1])\r
1146                 + (v1[0 + dvp] * d16[i][2]) + (v1[15 + dvp] * d16[i][3])\r
1147                 + (v1[14 + dvp] * d16[i][4]) + (v1[13 + dvp] * d16[i][5])\r
1148                 + (v1[12 + dvp] * d16[i][6]) + (v1[11 + dvp] * d16[i][7])\r
1149                 + (v1[10 + dvp] * d16[i][8]) + (v1[9 + dvp] * d16[i][9])\r
1150                 + (v1[8 + dvp] * d16[i][10]) + (v1[7 + dvp] * d16[i][11])\r
1151                 + (v1[6 + dvp] * d16[i][12]) + (v1[5 + dvp] * d16[i][13])\r
1152                 + (v1[4 + dvp] * d16[i][14]) + (v1[3 + dvp] * d16[i][15])) * scalefactor);\r
1153 \r
1154         _tmpOut[i] = pcm_sample;\r
1155 \r
1156         dvp += 16;\r
1157       } // for\r
1158     } else {\r
1159       // final float[] vp = actual_v;\r
1160       // int inc = v_inc;\r
1161       // final float[] tmpOut = _tmpOut;\r
1162       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1163 \r
1164       // fat chance of having this loop unroll\r
1165       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1166         // final float[] dp = d16[i];\r
1167         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1168 \r
1169         pcm_sample =\r
1170             (float) (((v2[2 + dvp] * d16[i][0]) + (v2[1 + dvp] * d16[i][1])\r
1171                 + (v2[0 + dvp] * d16[i][2]) + (v2[15 + dvp] * d16[i][3])\r
1172                 + (v2[14 + dvp] * d16[i][4]) + (v2[13 + dvp] * d16[i][5])\r
1173                 + (v2[12 + dvp] * d16[i][6]) + (v2[11 + dvp] * d16[i][7])\r
1174                 + (v2[10 + dvp] * d16[i][8]) + (v2[9 + dvp] * d16[i][9])\r
1175                 + (v2[8 + dvp] * d16[i][10]) + (v2[7 + dvp] * d16[i][11])\r
1176                 + (v2[6 + dvp] * d16[i][12]) + (v2[5 + dvp] * d16[i][13])\r
1177                 + (v2[4 + dvp] * d16[i][14]) + (v2[3 + dvp] * d16[i][15])) * scalefactor);\r
1178 \r
1179         _tmpOut[i] = pcm_sample;\r
1180 \r
1181         dvp += 16;\r
1182       } // for\r
1183     }\r
1184 \r
1185   }\r
1186 \r
1187   private void compute_pcm_samples3() {\r
1188 \r
1189     if (vidx == 1) {\r
1190       // final float[] vp = actual_v;\r
1191 \r
1192       // int inc = v_inc;\r
1193       // final float[] tmpOut = _tmpOut;\r
1194       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1195 \r
1196       // fat chance of having this loop unroll\r
1197       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1198         // final float[] dp = d16[i];\r
1199         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1200 \r
1201         pcm_sample =\r
1202             (float) (((v1[3 + dvp] * d16[i][0]) + (v1[2 + dvp] * d16[i][1])\r
1203                 + (v1[1 + dvp] * d16[i][2]) + (v1[0 + dvp] * d16[i][3])\r
1204                 + (v1[15 + dvp] * d16[i][4]) + (v1[14 + dvp] * d16[i][5])\r
1205                 + (v1[13 + dvp] * d16[i][6]) + (v1[12 + dvp] * d16[i][7])\r
1206                 + (v1[11 + dvp] * d16[i][8]) + (v1[10 + dvp] * d16[i][9])\r
1207                 + (v1[9 + dvp] * d16[i][10]) + (v1[8 + dvp] * d16[i][11])\r
1208                 + (v1[7 + dvp] * d16[i][12]) + (v1[6 + dvp] * d16[i][13])\r
1209                 + (v1[5 + dvp] * d16[i][14]) + (v1[4 + dvp] * d16[i][15])) * scalefactor);\r
1210 \r
1211         _tmpOut[i] = pcm_sample;\r
1212 \r
1213         dvp += 16;\r
1214       } // for\r
1215     } else {\r
1216       // final float[] vp = actual_v;\r
1217 \r
1218       // int inc = v_inc;\r
1219       // final float[] tmpOut = _tmpOut;\r
1220       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1221 \r
1222       // fat chance of having this loop unroll\r
1223       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1224         // final float[] dp = d16[i];\r
1225         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1226 \r
1227         pcm_sample =\r
1228             (float) (((v2[3 + dvp] * d16[i][0]) + (v2[2 + dvp] * d16[i][1])\r
1229                 + (v2[1 + dvp] * d16[i][2]) + (v2[0 + dvp] * d16[i][3])\r
1230                 + (v2[15 + dvp] * d16[i][4]) + (v2[14 + dvp] * d16[i][5])\r
1231                 + (v2[13 + dvp] * d16[i][6]) + (v2[12 + dvp] * d16[i][7])\r
1232                 + (v2[11 + dvp] * d16[i][8]) + (v2[10 + dvp] * d16[i][9])\r
1233                 + (v2[9 + dvp] * d16[i][10]) + (v2[8 + dvp] * d16[i][11])\r
1234                 + (v2[7 + dvp] * d16[i][12]) + (v2[6 + dvp] * d16[i][13])\r
1235                 + (v2[5 + dvp] * d16[i][14]) + (v2[4 + dvp] * d16[i][15])) * scalefactor);\r
1236 \r
1237         _tmpOut[i] = pcm_sample;\r
1238 \r
1239         dvp += 16;\r
1240       } // for\r
1241     }\r
1242 \r
1243   }\r
1244 \r
1245   private void compute_pcm_samples4() {\r
1246 \r
1247     if (vidx == 1) {\r
1248       // final float[] vp = actual_v;\r
1249 \r
1250       // int inc = v_inc;\r
1251       // final float[] tmpOut = _tmpOut;\r
1252       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1253 \r
1254       // fat chance of having this loop unroll\r
1255       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1256         // final float[] dp = d16[i];\r
1257         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1258 \r
1259         pcm_sample =\r
1260             (float) (((v1[4 + dvp] * d16[i][0]) + (v1[3 + dvp] * d16[i][1])\r
1261                 + (v1[2 + dvp] * d16[i][2]) + (v1[1 + dvp] * d16[i][3]) + (v1[0 + dvp] * d16[i][4])\r
1262                 + (v1[15 + dvp] * d16[i][5]) + (v1[14 + dvp] * d16[i][6])\r
1263                 + (v1[13 + dvp] * d16[i][7]) + (v1[12 + dvp] * d16[i][8])\r
1264                 + (v1[11 + dvp] * d16[i][9]) + (v1[10 + dvp] * d16[i][10])\r
1265                 + (v1[9 + dvp] * d16[i][11]) + (v1[8 + dvp] * d16[i][12])\r
1266                 + (v1[7 + dvp] * d16[i][13]) + (v1[6 + dvp] * d16[i][14]) + (v1[5 + dvp] * d16[i][15])) * scalefactor);\r
1267 \r
1268         _tmpOut[i] = pcm_sample;\r
1269 \r
1270         dvp += 16;\r
1271       } // for\r
1272     } else {\r
1273       // final float[] vp = actual_v;\r
1274 \r
1275       // int inc = v_inc;\r
1276       // final float[] tmpOut = _tmpOut;\r
1277       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1278 \r
1279       // fat chance of having this loop unroll\r
1280       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1281         // final float[] dp = d16[i];\r
1282         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1283 \r
1284         pcm_sample =\r
1285             (float) (((v2[4 + dvp] * d16[i][0]) + (v2[3 + dvp] * d16[i][1])\r
1286                 + (v2[2 + dvp] * d16[i][2]) + (v2[1 + dvp] * d16[i][3]) + (v2[0 + dvp] * d16[i][4])\r
1287                 + (v2[15 + dvp] * d16[i][5]) + (v2[14 + dvp] * d16[i][6])\r
1288                 + (v2[13 + dvp] * d16[i][7]) + (v2[12 + dvp] * d16[i][8])\r
1289                 + (v2[11 + dvp] * d16[i][9]) + (v2[10 + dvp] * d16[i][10])\r
1290                 + (v2[9 + dvp] * d16[i][11]) + (v2[8 + dvp] * d16[i][12])\r
1291                 + (v2[7 + dvp] * d16[i][13]) + (v2[6 + dvp] * d16[i][14]) + (v2[5 + dvp] * d16[i][15])) * scalefactor);\r
1292 \r
1293         _tmpOut[i] = pcm_sample;\r
1294 \r
1295         dvp += 16;\r
1296       } // for\r
1297     }\r
1298 \r
1299   }\r
1300 \r
1301   private void compute_pcm_samples5() {\r
1302 \r
1303     if (vidx == 1) {\r
1304       // final float[] vp = actual_v;\r
1305 \r
1306       // int inc = v_inc;\r
1307       // final float[] tmpOut = _tmpOut;\r
1308       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1309 \r
1310       // fat chance of having this loop unroll\r
1311       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1312         // final float[] dp = d16[i];\r
1313         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1314 \r
1315         pcm_sample =\r
1316             (float) (((v1[5 + dvp] * d16[i][0]) + (v1[4 + dvp] * d16[i][1])\r
1317                 + (v1[3 + dvp] * d16[i][2]) + (v1[2 + dvp] * d16[i][3]) + (v1[1 + dvp] * d16[i][4])\r
1318                 + (v1[0 + dvp] * d16[i][5]) + (v1[15 + dvp] * d16[i][6])\r
1319                 + (v1[14 + dvp] * d16[i][7]) + (v1[13 + dvp] * d16[i][8])\r
1320                 + (v1[12 + dvp] * d16[i][9]) + (v1[11 + dvp] * d16[i][10])\r
1321                 + (v1[10 + dvp] * d16[i][11]) + (v1[9 + dvp] * d16[i][12])\r
1322                 + (v1[8 + dvp] * d16[i][13]) + (v1[7 + dvp] * d16[i][14]) + (v1[6 + dvp] * d16[i][15])) * scalefactor);\r
1323 \r
1324         _tmpOut[i] = pcm_sample;\r
1325 \r
1326         dvp += 16;\r
1327       } // for\r
1328     } else {\r
1329       // final float[] vp = actual_v;\r
1330 \r
1331       // int inc = v_inc;\r
1332       // final float[] tmpOut = _tmpOut;\r
1333       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1334 \r
1335       // fat chance of having this loop unroll\r
1336       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1337         // final float[] dp = d16[i];\r
1338         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1339 \r
1340         pcm_sample =\r
1341             (float) (((v2[5 + dvp] * d16[i][0]) + (v2[4 + dvp] * d16[i][1])\r
1342                 + (v2[3 + dvp] * d16[i][2]) + (v2[2 + dvp] * d16[i][3]) + (v2[1 + dvp] * d16[i][4])\r
1343                 + (v2[0 + dvp] * d16[i][5]) + (v2[15 + dvp] * d16[i][6])\r
1344                 + (v2[14 + dvp] * d16[i][7]) + (v2[13 + dvp] * d16[i][8])\r
1345                 + (v2[12 + dvp] * d16[i][9]) + (v2[11 + dvp] * d16[i][10])\r
1346                 + (v2[10 + dvp] * d16[i][11]) + (v2[9 + dvp] * d16[i][12])\r
1347                 + (v2[8 + dvp] * d16[i][13]) + (v2[7 + dvp] * d16[i][14]) + (v2[6 + dvp] * d16[i][15])) * scalefactor);\r
1348 \r
1349         _tmpOut[i] = pcm_sample;\r
1350 \r
1351         dvp += 16;\r
1352       } // for\r
1353     }\r
1354 \r
1355   }\r
1356 \r
1357   private void compute_pcm_samples6() {\r
1358 \r
1359     if (vidx == 1) {\r
1360 \r
1361       // final float[] vp = actual_v;\r
1362       // int inc = v_inc;\r
1363       // final float[] tmpOut = _tmpOut;\r
1364       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1365 \r
1366       // fat chance of having this loop unroll\r
1367       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1368         // final float[] dp = d16[i];\r
1369         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1370 \r
1371         pcm_sample =\r
1372             (float) (((v1[6 + dvp] * d16[i][0]) + (v1[5 + dvp] * d16[i][1])\r
1373                 + (v1[4 + dvp] * d16[i][2]) + (v1[3 + dvp] * d16[i][3]) + (v1[2 + dvp] * d16[i][4])\r
1374                 + (v1[1 + dvp] * d16[i][5]) + (v1[0 + dvp] * d16[i][6])\r
1375                 + (v1[15 + dvp] * d16[i][7]) + (v1[14 + dvp] * d16[i][8])\r
1376                 + (v1[13 + dvp] * d16[i][9]) + (v1[12 + dvp] * d16[i][10])\r
1377                 + (v1[11 + dvp] * d16[i][11]) + (v1[10 + dvp] * d16[i][12])\r
1378                 + (v1[9 + dvp] * d16[i][13]) + (v1[8 + dvp] * d16[i][14]) + (v1[7 + dvp] * d16[i][15])) * scalefactor);\r
1379 \r
1380         _tmpOut[i] = pcm_sample;\r
1381 \r
1382         dvp += 16;\r
1383       } // for\r
1384     } else {\r
1385 \r
1386       // final float[] vp = actual_v;\r
1387       // int inc = v_inc;\r
1388       // final float[] tmpOut = _tmpOut;\r
1389       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1390 \r
1391       // fat chance of having this loop unroll\r
1392       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1393         // final float[] dp = d16[i];\r
1394         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1395 \r
1396         pcm_sample =\r
1397             (float) (((v2[6 + dvp] * d16[i][0]) + (v2[5 + dvp] * d16[i][1])\r
1398                 + (v2[4 + dvp] * d16[i][2]) + (v2[3 + dvp] * d16[i][3]) + (v2[2 + dvp] * d16[i][4])\r
1399                 + (v2[1 + dvp] * d16[i][5]) + (v2[0 + dvp] * d16[i][6])\r
1400                 + (v2[15 + dvp] * d16[i][7]) + (v2[14 + dvp] * d16[i][8])\r
1401                 + (v2[13 + dvp] * d16[i][9]) + (v2[12 + dvp] * d16[i][10])\r
1402                 + (v2[11 + dvp] * d16[i][11]) + (v2[10 + dvp] * d16[i][12])\r
1403                 + (v2[9 + dvp] * d16[i][13]) + (v2[8 + dvp] * d16[i][14]) + (v2[7 + dvp] * d16[i][15])) * scalefactor);\r
1404 \r
1405         _tmpOut[i] = pcm_sample;\r
1406 \r
1407         dvp += 16;\r
1408       } // for\r
1409     }\r
1410 \r
1411   }\r
1412 \r
1413   private void compute_pcm_samples7() {\r
1414 \r
1415     if (vidx == 1) {\r
1416       // final float[] vp = actual_v;\r
1417 \r
1418       // int inc = v_inc;\r
1419       // final float[] tmpOut = _tmpOut;\r
1420       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1421 \r
1422       // fat chance of having this loop unroll\r
1423       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1424         // final float[] dp = d16[i];\r
1425         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1426 \r
1427         pcm_sample =\r
1428             (float) (((v1[7 + dvp] * d16[i][0]) + (v1[6 + dvp] * d16[i][1])\r
1429                 + (v1[5 + dvp] * d16[i][2]) + (v1[4 + dvp] * d16[i][3]) + (v1[3 + dvp] * d16[i][4])\r
1430                 + (v1[2 + dvp] * d16[i][5]) + (v1[1 + dvp] * d16[i][6]) + (v1[0 + dvp] * d16[i][7])\r
1431                 + (v1[15 + dvp] * d16[i][8]) + (v1[14 + dvp] * d16[i][9])\r
1432                 + (v1[13 + dvp] * d16[i][10]) + (v1[12 + dvp] * d16[i][11])\r
1433                 + (v1[11 + dvp] * d16[i][12]) + (v1[10 + dvp] * d16[i][13])\r
1434                 + (v1[9 + dvp] * d16[i][14]) + (v1[8 + dvp] * d16[i][15])) * scalefactor);\r
1435 \r
1436         _tmpOut[i] = pcm_sample;\r
1437 \r
1438         dvp += 16;\r
1439       } // for\r
1440     } else {\r
1441       // final float[] vp = actual_v;\r
1442 \r
1443       // int inc = v_inc;\r
1444       // final float[] tmpOut = _tmpOut;\r
1445       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1446 \r
1447       // fat chance of having this loop unroll\r
1448       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1449         // final float[] dp = d16[i];\r
1450         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1451 \r
1452         pcm_sample =\r
1453             (float) (((v2[7 + dvp] * d16[i][0]) + (v2[6 + dvp] * d16[i][1])\r
1454                 + (v2[5 + dvp] * d16[i][2]) + (v2[4 + dvp] * d16[i][3]) + (v2[3 + dvp] * d16[i][4])\r
1455                 + (v2[2 + dvp] * d16[i][5]) + (v2[1 + dvp] * d16[i][6]) + (v2[0 + dvp] * d16[i][7])\r
1456                 + (v2[15 + dvp] * d16[i][8]) + (v2[14 + dvp] * d16[i][9])\r
1457                 + (v2[13 + dvp] * d16[i][10]) + (v2[12 + dvp] * d16[i][11])\r
1458                 + (v2[11 + dvp] * d16[i][12]) + (v2[10 + dvp] * d16[i][13])\r
1459                 + (v2[9 + dvp] * d16[i][14]) + (v2[8 + dvp] * d16[i][15])) * scalefactor);\r
1460 \r
1461         _tmpOut[i] = pcm_sample;\r
1462 \r
1463         dvp += 16;\r
1464       } // for\r
1465     }\r
1466 \r
1467   }\r
1468 \r
1469   private void compute_pcm_samples8() {\r
1470 \r
1471     if (vidx == 1) {\r
1472 \r
1473       // final float[] vp = actual_v;\r
1474 \r
1475       // int inc = v_inc;\r
1476       // final float[] tmpOut = _tmpOut;\r
1477       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1478 \r
1479       // fat chance of having this loop unroll\r
1480       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1481         // final float[] dp = d16[i];\r
1482         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1483 \r
1484         pcm_sample =\r
1485             (float) (((v1[8 + dvp] * d16[i][0]) + (v1[7 + dvp] * d16[i][1])\r
1486                 + (v1[6 + dvp] * d16[i][2]) + (v1[5 + dvp] * d16[i][3]) + (v1[4 + dvp] * d16[i][4])\r
1487                 + (v1[3 + dvp] * d16[i][5]) + (v1[2 + dvp] * d16[i][6]) + (v1[1 + dvp] * d16[i][7])\r
1488                 + (v1[0 + dvp] * d16[i][8]) + (v1[15 + dvp] * d16[i][9])\r
1489                 + (v1[14 + dvp] * d16[i][10]) + (v1[13 + dvp] * d16[i][11])\r
1490                 + (v1[12 + dvp] * d16[i][12]) + (v1[11 + dvp] * d16[i][13])\r
1491                 + (v1[10 + dvp] * d16[i][14]) + (v1[9 + dvp] * d16[i][15])) * scalefactor);\r
1492 \r
1493         _tmpOut[i] = pcm_sample;\r
1494 \r
1495         dvp += 16;\r
1496       } // for\r
1497     } else {\r
1498 \r
1499       // final float[] vp = actual_v;\r
1500 \r
1501       // int inc = v_inc;\r
1502       // final float[] tmpOut = _tmpOut;\r
1503       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1504 \r
1505       // fat chance of having this loop unroll\r
1506       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1507         // final float[] dp = d16[i];\r
1508         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1509 \r
1510         pcm_sample =\r
1511             (float) (((v2[8 + dvp] * d16[i][0]) + (v2[7 + dvp] * d16[i][1])\r
1512                 + (v2[6 + dvp] * d16[i][2]) + (v2[5 + dvp] * d16[i][3]) + (v2[4 + dvp] * d16[i][4])\r
1513                 + (v2[3 + dvp] * d16[i][5]) + (v2[2 + dvp] * d16[i][6]) + (v2[1 + dvp] * d16[i][7])\r
1514                 + (v2[0 + dvp] * d16[i][8]) + (v2[15 + dvp] * d16[i][9])\r
1515                 + (v2[14 + dvp] * d16[i][10]) + (v2[13 + dvp] * d16[i][11])\r
1516                 + (v2[12 + dvp] * d16[i][12]) + (v2[11 + dvp] * d16[i][13])\r
1517                 + (v2[10 + dvp] * d16[i][14]) + (v2[9 + dvp] * d16[i][15])) * scalefactor);\r
1518 \r
1519         _tmpOut[i] = pcm_sample;\r
1520 \r
1521         dvp += 16;\r
1522       } // for\r
1523     }\r
1524 \r
1525   }\r
1526 \r
1527   private void compute_pcm_samples9() {\r
1528 \r
1529     if (vidx == 1) {\r
1530       // final float[] vp = actual_v;\r
1531 \r
1532       // int inc = v_inc;\r
1533       // final float[] tmpOut = _tmpOut;\r
1534       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1535 \r
1536       // fat chance of having this loop unroll\r
1537       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1538         // final float[] dp = d16[i];\r
1539         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1540 \r
1541         pcm_sample =\r
1542             (float) (((v1[9 + dvp] * d16[i][0]) + (v1[8 + dvp] * d16[i][1])\r
1543                 + (v1[7 + dvp] * d16[i][2]) + (v1[6 + dvp] * d16[i][3]) + (v1[5 + dvp] * d16[i][4])\r
1544                 + (v1[4 + dvp] * d16[i][5]) + (v1[3 + dvp] * d16[i][6]) + (v1[2 + dvp] * d16[i][7])\r
1545                 + (v1[1 + dvp] * d16[i][8]) + (v1[0 + dvp] * d16[i][9])\r
1546                 + (v1[15 + dvp] * d16[i][10]) + (v1[14 + dvp] * d16[i][11])\r
1547                 + (v1[13 + dvp] * d16[i][12]) + (v1[12 + dvp] * d16[i][13])\r
1548                 + (v1[11 + dvp] * d16[i][14]) + (v1[10 + dvp] * d16[i][15])) * scalefactor);\r
1549 \r
1550         _tmpOut[i] = pcm_sample;\r
1551 \r
1552         dvp += 16;\r
1553       } // for\r
1554     } else {\r
1555       // final float[] vp = actual_v;\r
1556 \r
1557       // int inc = v_inc;\r
1558       // final float[] tmpOut = _tmpOut;\r
1559       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1560 \r
1561       // fat chance of having this loop unroll\r
1562       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1563         // final float[] dp = d16[i];\r
1564         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1565 \r
1566         pcm_sample =\r
1567             (float) (((v2[9 + dvp] * d16[i][0]) + (v2[8 + dvp] * d16[i][1])\r
1568                 + (v2[7 + dvp] * d16[i][2]) + (v2[6 + dvp] * d16[i][3]) + (v2[5 + dvp] * d16[i][4])\r
1569                 + (v2[4 + dvp] * d16[i][5]) + (v2[3 + dvp] * d16[i][6]) + (v2[2 + dvp] * d16[i][7])\r
1570                 + (v2[1 + dvp] * d16[i][8]) + (v2[0 + dvp] * d16[i][9])\r
1571                 + (v2[15 + dvp] * d16[i][10]) + (v2[14 + dvp] * d16[i][11])\r
1572                 + (v2[13 + dvp] * d16[i][12]) + (v2[12 + dvp] * d16[i][13])\r
1573                 + (v2[11 + dvp] * d16[i][14]) + (v2[10 + dvp] * d16[i][15])) * scalefactor);\r
1574 \r
1575         _tmpOut[i] = pcm_sample;\r
1576 \r
1577         dvp += 16;\r
1578       } // for\r
1579     }\r
1580 \r
1581   }\r
1582 \r
1583   private void compute_pcm_samples10() {\r
1584     if (vidx == 1) {\r
1585       // final float[] vp = actual_v;\r
1586       // int inc = v_inc;\r
1587       // final float[] tmpOut = _tmpOut;\r
1588       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1589 \r
1590       // fat chance of having this loop unroll\r
1591       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1592         // final float[] dp = d16[i];\r
1593         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1594 \r
1595         pcm_sample =\r
1596             (float) (((v1[10 + dvp] * d16[i][0]) + (v1[9 + dvp] * d16[i][1])\r
1597                 + (v1[8 + dvp] * d16[i][2]) + (v1[7 + dvp] * d16[i][3]) + (v1[6 + dvp] * d16[i][4])\r
1598                 + (v1[5 + dvp] * d16[i][5]) + (v1[4 + dvp] * d16[i][6]) + (v1[3 + dvp] * d16[i][7])\r
1599                 + (v1[2 + dvp] * d16[i][8]) + (v1[1 + dvp] * d16[i][9])\r
1600                 + (v1[0 + dvp] * d16[i][10]) + (v1[15 + dvp] * d16[i][11])\r
1601                 + (v1[14 + dvp] * d16[i][12]) + (v1[13 + dvp] * d16[i][13])\r
1602                 + (v1[12 + dvp] * d16[i][14]) + (v1[11 + dvp] * d16[i][15])) * scalefactor);\r
1603 \r
1604         _tmpOut[i] = pcm_sample;\r
1605 \r
1606         dvp += 16;\r
1607       } // for\r
1608     } else {\r
1609       // final float[] vp = actual_v;\r
1610       // int inc = v_inc;\r
1611       // final float[] tmpOut = _tmpOut;\r
1612       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1613 \r
1614       // fat chance of having this loop unroll\r
1615       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1616         // final float[] dp = d16[i];\r
1617         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1618 \r
1619         pcm_sample =\r
1620             (float) (((v2[10 + dvp] * d16[i][0]) + (v2[9 + dvp] * d16[i][1])\r
1621                 + (v2[8 + dvp] * d16[i][2]) + (v2[7 + dvp] * d16[i][3]) + (v2[6 + dvp] * d16[i][4])\r
1622                 + (v2[5 + dvp] * d16[i][5]) + (v2[4 + dvp] * d16[i][6]) + (v2[3 + dvp] * d16[i][7])\r
1623                 + (v2[2 + dvp] * d16[i][8]) + (v2[1 + dvp] * d16[i][9])\r
1624                 + (v2[0 + dvp] * d16[i][10]) + (v2[15 + dvp] * d16[i][11])\r
1625                 + (v2[14 + dvp] * d16[i][12]) + (v2[13 + dvp] * d16[i][13])\r
1626                 + (v2[12 + dvp] * d16[i][14]) + (v2[11 + dvp] * d16[i][15])) * scalefactor);\r
1627 \r
1628         _tmpOut[i] = pcm_sample;\r
1629 \r
1630         dvp += 16;\r
1631       } // for\r
1632     }\r
1633 \r
1634   }\r
1635 \r
1636   private void compute_pcm_samples11() {\r
1637 \r
1638     if (vidx == 1) {\r
1639       // final float[] vp = actual_v;\r
1640 \r
1641       // int inc = v_inc;\r
1642       // final float[] tmpOut = _tmpOut;\r
1643       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1644 \r
1645       // fat chance of having this loop unroll\r
1646       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1647         // final float[] dp = d16[i];\r
1648         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1649 \r
1650         pcm_sample =\r
1651             (float) (((v1[11 + dvp] * d16[i][0]) + (v1[10 + dvp] * d16[i][1])\r
1652                 + (v1[9 + dvp] * d16[i][2]) + (v1[8 + dvp] * d16[i][3]) + (v1[7 + dvp] * d16[i][4])\r
1653                 + (v1[6 + dvp] * d16[i][5]) + (v1[5 + dvp] * d16[i][6]) + (v1[4 + dvp] * d16[i][7])\r
1654                 + (v1[3 + dvp] * d16[i][8]) + (v1[2 + dvp] * d16[i][9])\r
1655                 + (v1[1 + dvp] * d16[i][10]) + (v1[0 + dvp] * d16[i][11])\r
1656                 + (v1[15 + dvp] * d16[i][12]) + (v1[14 + dvp] * d16[i][13])\r
1657                 + (v1[13 + dvp] * d16[i][14]) + (v1[12 + dvp] * d16[i][15])) * scalefactor);\r
1658 \r
1659         _tmpOut[i] = pcm_sample;\r
1660 \r
1661         dvp += 16;\r
1662       } // for\r
1663     } else {\r
1664       // final float[] vp = actual_v;\r
1665 \r
1666       // int inc = v_inc;\r
1667       // final float[] tmpOut = _tmpOut;\r
1668       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1669 \r
1670       // fat chance of having this loop unroll\r
1671       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1672         // final float[] dp = d16[i];\r
1673         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1674 \r
1675         pcm_sample =\r
1676             (float) (((v2[11 + dvp] * d16[i][0]) + (v2[10 + dvp] * d16[i][1])\r
1677                 + (v2[9 + dvp] * d16[i][2]) + (v2[8 + dvp] * d16[i][3]) + (v2[7 + dvp] * d16[i][4])\r
1678                 + (v2[6 + dvp] * d16[i][5]) + (v2[5 + dvp] * d16[i][6]) + (v2[4 + dvp] * d16[i][7])\r
1679                 + (v2[3 + dvp] * d16[i][8]) + (v2[2 + dvp] * d16[i][9])\r
1680                 + (v2[1 + dvp] * d16[i][10]) + (v2[0 + dvp] * d16[i][11])\r
1681                 + (v2[15 + dvp] * d16[i][12]) + (v2[14 + dvp] * d16[i][13])\r
1682                 + (v2[13 + dvp] * d16[i][14]) + (v2[12 + dvp] * d16[i][15])) * scalefactor);\r
1683 \r
1684         _tmpOut[i] = pcm_sample;\r
1685 \r
1686         dvp += 16;\r
1687       } // for\r
1688     }\r
1689 \r
1690   }\r
1691 \r
1692   private void compute_pcm_samples12() {\r
1693 \r
1694     if (vidx == 1) {\r
1695       // final float[] vp = actual_v;\r
1696       // int inc = v_inc;\r
1697       // final float[] tmpOut = _tmpOut;\r
1698       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1699 \r
1700       // fat chance of having this loop unroll\r
1701       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1702         // final float[] dp = d16[i];\r
1703         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1704 \r
1705         pcm_sample =\r
1706             (float) (((v1[12 + dvp] * d16[i][0]) + (v1[11 + dvp] * d16[i][1])\r
1707                 + (v1[10 + dvp] * d16[i][2]) + (v1[9 + dvp] * d16[i][3])\r
1708                 + (v1[8 + dvp] * d16[i][4]) + (v1[7 + dvp] * d16[i][5]) + (v1[6 + dvp] * d16[i][6])\r
1709                 + (v1[5 + dvp] * d16[i][7]) + (v1[4 + dvp] * d16[i][8]) + (v1[3 + dvp] * d16[i][9])\r
1710                 + (v1[2 + dvp] * d16[i][10]) + (v1[1 + dvp] * d16[i][11])\r
1711                 + (v1[0 + dvp] * d16[i][12]) + (v1[15 + dvp] * d16[i][13])\r
1712                 + (v1[14 + dvp] * d16[i][14]) + (v1[13 + dvp] * d16[i][15])) * scalefactor);\r
1713 \r
1714         _tmpOut[i] = pcm_sample;\r
1715 \r
1716         dvp += 16;\r
1717       } // for\r
1718     } else {\r
1719       // final float[] vp = actual_v;\r
1720       // int inc = v_inc;\r
1721       // final float[] tmpOut = _tmpOut;\r
1722       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1723 \r
1724       // fat chance of having this loop unroll\r
1725       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1726         // final float[] dp = d16[i];\r
1727         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1728 \r
1729         pcm_sample =\r
1730             (float) (((v2[12 + dvp] * d16[i][0]) + (v2[11 + dvp] * d16[i][1])\r
1731                 + (v2[10 + dvp] * d16[i][2]) + (v2[9 + dvp] * d16[i][3])\r
1732                 + (v2[8 + dvp] * d16[i][4]) + (v2[7 + dvp] * d16[i][5]) + (v2[6 + dvp] * d16[i][6])\r
1733                 + (v2[5 + dvp] * d16[i][7]) + (v2[4 + dvp] * d16[i][8]) + (v2[3 + dvp] * d16[i][9])\r
1734                 + (v2[2 + dvp] * d16[i][10]) + (v2[1 + dvp] * d16[i][11])\r
1735                 + (v2[0 + dvp] * d16[i][12]) + (v2[15 + dvp] * d16[i][13])\r
1736                 + (v2[14 + dvp] * d16[i][14]) + (v2[13 + dvp] * d16[i][15])) * scalefactor);\r
1737 \r
1738         _tmpOut[i] = pcm_sample;\r
1739 \r
1740         dvp += 16;\r
1741       } // for\r
1742     }\r
1743 \r
1744   }\r
1745 \r
1746   private void compute_pcm_samples13() {\r
1747 \r
1748     if (vidx == 1) {\r
1749       // final float[] vp = actual_v;\r
1750 \r
1751       // int inc = v_inc;\r
1752       // final float[] tmpOut = _tmpOut;\r
1753       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1754 \r
1755       // fat chance of having this loop unroll\r
1756       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1757         // final float[] dp = d16[i];\r
1758         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1759 \r
1760         pcm_sample =\r
1761             (float) (((v1[13 + dvp] * d16[i][0]) + (v1[12 + dvp] * d16[i][1])\r
1762                 + (v1[11 + dvp] * d16[i][2]) + (v1[10 + dvp] * d16[i][3])\r
1763                 + (v1[9 + dvp] * d16[i][4]) + (v1[8 + dvp] * d16[i][5]) + (v1[7 + dvp] * d16[i][6])\r
1764                 + (v1[6 + dvp] * d16[i][7]) + (v1[5 + dvp] * d16[i][8]) + (v1[4 + dvp] * d16[i][9])\r
1765                 + (v1[3 + dvp] * d16[i][10]) + (v1[2 + dvp] * d16[i][11])\r
1766                 + (v1[1 + dvp] * d16[i][12]) + (v1[0 + dvp] * d16[i][13])\r
1767                 + (v1[15 + dvp] * d16[i][14]) + (v1[14 + dvp] * d16[i][15])) * scalefactor);\r
1768 \r
1769         _tmpOut[i] = pcm_sample;\r
1770 \r
1771         dvp += 16;\r
1772       } // for\r
1773     } else {\r
1774       // final float[] vp = actual_v;\r
1775 \r
1776       // int inc = v_inc;\r
1777       // final float[] tmpOut = _tmpOut;\r
1778       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1779 \r
1780       // fat chance of having this loop unroll\r
1781       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1782         // final float[] dp = d16[i];\r
1783         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1784 \r
1785         pcm_sample =\r
1786             (float) (((v2[13 + dvp] * d16[i][0]) + (v2[12 + dvp] * d16[i][1])\r
1787                 + (v2[11 + dvp] * d16[i][2]) + (v2[10 + dvp] * d16[i][3])\r
1788                 + (v2[9 + dvp] * d16[i][4]) + (v2[8 + dvp] * d16[i][5]) + (v2[7 + dvp] * d16[i][6])\r
1789                 + (v2[6 + dvp] * d16[i][7]) + (v2[5 + dvp] * d16[i][8]) + (v2[4 + dvp] * d16[i][9])\r
1790                 + (v2[3 + dvp] * d16[i][10]) + (v2[2 + dvp] * d16[i][11])\r
1791                 + (v2[1 + dvp] * d16[i][12]) + (v2[0 + dvp] * d16[i][13])\r
1792                 + (v2[15 + dvp] * d16[i][14]) + (v2[14 + dvp] * d16[i][15])) * scalefactor);\r
1793 \r
1794         _tmpOut[i] = pcm_sample;\r
1795 \r
1796         dvp += 16;\r
1797       } // for\r
1798     }\r
1799 \r
1800   }\r
1801 \r
1802   private void compute_pcm_samples14() {\r
1803 \r
1804     if (vidx == 1) {\r
1805       // final float[] vp = actual_v;\r
1806 \r
1807       // int inc = v_inc;\r
1808       // final float[] tmpOut = _tmpOut;\r
1809       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1810 \r
1811       // fat chance of having this loop unroll\r
1812       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1813         // final float[] dp = d16[i];\r
1814         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1815 \r
1816         pcm_sample =\r
1817             (float) (((v1[14 + dvp] * d16[i][0]) + (v1[13 + dvp] * d16[i][1])\r
1818                 + (v1[12 + dvp] * d16[i][2]) + (v1[11 + dvp] * d16[i][3])\r
1819                 + (v1[10 + dvp] * d16[i][4]) + (v1[9 + dvp] * d16[i][5])\r
1820                 + (v1[8 + dvp] * d16[i][6]) + (v1[7 + dvp] * d16[i][7]) + (v1[6 + dvp] * d16[i][8])\r
1821                 + (v1[5 + dvp] * d16[i][9]) + (v1[4 + dvp] * d16[i][10])\r
1822                 + (v1[3 + dvp] * d16[i][11]) + (v1[2 + dvp] * d16[i][12])\r
1823                 + (v1[1 + dvp] * d16[i][13]) + (v1[0 + dvp] * d16[i][14]) + (v1[15 + dvp] * d16[i][15])) * scalefactor);\r
1824 \r
1825         _tmpOut[i] = pcm_sample;\r
1826 \r
1827         dvp += 16;\r
1828       } // for\r
1829     } else {\r
1830       // final float[] vp = actual_v;\r
1831 \r
1832       // int inc = v_inc;\r
1833       // final float[] tmpOut = _tmpOut;\r
1834       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1835 \r
1836       // fat chance of having this loop unroll\r
1837       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1838         // final float[] dp = d16[i];\r
1839         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1840 \r
1841         pcm_sample =\r
1842             (float) (((v2[14 + dvp] * d16[i][0]) + (v2[13 + dvp] * d16[i][1])\r
1843                 + (v2[12 + dvp] * d16[i][2]) + (v2[11 + dvp] * d16[i][3])\r
1844                 + (v2[10 + dvp] * d16[i][4]) + (v2[9 + dvp] * d16[i][5])\r
1845                 + (v2[8 + dvp] * d16[i][6]) + (v2[7 + dvp] * d16[i][7]) + (v2[6 + dvp] * d16[i][8])\r
1846                 + (v2[5 + dvp] * d16[i][9]) + (v2[4 + dvp] * d16[i][10])\r
1847                 + (v2[3 + dvp] * d16[i][11]) + (v2[2 + dvp] * d16[i][12])\r
1848                 + (v2[1 + dvp] * d16[i][13]) + (v2[0 + dvp] * d16[i][14]) + (v2[15 + dvp] * d16[i][15])) * scalefactor);\r
1849 \r
1850         _tmpOut[i] = pcm_sample;\r
1851 \r
1852         dvp += 16;\r
1853       } // for\r
1854     }\r
1855 \r
1856   }\r
1857 \r
1858   private void compute_pcm_samples15() {\r
1859     if (vidx == 1) {\r
1860       // final float[] vp = actual_v;\r
1861 \r
1862       // int inc = v_inc;\r
1863       // final float[] tmpOut = _tmpOut;\r
1864       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1865 \r
1866       // fat chance of having this loop unroll\r
1867       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1868         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1869         // final float d16[i][] = d16[i];\r
1870         pcm_sample =\r
1871             (float) (((v1[15 + dvp] * d16[i][0]) + (v1[14 + dvp] * d16[i][1])\r
1872                 + (v1[13 + dvp] * d16[i][2]) + (v1[12 + dvp] * d16[i][3])\r
1873                 + (v1[11 + dvp] * d16[i][4]) + (v1[10 + dvp] * d16[i][5])\r
1874                 + (v1[9 + dvp] * d16[i][6]) + (v1[8 + dvp] * d16[i][7]) + (v1[7 + dvp] * d16[i][8])\r
1875                 + (v1[6 + dvp] * d16[i][9]) + (v1[5 + dvp] * d16[i][10])\r
1876                 + (v1[4 + dvp] * d16[i][11]) + (v1[3 + dvp] * d16[i][12])\r
1877                 + (v1[2 + dvp] * d16[i][13]) + (v1[1 + dvp] * d16[i][14]) + (v1[0 + dvp] * d16[i][15])) * scalefactor);\r
1878 \r
1879         _tmpOut[i] = pcm_sample;\r
1880         dvp += 16;\r
1881       } // for\r
1882     } else {\r
1883       // final float[] vp = actual_v;\r
1884 \r
1885       // int inc = v_inc;\r
1886       // final float[] tmpOut = _tmpOut;\r
1887       @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0;\r
1888 \r
1889       // fat chance of having this loop unroll\r
1890       for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) {\r
1891         @LOC("THIS,SynthesisFilter.V2") float pcm_sample;\r
1892         // final float d16[i][] = d16[i];\r
1893         pcm_sample =\r
1894             (float) (((v2[15 + dvp] * d16[i][0]) + (v2[14 + dvp] * d16[i][1])\r
1895                 + (v2[13 + dvp] * d16[i][2]) + (v2[12 + dvp] * d16[i][3])\r
1896                 + (v2[11 + dvp] * d16[i][4]) + (v2[10 + dvp] * d16[i][5])\r
1897                 + (v2[9 + dvp] * d16[i][6]) + (v2[8 + dvp] * d16[i][7]) + (v2[7 + dvp] * d16[i][8])\r
1898                 + (v2[6 + dvp] * d16[i][9]) + (v2[5 + dvp] * d16[i][10])\r
1899                 + (v2[4 + dvp] * d16[i][11]) + (v2[3 + dvp] * d16[i][12])\r
1900                 + (v2[2 + dvp] * d16[i][13]) + (v2[1 + dvp] * d16[i][14]) + (v2[0 + dvp] * d16[i][15])) * scalefactor);\r
1901 \r
1902         _tmpOut[i] = pcm_sample;\r
1903         dvp += 16;\r
1904       } // for\r
1905     }\r
1906 \r
1907   }\r
1908 \r
1909   private void compute_pcm_samples() {\r
1910 \r
1911     switch (actual_write_pos) {\r
1912     case 0:\r
1913       compute_pcm_samples0();\r
1914       break;\r
1915     case 1:\r
1916       compute_pcm_samples1();\r
1917       break;\r
1918     case 2:\r
1919       compute_pcm_samples2();\r
1920       break;\r
1921     case 3:\r
1922       compute_pcm_samples3();\r
1923       break;\r
1924     case 4:\r
1925       compute_pcm_samples4();\r
1926       break;\r
1927     case 5:\r
1928       compute_pcm_samples5();\r
1929       break;\r
1930     case 6:\r
1931       compute_pcm_samples6();\r
1932       break;\r
1933     case 7:\r
1934       compute_pcm_samples7();\r
1935       break;\r
1936     case 8:\r
1937       compute_pcm_samples8();\r
1938       break;\r
1939     case 9:\r
1940       compute_pcm_samples9();\r
1941       break;\r
1942     case 10:\r
1943       compute_pcm_samples10();\r
1944       break;\r
1945     case 11:\r
1946       compute_pcm_samples11();\r
1947       break;\r
1948     case 12:\r
1949       compute_pcm_samples12();\r
1950       break;\r
1951     case 13:\r
1952       compute_pcm_samples13();\r
1953       break;\r
1954     case 14:\r
1955       compute_pcm_samples14();\r
1956       break;\r
1957     case 15:\r
1958       compute_pcm_samples15();\r
1959       break;\r
1960     }\r
1961 \r
1962     // if (buffer != null) {\r
1963     // buffer.appendSamples(channel, _tmpOut);\r
1964     // }\r
1965     SampleBufferWrapper.appendSamples(channel, _tmpOut);\r
1966 \r
1967     /*\r
1968      * // MDM: I was considering putting in quality control for // low-spec\r
1969      * CPUs, but the performance gain (about 10-15%) // did not justify the\r
1970      * considerable drop in audio quality. switch (inc) { case 16:\r
1971      * buffer.appendSamples(channel, tmpOut); break; case 32: for (int i=0;\r
1972      * i<16; i++) { buffer.append(channel, (short)tmpOut[i]);\r
1973      * buffer.append(channel, (short)tmpOut[i]); } break; case 64: for (int i=0;\r
1974      * i<8; i++) { buffer.append(channel, (short)tmpOut[i]);\r
1975      * buffer.append(channel, (short)tmpOut[i]); buffer.append(channel,\r
1976      * (short)tmpOut[i]); buffer.append(channel, (short)tmpOut[i]); } break;\r
1977      * \r
1978      * }\r
1979      */\r
1980   }\r
1981 \r
1982   @LATTICE("THIS<C,C*,THISLOC=THIS")\r
1983   public void clear() {\r
1984     // clear out v1,v2\r
1985     SSJAVA.arrayinit(v1, 0);\r
1986     SSJAVA.arrayinit(v2, 0);\r
1987     // copy previous v1,v2\r
1988     for (@LOC("THIS,SynthesisFilter.V") int i = 0; i < prev1.length; i++) {\r
1989       v1[i] = prev1[i];\r
1990     }\r
1991     for (@LOC("THIS,SynthesisFilter.V") int i = 0; i < prev2.length; i++) {\r
1992       v2[i] = prev2[i];\r
1993     }\r
1994     // clear out previous buffer\r
1995     SSJAVA.arrayinit(prev1, 0);\r
1996     SSJAVA.arrayinit(prev2, 0);\r
1997   }\r
1998 \r
1999   /**\r
2000    * Calculate 32 PCM samples and put the into the Obuffer-object.\r
2001    */\r
2002 \r
2003   public void calculate_pcm_samples() {\r
2004 \r
2005     if (vidx == 1) {\r
2006       compute_new_v1_v2();\r
2007     } else {\r
2008       compute_new_v2_v1();\r
2009     }\r
2010 \r
2011     // System.out.println("1.actual_v=" + (actual_v == v1) + " vidx=" + vidx);\r
2012     // compute_new_v();\r
2013     // System.out.println("2.actual_v=" + (actual_v == v1) + " vidx=" + vidx);\r
2014     compute_pcm_samples();\r
2015     // System.out.println("3.actual_v=" + (actual_v == v1) + " vidx=" + vidx);\r
2016 \r
2017     actual_write_pos = (actual_write_pos + 1) & 0xf;\r
2018     // System.out.println("actual_write_pos="+actual_write_pos);\r
2019     // actual_v = (actual_v == v1) ? v2 : v1;\r
2020 \r
2021     if (vidx == 1) {\r
2022       vidx = 2;\r
2023     } else {\r
2024       vidx = 1;\r
2025     }\r
2026 \r
2027     // initialize samples[]:\r
2028     // for (register float *floatp = samples + 32; floatp > samples; )\r
2029     // *--floatp = 0.0f;\r
2030 \r
2031     // MDM: this may not be necessary. The Layer III decoder always\r
2032     // outputs 32 subband samples, but I haven't checked layer I & II.\r
2033     for (@LOC("C") int p = 0; p < 32; p++)\r
2034       samples[p] = 0.0f;\r
2035   }\r
2036 \r
2037   private static final double MY_PI = 3.14159265358979323846;\r
2038   private static final float cos1_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI / 64.0)));\r
2039   private static final float cos3_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 3.0 / 64.0)));\r
2040   private static final float cos5_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 5.0 / 64.0)));\r
2041   private static final float cos7_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 7.0 / 64.0)));\r
2042   private static final float cos9_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 9.0 / 64.0)));\r
2043   private static final float cos11_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 11.0 / 64.0)));\r
2044   private static final float cos13_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 13.0 / 64.0)));\r
2045   private static final float cos15_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 15.0 / 64.0)));\r
2046   private static final float cos17_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 17.0 / 64.0)));\r
2047   private static final float cos19_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 19.0 / 64.0)));\r
2048   private static final float cos21_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 21.0 / 64.0)));\r
2049   private static final float cos23_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 23.0 / 64.0)));\r
2050   private static final float cos25_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 25.0 / 64.0)));\r
2051   private static final float cos27_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 27.0 / 64.0)));\r
2052   private static final float cos29_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 29.0 / 64.0)));\r
2053   private static final float cos31_64 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 31.0 / 64.0)));\r
2054   private static final float cos1_32 = (float) (1.0 / (2.0 * Math.cos(MY_PI / 32.0)));\r
2055   private static final float cos3_32 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 3.0 / 32.0)));\r
2056   private static final float cos5_32 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 5.0 / 32.0)));\r
2057   private static final float cos7_32 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 7.0 / 32.0)));\r
2058   private static final float cos9_32 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 9.0 / 32.0)));\r
2059   private static final float cos11_32 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 11.0 / 32.0)));\r
2060   private static final float cos13_32 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 13.0 / 32.0)));\r
2061   private static final float cos15_32 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 15.0 / 32.0)));\r
2062   private static final float cos1_16 = (float) (1.0 / (2.0 * Math.cos(MY_PI / 16.0)));\r
2063   private static final float cos3_16 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 3.0 / 16.0)));\r
2064   private static final float cos5_16 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 5.0 / 16.0)));\r
2065   private static final float cos7_16 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 7.0 / 16.0)));\r
2066   private static final float cos1_8 = (float) (1.0 / (2.0 * Math.cos(MY_PI / 8.0)));\r
2067   private static final float cos3_8 = (float) (1.0 / (2.0 * Math.cos(MY_PI * 3.0 / 8.0)));\r
2068   private static final float cos1_4 = (float) (1.0 / (2.0 * Math.cos(MY_PI / 4.0)));\r
2069 \r
2070   // Note: These values are not in the same order\r
2071   // as in Annex 3-B.3 of the ISO/IEC DIS 11172-3\r
2072   // private float d[] = {0.000000000, -4.000442505};\r
2073 \r
2074   /**\r
2075    * d[] split into subarrays of length 16. This provides for more faster access\r
2076    * by allowing a block of 16 to be addressed with constant offset.\r
2077    **/\r
2078   // TODO CONST\r
2079   @LOC("V")\r
2080   private final static float d16[][] = null;\r
2081 \r
2082   /**\r
2083    * Converts a 1D array into a number of smaller arrays. This is used to\r
2084    * achieve offset + constant indexing into an array. Each sub-array represents\r
2085    * a block of values of the original array.\r
2086    * \r
2087    * @param array\r
2088    *          The array to split up into blocks.\r
2089    * @param blockSize\r
2090    *          The size of the blocks to split the array into. This must be an\r
2091    *          exact divisor of the length of the array, or some data will be\r
2092    *          lost from the main array.\r
2093    * \r
2094    * @return An array of arrays in which each element in the returned array will\r
2095    *         be of length <code>blockSize</code>.\r
2096    */\r
2097   static private float[][] splitArray(final float[] array, final int blockSize) {\r
2098     int size = array.length / blockSize;\r
2099     float[][] split = new float[size][];\r
2100     for (int i = 0; i < size; i++) {\r
2101       split[i] = subArray(array, i * blockSize, blockSize);\r
2102     }\r
2103     return split;\r
2104   }\r
2105 \r
2106   /**\r
2107    * Returns a subarray of an existing array.\r
2108    * \r
2109    * @param array\r
2110    *          The array to retrieve a subarra from.\r
2111    * @param offs\r
2112    *          The offset in the array that corresponds to the first index of the\r
2113    *          subarray.\r
2114    * @param len\r
2115    *          The number of indeces in the subarray.\r
2116    * @return The subarray, which may be of length 0.\r
2117    */\r
2118   static private float[] subArray(final float[] array, final int offs, int len) {\r
2119     if (offs + len > array.length) {\r
2120       len = array.length - offs;\r
2121     }\r
2122 \r
2123     if (len < 0)\r
2124       len = 0;\r
2125 \r
2126     float[] subarray = new float[len];\r
2127     for (int i = 0; i < len; i++) {\r
2128       subarray[i] = array[offs + i];\r
2129     }\r
2130 \r
2131     return subarray;\r
2132   }\r
2133 \r
2134   // The original data for d[]. This data is loaded from a file\r
2135   // to reduce the overall package size and to improve performance.\r
2136 \r
2137   static final float d[] = { 0.000000000f, -0.000442505f, 0.003250122f, -0.007003784f,\r
2138       0.031082153f, -0.078628540f, 0.100311279f, -0.572036743f, 1.144989014f, 0.572036743f,\r
2139       0.100311279f, 0.078628540f, 0.031082153f, 0.007003784f, 0.003250122f, 0.000442505f,\r
2140       -0.000015259f, -0.000473022f, 0.003326416f, -0.007919312f, 0.030517578f, -0.084182739f,\r
2141       0.090927124f, -0.600219727f, 1.144287109f, 0.543823242f, 0.108856201f, 0.073059082f,\r
2142       0.031478882f, 0.006118774f, 0.003173828f, 0.000396729f, -0.000015259f, -0.000534058f,\r
2143       0.003387451f, -0.008865356f, 0.029785156f, -0.089706421f, 0.080688477f, -0.628295898f,\r
2144       1.142211914f, 0.515609741f, 0.116577148f, 0.067520142f, 0.031738281f, 0.005294800f,\r
2145       0.003082275f, 0.000366211f, -0.000015259f, -0.000579834f, 0.003433228f, -0.009841919f,\r
2146       0.028884888f, -0.095169067f, 0.069595337f, -0.656219482f, 1.138763428f, 0.487472534f,\r
2147       0.123474121f, 0.061996460f, 0.031845093f, 0.004486084f, 0.002990723f, 0.000320435f,\r
2148       -0.000015259f, -0.000625610f, 0.003463745f, -0.010848999f, 0.027801514f, -0.100540161f,\r
2149       0.057617188f, -0.683914185f, 1.133926392f, 0.459472656f, 0.129577637f, 0.056533813f,\r
2150       0.031814575f, 0.003723145f, 0.002899170f, 0.000289917f, -0.000015259f, -0.000686646f,\r
2151       0.003479004f, -0.011886597f, 0.026535034f, -0.105819702f, 0.044784546f, -0.711318970f,\r
2152       1.127746582f, 0.431655884f, 0.134887695f, 0.051132202f, 0.031661987f, 0.003005981f,\r
2153       0.002792358f, 0.000259399f, -0.000015259f, -0.000747681f, 0.003479004f, -0.012939453f,\r
2154       0.025085449f, -0.110946655f, 0.031082153f, -0.738372803f, 1.120223999f, 0.404083252f,\r
2155       0.139450073f, 0.045837402f, 0.031387329f, 0.002334595f, 0.002685547f, 0.000244141f,\r
2156       -0.000030518f, -0.000808716f, 0.003463745f, -0.014022827f, 0.023422241f, -0.115921021f,\r
2157       0.016510010f, -0.765029907f, 1.111373901f, 0.376800537f, 0.143264771f, 0.040634155f,\r
2158       0.031005859f, 0.001693726f, 0.002578735f, 0.000213623f, -0.000030518f, -0.000885010f,\r
2159       0.003417969f, -0.015121460f, 0.021575928f, -0.120697021f, 0.001068115f, -0.791213989f,\r
2160       1.101211548f, 0.349868774f, 0.146362305f, 0.035552979f, 0.030532837f, 0.001098633f,\r
2161       0.002456665f, 0.000198364f, -0.000030518f, -0.000961304f, 0.003372192f, -0.016235352f,\r
2162       0.019531250f, -0.125259399f, -0.015228271f, -0.816864014f, 1.089782715f, 0.323318481f,\r
2163       0.148773193f, 0.030609131f, 0.029937744f, 0.000549316f, 0.002349854f, 0.000167847f,\r
2164       -0.000030518f, -0.001037598f, 0.003280640f, -0.017349243f, 0.017257690f, -0.129562378f,\r
2165       -0.032379150f, -0.841949463f, 1.077117920f, 0.297210693f, 0.150497437f, 0.025817871f,\r
2166       0.029281616f, 0.000030518f, 0.002243042f, 0.000152588f, -0.000045776f, -0.001113892f,\r
2167       0.003173828f, -0.018463135f, 0.014801025f, -0.133590698f, -0.050354004f, -0.866363525f,\r
2168       1.063217163f, 0.271591187f, 0.151596069f, 0.021179199f, 0.028533936f, -0.000442505f,\r
2169       0.002120972f, 0.000137329f, -0.000045776f, -0.001205444f, 0.003051758f, -0.019577026f,\r
2170       0.012115479f, -0.137298584f, -0.069168091f, -0.890090942f, 1.048156738f, 0.246505737f,\r
2171       0.152069092f, 0.016708374f, 0.027725220f, -0.000869751f, 0.002014160f, 0.000122070f,\r
2172       -0.000061035f, -0.001296997f, 0.002883911f, -0.020690918f, 0.009231567f, -0.140670776f,\r
2173       -0.088775635f, -0.913055420f, 1.031936646f, 0.221984863f, 0.151962280f, 0.012420654f,\r
2174       0.026840210f, -0.001266479f, 0.001907349f, 0.000106812f, -0.000061035f, -0.001388550f,\r
2175       0.002700806f, -0.021789551f, 0.006134033f, -0.143676758f, -0.109161377f, -0.935195923f,\r
2176       1.014617920f, 0.198059082f, 0.151306152f, 0.008316040f, 0.025909424f, -0.001617432f,\r
2177       0.001785278f, 0.000106812f, -0.000076294f, -0.001480103f, 0.002487183f, -0.022857666f,\r
2178       0.002822876f, -0.146255493f, -0.130310059f, -0.956481934f, 0.996246338f, 0.174789429f,\r
2179       0.150115967f, 0.004394531f, 0.024932861f, -0.001937866f, 0.001693726f, 0.000091553f,\r
2180       -0.000076294f, -0.001586914f, 0.002227783f, -0.023910522f, -0.000686646f, -0.148422241f,\r
2181       -0.152206421f, -0.976852417f, 0.976852417f, 0.152206421f, 0.148422241f, 0.000686646f,\r
2182       0.023910522f, -0.002227783f, 0.001586914f, 0.000076294f, -0.000091553f, -0.001693726f,\r
2183       0.001937866f, -0.024932861f, -0.004394531f, -0.150115967f, -0.174789429f, -0.996246338f,\r
2184       0.956481934f, 0.130310059f, 0.146255493f, -0.002822876f, 0.022857666f, -0.002487183f,\r
2185       0.001480103f, 0.000076294f, -0.000106812f, -0.001785278f, 0.001617432f, -0.025909424f,\r
2186       -0.008316040f, -0.151306152f, -0.198059082f, -1.014617920f, 0.935195923f, 0.109161377f,\r
2187       0.143676758f, -0.006134033f, 0.021789551f, -0.002700806f, 0.001388550f, 0.000061035f,\r
2188       -0.000106812f, -0.001907349f, 0.001266479f, -0.026840210f, -0.012420654f, -0.151962280f,\r
2189       -0.221984863f, -1.031936646f, 0.913055420f, 0.088775635f, 0.140670776f, -0.009231567f,\r
2190       0.020690918f, -0.002883911f, 0.001296997f, 0.000061035f, -0.000122070f, -0.002014160f,\r
2191       0.000869751f, -0.027725220f, -0.016708374f, -0.152069092f, -0.246505737f, -1.048156738f,\r
2192       0.890090942f, 0.069168091f, 0.137298584f, -0.012115479f, 0.019577026f, -0.003051758f,\r
2193       0.001205444f, 0.000045776f, -0.000137329f, -0.002120972f, 0.000442505f, -0.028533936f,\r
2194       -0.021179199f, -0.151596069f, -0.271591187f, -1.063217163f, 0.866363525f, 0.050354004f,\r
2195       0.133590698f, -0.014801025f, 0.018463135f, -0.003173828f, 0.001113892f, 0.000045776f,\r
2196       -0.000152588f, -0.002243042f, -0.000030518f, -0.029281616f, -0.025817871f, -0.150497437f,\r
2197       -0.297210693f, -1.077117920f, 0.841949463f, 0.032379150f, 0.129562378f, -0.017257690f,\r
2198       0.017349243f, -0.003280640f, 0.001037598f, 0.000030518f, -0.000167847f, -0.002349854f,\r
2199       -0.000549316f, -0.029937744f, -0.030609131f, -0.148773193f, -0.323318481f, -1.089782715f,\r
2200       0.816864014f, 0.015228271f, 0.125259399f, -0.019531250f, 0.016235352f, -0.003372192f,\r
2201       0.000961304f, 0.000030518f, -0.000198364f, -0.002456665f, -0.001098633f, -0.030532837f,\r
2202       -0.035552979f, -0.146362305f, -0.349868774f, -1.101211548f, 0.791213989f, -0.001068115f,\r
2203       0.120697021f, -0.021575928f, 0.015121460f, -0.003417969f, 0.000885010f, 0.000030518f,\r
2204       -0.000213623f, -0.002578735f, -0.001693726f, -0.031005859f, -0.040634155f, -0.143264771f,\r
2205       -0.376800537f, -1.111373901f, 0.765029907f, -0.016510010f, 0.115921021f, -0.023422241f,\r
2206       0.014022827f, -0.003463745f, 0.000808716f, 0.000030518f, -0.000244141f, -0.002685547f,\r
2207       -0.002334595f, -0.031387329f, -0.045837402f, -0.139450073f, -0.404083252f, -1.120223999f,\r
2208       0.738372803f, -0.031082153f, 0.110946655f, -0.025085449f, 0.012939453f, -0.003479004f,\r
2209       0.000747681f, 0.000015259f, -0.000259399f, -0.002792358f, -0.003005981f, -0.031661987f,\r
2210       -0.051132202f, -0.134887695f, -0.431655884f, -1.127746582f, 0.711318970f, -0.044784546f,\r
2211       0.105819702f, -0.026535034f, 0.011886597f, -0.003479004f, 0.000686646f, 0.000015259f,\r
2212       -0.000289917f, -0.002899170f, -0.003723145f, -0.031814575f, -0.056533813f, -0.129577637f,\r
2213       -0.459472656f, -1.133926392f, 0.683914185f, -0.057617188f, 0.100540161f, -0.027801514f,\r
2214       0.010848999f, -0.003463745f, 0.000625610f, 0.000015259f, -0.000320435f, -0.002990723f,\r
2215       -0.004486084f, -0.031845093f, -0.061996460f, -0.123474121f, -0.487472534f, -1.138763428f,\r
2216       0.656219482f, -0.069595337f, 0.095169067f, -0.028884888f, 0.009841919f, -0.003433228f,\r
2217       0.000579834f, 0.000015259f, -0.000366211f, -0.003082275f, -0.005294800f, -0.031738281f,\r
2218       -0.067520142f, -0.116577148f, -0.515609741f, -1.142211914f, 0.628295898f, -0.080688477f,\r
2219       0.089706421f, -0.029785156f, 0.008865356f, -0.003387451f, 0.000534058f, 0.000015259f,\r
2220       -0.000396729f, -0.003173828f, -0.006118774f, -0.031478882f, -0.073059082f, -0.108856201f,\r
2221       -0.543823242f, -1.144287109f, 0.600219727f, -0.090927124f, 0.084182739f, -0.030517578f,\r
2222       0.007919312f, -0.003326416f, 0.000473022f, 0.000015259f };\r
2223 \r
2224 }\r