15#if ((defined OPT_X86) || (defined OPT_X86_64) || (defined OPT_NEON) || (defined OPT_NEON64)) && (defined OPT_MULTI)
21#define cpu_flags nothing
26#define cpu_3dnowext(s) 1
37#define IF8(synth) synth,
45#define IFREAL(synth) synth,
51#define IF32(synth) synth
64# define OUT_SYNTHS(synth_16, synth_8, synth_real, synth_32) { synth_16, IF8(synth_8) IFREAL(synth_real) IF32(synth_32) }
66# define OUT_SYNTHS(synth_16, synth_8, synth_real, synth_32) { IF8(synth_8) IFREAL(synth_real) IF32(synth_32) }
74 clip = (fr->
synth)(bandPtr_l, 0, fr, 0);
75 clip += (fr->
synth)(bandPtr_r, 1, fr, 1);
103# ifndef NO_DOWNSAMPLE
113# ifndef NO_DOWNSAMPLE
128# ifndef NO_DOWNSAMPLE
163 if(synth == synths[ri][fi])
170#if defined(OPT_SSE) || defined(OPT_SSE_VINTAGE)
205#if defined(OPT_3DNOWEXT) || defined(OPT_3DNOWEXT_VINTAGE)
209# ifdef OPT_3DNOWEXT_VINTAGE
217#if defined(OPT_SSE) || defined(OPT_SSE_VINTAGE)
220 type = sse_or_vintage(fr);
223#if defined(OPT_3DNOW) || defined(OPT_3DNOW_VINTAGE)
227# ifdef OPT_3DNOW_VINTAGE
238#ifdef OPT_I586_DITHER
262#ifdef OPT_GENERIC_DITHER
279#if defined(OPT_SSE) || defined(OPT_SSE_VINTAGE)
282 type = sse_or_vintage(fr);
304#if defined(OPT_SSE) || defined(OPT_SSE_VINTAGE)
307 type = sse_or_vintage(fr);
355 if(
NOQUIET)
error(
"Unable to determine active decoder type -- this is SERIOUS b0rkage!");
389 if(basic_format ==
f_none)
391 if(
NOQUIET)
error(
"set_synth_functions: This output format is disabled in this build!");
399 case 0: resample =
r_1to1;
break;
401 case 1: resample =
r_2to1;
break;
402 case 2: resample =
r_4to1;
break;
405 case 3: resample =
r_ntom;
break;
411 if(
NOQUIET)
error(
"set_synth_functions: This resampling mode is not supported in this build!");
416 debug2(
"selecting synth: resample=%i format=%i", resample, basic_format);
418 fr->
synth = fr->
synths.plain[resample][basic_format];
421 ? fr->
synths.mono2stereo[resample][basic_format]
422 : fr->
synths.mono[resample][basic_format];
439 if(basic_format ==
f_8)
458 && basic_format !=
f_32
498 const char* chosen =
"";
503 int dithered =
FALSE;
507 auto_choose = want_dec ==
autodec;
513 if(!auto_choose && want_dec != defopt)
515 if(
NOQUIET)
error2(
"you wanted decoder type %i, I only have %i", want_dec, defopt);
524#if (defined OPT_3DNOW_VINTAGE || defined OPT_3DNOWEXT_VINTAGE || defined OPT_SSE || defined OPT_X86_64 || defined OPT_AVX || defined OPT_NEON || defined OPT_NEON64)
537 if( !done && (auto_choose || want_dec ==
sse)
549# ifdef ACCURATE_ROUNDING
564# ifdef OPT_SSE_VINTAGE
565 if( !done && (auto_choose || want_dec ==
sse_vintage)
568 chosen = dn_sse_vintage;
572# ifdef ACCURATE_ROUNDING
588 if( !done && (auto_choose || want_dec ==
dreidnowext)
593 chosen = dn_dreidnowext;
601# ifdef OPT_3DNOWEXT_VINTAGE
607 chosen = dn_dreidnowext_vintage;
621 if( !done && (auto_choose || want_dec ==
dreidnow)
624 chosen = dn_dreidnow;
632# ifdef OPT_3DNOW_VINTAGE
636 chosen = dn_dreidnow_vintage;
650 if( !done && (auto_choose || want_dec ==
mmx)
662 if(!done && (auto_choose || want_dec ==
ifuenf))
664 chosen =
"i586/pentium";
672 #ifdef OPT_I586_DITHER
675 chosen =
"dithered i586/pentium";
680# ifndef NO_DOWNSAMPLE
692 if(!done && (auto_choose || want_dec ==
ivier))
700 if(!done && (auto_choose || want_dec ==
idrei))
731 fr->
synths.plain[ri][fi] = plain_i386[ri][fi];
740 chosen =
"x86-64 (AVX)";
764 if(!done && (auto_choose || want_dec ==
x86_64))
766 chosen =
"x86-64 (SSE)";
790 if(!done && (auto_choose || want_dec ==
altivec))
837 if(!done && (auto_choose || want_dec ==
arm))
875 if(!done && (auto_choose || want_dec ==
generic))
883#ifdef OPT_GENERIC_DITHER
886 chosen =
"dithered generic";
891# ifndef NO_DOWNSAMPLE
943 if( (decoder ==
NULL)
944 || (decoder[0] == 0) )
948 if(!
strcasecmp(decoder, decname[dt]))
return dt;
956static const char *mpg123_supported_decoder_list[] =
961 #ifdef OPT_SSE_VINTAGE
967 #ifdef OPT_3DNOWEXT_VINTAGE
973 #ifdef OPT_3DNOW_VINTAGE
982 #ifdef OPT_I586_DITHER
1009 #ifdef OPT_GENERIC_FLOAT
1015# ifdef OPT_GENERIC_DITHER
1027 #ifdef OPT_SSE_VINTAGE
1033 #ifdef OPT_3DNOWEXT_VINTAGE
1034 dn_dreidnowext_vintage,
1039 #ifdef OPT_3DNOW_VINTAGE
1040 dn_dreidnow_vintage,
1048 #ifdef OPT_I586_DITHER
1078 #ifdef OPT_GENERIC_DITHER
1090 const char **
d = mpg123_supported_decoder_list;
1091#if (defined OPT_X86) || (defined OPT_X86_64) || (defined OPT_NEON) || (defined OPT_NEON64)
1102#ifdef OPT_SSE_VINTAGE
1108#ifdef OPT_3DNOWEXT_VINTAGE
1114#ifdef OPT_3DNOW_VINTAGE
1123#ifdef OPT_I586_DITHER
1124 *(
d++) = dn_ifuenf_dither;
1133 *(
d++) = dn_altivec;
1155 *(
d++) = dn_generic;
1157#ifdef OPT_GENERIC_DITHER
1158 *(
d++) = dn_generic_dither;
1174 return mpg123_supported_decoder_list;
#define attribute_align_arg
GLuint GLuint GLsizei GLenum type
const char *attribute_align_arg mpg123_current_decoder(mpg123_handle *mh)
const char attribute_align_arg ** mpg123_decoders(void)
const char attribute_align_arg ** mpg123_supported_decoders(void)
@ MPG123_BAD_DECODER_SETUP
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
#define synth_1to1_8bit_mono
#define synth_2to1_real_mono
#define synth_1to1_real_sse
#define synth_1to1_s32_stereo_x86_64
#define synth_2to1_real_i386
#define synth_1to1_8bit_m2s
#define synth_1to1_s32_avx
#define synth_1to1_8bit_wrap_mono
#define init_layer3_stuff
#define synth_1to1_s32_i386
#define synth_4to1_real_mono
#define init_layer3_gainpow2_mmx
#define synth_1to1_x86_64
#define synth_ntom_s32_m2s
#define synth_1to1_s32_x86_64
#define synth_4to1_8bit_m2s
#define synth_4to1_real_m2s
#define synth_1to1_real_stereo_x86_64
#define synth_4to1_s32_m2s
#define synth_1to1_real_i386
#define synth_1to1_stereo_neon64
#define init_layer12_table
#define synth_1to1_stereo_x86_64
#define synth_1to1_stereo_altivec
#define synth_1to1_real_altivec
#define synth_1to1_stereo_sse
#define synth_2to1_real_m2s
#define make_conv16to8_table
#define synth_1to1_i586_dither
#define synth_4to1_8bit_mono
#define synth_1to1_real_stereo_sse
#define synth_1to1_s32_stereo_neon
#define synth_2to1_s32_i386
#define synth_1to1_s32_sse
#define synth_2to1_s32_m2s
#define synth_1to1_fltst_avx
#define synth_1to1_real_mono
#define synth_1to1_s32_stereo_avx
#define synth_1to1_s32_mono
#define synth_1to1_8bit_wrap_m2s
#define set_synth_functions
#define synth_1to1_real_avx
#define synth_1to1_dither
#define synth_4to1_real_i386
#define synth_1to1_s32_stereo_sse
#define synth_1to1_s32_m2s
#define synth_1to1_real_neon64
#define synth_ntom_s32_mono
#define synth_1to1_real_x86_64
#define synth_2to1_s32_mono
#define synth_4to1_s32_i386
#define make_decode_tables
#define synth_1to1_fltst_neon64
#define synth_1to1_8bit_i386
#define synth_ntom_8bit_m2s
#define init_layer3_gainpow2
#define synth_1to1_s32_neon64
#define init_layer12_table_mmx
#define synth_1to1_real_m2s
#define synth_1to1_fltst_altivec
#define synth_2to1_8bit_mono
#define synth_1to1_s32st_neon64
#define synth_2to1_dither
#define synth_1to1_real_stereo_neon
#define synth_1to1_altivec
#define synth_4to1_dither
#define synth_1to1_stereo_neon
#define init_layer12_stuff
#define synth_2to1_8bit_i386
#define synth_1to1_8bit_wrap
#define synth_1to1_3dnowext
#define synth_1to1_neon64
#define synth_1to1_s32_altivec
#define synth_1to1_s32_neon
#define synth_ntom_real_mono
#define frame_dither_init
#define synth_1to1_s32_stereo_altivec
#define synth_1to1_stereo_avx
#define synth_ntom_real_m2s
#define synth_1to1_real_neon
#define make_decode_tables_mmx
#define synth_ntom_8bit_mono
#define synth_4to1_8bit_i386
#define synth_4to1_s32_mono
#define synth_2to1_8bit_m2s
static int find_dectype(mpg123_handle *fr)
void check_decoders(void)
static int synth_stereo_wrap(real *bandPtr_l, real *bandPtr_r, mpg123_handle *fr)
static int find_synth(func_synth synth, const func_synth synths[r_limit][f_limit])
#define OUT_SYNTHS(synth_16, synth_8, synth_real, synth_32)
static const struct synth_s synth_base
static const char * mpg123_decoder_list[]
#define ACCURATE_ROUNDING
#define debug3(s, a, b, c)
func_synth_mono synth_mono
func_synth_stereo synth_stereo
struct mpg123_handle_struct::@3459 cpu_opts
void(* make_decode_tables)(mpg123_handle *fr)
int(* func_synth)(real *, int, mpg123_handle *, int)