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_m2s, 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
53