|
|
|
@@ -27,6 +27,11 @@ extern void ff_ac3_exponent_min_mmx (uint8_t *exp, int num_reuse_blocks, int n |
|
|
|
extern void ff_ac3_exponent_min_mmxext(uint8_t *exp, int num_reuse_blocks, int nb_coefs); |
|
|
|
extern void ff_ac3_exponent_min_sse2 (uint8_t *exp, int num_reuse_blocks, int nb_coefs); |
|
|
|
|
|
|
|
extern int ff_ac3_max_msb_abs_int16_mmx (const int16_t *src, int len); |
|
|
|
extern int ff_ac3_max_msb_abs_int16_mmxext(const int16_t *src, int len); |
|
|
|
extern int ff_ac3_max_msb_abs_int16_sse2 (const int16_t *src, int len); |
|
|
|
extern int ff_ac3_max_msb_abs_int16_ssse3 (const int16_t *src, int len); |
|
|
|
|
|
|
|
av_cold void ff_ac3dsp_init_x86(AC3DSPContext *c) |
|
|
|
{ |
|
|
|
int mm_flags = av_get_cpu_flags(); |
|
|
|
@@ -34,12 +39,18 @@ av_cold void ff_ac3dsp_init_x86(AC3DSPContext *c) |
|
|
|
#if HAVE_YASM |
|
|
|
if (mm_flags & AV_CPU_FLAG_MMX) { |
|
|
|
c->ac3_exponent_min = ff_ac3_exponent_min_mmx; |
|
|
|
c->ac3_max_msb_abs_int16 = ff_ac3_max_msb_abs_int16_mmx; |
|
|
|
} |
|
|
|
if (mm_flags & AV_CPU_FLAG_MMX2 && HAVE_MMX2) { |
|
|
|
c->ac3_exponent_min = ff_ac3_exponent_min_mmxext; |
|
|
|
c->ac3_max_msb_abs_int16 = ff_ac3_max_msb_abs_int16_mmxext; |
|
|
|
} |
|
|
|
if (mm_flags & AV_CPU_FLAG_SSE2 && HAVE_SSE) { |
|
|
|
c->ac3_exponent_min = ff_ac3_exponent_min_sse2; |
|
|
|
c->ac3_max_msb_abs_int16 = ff_ac3_max_msb_abs_int16_sse2; |
|
|
|
} |
|
|
|
if (mm_flags & AV_CPU_FLAG_SSSE3 && HAVE_SSSE3) { |
|
|
|
c->ac3_max_msb_abs_int16 = ff_ac3_max_msb_abs_int16_ssse3; |
|
|
|
} |
|
|
|
#endif |
|
|
|
} |