OLD | NEW |
1 /* | 1 /* |
2 * ARM NEON optimised DSP functions | 2 * ARM NEON optimised DSP functions |
3 * Copyright (c) 2008 Mans Rullgard <mans@mansr.com> | 3 * Copyright (c) 2008 Mans Rullgard <mans@mansr.com> |
4 * | 4 * |
5 * This file is part of FFmpeg. | 5 * This file is part of FFmpeg. |
6 * | 6 * |
7 * FFmpeg is free software; you can redistribute it and/or | 7 * FFmpeg is free software; you can redistribute it and/or |
8 * modify it under the terms of the GNU Lesser General Public | 8 * modify it under the terms of the GNU Lesser General Public |
9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
10 * version 2.1 of the License, or (at your option) any later version. | 10 * version 2.1 of the License, or (at your option) any later version. |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 void ff_vector_fmul_add_neon(float *dst, const float *src0, const float *src1, | 220 void ff_vector_fmul_add_neon(float *dst, const float *src0, const float *src1, |
221 const float *src2, int len); | 221 const float *src2, int len); |
222 | 222 |
223 void ff_vector_clipf_neon(float *dst, const float *src, float min, float max, | 223 void ff_vector_clipf_neon(float *dst, const float *src, float min, float max, |
224 int len); | 224 int len); |
225 void ff_float_to_int16_neon(int16_t *, const float *, long); | 225 void ff_float_to_int16_neon(int16_t *, const float *, long); |
226 void ff_float_to_int16_interleave_neon(int16_t *, const float **, long, int); | 226 void ff_float_to_int16_interleave_neon(int16_t *, const float **, long, int); |
227 | 227 |
228 void ff_vorbis_inverse_coupling_neon(float *mag, float *ang, int blocksize); | 228 void ff_vorbis_inverse_coupling_neon(float *mag, float *ang, int blocksize); |
229 | 229 |
| 230 int32_t ff_scalarproduct_int16_neon(int16_t *v1, int16_t *v2, int len, |
| 231 int shift); |
| 232 int32_t ff_scalarproduct_and_madd_int16_neon(int16_t *v1, int16_t *v2, |
| 233 int16_t *v3, int len, int mul); |
| 234 |
230 void ff_dsputil_init_neon(DSPContext *c, AVCodecContext *avctx) | 235 void ff_dsputil_init_neon(DSPContext *c, AVCodecContext *avctx) |
231 { | 236 { |
232 if (!avctx->lowres) { | 237 if (!avctx->lowres) { |
233 if (avctx->idct_algo == FF_IDCT_AUTO || | 238 if (avctx->idct_algo == FF_IDCT_AUTO || |
234 avctx->idct_algo == FF_IDCT_SIMPLENEON) { | 239 avctx->idct_algo == FF_IDCT_SIMPLENEON) { |
235 c->idct_put = ff_simple_idct_put_neon; | 240 c->idct_put = ff_simple_idct_put_neon; |
236 c->idct_add = ff_simple_idct_add_neon; | 241 c->idct_add = ff_simple_idct_add_neon; |
237 c->idct = ff_simple_idct_neon; | 242 c->idct = ff_simple_idct_neon; |
238 c->idct_permutation_type = FF_PARTTRANS_IDCT_PERM; | 243 c->idct_permutation_type = FF_PARTTRANS_IDCT_PERM; |
239 } else if ((CONFIG_VP3_DECODER || CONFIG_VP5_DECODER || | 244 } else if ((CONFIG_VP3_DECODER || CONFIG_VP5_DECODER || |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
399 c->sv_fmul_scalar[0] = ff_sv_fmul_scalar_2_neon; | 404 c->sv_fmul_scalar[0] = ff_sv_fmul_scalar_2_neon; |
400 c->sv_fmul_scalar[1] = ff_sv_fmul_scalar_4_neon; | 405 c->sv_fmul_scalar[1] = ff_sv_fmul_scalar_4_neon; |
401 | 406 |
402 if (!(avctx->flags & CODEC_FLAG_BITEXACT)) { | 407 if (!(avctx->flags & CODEC_FLAG_BITEXACT)) { |
403 c->float_to_int16 = ff_float_to_int16_neon; | 408 c->float_to_int16 = ff_float_to_int16_neon; |
404 c->float_to_int16_interleave = ff_float_to_int16_interleave_neon; | 409 c->float_to_int16_interleave = ff_float_to_int16_interleave_neon; |
405 } | 410 } |
406 | 411 |
407 if (CONFIG_VORBIS_DECODER) | 412 if (CONFIG_VORBIS_DECODER) |
408 c->vorbis_inverse_coupling = ff_vorbis_inverse_coupling_neon; | 413 c->vorbis_inverse_coupling = ff_vorbis_inverse_coupling_neon; |
| 414 |
| 415 c->scalarproduct_int16 = ff_scalarproduct_int16_neon; |
| 416 c->scalarproduct_and_madd_int16 = ff_scalarproduct_and_madd_int16_neon; |
409 } | 417 } |
OLD | NEW |