diff mbox series

[FFmpeg-devel,6/6] fft_fixed: remove 16-bit FFT code

Message ID MQcaNS0--3-2@lynne.ee
State New
Headers show
Series [FFmpeg-devel,1/6] ac3enc_fixed: convert to 32-bit sample format
Related show

Checks

Context Check Description
andriy/x86_make success Make finished
andriy/x86_make_fate fail Make fate failed
andriy/PPC64_make success Make finished
andriy/PPC64_make_fate warning Make fate failed

Commit Message

Lynne Jan. 9, 2021, 7:22 p.m. UTC
No longer used by anything. 
Unfortunately the old FFT_FLOAT/FFT_FIXED_32 is left as-is. It's
simply too much work for code meant to be all removed anyway.

Patch attached. Read patch 1/6 to see the size savings.
Subject: [PATCH 6/6] fft_fixed: remove 16-bit FFT code

No longer used by anything.
Unfortunately the old FFT_FLOAT/FFT_FIXED_32 is left as-is. It's
simply too much work for code meant to be all removed anyway.
---
 libavcodec/Makefile                 |   7 +-
 libavcodec/arm/Makefile             |   6 +-
 libavcodec/arm/fft_fixed_init_arm.c |  40 -----
 libavcodec/arm/fft_fixed_neon.S     | 261 ----------------------------
 libavcodec/fft-internal.h           |  27 +--
 libavcodec/fft.h                    |   8 -
 libavcodec/fft_fixed.c              |  21 ---
 libavcodec/fft_template.c           |   2 -
 8 files changed, 6 insertions(+), 366 deletions(-)
 delete mode 100644 libavcodec/arm/fft_fixed_init_arm.c
 delete mode 100644 libavcodec/arm/fft_fixed_neon.S
 delete mode 100644 libavcodec/fft_fixed.c

Comments

Lynne Jan. 12, 2021, 7:36 a.m. UTC | #1
Jan 9, 2021, 20:22 by dev@lynne.ee:

> No longer used by anything. 
> Unfortunately the old FFT_FLOAT/FFT_FIXED_32 is left as-is. It's
> simply too much work for code meant to be all removed anyway.
>
> Patch attached. Read patch 1/6 to see the size savings.
>
Forgot to remove the tests, making FATE fail.
Fixed, patch attached.
Andreas Rheinhardt Jan. 12, 2021, 7:50 a.m. UTC | #2
Lynne:
> Jan 9, 2021, 20:22 by dev@lynne.ee:
> 
>> No longer used by anything. 
>> Unfortunately the old FFT_FLOAT/FFT_FIXED_32 is left as-is. It's
>> simply too much work for code meant to be all removed anyway.
>>
>> Patch attached. Read patch 1/6 to see the size savings.
>>
> Forgot to remove the tests, making FATE fail.
> Fixed, patch attached.
> 
According to patchwork, even the very first of your patches doesn't pass
FATE. And given that your second version (of the first patch) didn't
change anything wrt FATE, it won't be different with v2.

- Andreas
Lynne Jan. 12, 2021, 8:11 a.m. UTC | #3
Jan 12, 2021, 08:50 by andreas.rheinhardt@gmail.com:

> Lynne:
>
>> Jan 9, 2021, 20:22 by dev@lynne.ee:
>>
>>> No longer used by anything. 
>>> Unfortunately the old FFT_FLOAT/FFT_FIXED_32 is left as-is. It's
>>> simply too much work for code meant to be all removed anyway.
>>>
>>> Patch attached. Read patch 1/6 to see the size savings.
>>>
>> Forgot to remove the tests, making FATE fail.
>> Fixed, patch attached.
>>
> According to patchwork, even the very first of your patches doesn't pass
> FATE. And given that your second version (of the first patch) didn't
> change anything wrt FATE, it won't be different with v2.
>

Why are you posting this as a reply to this patch then?
I only tested fate-ac3 and fate-fft. This wasn't covered by either.
Fixed locally. It was a 2-char fix in fate-unknown_layout-ac3.
Andreas Rheinhardt Jan. 12, 2021, 8:33 a.m. UTC | #4
Lynne:
> Jan 12, 2021, 08:50 by andreas.rheinhardt@gmail.com:
> 
>> Lynne:
>>
>>> Jan 9, 2021, 20:22 by dev@lynne.ee:
>>>
>>>> No longer used by anything. 
>>>> Unfortunately the old FFT_FLOAT/FFT_FIXED_32 is left as-is. It's
>>>> simply too much work for code meant to be all removed anyway.
>>>>
>>>> Patch attached. Read patch 1/6 to see the size savings.
>>>>
>>> Forgot to remove the tests, making FATE fail.
>>> Fixed, patch attached.
>>>
>> According to patchwork, even the very first of your patches doesn't pass
>> FATE. And given that your second version (of the first patch) didn't
>> change anything wrt FATE, it won't be different with v2.
>>
> 
> Why are you posting this as a reply to this patch then?
> I only tested fate-ac3 and fate-fft. This wasn't covered by either.
> Fixed locally. It was a 2-char fix in fate-unknown_layout-ac3.
> 
Because IMO the topic of this mail is "FATE failures", so I answered here.

- Andreas

PS: Are you sure you do not need to change fate-lavf-rm, too?
diff mbox series

Patch

diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index bf4256dc87..4b6d9c6e02 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -83,10 +83,9 @@  OBJS-$(CONFIG_EXIF)                    += exif.o tiff_common.o
 OBJS-$(CONFIG_FAANDCT)                 += faandct.o
 OBJS-$(CONFIG_FAANIDCT)                += faanidct.o
 OBJS-$(CONFIG_FDCTDSP)                 += fdctdsp.o jfdctfst.o jfdctint.o
-FFT-OBJS-$(CONFIG_HARDCODED_TABLES)    += cos_tables.o cos_fixed_tables.o
-OBJS-$(CONFIG_FFT)                     += avfft.o fft_fixed.o fft_float.o \
-                                          fft_fixed_32.o fft_init_table.o \
-                                          $(FFT-OBJS-yes)
+FFT-OBJS-$(CONFIG_HARDCODED_TABLES)    += cos_tables.o
+OBJS-$(CONFIG_FFT)                     += avfft.o fft_float.o fft_fixed_32.o \
+                                          fft_init_table.o $(FFT-OBJS-yes)
 OBJS-$(CONFIG_FLACDSP)                 += flacdsp.o
 OBJS-$(CONFIG_FMTCONVERT)              += fmtconvert.o
 OBJS-$(CONFIG_GOLOMB)                  += golomb.o
diff --git a/libavcodec/arm/Makefile b/libavcodec/arm/Makefile
index 23e8abbf2e..c4ab93aeeb 100644
--- a/libavcodec/arm/Makefile
+++ b/libavcodec/arm/Makefile
@@ -5,8 +5,7 @@  OBJS-$(CONFIG_AC3DSP)                  += arm/ac3dsp_init_arm.o         \
                                           arm/ac3dsp_arm.o
 OBJS-$(CONFIG_AUDIODSP)                += arm/audiodsp_init_arm.o
 OBJS-$(CONFIG_BLOCKDSP)                += arm/blockdsp_init_arm.o
-OBJS-$(CONFIG_FFT)                     += arm/fft_init_arm.o            \
-                                          arm/fft_fixed_init_arm.o
+OBJS-$(CONFIG_FFT)                     += arm/fft_init_arm.o
 OBJS-$(CONFIG_FLACDSP)                 += arm/flacdsp_init_arm.o        \
                                           arm/flacdsp_arm.o
 OBJS-$(CONFIG_FMTCONVERT)              += arm/fmtconvert_init_arm.o
@@ -108,8 +107,7 @@  NEON-OBJS-$(CONFIG_AUDIODSP)           += arm/audiodsp_init_neon.o      \
                                           arm/int_neon.o
 NEON-OBJS-$(CONFIG_BLOCKDSP)           += arm/blockdsp_init_neon.o      \
                                           arm/blockdsp_neon.o
-NEON-OBJS-$(CONFIG_FFT)                += arm/fft_neon.o                \
-                                          arm/fft_fixed_neon.o
+NEON-OBJS-$(CONFIG_FFT)                += arm/fft_neon.o
 NEON-OBJS-$(CONFIG_FMTCONVERT)         += arm/fmtconvert_neon.o
 NEON-OBJS-$(CONFIG_G722DSP)            += arm/g722dsp_neon.o
 NEON-OBJS-$(CONFIG_H264CHROMA)         += arm/h264cmc_neon.o
diff --git a/libavcodec/arm/fft_fixed_init_arm.c b/libavcodec/arm/fft_fixed_init_arm.c
deleted file mode 100644
index 30ce48d352..0000000000
--- a/libavcodec/arm/fft_fixed_init_arm.c
+++ /dev/null
@@ -1,40 +0,0 @@ 
-/*
- * Copyright (c) 2009 Mans Rullgard <mans@mansr.com>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * FFmpeg is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "libavutil/attributes.h"
-#include "libavutil/cpu.h"
-#include "libavutil/arm/cpu.h"
-
-#define FFT_FLOAT 0
-#include "libavcodec/fft.h"
-
-void ff_fft_fixed_calc_neon(FFTContext *s, FFTComplex *z);
-
-av_cold void ff_fft_fixed_init_arm(FFTContext *s)
-{
-    int cpu_flags = av_get_cpu_flags();
-
-    if (have_neon(cpu_flags)) {
-        s->fft_permutation = FF_FFT_PERM_SWAP_LSBS;
-#if CONFIG_FFT
-        s->fft_calc        = ff_fft_fixed_calc_neon;
-#endif
-    }
-}
diff --git a/libavcodec/arm/fft_fixed_neon.S b/libavcodec/arm/fft_fixed_neon.S
deleted file mode 100644
index 2651607544..0000000000
--- a/libavcodec/arm/fft_fixed_neon.S
+++ /dev/null
@@ -1,261 +0,0 @@ 
-/*
- * Copyright (c) 2011 Mans Rullgard <mans@mansr.com>
- *
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * FFmpeg is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "libavutil/arm/asm.S"
-
-.macro  bflies          d0,  d1,  r0,  r1
-        vrev64.32       \r0, \d1                @ t5, t6, t1, t2
-        vhsub.s16       \r1, \d1, \r0           @ t1-t5, t2-t6, t5-t1, t6-t2
-        vhadd.s16       \r0, \d1, \r0           @ t1+t5, t2+t6, t5+t1, t6+t2
-        vext.16         \r1, \r1, \r1, #1       @ t2-t6, t5-t1, t6-t2, t1-t5
-        vtrn.32         \r0, \r1                @ t1+t5, t2+t6, t2-t6, t5-t1
-                                                @ t5,    t6,    t4,    t3
-        vhsub.s16       \d1, \d0, \r0
-        vhadd.s16       \d0, \d0, \r0
-.endm
-
-.macro  transform01     q0,  q1,  d3,  c0,  c1,  r0,  w0,  w1
-        vrev32.16       \r0, \d3
-        vmull.s16       \w0, \d3, \c0
-        vmlal.s16       \w0, \r0, \c1
-        vshrn.s32       \d3, \w0, #15
-        bflies          \q0, \q1, \w0, \w1
-.endm
-
-.macro  transform2      d0,  d1,  d2,  d3,  q0,  q1,  c0,  c1,  c2,  c3, \
-                        r0,  r1,  w0,  w1
-        vrev32.16       \r0, \d1
-        vrev32.16       \r1, \d3
-        vmull.s16       \w0, \d1, \c0
-        vmlal.s16       \w0, \r0, \c1
-        vmull.s16       \w1, \d3, \c2
-        vmlal.s16       \w1, \r1, \c3
-        vshrn.s32       \d1, \w0, #15
-        vshrn.s32       \d3, \w1, #15
-        bflies          \q0, \q1, \w0, \w1
-.endm
-
-.macro  fft4            d0,  d1,  r0,  r1
-        vhsub.s16       \r0, \d0, \d1           @ t3, t4, t8, t7
-        vhsub.s16       \r1, \d1, \d0
-        vhadd.s16       \d0, \d0, \d1           @ t1, t2, t6, t5
-        vmov.i64        \d1, #0xffff00000000
-        vbit            \r0, \r1, \d1
-        vrev64.16       \r1, \r0                @ t7, t8, t4, t3
-        vtrn.32         \r0, \r1                @ t3, t4, t7, t8
-        vtrn.32         \d0, \r0                @ t1, t2, t3, t4, t6, t5, t8, t7
-        vhsub.s16       \d1, \d0, \r0           @ r2, i2, r3, i1
-        vhadd.s16       \d0, \d0, \r0           @ r0, i0, r1, i3
-.endm
-
-.macro  fft8            d0,  d1,  d2,  d3,  q0,  q1,  c0,  c1,  r0,  r1, w0, w1
-        fft4            \d0, \d1, \r0, \r1
-        vtrn.32         \d0, \d1                @ z0, z2, z1, z3
-        vhadd.s16       \r0, \d2, \d3           @ t1, t2, t3, t4
-        vhsub.s16       \d3, \d2, \d3           @ z5, z7
-        vmov            \d2, \r0
-        transform01     \q0, \q1, \d3, \c0, \c1, \r0, \w0, \w1
-.endm
-
-function fft4_neon
-        vld1.16         {d0-d1},  [r0]
-        fft4            d0,  d1,  d2,  d3
-        vst1.16         {d0-d1},  [r0]
-        bx              lr
-endfunc
-
-function fft8_neon
-        vld1.16         {d0-d3},  [r0,:128]
-        movrel          r1,  coefs
-        vld1.16         {d30},    [r1,:64]
-        vdup.16         d31, d30[0]
-        fft8            d0,  d1,  d2,  d3,  q0,  q1,  d31, d30, d20, d21, q8, q9
-        vtrn.32         d0,  d1
-        vtrn.32         d2,  d3
-        vst1.16         {d0-d3},  [r0,:128]
-        bx              lr
-endfunc
-
-function fft16_neon
-        vld1.16         {d0-d3},  [r0,:128]!
-        vld1.16         {d4-d7},  [r0,:128]
-        movrel          r1,  coefs
-        sub             r0,  r0,  #32
-        vld1.16         {d28-d31},[r1,:128]
-        vdup.16         d31, d28[0]
-        fft8            d0,  d1,  d2,  d3,  q0,  q1,  d31, d28, d20, d21, q8, q9
-        vswp            d5,  d6
-        fft4            q2,  q3,  q8,  q9
-        vswp            d5,  d6
-        vtrn.32         q0,  q1             @ z0, z4, z2, z6, z1, z5, z3, z7
-        vtrn.32         q2,  q3             @ z8, z12,z10,z14,z9, z13,z11,z15
-        vswp            d1,  d2
-        vdup.16         d31, d28[0]
-        transform01     q0,  q2,  d5,  d31, d28, d20, q8, q9
-        vdup.16         d26, d29[0]
-        vdup.16         d27, d30[0]
-        transform2      d2,  d6,  d3,  d7,  q1,  q3,  d26, d30, d27, d29, \
-                        d20, d21, q8,  q9
-        vtrn.32         q0,  q1
-        vtrn.32         q2,  q3
-        vst1.16         {d0-d3},  [r0,:128]!
-        vst1.16         {d4-d7},  [r0,:128]
-        bx              lr
-endfunc
-
-function fft_pass_neon
-        push            {r4,lr}
-        movrel          lr,  coefs + 24
-        vld1.16         {d30},    [lr,:64]
-        lsl             r12, r2,  #3
-        vmov            d31, d30
-        add             r3,  r1,  r2,  lsl #2
-        mov             lr,  #-8
-        sub             r3,  r3,  #2
-        mov             r4,  r0
-        vld1.16         {d27[]},  [r3,:16]
-        sub             r3,  r3,  #6
-        vld1.16         {q0},     [r4,:128], r12
-        vld1.16         {q1},     [r4,:128], r12
-        vld1.16         {q2},     [r4,:128], r12
-        vld1.16         {q3},     [r4,:128], r12
-        vld1.16         {d28},    [r1,:64]!
-        vld1.16         {d29},    [r3,:64], lr
-        vswp            d1,  d2
-        vswp            d5,  d6
-        vtrn.32         d0,  d1
-        vtrn.32         d4,  d5
-        vdup.16         d25, d28[1]
-        vmul.s16        d27, d27, d31
-        transform01     q0,  q2,  d5,  d25, d27, d20, q8,  q9
-        b               2f
-1:
-        mov             r4,  r0
-        vdup.16         d26, d29[0]
-        vld1.16         {q0},     [r4,:128], r12
-        vld1.16         {q1},     [r4,:128], r12
-        vld1.16         {q2},     [r4,:128], r12
-        vld1.16         {q3},     [r4,:128], r12
-        vld1.16         {d28},    [r1,:64]!
-        vld1.16         {d29},    [r3,:64], lr
-        vswp            d1,  d2
-        vswp            d5,  d6
-        vtrn.32         d0,  d1
-        vtrn.32         d4,  d5
-        vdup.16         d24, d28[0]
-        vdup.16         d25, d28[1]
-        vdup.16         d27, d29[3]
-        vmul.s16        q13, q13, q15
-        transform2      d0,  d4,  d1,  d5,  q0,  q2,  d24, d26, d25, d27, \
-                        d16, d17, q9,  q10
-2:
-        vtrn.32         d2,  d3
-        vtrn.32         d6,  d7
-        vdup.16         d24, d28[2]
-        vdup.16         d26, d29[2]
-        vdup.16         d25, d28[3]
-        vdup.16         d27, d29[1]
-        vmul.s16        q13, q13, q15
-        transform2      d2,  d6,  d3,  d7,  q1,  q3,  d24, d26, d25, d27, \
-                        d16, d17, q9,  q10
-        vtrn.32         d0,  d1
-        vtrn.32         d2,  d3
-        vtrn.32         d4,  d5
-        vtrn.32         d6,  d7
-        vswp            d1,  d2
-        vswp            d5,  d6
-        mov             r4,  r0
-        vst1.16         {q0},     [r4,:128], r12
-        vst1.16         {q1},     [r4,:128], r12
-        vst1.16         {q2},     [r4,:128], r12
-        vst1.16         {q3},     [r4,:128], r12
-        add             r0,  r0,  #16
-        subs            r2,  r2,  #2
-        bgt             1b
-        pop             {r4,pc}
-endfunc
-
-#define F_SQRT1_2   23170
-#define F_COS_16_1  30274
-#define F_COS_16_3  12540
-
-const   coefs, align=4
-        .short          F_SQRT1_2, -F_SQRT1_2, -F_SQRT1_2,  F_SQRT1_2
-        .short          F_COS_16_1,-F_COS_16_1,-F_COS_16_1, F_COS_16_1
-        .short          F_COS_16_3,-F_COS_16_3,-F_COS_16_3, F_COS_16_3
-        .short          1,         -1,         -1,          1
-endconst
-
-.macro  def_fft n, n2, n4
-function fft\n\()_neon
-        push            {r4, lr}
-        mov             r4,  r0
-        bl              fft\n2\()_neon
-        add             r0,  r4,  #\n4*2*4
-        bl              fft\n4\()_neon
-        add             r0,  r4,  #\n4*3*4
-        bl              fft\n4\()_neon
-        mov             r0,  r4
-        pop             {r4, lr}
-        movrelx         r1,  X(ff_cos_\n\()_fixed)
-        mov             r2,  #\n4/2
-        b               fft_pass_neon
-endfunc
-.endm
-
-        def_fft    32,    16,     8
-        def_fft    64,    32,    16
-        def_fft   128,    64,    32
-        def_fft   256,   128,    64
-        def_fft   512,   256,   128
-        def_fft  1024,   512,   256
-        def_fft  2048,  1024,   512
-        def_fft  4096,  2048,  1024
-        def_fft  8192,  4096,  2048
-        def_fft 16384,  8192,  4096
-        def_fft 32768, 16384,  8192
-        def_fft 65536, 32768, 16384
-
-function ff_fft_fixed_calc_neon, export=1
-        ldr             r2,  [r0]
-        sub             r2,  r2,  #2
-        movrel          r3,  fft_fixed_tab_neon
-        ldr             r3,  [r3, r2, lsl #2]
-        mov             r0,  r1
-        bx              r3
-endfunc
-
-const   fft_fixed_tab_neon, relocate=1
-        .word fft4_neon
-        .word fft8_neon
-        .word fft16_neon
-        .word fft32_neon
-        .word fft64_neon
-        .word fft128_neon
-        .word fft256_neon
-        .word fft512_neon
-        .word fft1024_neon
-        .word fft2048_neon
-        .word fft4096_neon
-        .word fft8192_neon
-        .word fft16384_neon
-        .word fft32768_neon
-        .word fft65536_neon
-endconst
diff --git a/libavcodec/fft-internal.h b/libavcodec/fft-internal.h
index 5566ad9b81..3bd5a1123d 100644
--- a/libavcodec/fft-internal.h
+++ b/libavcodec/fft-internal.h
@@ -34,7 +34,7 @@ 
         (dim) = (are) * (bim) + (aim) * (bre);  \
     } while (0)
 
-#else
+#else /* FFT_FLOAT */
 
 #define SCALE_FLOAT(a, bits) lrint((a) * (double)(1 << (bits)))
 
@@ -52,31 +52,6 @@ 
 
 #define FIX15(a) av_clip(SCALE_FLOAT(a, 31), -2147483647, 2147483647)
 
-#else /* FFT_FIXED_32 */
-
-#include "fft.h"
-#include "mathops.h"
-
-#define FIX15(a) av_clip(SCALE_FLOAT(a, 15), -32767, 32767)
-
-#define sqrthalf ((int16_t)((1<<15)*M_SQRT1_2))
-
-#define BF(x, y, a, b) do {                     \
-        x = (a - b) >> 1;                       \
-        y = (a + b) >> 1;                       \
-    } while (0)
-
-#define CMULS(dre, dim, are, aim, bre, bim, sh) do {            \
-        (dre) = (MUL16(are, bre) - MUL16(aim, bim)) >> sh;      \
-        (dim) = (MUL16(are, bim) + MUL16(aim, bre)) >> sh;      \
-    } while (0)
-
-#define CMUL(dre, dim, are, aim, bre, bim)      \
-    CMULS(dre, dim, are, aim, bre, bim, 15)
-
-#define CMULL(dre, dim, are, aim, bre, bim)     \
-    CMULS(dre, dim, are, aim, bre, bim, 0)
-
 #endif /* FFT_FIXED_32 */
 
 #endif /* FFT_FLOAT */
diff --git a/libavcodec/fft.h b/libavcodec/fft.h
index ee823dd9ae..5ca2d18432 100644
--- a/libavcodec/fft.h
+++ b/libavcodec/fft.h
@@ -52,12 +52,6 @@  typedef float FFTDouble;
 
 typedef int32_t FFTSample;
 
-#else /* FFT_FIXED_32 */
-
-#define FFT_NAME(x) x ## _fixed
-
-typedef int16_t FFTSample;
-
 #endif /* FFT_FIXED_32 */
 
 typedef struct FFTComplex {
@@ -162,8 +156,6 @@  void ff_fft_init_arm(FFTContext *s);
 void ff_fft_init_mips(FFTContext *s);
 void ff_fft_init_ppc(FFTContext *s);
 
-void ff_fft_fixed_init_arm(FFTContext *s);
-
 void ff_fft_end(FFTContext *s);
 
 #define ff_mdct_init FFT_NAME(ff_mdct_init)
diff --git a/libavcodec/fft_fixed.c b/libavcodec/fft_fixed.c
deleted file mode 100644
index 3d3bd2fca6..0000000000
--- a/libavcodec/fft_fixed.c
+++ /dev/null
@@ -1,21 +0,0 @@ 
-/*
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * FFmpeg is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#define FFT_FLOAT 0
-#define FFT_FIXED_32 0
-#include "fft_template.c"
diff --git a/libavcodec/fft_template.c b/libavcodec/fft_template.c
index 4ffb9b1d9d..2d05990ca9 100644
--- a/libavcodec/fft_template.c
+++ b/libavcodec/fft_template.c
@@ -237,8 +237,6 @@  av_cold int ff_fft_init(FFTContext *s, int nbits, int inverse)
     if (ARCH_PPC)     ff_fft_init_ppc(s);
     if (ARCH_X86)     ff_fft_init_x86(s);
     if (HAVE_MIPSFPU) ff_fft_init_mips(s);
-#else
-    if (ARCH_ARM)     ff_fft_fixed_init_arm(s);
 #endif
     for(j=4; j<=nbits; j++) {
         ff_init_ff_cos_tabs(j);