comparison Plugins/Input/mpg123/dct64_i386.c @ 970:0f294f2b0a9b trunk

[svn] - integer-mode decoding accuracy improvements
author nenolod
date Wed, 26 Apr 2006 10:54:58 -0700
parents fa848bd484d8
children b5ae09a6c2f1
comparison
equal deleted inserted replaced
969:971bd2b03ff5 970:0f294f2b0a9b
8 */ 8 */
9 9
10 #include "mpg123.h" 10 #include "mpg123.h"
11 11
12 static void 12 static void
13 mpg123_dct64_1(real * out0, real * out1, real * b1, real * b2, real * samples) 13 mpg123_dct64_1(mpgdec_real * out0, mpgdec_real * out1, mpgdec_real * b1, mpgdec_real * b2, mpgdec_real * samples)
14 { 14 {
15 15
16 { 16 {
17 register real *costab = mpg123_pnts[0]; 17 register mpgdec_real *costab = mpg123_pnts[0];
18 18
19 b1[0x00] = samples[0x00] + samples[0x1F]; 19 b1[0x00] = samples[0x00] + samples[0x1F];
20 b1[0x1F] = (samples[0x00] - samples[0x1F]) * costab[0x0]; 20 b1[0x1F] = (samples[0x00] - samples[0x1F]) * costab[0x0];
21 21
22 b1[0x01] = samples[0x01] + samples[0x1E]; 22 b1[0x01] = samples[0x01] + samples[0x1E];
64 b1[0x0F] = samples[0x0F] + samples[0x10]; 64 b1[0x0F] = samples[0x0F] + samples[0x10];
65 b1[0x10] = (samples[0x0F] - samples[0x10]) * costab[0xF]; 65 b1[0x10] = (samples[0x0F] - samples[0x10]) * costab[0xF];
66 } 66 }
67 67
68 { 68 {
69 register real *costab = mpg123_pnts[1]; 69 register mpgdec_real *costab = mpg123_pnts[1];
70 70
71 b2[0x00] = b1[0x00] + b1[0x0F]; 71 b2[0x00] = b1[0x00] + b1[0x0F];
72 b2[0x0F] = (b1[0x00] - b1[0x0F]) * costab[0]; 72 b2[0x0F] = (b1[0x00] - b1[0x0F]) * costab[0];
73 b2[0x01] = b1[0x01] + b1[0x0E]; 73 b2[0x01] = b1[0x01] + b1[0x0E];
74 b2[0x0E] = (b1[0x01] - b1[0x0E]) * costab[1]; 74 b2[0x0E] = (b1[0x01] - b1[0x0E]) * costab[1];
102 b2[0x17] = b1[0x17] + b1[0x18]; 102 b2[0x17] = b1[0x17] + b1[0x18];
103 b2[0x18] = (b1[0x18] - b1[0x17]) * costab[7]; 103 b2[0x18] = (b1[0x18] - b1[0x17]) * costab[7];
104 } 104 }
105 105
106 { 106 {
107 register real *costab = mpg123_pnts[2]; 107 register mpgdec_real *costab = mpg123_pnts[2];
108 108
109 b1[0x00] = b2[0x00] + b2[0x07]; 109 b1[0x00] = b2[0x00] + b2[0x07];
110 b1[0x07] = (b2[0x00] - b2[0x07]) * costab[0]; 110 b1[0x07] = (b2[0x00] - b2[0x07]) * costab[0];
111 b1[0x01] = b2[0x01] + b2[0x06]; 111 b1[0x01] = b2[0x01] + b2[0x06];
112 b1[0x06] = (b2[0x01] - b2[0x06]) * costab[1]; 112 b1[0x06] = (b2[0x01] - b2[0x06]) * costab[1];
142 b1[0x1B] = b2[0x1B] + b2[0x1C]; 142 b1[0x1B] = b2[0x1B] + b2[0x1C];
143 b1[0x1C] = (b2[0x1C] - b2[0x1B]) * costab[3]; 143 b1[0x1C] = (b2[0x1C] - b2[0x1B]) * costab[3];
144 } 144 }
145 145
146 { 146 {
147 register real const cos0 = mpg123_pnts[3][0]; 147 register mpgdec_real const cos0 = mpg123_pnts[3][0];
148 register real const cos1 = mpg123_pnts[3][1]; 148 register mpgdec_real const cos1 = mpg123_pnts[3][1];
149 149
150 b2[0x00] = b1[0x00] + b1[0x03]; 150 b2[0x00] = b1[0x00] + b1[0x03];
151 b2[0x03] = (b1[0x00] - b1[0x03]) * cos0; 151 b2[0x03] = (b1[0x00] - b1[0x03]) * cos0;
152 b2[0x01] = b1[0x01] + b1[0x02]; 152 b2[0x01] = b1[0x01] + b1[0x02];
153 b2[0x02] = (b1[0x01] - b1[0x02]) * cos1; 153 b2[0x02] = (b1[0x01] - b1[0x02]) * cos1;
187 b2[0x1D] = b1[0x1D] + b1[0x1E]; 187 b2[0x1D] = b1[0x1D] + b1[0x1E];
188 b2[0x1E] = (b1[0x1E] - b1[0x1D]) * cos1; 188 b2[0x1E] = (b1[0x1E] - b1[0x1D]) * cos1;
189 } 189 }
190 190
191 { 191 {
192 register real const cos0 = mpg123_pnts[4][0]; 192 register mpgdec_real const cos0 = mpg123_pnts[4][0];
193 193
194 b1[0x00] = b2[0x00] + b2[0x01]; 194 b1[0x00] = b2[0x00] + b2[0x01];
195 b1[0x01] = (b2[0x00] - b2[0x01]) * cos0; 195 b1[0x01] = (b2[0x00] - b2[0x01]) * cos0;
196 b1[0x02] = b2[0x02] + b2[0x03]; 196 b1[0x02] = b2[0x02] + b2[0x03];
197 b1[0x03] = (b2[0x03] - b2[0x02]) * cos0; 197 b1[0x03] = (b2[0x03] - b2[0x02]) * cos0;
306 /* 306 /*
307 * the call via mpg123_dct64 is a trick to force GCC to use 307 * the call via mpg123_dct64 is a trick to force GCC to use
308 * (new) registers for the b1,b2 pointer to the bufs[xx] field 308 * (new) registers for the b1,b2 pointer to the bufs[xx] field
309 */ 309 */
310 void 310 void
311 mpg123_dct64(real * a, real * b, real * c) 311 mpg123_dct64(mpgdec_real * a, mpgdec_real * b, mpgdec_real * c)
312 { 312 {
313 real bufs[0x40]; 313 mpgdec_real bufs[0x40];
314 314
315 mpg123_dct64_1(a, b, bufs, bufs + 0x20, c); 315 mpg123_dct64_1(a, b, bufs, bufs + 0x20, c);
316 } 316 }