Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * Copyright (c) 2010 Mans Rullgard <mans@mansr.com>
  3.  *
  4.  * This file is part of FFmpeg.
  5.  *
  6.  * FFmpeg is free software; you can redistribute it and/or
  7.  * modify it under the terms of the GNU Lesser General Public
  8.  * License as published by the Free Software Foundation; either
  9.  * version 2.1 of the License, or (at your option) any later version.
  10.  *
  11.  * FFmpeg is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.  * Lesser General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU Lesser General Public
  17.  * License along with FFmpeg; if not, write to the Free Software
  18.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  19.  */
  20.  
  21. #include "config.h"
  22.  
  23. #include "libavutil/arm/cpu.h"
  24. #include "libavutil/attributes.h"
  25. #include "libavcodec/dcadsp.h"
  26.  
  27. void ff_dca_lfe_fir_vfp(float *out, const float *in, const float *coefs,
  28.                         int decifactor, float scale);
  29. void ff_dca_qmf_32_subbands_vfp(float samples_in[32][8], int sb_act,
  30.                                 SynthFilterContext *synth, FFTContext *imdct,
  31.                                 float synth_buf_ptr[512],
  32.                                 int *synth_buf_offset, float synth_buf2[32],
  33.                                 const float window[512], float *samples_out,
  34.                                 float raXin[32], float scale);
  35. void ff_dca_lfe_fir_neon(float *out, const float *in, const float *coefs,
  36.                          int decifactor, float scale);
  37.  
  38. void ff_synth_filter_float_vfp(FFTContext *imdct,
  39.                                float *synth_buf_ptr, int *synth_buf_offset,
  40.                                float synth_buf2[32], const float window[512],
  41.                                float out[32], const float in[32],
  42.                                float scale);
  43.  
  44. void ff_synth_filter_float_neon(FFTContext *imdct,
  45.                                 float *synth_buf_ptr, int *synth_buf_offset,
  46.                                 float synth_buf2[32], const float window[512],
  47.                                 float out[32], const float in[32],
  48.                                 float scale);
  49.  
  50. av_cold void ff_dcadsp_init_arm(DCADSPContext *s)
  51. {
  52.     int cpu_flags = av_get_cpu_flags();
  53.  
  54.     if (have_vfp(cpu_flags) && !have_vfpv3(cpu_flags)) {
  55.         s->lfe_fir = ff_dca_lfe_fir_vfp;
  56.         s->qmf_32_subbands = ff_dca_qmf_32_subbands_vfp;
  57.     }
  58.     if (have_neon(cpu_flags))
  59.         s->lfe_fir = ff_dca_lfe_fir_neon;
  60. }
  61.  
  62. av_cold void ff_synth_filter_init_arm(SynthFilterContext *s)
  63. {
  64.     int cpu_flags = av_get_cpu_flags();
  65.  
  66.     if (have_vfp(cpu_flags) && !have_vfpv3(cpu_flags))
  67.         s->synth_filter_float = ff_synth_filter_float_vfp;
  68.     if (have_neon(cpu_flags))
  69.         s->synth_filter_float = ff_synth_filter_float_neon;
  70. }
  71.