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