Revision f7a5e779 libavcodec/x86/ac3dsp_mmx.c
libavcodec/x86/ac3dsp_mmx.c | ||
---|---|---|
32 | 32 |
extern int ff_ac3_max_msb_abs_int16_sse2 (const int16_t *src, int len); |
33 | 33 |
extern int ff_ac3_max_msb_abs_int16_ssse3 (const int16_t *src, int len); |
34 | 34 |
|
35 |
extern void ff_ac3_lshift_int16_mmx (int16_t *src, int len, unsigned int lshift); |
|
36 |
extern void ff_ac3_lshift_int16_sse2(int16_t *src, int len, unsigned int lshift); |
|
37 |
|
|
38 |
extern void ff_ac3_shift_int32_mmx (int32_t *src, int len, int shift); |
|
39 |
extern void ff_ac3_shift_int32_sse2(int32_t *src, int len, int shift); |
|
40 |
|
|
41 | 35 |
av_cold void ff_ac3dsp_init_x86(AC3DSPContext *c) |
42 | 36 |
{ |
43 | 37 |
int mm_flags = av_get_cpu_flags(); |
... | ... | |
46 | 40 |
if (mm_flags & AV_CPU_FLAG_MMX) { |
47 | 41 |
c->ac3_exponent_min = ff_ac3_exponent_min_mmx; |
48 | 42 |
c->ac3_max_msb_abs_int16 = ff_ac3_max_msb_abs_int16_mmx; |
49 |
c->ac3_lshift_int16 = ff_ac3_lshift_int16_mmx; |
|
50 |
c->ac3_shift_int32 = ff_ac3_shift_int32_mmx; |
|
51 | 43 |
} |
52 | 44 |
if (mm_flags & AV_CPU_FLAG_MMX2 && HAVE_MMX2) { |
53 | 45 |
c->ac3_exponent_min = ff_ac3_exponent_min_mmxext; |
... | ... | |
56 | 48 |
if (mm_flags & AV_CPU_FLAG_SSE2 && HAVE_SSE) { |
57 | 49 |
c->ac3_exponent_min = ff_ac3_exponent_min_sse2; |
58 | 50 |
c->ac3_max_msb_abs_int16 = ff_ac3_max_msb_abs_int16_sse2; |
59 |
|
|
60 |
if (!(mm_flags & AV_CPU_FLAG_SSE2SLOW)) { |
|
61 |
c->ac3_lshift_int16 = ff_ac3_lshift_int16_sse2; |
|
62 |
c->ac3_shift_int32 = ff_ac3_shift_int32_sse2; |
|
63 |
} |
|
64 | 51 |
} |
65 | 52 |
if (mm_flags & AV_CPU_FLAG_SSSE3 && HAVE_SSSE3) { |
66 | 53 |
c->ac3_max_msb_abs_int16 = ff_ac3_max_msb_abs_int16_ssse3; |
Also available in: Unified diff