annotate Plugins/Input/mpg123/decode_i386.c @ 61:fa848bd484d8 trunk

[svn] Move plugins to Plugins/
author nenolod
date Fri, 28 Oct 2005 22:58:11 -0700
parents
children 05d824e30afd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
2 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
3 * Mpeg Layer-1,2,3 audio decoder
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
4 * ------------------------------
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
5 * copyright (c) 1995,1996,1997 by Michael Hipp, All rights reserved.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
6 * See also 'README'
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
7 *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
8 * slighlty optimized for machines without autoincrement/decrement.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
9 * The performance is highly compiler dependend. Maybe
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
10 * the decode.c version for 'normal' processor may be faster
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
11 * even for Intel processors.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
12 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
13
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
14 #include <stdlib.h>
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
15 #include <math.h>
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
16 #include <string.h>
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
17
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
18 #include "mpg123.h"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
19
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
20 int mpg123_synth_1to1_pent(real *, int, unsigned char *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
21
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
22 #if 0
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
23 /* old WRITE_SAMPLE */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
24 #define WRITE_SAMPLE(samples,sum,clip) \
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
25 if( (sum) > 32767.0) { *(samples) = 0x7fff; (clip)++; } \
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
26 else if( (sum) < -32768.0) { *(samples) = -0x8000; (clip)++; } \
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
27 else { *(samples) = sum; }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
28 #else
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
29 /* new WRITE_SAMPLE */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
30 #define WRITE_SAMPLE(samples,sum,clip) { \
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
31 double dtemp; int v; /* sizeof(int) == 4 */ \
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
32 dtemp = ((((65536.0 * 65536.0 * 16)+(65536.0 * 0.5))* 65536.0)) + (sum); \
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
33 v = ((*(int *)&dtemp) - 0x80000000); \
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
34 if( v > 32767) { *(samples) = 0x7fff; (clip)++; } \
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
35 else if( v < -32768) { *(samples) = -0x8000; (clip)++; } \
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
36 else { *(samples) = v; } \
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
37 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
38 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
39
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
40 int
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
41 mpg123_synth_1to1_8bit(real * bandPtr, int channel,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
42 unsigned char *samples, int *pnt)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
43 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
44 short samples_tmp[64];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
45 short *tmp1 = samples_tmp + channel;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
46 int i, ret;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
47 int pnt1 = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
48
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
49 ret =
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
50 mpg123_synth_1to1(bandPtr, channel, (unsigned char *) samples_tmp,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
51 &pnt1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
52 samples += channel + *pnt;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
53
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
54 for (i = 0; i < 32; i++) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
55 *samples = (*tmp1 >> 8) ^ 128;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
56 samples += 2;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
57 tmp1 += 2;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
58 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
59 *pnt += 64;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
60
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
61 return ret;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
62 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
63
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
64 int
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
65 mpg123_synth_1to1_8bit_mono(real * bandPtr, unsigned char *samples, int *pnt)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
66 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
67 short samples_tmp[64];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
68 short *tmp1 = samples_tmp;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
69 int i, ret;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
70 int pnt1 = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
71
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
72 ret = mpg123_synth_1to1(bandPtr, 0, (unsigned char *) samples_tmp, &pnt1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
73 samples += *pnt;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
74
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
75 for (i = 0; i < 32; i++) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
76 *samples++ = (*tmp1 >> 8) ^ 128;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
77 tmp1 += 2;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
78 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
79 *pnt += 32;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
80
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
81 return ret;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
82 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
83
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
84 #if 0
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
85 int
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
86 mpg123_synth_1to1_8bit_mono2stereo(real * bandPtr,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
87 unsigned char *samples, int *pnt)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
88 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
89 short samples_tmp[64];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
90 short *tmp1 = samples_tmp;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
91 int i, ret;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
92 int pnt1 = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
93
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
94 ret = mpg123_synth_1to1(bandPtr, 0, (unsigned char *) samples_tmp, &pnt1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
95 samples += *pnt;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
96
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
97 for (i = 0; i < 32; i++) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
98 *samples++ = (*tmp1 >> 8) ^ 128;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
99 *samples++ = (*tmp1 >> 8) ^ 128;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
100 tmp1 += 2;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
101 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
102 *pnt += 64;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
103
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
104 return ret;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
105 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
106 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
107
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
108 int
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
109 mpg123_synth_1to1_mono(real * bandPtr, unsigned char *samples, int *pnt)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
110 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
111 short samples_tmp[64];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
112 short *tmp1 = samples_tmp;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
113 int i, ret;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
114 int pnt1 = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
115
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
116 ret = mpg123_synth_1to1(bandPtr, 0, (unsigned char *) samples_tmp, &pnt1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
117 samples += *pnt;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
118
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
119 for (i = 0; i < 32; i++) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
120 *((short *) samples) = *tmp1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
121 samples += 2;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
122 tmp1 += 2;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
123 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
124 *pnt += 64;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
125
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
126 return ret;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
127 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
128
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
129 #if 0
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
130 int
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
131 mpg123_synth_1to1_mono2stereo(real * bandPtr, unsigned char *samples,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
132 int *pnt)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
133 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
134 int i, ret;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
135
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
136 ret = mpg123_synth_1to1(bandPtr, 0, samples, pnt);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
137 samples = samples + *pnt - 128;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
138
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
139 for (i = 0; i < 32; i++) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
140 ((short *) samples)[1] = ((short *) samples)[0];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
141 samples += 4;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
142 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
143
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
144 return ret;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
145 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
146 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
147
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
148 int
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
149 mpg123_synth_1to1(real * bandPtr, int channel, unsigned char *out, int *pnt)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
150 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
151 #ifndef I386_ASSEM
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
152 static real buffs[2][2][0x110];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
153 static const int step = 2;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
154 static int bo = 1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
155 short *samples = (short *) (out + *pnt);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
156
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
157 real *b0, (*buf)[0x110];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
158 int clip = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
159 int bo1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
160
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
161 if (!channel) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
162 bo--;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
163 bo &= 0xf;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
164 buf = buffs[0];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
165 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
166 else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
167 samples++;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
168 buf = buffs[1];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
169 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
170
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
171 if (bo & 0x1) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
172 b0 = buf[0];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
173 bo1 = bo;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
174 mpg123_dct64(buf[1] + ((bo + 1) & 0xf), buf[0] + bo, bandPtr);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
175 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
176 else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
177 b0 = buf[1];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
178 bo1 = bo + 1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
179 mpg123_dct64(buf[0] + bo, buf[1] + bo + 1, bandPtr);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
180 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
181
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
182 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
183 register int j;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
184 real *window = mpg123_decwin + 16 - bo1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
185
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
186 for (j = 16; j; j--, b0 += 0x10, window += 0x20, samples += step) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
187 real sum;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
188
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
189 sum = window[0x0] * b0[0x0];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
190 sum -= window[0x1] * b0[0x1];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
191 sum += window[0x2] * b0[0x2];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
192 sum -= window[0x3] * b0[0x3];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
193 sum += window[0x4] * b0[0x4];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
194 sum -= window[0x5] * b0[0x5];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
195 sum += window[0x6] * b0[0x6];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
196 sum -= window[0x7] * b0[0x7];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
197 sum += window[0x8] * b0[0x8];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
198 sum -= window[0x9] * b0[0x9];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
199 sum += window[0xA] * b0[0xA];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
200 sum -= window[0xB] * b0[0xB];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
201 sum += window[0xC] * b0[0xC];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
202 sum -= window[0xD] * b0[0xD];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
203 sum += window[0xE] * b0[0xE];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
204 sum -= window[0xF] * b0[0xF];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
205
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
206 WRITE_SAMPLE(samples, sum, clip);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
207 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
208
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
209 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
210 real sum;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
211
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
212 sum = window[0x0] * b0[0x0];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
213 sum += window[0x2] * b0[0x2];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
214 sum += window[0x4] * b0[0x4];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
215 sum += window[0x6] * b0[0x6];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
216 sum += window[0x8] * b0[0x8];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
217 sum += window[0xA] * b0[0xA];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
218 sum += window[0xC] * b0[0xC];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
219 sum += window[0xE] * b0[0xE];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
220 WRITE_SAMPLE(samples, sum, clip);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
221 b0 -= 0x10, window -= 0x20, samples += step;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
222 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
223 window += bo1 << 1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
224
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
225 for (j = 15; j; j--, b0 -= 0x10, window -= 0x20, samples += step) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
226 real sum;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
227
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
228 sum = -window[-0x1] * b0[0x0];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
229 sum -= window[-0x2] * b0[0x1];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
230 sum -= window[-0x3] * b0[0x2];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
231 sum -= window[-0x4] * b0[0x3];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
232 sum -= window[-0x5] * b0[0x4];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
233 sum -= window[-0x6] * b0[0x5];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
234 sum -= window[-0x7] * b0[0x6];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
235 sum -= window[-0x8] * b0[0x7];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
236 sum -= window[-0x9] * b0[0x8];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
237 sum -= window[-0xA] * b0[0x9];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
238 sum -= window[-0xB] * b0[0xA];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
239 sum -= window[-0xC] * b0[0xB];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
240 sum -= window[-0xD] * b0[0xC];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
241 sum -= window[-0xE] * b0[0xD];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
242 sum -= window[-0xF] * b0[0xE];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
243 sum -= window[-0x0] * b0[0xF];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
244
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
245 WRITE_SAMPLE(samples, sum, clip);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
246 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
247 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
248 *pnt += 128;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
249
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
250 return clip;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
251 #else
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
252 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
253 int ret;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
254
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
255 ret = mpg123_synth_1to1_pent(bandPtr, channel, out + *pnt);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
256 *pnt += 128;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
257 return ret;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
258 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
259 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
260 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
261
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
262 #ifdef USE_SIMD
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
263 int mpg123_synth_MMX(real *, int, short *, short *, int *);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
264
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
265 int
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
266 mpg123_synth_1to1_mmx(real * bandPtr, int channel, unsigned char *out,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
267 int *pnt)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
268 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
269 static short buffs[2][2][0x110];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
270 static int bo = 1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
271 short *samples = (short *) (out + *pnt);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
272
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
273 mpg123_synth_MMX(bandPtr, channel, samples, (short *) buffs, &bo);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
274 *pnt += 128;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
275 return 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
276 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
277 #endif