15 #if ((defined OPT_X86) || (defined OPT_X86_64) || (defined OPT_NEON) || (defined OPT_NEON64)) && (defined OPT_MULTI) 21 #define cpu_flags nothing 25 #define cpu_3dnow(s) 1 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);
83 # ifndef NO_DOWNSAMPLE 93 # ifndef NO_DOWNSAMPLE 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 266 #ifndef NO_DOWNSAMPLE 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;
400 #ifndef NO_DOWNSAMPLE 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;
956 static 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;
int synth_1to1_fltst_neon64(real *, real *, mpg123_handle *)
#define make_decode_tables
int synth_2to1_s32(real *, int, mpg123_handle *, int)
int synth_1to1_s32_sse(real *, int, mpg123_handle *, int)
#define synth_1to1_s32_altivec
int synth_1to1_8bit_mono(real *, mpg123_handle *)
#define synth_1to1_real_altivec
int synth_1to1_s32_i386(real *, int, mpg123_handle *, int)
int synth_1to1_real_stereo_neon(real *, real *, mpg123_handle *)
int synth_4to1(real *, int, mpg123_handle *, int)
int synth_4to1_s32_mono(real *, mpg123_handle *)
int synth_ntom_real_m2s(real *, mpg123_handle *)
int frame_cpu_opt(mpg123_handle *fr, const char *cpu)
int synth_1to1_stereo_neon64(real *, real *, mpg123_handle *)
int synth_4to1_i386(real *, int, mpg123_handle *, int)
int synth_1to1_i586_dither(real *, int, mpg123_handle *, int)
int synth_1to1_stereo_x86_64(real *, real *, mpg123_handle *)
int synth_1to1_s32_stereo_neon(real *, real *, mpg123_handle *)
void dct36_neon64(real *, real *, real *, real *, real *)
#define init_layer12_table_mmx
#define ACCURATE_ROUNDING
int synth_1to1_s32_stereo_sse(real *, real *, mpg123_handle *)
int synth_1to1_real_i386(real *, int, mpg123_handle *, int)
int synth_4to1_real_m2s(real *, mpg123_handle *)
int synth_1to1_i586(real *, int, mpg123_handle *, int)
void dct36_3dnow(real *, real *, real *, real *, real *)
int synth_1to1_i386(real *, int, mpg123_handle *, int)
int synth_1to1_s32_mono(real *, mpg123_handle *)
int synth_1to1_stereo_neon(real *, real *, mpg123_handle *)
int synth_2to1_mono(real *, mpg123_handle *)
int synth_4to1_dither(real *, int, mpg123_handle *, int)
int synth_ntom_8bit_mono(real *, mpg123_handle *)
_Tp _STLP_CALL real(const complex< _Tp > &__z)
int synth_1to1_8bit_wrap_m2s(real *, mpg123_handle *)
int synth_4to1_8bit_i386(real *, int, mpg123_handle *, int)
int synth_1to1_s32_x86_64(real *, int, mpg123_handle *, int)
enum optcla decclass(const enum optdec type)
int synth_1to1_avx(real *, int, mpg123_handle *, int)
#define synth_1to1_altivec
int synth_ntom_real(real *, int, mpg123_handle *, int)
int synth_1to1_mmx(real *, int, mpg123_handle *, int)
int synth_ntom_s32(real *, int, mpg123_handle *, int)
int synth_1to1_stereo_sse(real *, real *, mpg123_handle *)
enum optdec dectype(const char *decoder)
#define debug3(s, a, b, c)
int synth_4to1_s32_i386(real *, int, mpg123_handle *, int)
int synth_2to1_i386(real *, int, mpg123_handle *, int)
int synth_1to1_sse(real *, int, mpg123_handle *, int)
int synth_1to1_fltst_avx(real *, real *, mpg123_handle *)
unsigned int getcpuflags(struct cpuflags *cf)
int synth_ntom_s32_m2s(real *, mpg123_handle *)
int synth_1to1_s32(real *, int, mpg123_handle *, int)
#define make_conv16to8_table
const char *attribute_align_arg mpg123_current_decoder(mpg123_handle *mh)
#define init_layer12_stuff
int(* func_synth)(real *, int, mpg123_handle *, int)
#define init_layer3_gainpow2
void dct36_x86_64(real *, real *, real *, real *, real *)
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
int synth_2to1_8bit_i386(real *, int, mpg123_handle *, int)
int synth_1to1_dither(real *, int, mpg123_handle *, int)
int synth_1to1_8bit_m2s(real *, mpg123_handle *)
int synth_4to1_real_mono(real *, mpg123_handle *)
void(* make_decode_tables)(mpg123_handle *fr)
int synth_1to1_real_stereo_x86_64(real *, real *, mpg123_handle *)
int synth_4to1_real_i386(real *, int, mpg123_handle *, int)
func_synth_mono synth_mono
int synth_ntom_m2s(real *, mpg123_handle *)
void dct36_3dnowext(real *, real *, real *, real *, real *)
int synth_2to1(real *, int, mpg123_handle *, int)
int synth_1to1_s32st_neon64(real *, real *, mpg123_handle *)
int synth_4to1_s32_m2s(real *, mpg123_handle *)
int synth_1to1_s32_stereo_x86_64(real *, real *, mpg123_handle *)
int synth_2to1_8bit_mono(real *, mpg123_handle *)
int synth_1to1_s32_neon64(real *, int, mpg123_handle *, int)
int synth_1to1_real_neon(real *, int, mpg123_handle *, int)
int synth_ntom_real_mono(real *, mpg123_handle *)
int synth_2to1_8bit(real *, int, mpg123_handle *, int)
int set_synth_functions(mpg123_handle *fr)
int synth_2to1_real_i386(real *, int, mpg123_handle *, int)
void dct36_neon(real *, real *, real *, real *, real *)
static const char * mpg123_decoder_list[]
int synth_ntom_8bit_m2s(real *, mpg123_handle *)
int synth_4to1_mono(real *, mpg123_handle *)
int synth_1to1_s32_m2s(real *, mpg123_handle *)
int synth_1to1_real_m2s(real *, mpg123_handle *)
#define init_layer3_stuff
int synth_1to1_3dnowext(real *, int, mpg123_handle *, int)
int synth_4to1_8bit_m2s(real *, mpg123_handle *)
int synth_2to1_s32_mono(real *, mpg123_handle *)
int synth_1to1_real(real *, int, mpg123_handle *, int)
int synth_1to1_8bit_i386(real *, int, mpg123_handle *, int)
int synth_ntom_mono(real *, mpg123_handle *)
struct mpg123_handle_struct::@3398 cpu_opts
void check_decoders(void)
void dct36_avx(real *, real *, real *, real *, real *)
int synth_2to1_s32_m2s(real *, mpg123_handle *)
int synth_ntom_s32_mono(real *, mpg123_handle *)
int synth_4to1_8bit(real *, int, mpg123_handle *, int)
int synth_1to1_3dnow(real *, int, mpg123_handle *, int)
func_synth_stereo synth_stereo
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])
int synth_1to1_real_sse(real *, int, mpg123_handle *, int)
int synth_ntom(real *, int, mpg123_handle *, int)
#define make_decode_tables_mmx
int synth_2to1_real_mono(real *, mpg123_handle *)
static const struct synth_s synth_base
int synth_2to1_dither(real *, int, mpg123_handle *, int)
int synth_2to1_real(real *, int, mpg123_handle *, int)
int synth_1to1_s32_avx(real *, int, mpg123_handle *, int)
int synth_1to1_8bit(real *, int, mpg123_handle *, int)
int synth_1to1_neon64(real *, int, mpg123_handle *, int)
#define init_layer3_gainpow2_mmx
#define synth_1to1_fltst_altivec
#define init_layer12_table
int synth_1to1_real_stereo_sse(real *, real *, mpg123_handle *)
int synth_1to1_stereo_avx(real *, real *, mpg123_handle *)
static int find_dectype(mpg123_handle *fr)
int synth_1to1_real_avx(real *, int, mpg123_handle *, int)
int synth_1to1_m2s(real *, mpg123_handle *)
int synth_1to1_neon(real *, int, mpg123_handle *, int)
int synth_1to1_8bit_wrap(real *, int, mpg123_handle *, int)
int synth_1to1_x86_64(real *, int, mpg123_handle *, int)
int synth_1to1(real *, int, mpg123_handle *, int)
int synth_2to1_m2s(real *, mpg123_handle *)
int synth_1to1_mono(real *, mpg123_handle *)
const char attribute_align_arg ** mpg123_decoders(void)
void dct36_sse(real *, real *, real *, real *, real *)
int synth_1to1_real_neon64(real *, int, mpg123_handle *, int)
int synth_1to1_real_x86_64(real *, int, mpg123_handle *, int)
int synth_1to1_arm(real *, int, mpg123_handle *, int)
GLuint GLuint GLsizei GLenum type
int synth_4to1_m2s(real *, mpg123_handle *)
#define attribute_align_arg
const char attribute_align_arg ** mpg123_supported_decoders(void)
int synth_2to1_s32_i386(real *, int, mpg123_handle *, int)
#define frame_dither_init
int synth_1to1_8bit_wrap_mono(real *, mpg123_handle *)
int synth_ntom_8bit(real *, int, mpg123_handle *, int)
int synth_4to1_real(real *, int, mpg123_handle *, int)
int synth_1to1_real_mono(real *, mpg123_handle *)
int synth_2to1_8bit_m2s(real *, mpg123_handle *)
int synth_1to1_s32_stereo_avx(real *, real *, mpg123_handle *)
int synth_4to1_8bit_mono(real *, mpg123_handle *)
int synth_4to1_s32(real *, int, mpg123_handle *, int)
#define synth_1to1_s32_stereo_altivec
int synth_2to1_real_m2s(real *, mpg123_handle *)
#define OUT_SYNTHS(synth_16, synth_8, synth_real, synth_32)
int synth_1to1_s32_neon(real *, int, mpg123_handle *, int)
#define synth_1to1_stereo_altivec