Sync winemp3.acm with Wine HEAD. This one uses libmpg123 which was added in Version...
[reactos.git] / reactos / include / reactos / libs / libmpg123 / synths.h
1 #ifndef MPG123_SYNTH_H
2 #define MPG123_SYNTH_H
3
4 /* This is included inside frame.h, which is included in mpg123lib_intern.h,
5 at the appropriate place.
6 Explicit header inclusions here would cause circular dependencies. */
7
8 /* The handle needs these types for selecting the decoding routine at runtime.
9 Not just for optimization, mainly for XtoY, mono/stereo. */
10 typedef int (*func_synth)(real *,int, mpg123_handle *,int );
11 typedef int (*func_synth_mono)(real *, mpg123_handle *);
12 typedef int (*func_synth_stereo)(real *, real *, mpg123_handle *);
13 enum synth_channel { c_plain=0, c_stereo, c_mono2stereo, c_mono, c_limit };
14 enum synth_resample
15 {
16 r_none=-1
17 ,r_1to1=0
18 # ifndef NO_DOWNSAMPLE
19 ,r_2to1
20 ,r_4to1
21 # endif
22 # ifndef NO_NTOM
23 ,r_ntom
24 # endif
25 ,r_limit
26 };
27 enum synth_format
28 {
29 f_none=-1
30 # ifndef NO_16BIT
31 ,f_16
32 # endif
33 # ifndef NO_8BIT
34 ,f_8
35 # endif
36 # ifndef NO_REAL
37 ,f_real
38 # endif
39 # ifndef NO_32BIT
40 ,f_32
41 # endif
42 ,f_limit
43 };
44 struct synth_s
45 {
46 func_synth plain[r_limit][f_limit];
47 func_synth_stereo stereo[r_limit][f_limit];
48 func_synth_mono mono2stereo[r_limit][f_limit];
49 func_synth_mono mono[r_limit][f_limit];
50 };
51
52 #endif