summaryrefslogtreecommitdiff
path: root/libavcodec/arm/fft_init_arm.c
diff options
context:
space:
mode:
authorMåns Rullgård <mans@mansr.com>2010-04-10 16:27:56 +0000
committerMåns Rullgård <mans@mansr.com>2010-04-10 16:27:56 +0000
commite73d1a5efc2301d20e2f585f551c83fd248a2472 (patch)
tree59b718a64d076eff588820f5899003b25f084bc7 /libavcodec/arm/fft_init_arm.c
parentf462ed1f82e4be18876786e86f472ddf7cd41fbc (diff)
downloadffmpeg-e73d1a5efc2301d20e2f585f551c83fd248a2472.tar.gz
ARM: NEON optimised synth_filter_float
2.7x faster DCA decoding on Cortex-A8 Originally committed as revision 22828 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/arm/fft_init_arm.c')
-rw-r--r--libavcodec/arm/fft_init_arm.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/libavcodec/arm/fft_init_arm.c b/libavcodec/arm/fft_init_arm.c
index dfcd968c94..bde12400de 100644
--- a/libavcodec/arm/fft_init_arm.c
+++ b/libavcodec/arm/fft_init_arm.c
@@ -19,6 +19,7 @@
*/
#include "libavcodec/fft.h"
+#include "libavcodec/synth_filter.h"
void ff_fft_permute_neon(FFTContext *s, FFTComplex *z);
void ff_fft_calc_neon(FFTContext *s, FFTComplex *z);
@@ -29,6 +30,12 @@ void ff_mdct_calc_neon(FFTContext *s, FFTSample *output, const FFTSample *input)
void ff_rdft_calc_neon(struct RDFTContext *s, FFTSample *z);
+void ff_synth_filter_float_neon(FFTContext *imdct,
+ float *synth_buf_ptr, int *synth_buf_offset,
+ float synth_buf2[32], const float window[512],
+ float out[32], const float in[32],
+ float scale, float bias);
+
av_cold void ff_fft_init_arm(FFTContext *s)
{
if (HAVE_NEON) {
@@ -48,3 +55,11 @@ av_cold void ff_rdft_init_arm(RDFTContext *s)
s->rdft_calc = ff_rdft_calc_neon;
}
#endif
+
+#if CONFIG_DCA_DECODER
+av_cold void ff_synth_filter_init_arm(SynthFilterContext *s)
+{
+ if (HAVE_NEON)
+ s->synth_filter_float = ff_synth_filter_float_neon;
+}
+#endif