32
/* the optimizations only cover the synth1to1 mode and the dct36 function */
33
/* the first two types are needed in set_synth_functions regardless of optimizations */
34
typedef int (*func_synth)(real *,int, mpg123_handle *,int );
35
typedef int (*func_synth_mono)(real *, mpg123_handle *);
36
typedef void (*func_dct36)(real *,real *,real *,real *,real *);
37
typedef void (*func_dct64)(real *,real *,real *);
38
typedef void (*func_make_decode_tables)(mpg123_handle*);
39
typedef real (*func_init_layer3_gainpow2)(mpg123_handle*, int);
40
typedef real* (*func_init_layer2_table)(mpg123_handle*, real*, double);
41
typedef int (*func_synth_pent)(real *,int,unsigned char *);
43
/* last headaches about getting mmx hardcode out */
44
real init_layer3_gainpow2(mpg123_handle *fr, int i);
45
real* init_layer2_table(mpg123_handle *fr, real *table, double m);
46
void make_decode_tables(mpg123_handle *fr);
47
void prepare_decode_tables(void); /* perhaps not best place here */
49
/* only 3dnow replaces that one, it's internal to layer3.c otherwise */
50
void dct36(real *,real *,real *,real *,real *);
51
#define opt_dct36(fr) dct36
52
/* only mmx replaces those */
53
#define opt_make_decode_tables(fr) make_decode_tables(fr)
54
#define opt_decwin(fr) (fr)->decwin
55
#define opt_init_layer3_gainpow2(fr) init_layer3_gainpow2
56
#define opt_init_layer2_table(fr) init_layer2_table
65
/* Safety catch for invalid decoder choice. */
67
#if (defined OPT_I486) || (defined OPT_I586) || (defined OPT_I586_DITHER) \
68
|| (defined OPT_MMX) || (defined OPT_SSE) || (defined_OPT_ALTIVEC) \
69
|| (defined OPT_3DNOW) || (defined OPT_3DNOWEXT) || (defined OPT_GENERIC_DITHER)
70
#error "Bad decoder choice together with fixed point math!"
74
/* Make sure we disable real and 32bit integer output for integer decoder. */
76
/* Undef first in case it's defined to something specific already. */
83
#if (defined NO_LAYER1 && defined NO_LAYER2)
59
#define PENTIUM_FALLBACK
60
void dct64(real *,real *,real *);
61
int synth_1to1(real *bandPtr,int channel, mpg123_handle *fr, int final);
62
int synth_1to1_8bit(real *bandPtr,int channel, mpg123_handle *fr, int final);
63
int synth_1to1_mono(real *, mpg123_handle *fr);
64
int synth_1to1_mono2stereo (real *, mpg123_handle *fr);
65
int synth_1to1_8bit_mono (real *, mpg123_handle *fr);
66
int synth_1to1_8bit_mono2stereo (real *, mpg123_handle *fr);
68
#define defopt generic
69
#define opt_dct64(fr) dct64
70
#define opt_synth_1to1(fr) synth_1to1
71
#define opt_synth_1to1_mono(fr) synth_1to1_mono
72
#define opt_synth_1to1_mono2stereo(fr) synth_1to1_mono2stereo
73
#define opt_synth_1to1_8bit(fr) synth_1to1_8bit
74
#define opt_synth_1to1_8bit_mono(fr) synth_1to1_8bit_mono
75
#define opt_synth_1to1_8bit_mono2stereo(fr) synth_1to1_8bit_mono2stereo
89
# define defopt generic
93
#ifdef OPT_GENERIC_DITHER
96
# define defopt generic_dither
97
# define opt_synth_1to1(fr) synth_1to1_dither
98
# define opt_synth_2to1(fr) synth_2to1_dither
99
# define opt_synth_4to1(fr) synth_4to1_dither
79
103
/* i486 is special... always alone! */
82
#define OPT_I386_SYNTH
83
106
#define defopt ivier
84
int synth_1to1_486(real *bandPtr, int channel, mpg123_handle *fr, int nb_blocks);
86
108
#error "i486 can only work alone!"
88
#define opt_synth_1to1(fr) synth_1to1_i386
89
110
#define FIR_BUFFER_SIZE 128
90
111
#define FIR_SIZE 16
91
void dct64_i486(int *a,int *b,real *c); /* not used generally */
95
#define PENTIUM_FALLBACK
97
#define OPT_I386_SYNTH
102
#define opt_synth_1to1(fr) synth_1to1_i386
106
#ifdef OPT_I386_SYNTH
107
int synth_1to1_i386(real *bandPtr, int channel, mpg123_handle *fr, int final);
117
# define defopt idrei
111
#define PENTIUM_FALLBACK
114
int synth_1to1_i586(real *bandPtr, int channel, mpg123_handle *fr, int final);
115
int synth_1to1_i586_asm(real *bandPtr, int channel, unsigned char *out, unsigned char *buffs, int *bo, real *decwin);
117
#define defopt ifuenf
118
#define opt_synth_1to1(fr) synth_1to1_i586
119
#define opt_synth_1to1_i586_asm(fr) synth_1to1_i586_asm
124
# define defopt ifuenf
125
# define opt_synth_1to1(fr) synth_1to1_i586
123
129
#ifdef OPT_I586_DITHER
124
#define PENTIUM_FALLBACK
127
int synth_1to1_i586(real *bandPtr, int channel, mpg123_handle *fr, int final);
128
int synth_1to1_i586_asm_dither(real *bandPtr, int channel, unsigned char *out, unsigned char *buffs, int *bo, real *decwin);
130
#define defopt ifuenf_dither
131
#define opt_synth_1to1(fr) synth_1to1_i586
132
#define opt_synth_1to1_i586_asm(fr) synth_1to1_i586_asm_dither
136
/* That one has by far the most ugly hacks to make it cooperative. */
133
# define defopt ifuenf_dither
134
# define opt_synth_1to1(fr) synth_1to1_i586_dither
135
# define opt_synth_2to1(fr) synth_2to1_dither
136
# define opt_synth_4to1(fr) synth_4to1_dither
140
/* We still have some special code around MMX tables. */
140
real init_layer3_gainpow2_mmx(mpg123_handle *fr, int i);
141
real* init_layer2_table_mmx(mpg123_handle *fr, real *table, double m);
142
/* I think one can optimize storage here with the normal decwin */
143
extern real decwin_mmx[512+32];
144
void dct64_mmx(real *,real *,real *);
145
int synth_1to1_mmx(real *bandPtr, int channel, mpg123_handle *fr, int final);
146
void make_decode_tables_mmx(mpg123_handle *fr); /* tabinit_mmx.s */
147
void make_decode_tables_mmx_asm(long scaleval, float* decwin_mmx, float *decwins); /* tabinit_mmx.s */
148
/* these are in asm, dct64 called directly there */
149
void dct64_MMX(short *a,short *b,real *c);
150
int synth_1to1_MMX(real *bandPtr, int channel, short *out, short *buffs, int *bo, float *decwins);
154
#define opt_decwin(fr) decwin_mmx */
155
#define opt_dct64(fr) dct64_mmx
156
#define opt_synth_1to1(fr) synth_1to1_mmx
158
#undef opt_make_decode_tables
159
#define opt_make_decode_tables(fr) make_decode_tables_mmx(fr)
160
#undef opt_init_layer3_gainpow2
161
#define opt_init_layer3_gainpow2(fr) init_layer3_gainpow2_mmx
162
#undef opt_init_layer2_table
163
#define opt_init_layer2_table(fr) init_layer2_table_mmx
147
# define opt_synth_1to1(fr) synth_1to1_mmx
168
/* first crude hack into our source */
173
real init_layer3_gainpow2_mmx(mpg123_handle *fr, int i);
174
real* init_layer2_table_mmx(mpg123_handle *fr, real *table, double m);
175
/* I think one can optimize storage here with the normal decwin */
176
extern real decwin_mmx[512+32];
177
void dct64_mmx(real *,real *,real *);
178
void dct64_sse(real *,real *,real *);
179
int synth_1to1_sse(real *bandPtr, int channel, mpg123_handle *fr, int final);
180
void synth_1to1_sse_asm(real *bandPtr, int channel, short *samples, short *buffs, int *bo, real *decwin);
181
void make_decode_tables_mmx(mpg123_handle *fr); /* tabinit_mmx.s */
182
void make_decode_tables_mmx_asm(long scaleval, float* decwin_mmx, float *decwins); /* tabinit_mmx.s */
184
extern func_dct64 mpl_dct64;
187
#define opt_mpl_dct64(fr) dct64_sse
189
#define opt_decwin(fr) decwin_mmx */
190
#define opt_dct64(fr) dct64_mmx /* dct64_sse is silent in downsampling modes */
191
#define opt_synth_1to1(fr) synth_1to1_sse /* that will use dct64_sse */
192
#undef opt_make_decode_tables
193
#define opt_make_decode_tables(fr) make_decode_tables_mmx(fr)
194
#undef opt_init_layer3_gainpow2
195
#define opt_init_layer3_gainpow2(fr) init_layer3_gainpow2_mmx
196
#undef opt_init_layer2_table
197
#define opt_init_layer2_table(fr) init_layer2_table_mmx
198
#define OPT_MMX_ONLY /* watch out! */
157
# define opt_synth_1to1(fr) synth_1to1_sse
202
/* first crude hack into our source */
203
161
#ifdef OPT_3DNOWEXT
207
real init_layer3_gainpow2_mmx(mpg123_handle *fr, int i);
208
real* init_layer2_table_mmx(mpg123_handle *fr, real *table, double m);
209
/* I think one can optimize storage here with the normal decwin */
210
extern real decwin_mmx[512+32];
211
void dct64_mmx(real *,real *,real *);
212
void dct64_3dnowext(real *,real *,real *);
213
void dct36_3dnowext(real *,real *,real *,real *,real *);
214
int synth_1to1_3dnowext(real *bandPtr, int channel, mpg123_handle *fr, int final);
215
void synth_1to1_3dnowext_asm(real *bandPtr, int channel, short *samples, short *buffs, int *bo, real *decwin);
216
void make_decode_tables_mmx(mpg123_handle *fr); /* tabinit_mmx.s */
217
void make_decode_tables_mmx_asm(long scaleval, float* decwin_mmx, float *decwins); /* tabinit_mmx.s */
219
extern func_dct64 mpl_dct64;
221
#define defopt dreidnowext
222
#define opt_mpl_dct64(fr) dct64_3dnowext
224
#define opt_dct36(fr) dct36_3dnowext
226
#define opt_decwin(fr) decwin_mmx */
227
#define opt_dct64(fr) dct64_mmx /* dct64_sse is silent in downsampling modes */
228
#define opt_synth_1to1(fr) synth_1to1_3dnowext /* that will use dct64_3dnowext */
229
#undef opt_make_decode_tables
230
#define opt_make_decode_tables(fr) make_decode_tables_mmx(fr)
231
#undef opt_init_layer3_gainpow2
232
#define opt_init_layer3_gainpow2(fr) init_layer3_gainpow2_mmx
233
#undef opt_init_layer2_table
234
#define opt_init_layer2_table(fr) init_layer2_table_mmx
235
#define OPT_MMX_ONLY /* watch out! */
241
extern real *pnts[5];
242
extern real decwin[512+32];
166
# define defopt dreidnowext
167
# define opt_dct36(fr) dct36_3dnowext
168
# define opt_synth_1to1(fr) synth_1to1_3dnowext
244
172
#ifdef OPT_MPLAYER
245
173
extern const int costab_mmxsse[];
248
176
/* 3dnow used to use synth_1to1_i586 for mono / 8bit conversion - was that intentional? */
249
177
/* I'm trying to skip the pentium code here ... until I see that that is indeed a bad idea */
251
#define K6_FALLBACK /* a fallback for 3DNowExt */
253
void dct36_3dnow(real *,real *,real *,real *,real *);
254
void do_equalizer_3dnow(real *bandPtr,int channel, real equalizer[2][32]);
255
int synth_1to1_3dnow(real *bandPtr, int channel, mpg123_handle *fr, int final);
256
int synth_1to1_3dnow_asm(real *bandPtr, int channel, unsigned char *out, unsigned char *buffs, int *bo, real *decwin);
258
#define defopt dreidnow
260
#define opt_dct36(fr) dct36_3dnow
261
#define opt_synth_1to1(fr) synth_1to1_3dnow
181
# define defopt dreidnow
182
# define opt_dct36(fr) dct36_3dnow
183
# define opt_synth_1to1(fr) synth_1to1_3dnow
266
/* these have to be merged back into one! */
267
unsigned int getcpuid();
268
unsigned int getextcpuflags();
269
unsigned int getstdcpuflags();
270
unsigned int getstd2cpuflags();
272
void dct64_i386(real *,real *,real *);
273
int synth_1to1_mono_i386(real *, mpg123_handle *fr);
274
int synth_1to1_mono2stereo_i386(real *, mpg123_handle *fr);
275
int synth_1to1_8bit_i386(real *,int, mpg123_handle *fr, int final);
276
int synth_1to1_8bit_mono_i386(real *, mpg123_handle *fr);
277
int synth_1to1_8bit_mono2stereo_i386(real *, mpg123_handle *fr);
280
#define opt_dct64(fr) dct64_i386 /* default one even for 3dnow and i486 in decode_2to1, decode_ntom */
282
#define opt_synth_1to1_mono(fr) synth_1to1_mono_i386
283
#define opt_synth_1to1_mono2stereo(fr) synth_1to1_mono2stereo_i386
284
#define opt_synth_1to1_8bit(fr) synth_1to1_8bit_i386
285
#define opt_synth_1to1_8bit_mono(fr) synth_1to1_8bit_mono_i386
286
#define opt_synth_1to1_8bit_mono2stereo(fr) synth_1to1_8bit_mono2stereo_i386
290
187
#ifdef OPT_ALTIVEC
291
void dct64_altivec(real *out0,real *out1,real *samples);
292
int synth_1to1_altivec(real *,int,mpg123_handle *, int);
293
int synth_1to1_mono_altivec(real *,mpg123_handle *);
294
int synth_1to1_mono2stereo_altivec(real *, mpg123_handle *);
295
int synth_1to1_8bit_altivec(real *,int,mpg123_handle *,int);
296
int synth_1to1_8bit_mono_altivec(real *,mpg123_handle *);
297
int synth_1to1_8bit_mono2stereo_altivec(real *,mpg123_handle *);
299
#define defopt altivec
300
#define opt_dct64(fr) dct64_altivec
301
#define opt_synth_1to1(fr) synth_1to1_altivec
302
#define opt_synth_1to1_mono(fr) synth_1to1_mono_altivec
303
#define opt_synth_1to1_mono2stereo(fr) synth_1to1_mono2stereo_altivec
304
#define opt_synth_1to1_8bit(fr) synth_1to1_8bit_altivec
305
#define opt_synth_1to1_8bit_mono(fr) synth_1to1_8bit_mono_altivec
306
#define opt_synth_1to1_8bit_mono2stereo(fr) synth_1to1_8bit_mono2stereo_altivec
189
# define defopt altivec
190
# define opt_synth_1to1(fr) synth_1to1_altivec
310
194
/* used for multi opt mode and the single 3dnow mode to have the old 3dnow test flag still working */
311
195
void check_decoders(void);
197
/* Announce the data in dnoise.c ... */
199
#define DITHERSIZE 65536
200
extern float dithernoise[DITHERSIZE];
204
Now come two blocks of standard definitions for multi-decoder mode and single-decoder mode.
205
Most stuff is so automatic that it's indeed generated by some inline shell script.
206
Remember to use these scripts when possible, instead of direct repetitive hacking.
315
extern struct cpuflags cf;
318
/* a simple global struct to hold the decoding function pointers, could be localized later if really wanted */
320
#define opt_synth_1to1(fr) ((fr)->cpu_opts.synth_1to1)
321
#define opt_synth_1to1_mono(fr) ((fr)->cpu_opts.synth_1to1_mono)
322
#define opt_synth_1to1_mono2stereo(fr) ((fr)->cpu_opts.synth_1to1_mono2stereo)
323
#define opt_synth_1to1_8bit(fr) ((fr)->cpu_opts.synth_1to1_8bit)
324
#define opt_synth_1to1_8bit_mono(fr) ((fr)->cpu_opts.synth_1to1_8bit_mono)
325
#define opt_synth_1to1_8bit_mono2stereo(fr) ((fr)->cpu_opts.synth_1to1_8bit_mono2stereo)
327
#define opt_synth_1to1_i586_asm(fr) ((fr)->cpu_opts.synth_1to1_i586_asm)
330
#undef opt_make_decode_tables
331
#define opt_make_decode_tables(fr) ((fr)->cpu_opts.make_decode_tables)(fr)
333
#define opt_decwin(fr) (fr)->cpu_opts.decwin */
334
#undef opt_init_layer3_gainpow2
335
#define opt_init_layer3_gainpow2(fr) ((fr)->cpu_opts.init_layer3_gainpow2)
336
#undef opt_init_layer2_table
337
#define opt_init_layer2_table(fr) ((fr)->cpu_opts.init_layer2_table)
341
#define opt_dct36(fr) ((fr)->cpu_opts.dct36)
343
#define opt_dct64(fr) ((fr)->cpu_opts.dct64)
345
#define opt_mpl_dct64(fr) ((fr)->cpu_opts.mpl_dct64)
211
# define defopt nodec
214
## This is an inline bourne shell script for execution in nedit to generate the lines below.
215
## The ## is a quote for just #
217
for i in 1to1 2to1 4to1 ntom;
220
echo "$slash$star $i $star$slash"
221
for t in "" _8bit _real _s32; do for f in "" _mono _mono2stereo;
223
echo "## define opt_synth_${i}${t}${f}(fr) ((fr)->cpu_opts.synth_${i}${t}${f})"
229
# define opt_synth_1to1(fr) ((fr)->cpu_opts.synth_1to1)
230
# define opt_synth_1to1_mono(fr) ((fr)->cpu_opts.synth_1to1_mono)
231
# define opt_synth_1to1_mono2stereo(fr) ((fr)->cpu_opts.synth_1to1_mono2stereo)
232
# define opt_synth_1to1_8bit(fr) ((fr)->cpu_opts.synth_1to1_8bit)
233
# define opt_synth_1to1_8bit_mono(fr) ((fr)->cpu_opts.synth_1to1_8bit_mono)
234
# define opt_synth_1to1_8bit_mono2stereo(fr) ((fr)->cpu_opts.synth_1to1_8bit_mono2stereo)
235
# define opt_synth_1to1_real(fr) ((fr)->cpu_opts.synth_1to1_real)
236
# define opt_synth_1to1_real_mono(fr) ((fr)->cpu_opts.synth_1to1_real_mono)
237
# define opt_synth_1to1_real_mono2stereo(fr) ((fr)->cpu_opts.synth_1to1_real_mono2stereo)
238
# define opt_synth_1to1_s32(fr) ((fr)->cpu_opts.synth_1to1_s32)
239
# define opt_synth_1to1_s32_mono(fr) ((fr)->cpu_opts.synth_1to1_s32_mono)
240
# define opt_synth_1to1_s32_mono2stereo(fr) ((fr)->cpu_opts.synth_1to1_s32_mono2stereo)
243
# define opt_synth_2to1(fr) ((fr)->cpu_opts.synth_2to1)
244
# define opt_synth_2to1_mono(fr) ((fr)->cpu_opts.synth_2to1_mono)
245
# define opt_synth_2to1_mono2stereo(fr) ((fr)->cpu_opts.synth_2to1_mono2stereo)
246
# define opt_synth_2to1_8bit(fr) ((fr)->cpu_opts.synth_2to1_8bit)
247
# define opt_synth_2to1_8bit_mono(fr) ((fr)->cpu_opts.synth_2to1_8bit_mono)
248
# define opt_synth_2to1_8bit_mono2stereo(fr) ((fr)->cpu_opts.synth_2to1_8bit_mono2stereo)
249
# define opt_synth_2to1_real(fr) ((fr)->cpu_opts.synth_2to1_real)
250
# define opt_synth_2to1_real_mono(fr) ((fr)->cpu_opts.synth_2to1_real_mono)
251
# define opt_synth_2to1_real_mono2stereo(fr) ((fr)->cpu_opts.synth_2to1_real_mono2stereo)
252
# define opt_synth_2to1_s32(fr) ((fr)->cpu_opts.synth_2to1_s32)
253
# define opt_synth_2to1_s32_mono(fr) ((fr)->cpu_opts.synth_2to1_s32_mono)
254
# define opt_synth_2to1_s32_mono2stereo(fr) ((fr)->cpu_opts.synth_2to1_s32_mono2stereo)
257
# define opt_synth_4to1(fr) ((fr)->cpu_opts.synth_4to1)
258
# define opt_synth_4to1_mono(fr) ((fr)->cpu_opts.synth_4to1_mono)
259
# define opt_synth_4to1_mono2stereo(fr) ((fr)->cpu_opts.synth_4to1_mono2stereo)
260
# define opt_synth_4to1_8bit(fr) ((fr)->cpu_opts.synth_4to1_8bit)
261
# define opt_synth_4to1_8bit_mono(fr) ((fr)->cpu_opts.synth_4to1_8bit_mono)
262
# define opt_synth_4to1_8bit_mono2stereo(fr) ((fr)->cpu_opts.synth_4to1_8bit_mono2stereo)
263
# define opt_synth_4to1_real(fr) ((fr)->cpu_opts.synth_4to1_real)
264
# define opt_synth_4to1_real_mono(fr) ((fr)->cpu_opts.synth_4to1_real_mono)
265
# define opt_synth_4to1_real_mono2stereo(fr) ((fr)->cpu_opts.synth_4to1_real_mono2stereo)
266
# define opt_synth_4to1_s32(fr) ((fr)->cpu_opts.synth_4to1_s32)
267
# define opt_synth_4to1_s32_mono(fr) ((fr)->cpu_opts.synth_4to1_s32_mono)
268
# define opt_synth_4to1_s32_mono2stereo(fr) ((fr)->cpu_opts.synth_4to1_s32_mono2stereo)
271
# define opt_synth_ntom(fr) ((fr)->cpu_opts.synth_ntom)
272
# define opt_synth_ntom_mono(fr) ((fr)->cpu_opts.synth_ntom_mono)
273
# define opt_synth_ntom_mono2stereo(fr) ((fr)->cpu_opts.synth_ntom_mono2stereo)
274
# define opt_synth_ntom_8bit(fr) ((fr)->cpu_opts.synth_ntom_8bit)
275
# define opt_synth_ntom_8bit_mono(fr) ((fr)->cpu_opts.synth_ntom_8bit_mono)
276
# define opt_synth_ntom_8bit_mono2stereo(fr) ((fr)->cpu_opts.synth_ntom_8bit_mono2stereo)
277
# define opt_synth_ntom_real(fr) ((fr)->cpu_opts.synth_ntom_real)
278
# define opt_synth_ntom_real_mono(fr) ((fr)->cpu_opts.synth_ntom_real_mono)
279
# define opt_synth_ntom_real_mono2stereo(fr) ((fr)->cpu_opts.synth_ntom_real_mono2stereo)
280
# define opt_synth_ntom_s32(fr) ((fr)->cpu_opts.synth_ntom_s32)
281
# define opt_synth_ntom_s32_mono(fr) ((fr)->cpu_opts.synth_ntom_s32_mono)
282
# define opt_synth_ntom_s32_mono2stereo(fr) ((fr)->cpu_opts.synth_ntom_s32_mono2stereo)
284
/* End of generated output. */
287
# define opt_dct36(fr) ((fr)->cpu_opts.dct36)
290
#else /* OPT_MULTI */
292
/* Define missing opt functions, for generic or x86. */
293
# ifdef opt_synth_1to1
294
/* If there is an optimized 1to1, we'll reuse it for 8bit stuff. */
295
# ifndef opt_synth_1to1_8bit
296
# define opt_synth_1to1_8bit(fr) synth_1to1_8bit_wrap
298
# ifndef opt_synth_1to1_8bit_mono
299
# define opt_synth_1to1_8bit_mono(fr) synth_1to1_8bit_wrap_mono
301
# ifndef opt_synth_1to1_8bit_mono2stereo
302
# define opt_synth_1to1_8bit_mono2stereo(fr) synth_1to1_8bit_wrap_mono2stereo
307
## This is an inline bourne shell script for execution in nedit to generate the lines below.
308
## The ## is a quote for just #
310
for c in "ifdef OPT_X86" "else $slash$star generic code $star$slash"
312
if test "$c" = "ifdef OPT_X86"; then cpu=_i386; else cpu=; fi
314
for i in 1to1 2to1 4to1 ntom;
316
if test $i = ntom; then cpu=; fi
317
echo "$slash$star $i $star$slash"
318
for t in "" _8bit _real _s32; do
319
echo "## ifndef opt_synth_${i}${t}"
320
echo "## define opt_synth_${i}${t}(fr) synth_${i}${t}$cpu"
325
echo "## endif $slash$star x86 / generic $star$slash"
329
# ifndef opt_synth_1to1
330
# define opt_synth_1to1(fr) synth_1to1_i386
332
# ifndef opt_synth_1to1_8bit
333
# define opt_synth_1to1_8bit(fr) synth_1to1_8bit_i386
335
# ifndef opt_synth_1to1_real
336
# define opt_synth_1to1_real(fr) synth_1to1_real_i386
338
# ifndef opt_synth_1to1_s32
339
# define opt_synth_1to1_s32(fr) synth_1to1_s32_i386
342
# ifndef opt_synth_2to1
343
# define opt_synth_2to1(fr) synth_2to1_i386
345
# ifndef opt_synth_2to1_8bit
346
# define opt_synth_2to1_8bit(fr) synth_2to1_8bit_i386
348
# ifndef opt_synth_2to1_real
349
# define opt_synth_2to1_real(fr) synth_2to1_real_i386
351
# ifndef opt_synth_2to1_s32
352
# define opt_synth_2to1_s32(fr) synth_2to1_s32_i386
355
# ifndef opt_synth_4to1
356
# define opt_synth_4to1(fr) synth_4to1_i386
358
# ifndef opt_synth_4to1_8bit
359
# define opt_synth_4to1_8bit(fr) synth_4to1_8bit_i386
361
# ifndef opt_synth_4to1_real
362
# define opt_synth_4to1_real(fr) synth_4to1_real_i386
364
# ifndef opt_synth_4to1_s32
365
# define opt_synth_4to1_s32(fr) synth_4to1_s32_i386
368
# ifndef opt_synth_ntom
369
# define opt_synth_ntom(fr) synth_ntom
371
# ifndef opt_synth_ntom_8bit
372
# define opt_synth_ntom_8bit(fr) synth_ntom_8bit
374
# ifndef opt_synth_ntom_real
375
# define opt_synth_ntom_real(fr) synth_ntom_real
377
# ifndef opt_synth_ntom_s32
378
# define opt_synth_ntom_s32(fr) synth_ntom_s32
380
# else /* generic code */
382
# ifndef opt_synth_1to1
383
# define opt_synth_1to1(fr) synth_1to1
385
# ifndef opt_synth_1to1_8bit
386
# define opt_synth_1to1_8bit(fr) synth_1to1_8bit
388
# ifndef opt_synth_1to1_real
389
# define opt_synth_1to1_real(fr) synth_1to1_real
391
# ifndef opt_synth_1to1_s32
392
# define opt_synth_1to1_s32(fr) synth_1to1_s32
395
# ifndef opt_synth_2to1
396
# define opt_synth_2to1(fr) synth_2to1
398
# ifndef opt_synth_2to1_8bit
399
# define opt_synth_2to1_8bit(fr) synth_2to1_8bit
401
# ifndef opt_synth_2to1_real
402
# define opt_synth_2to1_real(fr) synth_2to1_real
404
# ifndef opt_synth_2to1_s32
405
# define opt_synth_2to1_s32(fr) synth_2to1_s32
408
# ifndef opt_synth_4to1
409
# define opt_synth_4to1(fr) synth_4to1
411
# ifndef opt_synth_4to1_8bit
412
# define opt_synth_4to1_8bit(fr) synth_4to1_8bit
414
# ifndef opt_synth_4to1_real
415
# define opt_synth_4to1_real(fr) synth_4to1_real
417
# ifndef opt_synth_4to1_s32
418
# define opt_synth_4to1_s32(fr) synth_4to1_s32
421
# ifndef opt_synth_ntom
422
# define opt_synth_ntom(fr) synth_ntom
424
# ifndef opt_synth_ntom_8bit
425
# define opt_synth_ntom_8bit(fr) synth_ntom_8bit
427
# ifndef opt_synth_ntom_real
428
# define opt_synth_ntom_real(fr) synth_ntom_real
430
# ifndef opt_synth_ntom_s32
431
# define opt_synth_ntom_s32(fr) synth_ntom_s32
433
# endif /* x86 / generic */
435
/* Common mono stuff, wrapping over possibly optimized basic synth. */
437
## This is an inline bourne shell script for execution in nedit to generate the lines below.
438
## The ## is a quote for just #
439
for i in 1to1 2to1 4to1 ntom; do
440
star="*"; slash="/"; echo "$slash$star $i mono $star$slash"
441
for t in "" _8bit _real _s32; do for m in mono mono2stereo; do
442
echo "## ifndef opt_synth_${i}${t}_${m}"
443
echo "## define opt_synth_${i}${t}_${m}(fr) synth_${i}${t}_${m}"
448
# ifndef opt_synth_1to1_mono
449
# define opt_synth_1to1_mono(fr) synth_1to1_mono
451
# ifndef opt_synth_1to1_mono2stereo
452
# define opt_synth_1to1_mono2stereo(fr) synth_1to1_mono2stereo
454
# ifndef opt_synth_1to1_8bit_mono
455
# define opt_synth_1to1_8bit_mono(fr) synth_1to1_8bit_mono
457
# ifndef opt_synth_1to1_8bit_mono2stereo
458
# define opt_synth_1to1_8bit_mono2stereo(fr) synth_1to1_8bit_mono2stereo
460
# ifndef opt_synth_1to1_real_mono
461
# define opt_synth_1to1_real_mono(fr) synth_1to1_real_mono
463
# ifndef opt_synth_1to1_real_mono2stereo
464
# define opt_synth_1to1_real_mono2stereo(fr) synth_1to1_real_mono2stereo
466
# ifndef opt_synth_1to1_s32_mono
467
# define opt_synth_1to1_s32_mono(fr) synth_1to1_s32_mono
469
# ifndef opt_synth_1to1_s32_mono2stereo
470
# define opt_synth_1to1_s32_mono2stereo(fr) synth_1to1_s32_mono2stereo
473
# ifndef opt_synth_2to1_mono
474
# define opt_synth_2to1_mono(fr) synth_2to1_mono
476
# ifndef opt_synth_2to1_mono2stereo
477
# define opt_synth_2to1_mono2stereo(fr) synth_2to1_mono2stereo
479
# ifndef opt_synth_2to1_8bit_mono
480
# define opt_synth_2to1_8bit_mono(fr) synth_2to1_8bit_mono
482
# ifndef opt_synth_2to1_8bit_mono2stereo
483
# define opt_synth_2to1_8bit_mono2stereo(fr) synth_2to1_8bit_mono2stereo
485
# ifndef opt_synth_2to1_real_mono
486
# define opt_synth_2to1_real_mono(fr) synth_2to1_real_mono
488
# ifndef opt_synth_2to1_real_mono2stereo
489
# define opt_synth_2to1_real_mono2stereo(fr) synth_2to1_real_mono2stereo
491
# ifndef opt_synth_2to1_s32_mono
492
# define opt_synth_2to1_s32_mono(fr) synth_2to1_s32_mono
494
# ifndef opt_synth_2to1_s32_mono2stereo
495
# define opt_synth_2to1_s32_mono2stereo(fr) synth_2to1_s32_mono2stereo
498
# ifndef opt_synth_4to1_mono
499
# define opt_synth_4to1_mono(fr) synth_4to1_mono
501
# ifndef opt_synth_4to1_mono2stereo
502
# define opt_synth_4to1_mono2stereo(fr) synth_4to1_mono2stereo
504
# ifndef opt_synth_4to1_8bit_mono
505
# define opt_synth_4to1_8bit_mono(fr) synth_4to1_8bit_mono
507
# ifndef opt_synth_4to1_8bit_mono2stereo
508
# define opt_synth_4to1_8bit_mono2stereo(fr) synth_4to1_8bit_mono2stereo
510
# ifndef opt_synth_4to1_real_mono
511
# define opt_synth_4to1_real_mono(fr) synth_4to1_real_mono
513
# ifndef opt_synth_4to1_real_mono2stereo
514
# define opt_synth_4to1_real_mono2stereo(fr) synth_4to1_real_mono2stereo
516
# ifndef opt_synth_4to1_s32_mono
517
# define opt_synth_4to1_s32_mono(fr) synth_4to1_s32_mono
519
# ifndef opt_synth_4to1_s32_mono2stereo
520
# define opt_synth_4to1_s32_mono2stereo(fr) synth_4to1_s32_mono2stereo
523
# ifndef opt_synth_ntom_mono
524
# define opt_synth_ntom_mono(fr) synth_ntom_mono
526
# ifndef opt_synth_ntom_mono2stereo
527
# define opt_synth_ntom_mono2stereo(fr) synth_ntom_mono2stereo
529
# ifndef opt_synth_ntom_8bit_mono
530
# define opt_synth_ntom_8bit_mono(fr) synth_ntom_8bit_mono
532
# ifndef opt_synth_ntom_8bit_mono2stereo
533
# define opt_synth_ntom_8bit_mono2stereo(fr) synth_ntom_8bit_mono2stereo
535
# ifndef opt_synth_ntom_real_mono
536
# define opt_synth_ntom_real_mono(fr) synth_ntom_real_mono
538
# ifndef opt_synth_ntom_real_mono2stereo
539
# define opt_synth_ntom_real_mono2stereo(fr) synth_ntom_real_mono2stereo
541
# ifndef opt_synth_ntom_s32_mono
542
# define opt_synth_ntom_s32_mono(fr) synth_ntom_s32_mono
544
# ifndef opt_synth_ntom_s32_mono2stereo
545
# define opt_synth_ntom_s32_mono2stereo(fr) synth_ntom_s32_mono2stereo
548
/* End of generated output. */
551
# define opt_dct36(fr) dct36
554
#endif /* OPT_MULTI else */
349
556
#endif /* MPG123_H_OPTIMIZE */