~ppsspp/ppsspp/ffmpeg

« back to all changes in this revision

Viewing changes to libavcodec/x86/ac3dsp_init.c

  • Committer: Henrik Rydgård
  • Date: 2014-01-03 10:44:32 UTC
  • Revision ID: git-v1:87c6c126784b1718bfa448ecf2e6a9fef781eb4e
Update our ffmpeg snapshot to a clone of the official repository.

This is because Maxim's at3plus support has been officially merged!

Show diffs side-by-side

added added

removed removed

Lines of Context:
51
51
void ff_ac3_extract_exponents_sse2 (uint8_t *exp, int32_t *coef, int nb_coefs);
52
52
void ff_ac3_extract_exponents_ssse3(uint8_t *exp, int32_t *coef, int nb_coefs);
53
53
 
 
54
void ff_apply_window_int16_round_mmxext(int16_t *output, const int16_t *input,
 
55
                                        const int16_t *window, unsigned int len);
 
56
void ff_apply_window_int16_round_sse2(int16_t *output, const int16_t *input,
 
57
                                      const int16_t *window, unsigned int len);
 
58
void ff_apply_window_int16_mmxext(int16_t *output, const int16_t *input,
 
59
                                  const int16_t *window, unsigned int len);
 
60
void ff_apply_window_int16_sse2(int16_t *output, const int16_t *input,
 
61
                                const int16_t *window, unsigned int len);
 
62
void ff_apply_window_int16_ssse3(int16_t *output, const int16_t *input,
 
63
                                 const int16_t *window, unsigned int len);
 
64
void ff_apply_window_int16_ssse3_atom(int16_t *output, const int16_t *input,
 
65
                                      const int16_t *window, unsigned int len);
 
66
 
54
67
#if ARCH_X86_32 && defined(__INTEL_COMPILER)
55
68
#       undef HAVE_7REGS
56
69
#       define HAVE_7REGS 0
201
214
    if (EXTERNAL_MMXEXT(cpu_flags)) {
202
215
        c->ac3_exponent_min = ff_ac3_exponent_min_mmxext;
203
216
        c->ac3_max_msb_abs_int16 = ff_ac3_max_msb_abs_int16_mmxext;
 
217
        if (bit_exact) {
 
218
            c->apply_window_int16 = ff_apply_window_int16_mmxext;
 
219
        } else {
 
220
            c->apply_window_int16 = ff_apply_window_int16_round_mmxext;
 
221
        }
204
222
    }
205
223
    if (EXTERNAL_SSE(cpu_flags)) {
206
224
        c->float_to_fixed24 = ff_float_to_fixed24_sse;
215
233
            c->ac3_lshift_int16 = ff_ac3_lshift_int16_sse2;
216
234
            c->ac3_rshift_int32 = ff_ac3_rshift_int32_sse2;
217
235
        }
 
236
        if (bit_exact) {
 
237
            c->apply_window_int16 = ff_apply_window_int16_sse2;
 
238
        } else if (!(cpu_flags & AV_CPU_FLAG_SSE2SLOW)) {
 
239
            c->apply_window_int16 = ff_apply_window_int16_round_sse2;
 
240
        }
218
241
    }
219
242
    if (EXTERNAL_SSSE3(cpu_flags)) {
220
243
        c->ac3_max_msb_abs_int16 = ff_ac3_max_msb_abs_int16_ssse3;
221
 
        if (!(cpu_flags & AV_CPU_FLAG_ATOM)) {
 
244
        if (cpu_flags & AV_CPU_FLAG_ATOM) {
 
245
            c->apply_window_int16 = ff_apply_window_int16_ssse3_atom;
 
246
        } else {
222
247
            c->extract_exponents = ff_ac3_extract_exponents_ssse3;
 
248
            c->apply_window_int16 = ff_apply_window_int16_ssse3;
223
249
        }
224
250
    }
225
251