[FFmpeg-devel] [PATCH] avcodec/(fft|mdct)_fixed_32: Remove fixed-point FFT/MDCT
Andreas Rheinhardt
andreas.rheinhardt at outlook.com
Mon Jul 24 14:59:55 EEST 2023
These are no longer used as they have been replaced by avutil/tx.
Yet they are still compiled for all builds and included
by default in the resulting DSO for shared builds (they are discarded
for shared builds). This commit stops doing so.
This saves 8KiB in .rodata, about 43KiB in .bss and more than 2KiB
in .text for shared builds.
(The floating point FFT is still used by AVFFT and can therefore
not be removed for now; it is also used implicitly by mpadsp and
wmavoice.)
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
---
doc/mips.txt | 6 -
libavcodec/Makefile | 7 +-
libavcodec/dct.h | 2 +-
libavcodec/fft-internal.h | 16 --
libavcodec/fft.h | 22 --
libavcodec/fft_fixed_32.c | 51 -----
libavcodec/fft_init_table.c | 344 ------------------------------
libavcodec/fft_template.c | 173 +--------------
libavcodec/mdct_fixed_32.c | 51 -----
libavcodec/mdct_template.c | 9 -
libavcodec/mips/fft_mips.c | 5 +-
libavcodec/{ => mips}/fft_table.h | 43 +++-
libavcodec/rdft.h | 2 +-
libavcodec/tests/.gitignore | 1 -
libavcodec/tests/avfft.c | 1 -
libavcodec/tests/fft-fixed32.c | 21 --
libavcodec/tests/fft.c | 28 ---
tests/fate/fft.mak | 23 +-
18 files changed, 46 insertions(+), 759 deletions(-)
delete mode 100644 libavcodec/fft_fixed_32.c
delete mode 100644 libavcodec/fft_init_table.c
delete mode 100644 libavcodec/mdct_fixed_32.c
rename libavcodec/{ => mips}/fft_table.h (73%)
delete mode 100644 libavcodec/tests/fft-fixed32.c
diff --git a/doc/mips.txt b/doc/mips.txt
index a84e89ae79..8604f7999d 100644
--- a/doc/mips.txt
+++ b/doc/mips.txt
@@ -48,11 +48,6 @@ Files that have MIPS copyright notice in them:
float_dsp_mips.c
libm_mips.h
softfloat_tables.h
-* libavcodec/
- fft_fixed_32.c
- fft_init_table.c
- fft_table.h
- mdct_fixed_32.c
* libavcodec/mips/
aacdec_fixed.c
aacsbr_fixed.c
@@ -72,7 +67,6 @@ Files that have MIPS copyright notice in them:
dsputil_mips.c
fft_mips.c
fft_table.h
- fft_init_table.c
fmtconvert_mips.c
iirfilter_mips.c
mpegaudiodsp_mips_fixed.c
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 1b0226c089..9101ab73b4 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -91,8 +91,7 @@ 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
-OBJS-$(CONFIG_FFT) += avfft.o fft_float.o fft_fixed_32.o \
- fft_init_table.o $(FFT-OBJS-yes)
+OBJS-$(CONFIG_FFT) += avfft.o fft_float.o $(FFT-OBJS-yes)
OBJS-$(CONFIG_FMTCONVERT) += fmtconvert.o
OBJS-$(CONFIG_GOLOMB) += golomb.o
OBJS-$(CONFIG_H263DSP) += h263dsp.o
@@ -125,7 +124,7 @@ OBJS-$(CONFIG_LLVIDENCDSP) += lossless_videoencdsp.o
OBJS-$(CONFIG_LPC) += lpc.o
OBJS-$(CONFIG_LSP) += lsp.o
OBJS-$(CONFIG_LZF) += lzf.o
-OBJS-$(CONFIG_MDCT) += mdct_float.o mdct_fixed_32.o
+OBJS-$(CONFIG_MDCT) += mdct_float.o
OBJS-$(CONFIG_ME_CMP) += me_cmp.o
OBJS-$(CONFIG_MEDIACODEC) += mediacodecdec_common.o mediacodec_surface.o mediacodec_wrapper.o mediacodec_sw_buffer.o
OBJS-$(CONFIG_MPEG_ER) += mpeg_er.o
@@ -1320,7 +1319,7 @@ TESTPROGS = avcodec \
TESTPROGS-$(CONFIG_CABAC) += cabac
TESTPROGS-$(CONFIG_DCT) += avfft
-TESTPROGS-$(CONFIG_FFT) += fft fft-fixed32
+TESTPROGS-$(CONFIG_FFT) += fft
TESTPROGS-$(CONFIG_GOLOMB) += golomb
TESTPROGS-$(CONFIG_IDCTDSP) += dct
TESTPROGS-$(CONFIG_IIRFILTER) += iirfilter
diff --git a/libavcodec/dct.h b/libavcodec/dct.h
index 0a03e256d1..041e8169ce 100644
--- a/libavcodec/dct.h
+++ b/libavcodec/dct.h
@@ -21,7 +21,7 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#if !defined(AVCODEC_DCT_H) && (!defined(FFT_FLOAT) || FFT_FLOAT)
+#ifndef AVCODEC_DCT_H
#define AVCODEC_DCT_H
#include <stddef.h>
diff --git a/libavcodec/fft-internal.h b/libavcodec/fft-internal.h
index d89a3e38ca..3b07da7aa2 100644
--- a/libavcodec/fft-internal.h
+++ b/libavcodec/fft-internal.h
@@ -22,8 +22,6 @@
#include "libavutil/mathematics.h"
#include "fft.h"
-#if FFT_FLOAT
-
#define FIX15(v) (v)
#define sqrthalf (float)M_SQRT1_2
@@ -37,20 +35,6 @@
(dim) = (are) * (bim) + (aim) * (bre); \
} while (0)
-#else /* FFT_FLOAT */
-
-#define CMUL(dre, dim, are, aim, bre, bim) do { \
- int64_t accu; \
- (accu) = (int64_t)(bre) * (are); \
- (accu) -= (int64_t)(bim) * (aim); \
- (dre) = (int)(((accu) + 0x40000000) >> 31); \
- (accu) = (int64_t)(bre) * (aim); \
- (accu) += (int64_t)(bim) * (are); \
- (dim) = (int)(((accu) + 0x40000000) >> 31); \
- } while (0)
-
-#endif /* FFT_FLOAT */
-
#define ff_imdct_calc_c FFT_NAME(ff_imdct_calc_c)
#define ff_imdct_half_c FFT_NAME(ff_imdct_half_c)
#define ff_mdct_calc_c FFT_NAME(ff_mdct_calc_c)
diff --git a/libavcodec/fft.h b/libavcodec/fft.h
index d46e5a3f0b..8a0e6aa48f 100644
--- a/libavcodec/fft.h
+++ b/libavcodec/fft.h
@@ -22,40 +22,18 @@
#ifndef AVCODEC_FFT_H
#define AVCODEC_FFT_H
-#ifndef FFT_FLOAT
-#define FFT_FLOAT 1
-#endif
-
#include <stdint.h>
#include "config.h"
#include "libavutil/attributes_internal.h"
#include "libavutil/mem_internal.h"
-#if FFT_FLOAT
-
#include "avfft.h"
#define FFT_NAME(x) x
typedef float FFTDouble;
-#else
-
-#define Q31(x) (int)((x)*2147483648.0 + 0.5)
-#define FFT_NAME(x) x ## _fixed_32
-
-typedef int32_t FFTSample;
-
-typedef struct FFTComplex {
- FFTSample re, im;
-} FFTComplex;
-
-typedef int FFTDouble;
-typedef struct FFTContext FFTContext;
-
-#endif /* FFT_FLOAT */
-
typedef struct FFTDComplex {
FFTDouble re, im;
} FFTDComplex;
diff --git a/libavcodec/fft_fixed_32.c b/libavcodec/fft_fixed_32.c
deleted file mode 100644
index e18dc83891..0000000000
--- a/libavcodec/fft_fixed_32.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2012
- * MIPS Technologies, Inc., California.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the MIPS Technologies, Inc., nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE MIPS TECHNOLOGIES, INC. ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE MIPS TECHNOLOGIES, INC. BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * Authors: Stanislav Ocovaj (socovaj at mips.com)
- * Goran Cordasic (goran at mips.com)
- * Djordje Pesut (djordje at mips.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
- */
-
-#define FFT_FLOAT 0
-#include "fft_template.c"
diff --git a/libavcodec/fft_init_table.c b/libavcodec/fft_init_table.c
deleted file mode 100644
index 83e35ffb7c..0000000000
--- a/libavcodec/fft_init_table.c
+++ /dev/null
@@ -1,344 +0,0 @@
-/*
- * Copyright (c) 2012
- * MIPS Technologies, Inc., California.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the MIPS Technologies, Inc., nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE MIPS TECHNOLOGIES, INC. ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE MIPS TECHNOLOGIES, INC. BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * Authors: Stanislav Ocovaj (socovaj at mips.com)
- * Goran Cordasic (goran at mips.com)
- * Djordje Pesut (djordje at mips.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
- */
-
-/**
- * @file
- * definitions and initialization of LUT table for FFT
- */
-#include "libavutil/thread.h"
-
-#include "libavcodec/fft_table.h"
-
-const int32_t ff_w_tab_sr[MAX_FFT_SIZE/(4*16)] = {
-2147483647, 2147483016, 2147481121, 2147477963, 2147473542, 2147467857, 2147460908, 2147452697,
-2147443222, 2147432484, 2147420483, 2147407218, 2147392690, 2147376899, 2147359845, 2147341527,
-2147321946, 2147301102, 2147278995, 2147255625, 2147230991, 2147205094, 2147177934, 2147149511,
-2147119825, 2147088876, 2147056664, 2147023188, 2146988450, 2146952448, 2146915184, 2146876656,
-2146836866, 2146795813, 2146753497, 2146709917, 2146665076, 2146618971, 2146571603, 2146522973,
-2146473080, 2146421924, 2146369505, 2146315824, 2146260881, 2146204674, 2146147205, 2146088474,
-2146028480, 2145967224, 2145904705, 2145840924, 2145775880, 2145709574, 2145642006, 2145573176,
-2145503083, 2145431729, 2145359112, 2145285233, 2145210092, 2145133690, 2145056025, 2144977098,
-2144896910, 2144815460, 2144732748, 2144648774, 2144563539, 2144477042, 2144389283, 2144300264,
-2144209982, 2144118439, 2144025635, 2143931570, 2143836244, 2143739656, 2143641807, 2143542697,
-2143442326, 2143340694, 2143237802, 2143133648, 2143028234, 2142921559, 2142813624, 2142704427,
-2142593971, 2142482254, 2142369276, 2142255039, 2142139541, 2142022783, 2141904764, 2141785486,
-2141664948, 2141543150, 2141420092, 2141295774, 2141170197, 2141043360, 2140915264, 2140785908,
-2140655293, 2140523418, 2140390284, 2140255892, 2140120240, 2139983329, 2139845159, 2139705730,
-2139565043, 2139423097, 2139279892, 2139135429, 2138989708, 2138842728, 2138694490, 2138544994,
-2138394240, 2138242228, 2138088958, 2137934430, 2137778644, 2137621601, 2137463301, 2137303743,
-2137142927, 2136980855, 2136817525, 2136652938, 2136487095, 2136319994, 2136151637, 2135982023,
-2135811153, 2135639026, 2135465642, 2135291003, 2135115107, 2134937956, 2134759548, 2134579885,
-2134398966, 2134216791, 2134033361, 2133848675, 2133662734, 2133475538, 2133287087, 2133097381,
-2132906420, 2132714204, 2132520734, 2132326009, 2132130030, 2131932796, 2131734309, 2131534567,
-2131333572, 2131131322, 2130927819, 2130723062, 2130517052, 2130309789, 2130101272, 2129891502,
-2129680480, 2129468204, 2129254676, 2129039895, 2128823862, 2128606576, 2128388038, 2128168248,
-2127947206, 2127724913, 2127501367, 2127276570, 2127050522, 2126823222, 2126594672, 2126364870,
-2126133817, 2125901514, 2125667960, 2125433155, 2125197100, 2124959795, 2124721240, 2124481435,
-2124240380, 2123998076, 2123754522, 2123509718, 2123263666, 2123016364, 2122767814, 2122518015,
-2122266967, 2122014670, 2121761126, 2121506333, 2121250292, 2120993003, 2120734467, 2120474683,
-2120213651, 2119951372, 2119687847, 2119423074, 2119157054, 2118889788, 2118621275, 2118351516,
-2118080511, 2117808259, 2117534762, 2117260020, 2116984031, 2116706797, 2116428319, 2116148595,
-2115867626, 2115585412, 2115301954, 2115017252, 2114731305, 2114444114, 2114155680, 2113866001,
-2113575080, 2113282914, 2112989506, 2112694855, 2112398960, 2112101824, 2111803444, 2111503822,
-2111202959, 2110900853, 2110597505, 2110292916, 2109987085, 2109680013, 2109371700, 2109062146,
-2108751352, 2108439317, 2108126041, 2107811526, 2107495770, 2107178775, 2106860540, 2106541065,
-2106220352, 2105898399, 2105575208, 2105250778, 2104925109, 2104598202, 2104270057, 2103940674,
-2103610054, 2103278196, 2102945101, 2102610768, 2102275199, 2101938393, 2101600350, 2101261071,
-2100920556, 2100578805, 2100235819, 2099891596, 2099546139, 2099199446, 2098851519, 2098502357,
-2098151960, 2097800329, 2097447464, 2097093365, 2096738032, 2096381466, 2096023667, 2095664635,
-2095304370, 2094942872, 2094580142, 2094216179, 2093850985, 2093484559, 2093116901, 2092748012,
-2092377892, 2092006541, 2091633960, 2091260147, 2090885105, 2090508833, 2090131331, 2089752599,
-2089372638, 2088991448, 2088609029, 2088225381, 2087840505, 2087454400, 2087067068, 2086678508,
-2086288720, 2085897705, 2085505463, 2085111994, 2084717298, 2084321376, 2083924228, 2083525854,
-2083126254, 2082725429, 2082323379, 2081920103, 2081515603, 2081109879, 2080702930, 2080294757,
-2079885360, 2079474740, 2079062896, 2078649830, 2078235540, 2077820028, 2077403294, 2076985338,
-2076566160, 2076145760, 2075724139, 2075301296, 2074877233, 2074451950, 2074025446, 2073597721,
-2073168777, 2072738614, 2072307231, 2071874629, 2071440808, 2071005769, 2070569511, 2070132035,
-2069693342, 2069253430, 2068812302, 2068369957, 2067926394, 2067481616, 2067035621, 2066588410,
-2066139983, 2065690341, 2065239484, 2064787411, 2064334124, 2063879623, 2063423908, 2062966978,
-2062508835, 2062049479, 2061588910, 2061127128, 2060664133, 2060199927, 2059734508, 2059267877,
-2058800036, 2058330983, 2057860719, 2057389244, 2056916560, 2056442665, 2055967560, 2055491246,
-2055013723, 2054534991, 2054055050, 2053573901, 2053091544, 2052607979, 2052123207, 2051637227,
-2051150040, 2050661647, 2050172048, 2049681242, 2049189231, 2048696014, 2048201592, 2047705965,
-2047209133, 2046711097, 2046211857, 2045711414, 2045209767, 2044706916, 2044202863, 2043697608,
-2043191150, 2042683490, 2042174628, 2041664565, 2041153301, 2040640837, 2040127172, 2039612306,
-2039096241, 2038578976, 2038060512, 2037540850, 2037019988, 2036497928, 2035974670, 2035450215,
-2034924562, 2034397712, 2033869665, 2033340422, 2032809982, 2032278347, 2031745516, 2031211490,
-2030676269, 2030139853, 2029602243, 2029063439, 2028523442, 2027982251, 2027439867, 2026896291,
-2026351522, 2025805561, 2025258408, 2024710064, 2024160529, 2023609803, 2023057887, 2022504780,
-2021950484, 2021394998, 2020838323, 2020280460, 2019721407, 2019161167, 2018599739, 2018037123,
-2017473321, 2016908331, 2016342155, 2015774793, 2015206245, 2014636511, 2014065592, 2013493489,
-2012920201, 2012345729, 2011770073, 2011193233, 2010615210, 2010036005, 2009455617, 2008874047,
-2008291295, 2007707362, 2007122248, 2006535953, 2005948478, 2005359822, 2004769987, 2004178973,
-2003586779, 2002993407, 2002398857, 2001803128, 2001206222, 2000608139, 2000008879, 1999408442,
-1998806829, 1998204040, 1997600076, 1996994937, 1996388622, 1995781134, 1995172471, 1994562635,
-1993951625, 1993339442, 1992726087, 1992111559, 1991495860, 1990878989, 1990260946, 1989641733,
-1989021350, 1988399796, 1987777073, 1987153180, 1986528118, 1985901888, 1985274489, 1984645923,
-1984016189, 1983385288, 1982753220, 1982119985, 1981485585, 1980850019, 1980213288, 1979575392,
-1978936331, 1978296106, 1977654717, 1977012165, 1976368450, 1975723572, 1975077532, 1974430331,
-1973781967, 1973132443, 1972481757, 1971829912, 1971176906, 1970522741, 1969867417, 1969210933,
-1968553292, 1967894492, 1967234535, 1966573420, 1965911148, 1965247720, 1964583136, 1963917396,
-1963250501, 1962582451, 1961913246, 1961242888, 1960571375, 1959898709, 1959224890, 1958549919,
-1957873796, 1957196520, 1956518093, 1955838516, 1955157788, 1954475909, 1953792881, 1953108703,
-1952423377, 1951736902, 1951049279, 1950360508, 1949670589, 1948979524, 1948287312, 1947593954,
-1946899451, 1946203802, 1945507008, 1944809070, 1944109987, 1943409761, 1942708392, 1942005880,
-1941302225, 1940597428, 1939891490, 1939184411, 1938476190, 1937766830, 1937056329, 1936344689,
-1935631910, 1934917992, 1934202936, 1933486742, 1932769411, 1932050943, 1931331338, 1930610597,
-1929888720, 1929165708, 1928441561, 1927716279, 1926989864, 1926262315, 1925533633, 1924803818,
-1924072871, 1923340791, 1922607581, 1921873239, 1921137767, 1920401165, 1919663432, 1918924571,
-1918184581, 1917443462, 1916701216, 1915957841, 1915213340, 1914467712, 1913720958, 1912973078,
-1912224073, 1911473942, 1910722688, 1909970309, 1909216806, 1908462181, 1907706433, 1906949562,
-1906191570, 1905432457, 1904672222, 1903910867, 1903148392, 1902384797, 1901620084, 1900854251,
-1900087301, 1899319232, 1898550047, 1897779744, 1897008325, 1896235790, 1895462140, 1894687374,
-1893911494, 1893134500, 1892356392, 1891577171, 1890796837, 1890015391, 1889232832, 1888449163,
-1887664383, 1886878492, 1886091491, 1885303381, 1884514161, 1883723833, 1882932397, 1882139853,
-1881346202, 1880551444, 1879755580, 1878958610, 1878160535, 1877361354, 1876561070, 1875759681,
-1874957189, 1874153594, 1873348897, 1872543097, 1871736196, 1870928194, 1870119091, 1869308888,
-1868497586, 1867685184, 1866871683, 1866057085, 1865241388, 1864424594, 1863606704, 1862787717,
-1861967634, 1861146456, 1860324183, 1859500816, 1858676355, 1857850800, 1857024153, 1856196413,
-1855367581, 1854537657, 1853706643, 1852874538, 1852041343, 1851207059, 1850371686, 1849535224,
-1848697674, 1847859036, 1847019312, 1846178501, 1845336604, 1844493621, 1843649553, 1842804401,
-1841958164, 1841110844, 1840262441, 1839412956, 1838562388, 1837710739, 1836858008, 1836004197,
-1835149306, 1834293336, 1833436286, 1832578158, 1831718951, 1830858668, 1829997307, 1829134869,
-1828271356, 1827406767, 1826541103, 1825674364, 1824806552, 1823937666, 1823067707, 1822196675,
-1821324572, 1820451397, 1819577151, 1818701835, 1817825449, 1816947994, 1816069469, 1815189877,
-1814309216, 1813427489, 1812544694, 1811660833, 1810775906, 1809889915, 1809002858, 1808114737,
-1807225553, 1806335305, 1805443995, 1804551623, 1803658189, 1802763694, 1801868139, 1800971523,
-1800073849, 1799175115, 1798275323, 1797374472, 1796472565, 1795569601, 1794665580, 1793760504,
-1792854372, 1791947186, 1791038946, 1790129652, 1789219305, 1788307905, 1787395453, 1786481950,
-1785567396, 1784651792, 1783735137, 1782817434, 1781898681, 1780978881, 1780058032, 1779136137,
-1778213194, 1777289206, 1776364172, 1775438094, 1774510970, 1773582803, 1772653593, 1771723340,
-1770792044, 1769859707, 1768926328, 1767991909, 1767056450, 1766119952, 1765182414, 1764243838,
-1763304224, 1762363573, 1761421885, 1760479161, 1759535401, 1758590607, 1757644777, 1756697914,
-1755750017, 1754801087, 1753851126, 1752900132, 1751948107, 1750995052, 1750040966, 1749085851,
-1748129707, 1747172535, 1746214334, 1745255107, 1744294853, 1743333573, 1742371267, 1741407936,
-1740443581, 1739478202, 1738511799, 1737544374, 1736575927, 1735606458, 1734635968, 1733664458,
-1732691928, 1731718378, 1730743810, 1729768224, 1728791620, 1727813999, 1726835361, 1725855708,
-1724875040, 1723893357, 1722910659, 1721926948, 1720942225, 1719956488, 1718969740, 1717981981,
-1716993211, 1716003431, 1715012642, 1714020844, 1713028037, 1712034223, 1711039401, 1710043573,
-1709046739, 1708048900, 1707050055, 1706050207, 1705049355, 1704047500, 1703044642, 1702040783,
-1701035922, 1700030061, 1699023199, 1698015339, 1697006479, 1695996621, 1694985765, 1693973912,
-1692961062, 1691947217, 1690932376, 1689916541, 1688899711, 1687881888, 1686863072, 1685843263,
-1684822463, 1683800672, 1682777890, 1681754118, 1680729357, 1679703608, 1678676870, 1677649144,
-1676620432, 1675590733, 1674560049, 1673528379, 1672495725, 1671462087, 1670427466, 1669391862,
-1668355276, 1667317709, 1666279161, 1665239632, 1664199124, 1663157637, 1662115172, 1661071729,
-1660027308, 1658981911, 1657935539, 1656888190, 1655839867, 1654790570, 1653740300, 1652689057,
-1651636841, 1650583654, 1649529496, 1648474367, 1647418269, 1646361202, 1645303166, 1644244162,
-1643184191, 1642123253, 1641061349, 1639998480, 1638934646, 1637869848, 1636804087, 1635737362,
-1634669676, 1633601027, 1632531418, 1631460848, 1630389319, 1629316830, 1628243383, 1627168978,
-1626093616, 1625017297, 1623940023, 1622861793, 1621782608, 1620702469, 1619621377, 1618539332,
-1617456335, 1616372386, 1615287487, 1614201637, 1613114838, 1612027089, 1610938393, 1609848749,
-1608758157, 1607666620, 1606574136, 1605480708, 1604386335, 1603291018, 1602194758, 1601097555,
-1599999411, 1598900325, 1597800299, 1596699333, 1595597428, 1594494583, 1593390801, 1592286082,
-1591180426, 1590073833, 1588966306, 1587857843, 1586748447, 1585638117, 1584526854, 1583414660,
-1582301533, 1581187476, 1580072489, 1578956572, 1577839726, 1576721952, 1575603251, 1574483623,
-1573363068, 1572241588, 1571119183, 1569995854, 1568871601, 1567746425, 1566620327, 1565493307,
-1564365367, 1563236506, 1562106725, 1560976026, 1559844408, 1558711873, 1557578421, 1556444052,
-1555308768, 1554172569, 1553035455, 1551897428, 1550758488, 1549618636, 1548477872, 1547336197,
-1546193612, 1545050118, 1543905714, 1542760402, 1541614183, 1540467057, 1539319024, 1538170087,
-1537020244, 1535869497, 1534717846, 1533565293, 1532411837, 1531257480, 1530102222, 1528946064,
-1527789007, 1526631051, 1525472197, 1524312445, 1523151797, 1521990252, 1520827813, 1519664478,
-1518500250, 1517335128, 1516169114, 1515002208, 1513834411, 1512665723, 1511496145, 1510325678,
-1509154322, 1507982079, 1506808949, 1505634932, 1504460029, 1503284242, 1502107570, 1500930014,
-1499751576, 1498572255, 1497392053, 1496210969, 1495029006, 1493846163, 1492662441, 1491477842,
-1490292364, 1489106011, 1487918781, 1486730675, 1485541696, 1484351842, 1483161115, 1481969516,
-1480777044, 1479583702, 1478389489, 1477194407, 1475998456, 1474801636, 1473603949, 1472405394,
-1471205974, 1470005688, 1468804538, 1467602523, 1466399645, 1465195904, 1463991302, 1462785838,
-1461579514, 1460372329, 1459164286, 1457955385, 1456745625, 1455535009, 1454323536, 1453111208,
-1451898025, 1450683988, 1449469098, 1448253355, 1447036760, 1445819314, 1444601017, 1443381870,
-1442161874, 1440941030, 1439719338, 1438496799, 1437273414, 1436049184, 1434824109, 1433598189,
-1432371426, 1431143821, 1429915374, 1428686085, 1427455956, 1426224988, 1424993180, 1423760534,
-1422527051, 1421292730, 1420057574, 1418821582, 1417584755, 1416347095, 1415108601, 1413869275,
-1412629117, 1411388129, 1410146309, 1408903661, 1407660183, 1406415878, 1405170745, 1403924785,
-1402678000, 1401430389, 1400181954, 1398932695, 1397682613, 1396431709, 1395179984, 1393927438,
-1392674072, 1391419886, 1390164882, 1388909060, 1387652422, 1386394966, 1385136696, 1383877610,
-1382617710, 1381356997, 1380095472, 1378833134, 1377569986, 1376306026, 1375041258, 1373775680,
-1372509294, 1371242101, 1369974101, 1368705296, 1367435685, 1366165269, 1364894050, 1363622028,
-1362349204, 1361075579, 1359801152, 1358525926, 1357249901, 1355973077, 1354695455, 1353417037,
-1352137822, 1350857812, 1349577007, 1348295409, 1347013017, 1345729833, 1344445857, 1343161090,
-1341875533, 1340589187, 1339302052, 1338014129, 1336725419, 1335435923, 1334145641, 1332854574,
-1331562723, 1330270089, 1328976672, 1327682474, 1326387494, 1325091734, 1323795195, 1322497877,
-1321199781, 1319900907, 1318601257, 1317300832, 1315999631, 1314697657, 1313394909, 1312091388,
-1310787095, 1309482032, 1308176198, 1306869594, 1305562222, 1304254082, 1302945174, 1301635500,
-1300325060, 1299013855, 1297701886, 1296389154, 1295075659, 1293761402, 1292446384, 1291130606,
-1289814068, 1288496772, 1287178717, 1285859905, 1284540337, 1283220013, 1281898935, 1280577102,
-1279254516, 1277931177, 1276607086, 1275282245, 1273956653, 1272630312, 1271303222, 1269975384,
-1268646800, 1267317469, 1265987392, 1264656571, 1263325005, 1261992697, 1260659646, 1259325853,
-1257991320, 1256656047, 1255320034, 1253983283, 1252645794, 1251307568, 1249968606, 1248628909,
-1247288478, 1245947312, 1244605414, 1243262783, 1241919421, 1240575329, 1239230506, 1237884955,
-1236538675, 1235191668, 1233843935, 1232495475, 1231146291, 1229796382, 1228445750, 1227094395,
-1225742318, 1224389521, 1223036002, 1221681765, 1220326809, 1218971135, 1217614743, 1216257636,
-1214899813, 1213541275, 1212182024, 1210822059, 1209461382, 1208099993, 1206737894, 1205375085,
-1204011567, 1202647340, 1201282407, 1199916766, 1198550419, 1197183368, 1195815612, 1194447153,
-1193077991, 1191708127, 1190337562, 1188966297, 1187594332, 1186221669, 1184848308, 1183474250,
-1182099496, 1180724046, 1179347902, 1177971064, 1176593533, 1175215310, 1173836395, 1172456790,
-1171076495, 1169695512, 1168313840, 1166931481, 1165548435, 1164164704, 1162780288, 1161395188,
-1160009405, 1158622939, 1157235792, 1155847964, 1154459456, 1153070269, 1151680403, 1150289860,
-1148898640, 1147506745, 1146114174, 1144720929, 1143327011, 1141932420, 1140537158, 1139141224,
-1137744621, 1136347348, 1134949406, 1133550797, 1132151521, 1130751579, 1129350972, 1127949701,
-1126547765, 1125145168, 1123741908, 1122337987, 1120933406, 1119528166, 1118122267, 1116715710,
-1115308496, 1113900627, 1112492101, 1111082922, 1109673089, 1108262603, 1106851465, 1105439676,
-1104027237, 1102614148, 1101200410, 1099786025, 1098370993, 1096955314, 1095538991, 1094122023,
-1092704411, 1091286156, 1089867259, 1088447722, 1087027544, 1085606726, 1084185270, 1082763176,
-1081340445, 1079917078, 1078493076, 1077068439, 1075643169, 1074217266, 1072790730, 1071363564,
-1069935768, 1068507342, 1067078288, 1065648605, 1064218296, 1062787361, 1061355801, 1059923616,
-1058490808, 1057057377, 1055623324, 1054188651, 1052753357, 1051317443, 1049880912, 1048443763,
-1047005996, 1045567615, 1044128617, 1042689006, 1041248781, 1039807944, 1038366495, 1036924436,
-1035481766, 1034038487, 1032594600, 1031150105, 1029705004, 1028259297, 1026812985, 1025366069,
-1023918550, 1022470428, 1021021705, 1019572382, 1018122458, 1016671936, 1015220816, 1013769098,
-1012316784, 1010863875, 1009410370, 1007956272, 1006501581, 1005046298, 1003590424, 1002133959,
-1000676905, 999219262, 997761031, 996302214, 994842810, 993382821, 991922248, 990461091,
-988999351, 987537030, 986074127, 984610645, 983146583, 981681943, 980216726, 978750932,
-977284562, 975817617, 974350098, 972882006, 971413342, 969944106, 968474300, 967003923,
-965532978, 964061465, 962589385, 961116739, 959643527, 958169751, 956695411, 955220508,
-953745043, 952269017, 950792431, 949315286, 947837582, 946359321, 944880503, 943401129,
-941921200, 940440717, 938959681, 937478092, 935995952, 934513261, 933030021, 931546231,
-930061894, 928577010, 927091579, 925605603, 924119082, 922632018, 921144411, 919656262,
-918167572, 916678342, 915188572, 913698265, 912207419, 910716038, 909224120, 907731667,
-906238681, 904745161, 903251110, 901756526, 900261413, 898765769, 897269597, 895772898,
-894275671, 892777918, 891279640, 889780838, 888281512, 886781663, 885281293, 883780402,
-882278992, 880777062, 879274614, 877771649, 876268167, 874764170, 873259659, 871754633,
-870249095, 868743045, 867236484, 865729413, 864221832, 862713743, 861205147, 859696043,
-858186435, 856676321, 855165703, 853654582, 852142959, 850630835, 849118210, 847605086,
-846091463, 844577343, 843062726, 841547612, 840032004, 838515901, 836999305, 835482217,
-833964638, 832446567, 830928007, 829408958, 827889422, 826369398, 824848888, 823327893,
-821806413, 820284450, 818762005, 817239078, 815715670, 814191782, 812667415, 811142571,
-809617249, 808091450, 806565177, 805038429, 803511207, 801983513, 800455346, 798926709,
-797397602, 795868026, 794337982, 792807470, 791276492, 789745049, 788213141, 786680769,
-785147934, 783614638, 782080880, 780546663, 779011986, 777476851, 775941259, 774405210,
-772868706, 771331747, 769794334, 768256469, 766718151, 765179382, 763640164, 762100496,
-760560380, 759019816, 757478806, 755937350, 754395449, 752853105, 751310318, 749767089,
-748223418, 746679308, 745134758, 743589770, 742044345, 740498483, 738952186, 737405453,
-735858287, 734310688, 732762657, 731214195, 729665303, 728115982, 726566232, 725016055,
-723465451, 721914422, 720362968, 718811090, 717258790, 715706067, 714152924, 712599360,
-711045377, 709490976, 707936158, 706380923, 704825272, 703269207, 701712728, 700155836,
-698598533, 697040818, 695482694, 693924160, 692365218, 690805869, 689246113, 687685952,
-686125387, 684564417, 683003045, 681441272, 679879097, 678316522, 676753549, 675190177,
-673626408, 672062243, 670497682, 668932727, 667367379, 665801638, 664235505, 662668981,
-661102068, 659534766, 657967075, 656398998, 654830535, 653261686, 651692453, 650122837,
-648552838, 646982457, 645411696, 643840556, 642269036, 640697139, 639124865, 637552215,
-635979190, 634405791, 632832018, 631257873, 629683357, 628108471, 626533215, 624957590,
-623381598, 621805239, 620228514, 618651424, 617073971, 615496154, 613917975, 612339436,
-610760536, 609181276, 607601658, 606021683, 604441352, 602860664, 601279623, 599698227,
-598116479, 596534378, 594951927, 593369126, 591785976, 590202477, 588618632, 587034440,
-585449903, 583865021, 582279796, 580694229, 579108320, 577522070, 575935480, 574348552,
-572761285, 571173682, 569585743, 567997469, 566408860, 564819919, 563230645, 561641039,
-560051104, 558460839, 556870245, 555279324, 553688076, 552096502, 550504604, 548912382,
-547319836, 545726969, 544133781, 542540273, 540946445, 539352300, 537757837, 536163058,
-534567963, 532972554, 531376831, 529780796, 528184449, 526587791, 524990824, 523393547,
-521795963, 520198072, 518599875, 517001373, 515402566, 513803457, 512204045, 510604332,
-509004318, 507404005, 505803394, 504202485, 502601279, 500999778, 499397982, 497795892,
-496193509, 494590835, 492987869, 491384614, 489781069, 488177236, 486573117, 484968710,
-483364019, 481759043, 480153784, 478548243, 476942419, 475336316, 473729932, 472123270,
-470516330, 468909114, 467301622, 465693854, 464085813, 462477499, 460868912, 459260055,
-457650927, 456041530, 454431865, 452821933, 451211734, 449601270, 447990541, 446379549,
-444768294, 443156777, 441545000, 439932963, 438320667, 436708113, 435095303, 433482236,
-431868915, 430255339, 428641511, 427027430, 425413098, 423798515, 422183684, 420568604,
-418953276, 417337703, 415721883, 414105819, 412489512, 410872962, 409256170, 407639137,
-406021865, 404404353, 402786604, 401168618, 399550396, 397931939, 396313247, 394694323,
-393075166, 391455778, 389836160, 388216313, 386596237, 384975934, 383355404, 381734649,
-380113669, 378492466, 376871039, 375249392, 373627523, 372005435, 370383128, 368760603,
-367137861, 365514903, 363891730, 362268343, 360644742, 359020930, 357396906, 355772673,
-354148230, 352523578, 350898719, 349273654, 347648383, 346022908, 344397230, 342771348,
-341145265, 339518981, 337892498, 336265816, 334638936, 333011859, 331384586, 329757119,
-328129457, 326501602, 324873555, 323245317, 321616889, 319988272, 318359466, 316730474,
-315101295, 313471930, 311842381, 310212649, 308582734, 306952638, 305322361, 303691904,
-302061269, 300430456, 298799466, 297168301, 295536961, 293905447, 292273760, 290641901,
-289009871, 287377671, 285745302, 284112765, 282480061, 280847190, 279214155, 277580955,
-275947592, 274314066, 272680379, 271046532, 269412525, 267778360, 266144038, 264509558,
-262874923, 261240134, 259605191, 257970095, 256334847, 254699448, 253063900, 251428203,
-249792358, 248156366, 246520228, 244883945, 243247518, 241610947, 239974235, 238337382,
-236700388, 235063255, 233425984, 231788575, 230151030, 228513350, 226875535, 225237587,
-223599506, 221961294, 220322951, 218684479, 217045878, 215407149, 213768293, 212129312,
-210490206, 208850976, 207211624, 205572149, 203932553, 202292838, 200653003, 199013051,
-197372981, 195732795, 194092495, 192452080, 190811551, 189170911, 187530159, 185889297,
-184248325, 182607245, 180966058, 179324764, 177683365, 176041861, 174400254, 172758544,
-171116733, 169474820, 167832808, 166190698, 164548489, 162906184, 161263783, 159621287,
-157978697, 156336015, 154693240, 153050374, 151407418, 149764374, 148121241, 146478021,
-144834714, 143191323, 141547847, 139904288, 138260647, 136616925, 134973122, 133329239,
-131685278, 130041240, 128397125, 126752935, 125108670, 123464332, 121819921, 120175438,
-118530885, 116886262, 115241570, 113596810, 111951983, 110307091, 108662134, 107017112,
-105372028, 103726882, 102081675, 100436408, 98791081, 97145697, 95500255, 93854758,
- 92209205, 90563597, 88917937, 87272224, 85626460, 83980645, 82334782, 80688869,
- 79042909, 77396903, 75750851, 74104755, 72458615, 70812432, 69166208, 67519943,
- 65873638, 64227295, 62580914, 60934496, 59288042, 57641553, 55995030, 54348475,
- 52701887, 51055268, 49408620, 47761942, 46115236, 44468503, 42821744, 41174960,
- 39528151, 37881320, 36234466, 34587590, 32940695, 31293780, 29646846, 27999895,
- 26352928, 24705945, 23058947, 21411936, 19764913, 18117878, 16470832, 14823776,
- 13176712, 11529640, 9882561, 8235476, 6588387, 4941294, 3294197, 1647099
-};
-
-uint16_t ff_fft_offsets_lut[21845];
-
-static void fft_lut_init(uint16_t *table, int off, int size, int *index)
-{
- if (size < 16) {
- table[*index] = off >> 2;
- (*index)++;
- }
- else {
- fft_lut_init(table, off, size >> 1, index);
- fft_lut_init(table, off + (size >> 1), size >> 2, index);
- fft_lut_init(table, off + 3 * (size >> 2), size >> 2, index);
- }
-}
-
-static void fft_lut_init_start(void)
-{
- int n = 0;
-
- fft_lut_init(ff_fft_offsets_lut, 0, 1 << 17, &n);
-}
-
-void ff_fft_lut_init(void)
-{
- static AVOnce init_once = AV_ONCE_INIT;
-
- ff_thread_once(&init_once, fft_lut_init_start);
-}
diff --git a/libavcodec/fft_template.c b/libavcodec/fft_template.c
index f2742a3ae8..3ed8d5491c 100644
--- a/libavcodec/fft_template.c
+++ b/libavcodec/fft_template.c
@@ -33,10 +33,6 @@
#include "fft.h"
#include "fft-internal.h"
-#if !FFT_FLOAT
-#include "fft_table.h"
-#else /* !FFT_FLOAT */
-
/* cos(2*pi*x/n) for 0<=x<=n/4, followed by its reverse */
#if !CONFIG_HARDCODED_TABLES
COSTABLE(16);
@@ -136,8 +132,6 @@ COSTABLE_CONST FFTSample * const FFT_NAME(ff_cos_tabs)[] = {
FFT_NAME(ff_cos_131072),
};
-#endif /* FFT_FLOAT */
-
static void fft_permute_c(FFTContext *s, FFTComplex *z);
static void fft_calc_c(FFTContext *s, FFTComplex *z);
@@ -226,7 +220,6 @@ av_cold int ff_fft_init(FFTContext *s, int nbits, int inverse)
s->mdct_calc = ff_mdct_calc_c;
#endif
-#if FFT_FLOAT
#if ARCH_AARCH64
ff_fft_init_aarch64(s);
#elif ARCH_ARM
@@ -242,12 +235,9 @@ av_cold int ff_fft_init(FFTContext *s, int nbits, int inverse)
for(j=4; j<=nbits; j++) {
ff_init_ff_cos_tabs(j);
}
-#else /* FFT_FLOAT */
- ff_fft_lut_init();
-#endif
- if (ARCH_X86 && FFT_FLOAT && s->fft_permutation == FF_FFT_PERM_AVX) {
+ if (ARCH_X86 && s->fft_permutation == FF_FFT_PERM_AVX) {
fft_perm_avx(s);
} else {
#define PROCESS_FFT_PERM_SWAP_LSBS(num) do {\
@@ -317,166 +307,6 @@ av_cold void ff_fft_end(FFTContext *s)
av_freep(&s->tmp_buf);
}
-#if !FFT_FLOAT
-
-static void fft_calc_c(FFTContext *s, FFTComplex *z) {
-
- int nbits, i, n, num_transforms, offset, step;
- int n4, n2, n34;
- unsigned tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8;
- FFTComplex *tmpz;
- const int fft_size = (1 << s->nbits);
- int64_t accu;
-
- num_transforms = (0x2aab >> (16 - s->nbits)) | 1;
-
- for (n=0; n<num_transforms; n++){
- offset = ff_fft_offsets_lut[n] << 2;
- tmpz = z + offset;
-
- tmp1 = tmpz[0].re + (unsigned)tmpz[1].re;
- tmp5 = tmpz[2].re + (unsigned)tmpz[3].re;
- tmp2 = tmpz[0].im + (unsigned)tmpz[1].im;
- tmp6 = tmpz[2].im + (unsigned)tmpz[3].im;
- tmp3 = tmpz[0].re - (unsigned)tmpz[1].re;
- tmp8 = tmpz[2].im - (unsigned)tmpz[3].im;
- tmp4 = tmpz[0].im - (unsigned)tmpz[1].im;
- tmp7 = tmpz[2].re - (unsigned)tmpz[3].re;
-
- tmpz[0].re = tmp1 + tmp5;
- tmpz[2].re = tmp1 - tmp5;
- tmpz[0].im = tmp2 + tmp6;
- tmpz[2].im = tmp2 - tmp6;
- tmpz[1].re = tmp3 + tmp8;
- tmpz[3].re = tmp3 - tmp8;
- tmpz[1].im = tmp4 - tmp7;
- tmpz[3].im = tmp4 + tmp7;
- }
-
- if (fft_size < 8)
- return;
-
- num_transforms = (num_transforms >> 1) | 1;
-
- for (n=0; n<num_transforms; n++){
- offset = ff_fft_offsets_lut[n] << 3;
- tmpz = z + offset;
-
- tmp1 = tmpz[4].re + (unsigned)tmpz[5].re;
- tmp3 = tmpz[6].re + (unsigned)tmpz[7].re;
- tmp2 = tmpz[4].im + (unsigned)tmpz[5].im;
- tmp4 = tmpz[6].im + (unsigned)tmpz[7].im;
- tmp5 = tmp1 + tmp3;
- tmp7 = tmp1 - tmp3;
- tmp6 = tmp2 + tmp4;
- tmp8 = tmp2 - tmp4;
-
- tmp1 = tmpz[4].re - (unsigned)tmpz[5].re;
- tmp2 = tmpz[4].im - (unsigned)tmpz[5].im;
- tmp3 = tmpz[6].re - (unsigned)tmpz[7].re;
- tmp4 = tmpz[6].im - (unsigned)tmpz[7].im;
-
- tmpz[4].re = tmpz[0].re - tmp5;
- tmpz[0].re = tmpz[0].re + tmp5;
- tmpz[4].im = tmpz[0].im - tmp6;
- tmpz[0].im = tmpz[0].im + tmp6;
- tmpz[6].re = tmpz[2].re - tmp8;
- tmpz[2].re = tmpz[2].re + tmp8;
- tmpz[6].im = tmpz[2].im + tmp7;
- tmpz[2].im = tmpz[2].im - tmp7;
-
- accu = (int64_t)Q31(M_SQRT1_2)*(int)(tmp1 + tmp2);
- tmp5 = (int32_t)((accu + 0x40000000) >> 31);
- accu = (int64_t)Q31(M_SQRT1_2)*(int)(tmp3 - tmp4);
- tmp7 = (int32_t)((accu + 0x40000000) >> 31);
- accu = (int64_t)Q31(M_SQRT1_2)*(int)(tmp2 - tmp1);
- tmp6 = (int32_t)((accu + 0x40000000) >> 31);
- accu = (int64_t)Q31(M_SQRT1_2)*(int)(tmp3 + tmp4);
- tmp8 = (int32_t)((accu + 0x40000000) >> 31);
- tmp1 = tmp5 + tmp7;
- tmp3 = tmp5 - tmp7;
- tmp2 = tmp6 + tmp8;
- tmp4 = tmp6 - tmp8;
-
- tmpz[5].re = tmpz[1].re - tmp1;
- tmpz[1].re = tmpz[1].re + tmp1;
- tmpz[5].im = tmpz[1].im - tmp2;
- tmpz[1].im = tmpz[1].im + tmp2;
- tmpz[7].re = tmpz[3].re - tmp4;
- tmpz[3].re = tmpz[3].re + tmp4;
- tmpz[7].im = tmpz[3].im + tmp3;
- tmpz[3].im = tmpz[3].im - tmp3;
- }
-
- step = 1 << ((MAX_LOG2_NFFT-4) - 4);
- n4 = 4;
-
- for (nbits=4; nbits<=s->nbits; nbits++){
- n2 = 2*n4;
- n34 = 3*n4;
- num_transforms = (num_transforms >> 1) | 1;
-
- for (n=0; n<num_transforms; n++){
- const FFTSample *w_re_ptr = ff_w_tab_sr + step;
- const FFTSample *w_im_ptr = ff_w_tab_sr + MAX_FFT_SIZE/(4*16) - step;
- offset = ff_fft_offsets_lut[n] << nbits;
- tmpz = z + offset;
-
- tmp5 = tmpz[ n2].re + (unsigned)tmpz[n34].re;
- tmp1 = tmpz[ n2].re - (unsigned)tmpz[n34].re;
- tmp6 = tmpz[ n2].im + (unsigned)tmpz[n34].im;
- tmp2 = tmpz[ n2].im - (unsigned)tmpz[n34].im;
-
- tmpz[ n2].re = tmpz[ 0].re - tmp5;
- tmpz[ 0].re = tmpz[ 0].re + tmp5;
- tmpz[ n2].im = tmpz[ 0].im - tmp6;
- tmpz[ 0].im = tmpz[ 0].im + tmp6;
- tmpz[n34].re = tmpz[n4].re - tmp2;
- tmpz[ n4].re = tmpz[n4].re + tmp2;
- tmpz[n34].im = tmpz[n4].im + tmp1;
- tmpz[ n4].im = tmpz[n4].im - tmp1;
-
- for (i=1; i<n4; i++){
- FFTSample w_re = w_re_ptr[0];
- FFTSample w_im = w_im_ptr[0];
- accu = (int64_t)w_re*tmpz[ n2+i].re;
- accu += (int64_t)w_im*tmpz[ n2+i].im;
- tmp1 = (int32_t)((accu + 0x40000000) >> 31);
- accu = (int64_t)w_re*tmpz[ n2+i].im;
- accu -= (int64_t)w_im*tmpz[ n2+i].re;
- tmp2 = (int32_t)((accu + 0x40000000) >> 31);
- accu = (int64_t)w_re*tmpz[n34+i].re;
- accu -= (int64_t)w_im*tmpz[n34+i].im;
- tmp3 = (int32_t)((accu + 0x40000000) >> 31);
- accu = (int64_t)w_re*tmpz[n34+i].im;
- accu += (int64_t)w_im*tmpz[n34+i].re;
- tmp4 = (int32_t)((accu + 0x40000000) >> 31);
-
- tmp5 = tmp1 + tmp3;
- tmp1 = tmp1 - tmp3;
- tmp6 = tmp2 + tmp4;
- tmp2 = tmp2 - tmp4;
-
- tmpz[ n2+i].re = tmpz[ i].re - tmp5;
- tmpz[ i].re = tmpz[ i].re + tmp5;
- tmpz[ n2+i].im = tmpz[ i].im - tmp6;
- tmpz[ i].im = tmpz[ i].im + tmp6;
- tmpz[n34+i].re = tmpz[n4+i].re - tmp2;
- tmpz[ n4+i].re = tmpz[n4+i].re + tmp2;
- tmpz[n34+i].im = tmpz[n4+i].im + tmp1;
- tmpz[ n4+i].im = tmpz[n4+i].im - tmp1;
-
- w_re_ptr += step;
- w_im_ptr -= step;
- }
- }
- step >>= 1;
- n4 <<= 1;
- }
-}
-
-#else /* !FFT_FLOAT */
-
#define BUTTERFLIES(a0,a1,a2,a3) {\
BF(t3, t5, t5, t1);\
BF(a2.re, a0.re, a0.re, t5);\
@@ -625,4 +455,3 @@ static void fft_calc_c(FFTContext *s, FFTComplex *z)
{
fft_dispatch[s->nbits-2](z);
}
-#endif /* !FFT_FLOAT */
diff --git a/libavcodec/mdct_fixed_32.c b/libavcodec/mdct_fixed_32.c
deleted file mode 100644
index eaa6355e67..0000000000
--- a/libavcodec/mdct_fixed_32.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2012
- * MIPS Technologies, Inc., California.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the MIPS Technologies, Inc., nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE MIPS TECHNOLOGIES, INC. ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE MIPS TECHNOLOGIES, INC. BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * Authors: Stanislav Ocovaj (socovaj at mips.com)
- * Goran Cordasic (goran at mips.com)
- * Djordje Pesut (djordje at mips.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
- */
-
-#define FFT_FLOAT 0
-#include "mdct_template.c"
diff --git a/libavcodec/mdct_template.c b/libavcodec/mdct_template.c
index a854ad2700..312aa264e5 100644
--- a/libavcodec/mdct_template.c
+++ b/libavcodec/mdct_template.c
@@ -32,11 +32,7 @@
* MDCT/IMDCT transforms.
*/
-#if FFT_FLOAT
# define RSCALE(x, y) ((x) + (y))
-#else
-# define RSCALE(x, y) ((int)((x) + (unsigned)(y) + 32) >> 6)
-#endif
/**
* init MDCT or IMDCT computation.
@@ -78,13 +74,8 @@ av_cold int ff_mdct_init(FFTContext *s, int nbits, int inverse, double scale)
scale = sqrt(fabs(scale));
for(i=0;i<n4;i++) {
alpha = 2 * M_PI * (i + theta) / n;
-#if !FFT_FLOAT
- s->tcos[i*tstep] = lrint(-cos(alpha) * 2147483648.0);
- s->tsin[i*tstep] = lrint(-sin(alpha) * 2147483648.0);
-#else
s->tcos[i*tstep] = FIX15(-cos(alpha) * scale);
s->tsin[i*tstep] = FIX15(-sin(alpha) * scale);
-#endif
}
return 0;
fail:
diff --git a/libavcodec/mips/fft_mips.c b/libavcodec/mips/fft_mips.c
index bf91fc316c..d7781ec6de 100644
--- a/libavcodec/mips/fft_mips.c
+++ b/libavcodec/mips/fft_mips.c
@@ -50,13 +50,16 @@
#include "config.h"
#include "libavutil/attributes.h"
#include "libavcodec/fft.h"
-#include "libavcodec/fft_table.h"
+#include "fft_table.h"
#include "libavutil/mips/asmdefs.h"
/**
* FFT transform
*/
+#define MAX_LOG2_NFFT 17 //!< Specifies maximum allowed fft size
+#define MAX_FFT_SIZE (1 << MAX_LOG2_NFFT)
+
#if HAVE_INLINE_ASM
#if !HAVE_MIPS32R6 && !HAVE_MIPS64R6
static void ff_fft_calc_mips(FFTContext *s, FFTComplex *z)
diff --git a/libavcodec/fft_table.h b/libavcodec/mips/fft_table.h
similarity index 73%
rename from libavcodec/fft_table.h
rename to libavcodec/mips/fft_table.h
index 09df49f2b8..8bb8793f61 100644
--- a/libavcodec/fft_table.h
+++ b/libavcodec/mips/fft_table.h
@@ -49,18 +49,41 @@
/**
* @file
- * definitions and tables for FFT
+ * definitions and initialization of LUT table for FFT
*/
-#ifndef AVCODEC_FFT_TABLE_H
-#define AVCODEC_FFT_TABLE_H
+#ifndef AVCODEC_MIPS_FFT_TABLE_H
+#define AVCODEC_MIPS_FFT_TABLE_H
-#include "libavcodec/fft.h"
+#include <stdint.h>
+#include "libavutil/thread.h"
-#define MAX_LOG2_NFFT 17 //!< Specifies maximum allowed fft size
-#define MAX_FFT_SIZE (1 << MAX_LOG2_NFFT)
+static uint16_t ff_fft_offsets_lut[21845];
-extern const int32_t ff_w_tab_sr[];
-extern uint16_t ff_fft_offsets_lut[];
-void ff_fft_lut_init(void);
+static void fft_lut_init(uint16_t *table, int off, int size, int *index)
+{
+ if (size < 16) {
+ table[*index] = off >> 2;
+ (*index)++;
+ }
+ else {
+ fft_lut_init(table, off, size >> 1, index);
+ fft_lut_init(table, off + (size >> 1), size >> 2, index);
+ fft_lut_init(table, off + 3 * (size >> 2), size >> 2, index);
+ }
+}
-#endif /* AVCODEC_FFT_TABLE_H */
+static void fft_lut_init_start(void)
+{
+ int n = 0;
+
+ fft_lut_init(ff_fft_offsets_lut, 0, 1 << 17, &n);
+}
+
+static inline void ff_fft_lut_init(void)
+{
+ static AVOnce init_once = AV_ONCE_INIT;
+
+ ff_thread_once(&init_once, fft_lut_init_start);
+}
+
+#endif /* AVCODEC_MIPS_FFT_TABLE_H */
diff --git a/libavcodec/rdft.h b/libavcodec/rdft.h
index ffafca7f24..9c3991f338 100644
--- a/libavcodec/rdft.h
+++ b/libavcodec/rdft.h
@@ -19,7 +19,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#if !defined(AVCODEC_RDFT_H) && (!defined(FFT_FLOAT) || FFT_FLOAT)
+#ifndef AVCODEC_RDFT_H
#define AVCODEC_RDFT_H
#include "config.h"
diff --git a/libavcodec/tests/.gitignore b/libavcodec/tests/.gitignore
index 2acfc4e804..1d1f78855f 100644
--- a/libavcodec/tests/.gitignore
+++ b/libavcodec/tests/.gitignore
@@ -6,7 +6,6 @@
/codec_desc
/dct
/fft
-/fft-fixed32
/golomb
/h264_levels
/h265_levels
diff --git a/libavcodec/tests/avfft.c b/libavcodec/tests/avfft.c
index 22aa99abca..dc3f19e9f3 100644
--- a/libavcodec/tests/avfft.c
+++ b/libavcodec/tests/avfft.c
@@ -21,5 +21,4 @@
*/
#define AVFFT 1
-#define FFT_FLOAT 1
#include "fft.c"
diff --git a/libavcodec/tests/fft-fixed32.c b/libavcodec/tests/fft-fixed32.c
deleted file mode 100644
index 3c50bf1dc1..0000000000
--- a/libavcodec/tests/fft-fixed32.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 AVFFT 0
-#include "fft.c"
diff --git a/libavcodec/tests/fft.c b/libavcodec/tests/fft.c
index 163f3e89c4..1f7c2ce93a 100644
--- a/libavcodec/tests/fft.c
+++ b/libavcodec/tests/fft.c
@@ -50,10 +50,8 @@
#include "libavcodec/fft.h"
#endif
-#if FFT_FLOAT
#include "libavcodec/dct.h"
#include "libavcodec/rdft.h"
-#endif
/* reference fft */
@@ -65,15 +63,9 @@
pim += (MUL16(are, bim) + MUL16(bre, aim)); \
}
-#if FFT_FLOAT || AVFFT
#define RANGE 1.0
#define REF_SCALE(x, bits) (x)
#define FMT "%10.6f"
-#else
-#define RANGE 8388608
-#define REF_SCALE(x, bits) (x)
-#define FMT "%6d"
-#endif
static struct {
float re, im;
@@ -158,7 +150,6 @@ static void mdct_ref(FFTSample *output, FFTSample *input, int nbits)
}
#endif /* CONFIG_MDCT */
-#if FFT_FLOAT
#if CONFIG_DCT
static void idct_ref(FFTSample *output, FFTSample *input, int nbits)
{
@@ -190,7 +181,6 @@ static void dct_ref(FFTSample *output, FFTSample *input, int nbits)
}
}
#endif /* CONFIG_DCT */
-#endif /* FFT_FLOAT */
static FFTSample frandom(AVLFG *prng)
{
@@ -291,7 +281,6 @@ static inline void fft_end(FFTContext *s)
#endif
}
-#if FFT_FLOAT
static inline void rdft_init(RDFTContext **r, int nbits, enum RDFTransformType trans)
{
#if AVFFT
@@ -345,7 +334,6 @@ static inline void dct_end(DCTContext *d)
ff_dct_end(d);
#endif
}
-#endif /* FFT_FLOAT */
static void help(void)
{
@@ -378,10 +366,8 @@ int main(int argc, char **argv)
FFTSample *tab2;
enum tf_transform transform = TRANSFORM_FFT;
FFTContext *m, *s;
-#if FFT_FLOAT
RDFTContext *r;
DCTContext *d;
-#endif /* FFT_FLOAT */
int it, i, err = 1;
int do_speed = 0, do_inverse = 0;
int fft_nbits = 9, fft_size;
@@ -391,9 +377,6 @@ int main(int argc, char **argv)
#if !AVFFT
s = av_mallocz(sizeof(*s));
m = av_mallocz(sizeof(*m));
-#endif
-
-#if !AVFFT && FFT_FLOAT
r = av_mallocz(sizeof(*r));
d = av_mallocz(sizeof(*d));
#endif
@@ -471,7 +454,6 @@ int main(int argc, char **argv)
if ((err = fft_ref_init(fft_nbits, do_inverse)) < 0)
goto cleanup;
break;
-#if FFT_FLOAT
# if CONFIG_RDFT
case TRANSFORM_RDFT:
if (do_inverse)
@@ -492,7 +474,6 @@ int main(int argc, char **argv)
dct_init(&d, fft_nbits, do_inverse ? DCT_III : DCT_II);
break;
# endif /* CONFIG_DCT */
-#endif /* FFT_FLOAT */
default:
av_log(NULL, AV_LOG_ERROR, "Requested transform not supported\n");
goto cleanup;
@@ -531,7 +512,6 @@ int main(int argc, char **argv)
fft_ref(tab_ref, tab1, fft_nbits);
err = check_diff(&tab_ref->re, &tab->re, fft_size * 2, 1.0);
break;
-#if FFT_FLOAT
#if CONFIG_RDFT
case TRANSFORM_RDFT:
{
@@ -578,7 +558,6 @@ int main(int argc, char **argv)
err = check_diff(&tab_ref->re, &tab->re, fft_size, 1.0);
break;
#endif /* CONFIG_DCT */
-#endif /* FFT_FLOAT */
}
/* do a speed test */
@@ -606,7 +585,6 @@ int main(int argc, char **argv)
memcpy(tab, tab1, fft_size * sizeof(FFTComplex));
fft_calc(s, tab);
break;
-#if FFT_FLOAT
case TRANSFORM_RDFT:
memcpy(tab2, tab1, fft_size * sizeof(FFTSample));
rdft_calc(r, tab2);
@@ -615,7 +593,6 @@ int main(int argc, char **argv)
memcpy(tab2, tab1, fft_size * sizeof(FFTSample));
dct_calc(d, tab2);
break;
-#endif /* FFT_FLOAT */
}
}
duration = av_gettime_relative() - time_start;
@@ -639,7 +616,6 @@ int main(int argc, char **argv)
case TRANSFORM_FFT:
fft_end(s);
break;
-#if FFT_FLOAT
# if CONFIG_RDFT
case TRANSFORM_RDFT:
rdft_end(r);
@@ -650,7 +626,6 @@ int main(int argc, char **argv)
dct_end(d);
break;
# endif /* CONFIG_DCT */
-#endif /* FFT_FLOAT */
}
cleanup:
@@ -663,9 +638,6 @@ cleanup:
#if !AVFFT
av_free(s);
av_free(m);
-#endif
-
-#if !AVFFT && FFT_FLOAT
av_free(r);
av_free(d);
#endif
diff --git a/tests/fate/fft.mak b/tests/fate/fft.mak
index 76701dcce6..a5e7a974a6 100644
--- a/tests/fate/fft.mak
+++ b/tests/fate/fft.mak
@@ -28,23 +28,6 @@ $(FATE_FFT_ALL): CMD = run libavcodec/tests/fft$(EXESUF) $(CPUFLAGS:%=-c%) $(ARG
$(FATE_FFT_ALL): CMP = null
-define DEF_FFT_FIXED32
-FATE_FFT_FIXED32 += fate-fft-fixed32-$(1) fate-ifft-fixed32-$(1) \
- fate-mdct-fixed32-$(1) fate-imdct-fixed32-$(1)
-
-fate-fft-fixed32-$(1): ARGS = -n$(1)
-fate-ifft-fixed32-$(1): ARGS = -n$(1) -i
-#fate-mdct-fixed32-$(1): ARGS = -n$(1) -m
-fate-imdct-fixed32-$(1): ARGS = -n$(1) -m -i
-endef
-
-$(foreach N, 4 5 6 7 8 9 10 11 12, $(eval $(call DEF_FFT_FIXED32,$(N))))
-
-fate-fft-fixed32: $(FATE_FFT_FIXED32)
-$(FATE_FFT_FIXED32): libavcodec/tests/fft-fixed32$(EXESUF)
-$(FATE_FFT_FIXED32): CMD = run libavcodec/tests/fft-fixed32$(EXESUF) $(CPUFLAGS:%=-c%) $(ARGS)
-$(FATE_FFT_FIXED32): CMP = null
-
define DEF_AV_FFT
FATE_AV_DCT-$(CONFIG_DCT) += fate-av-dct1d-$(1) fate-av-idct1d-$(1)
FATE_AV_FFT-$(CONFIG_FFT) += fate-av-fft-$(1) fate-av-ifft-$(1)
@@ -75,9 +58,9 @@ $(FATE_AV_FFT_ALL): CMD = run libavcodec/tests/avfft$(EXESUF) $(CPUFLAGS:%=-c%)
$(FATE_AV_FFT_ALL): CMP = null
fate-dct: fate-dct-float
-fate-fft: fate-fft-float fate-fft-fixed32
+fate-fft: fate-fft-float
fate-mdct: fate-mdct-float
fate-rdft: fate-rdft-float
-FATE-$(call ALLYES, AVCODEC FFT MDCT) += $(FATE_FFT_ALL) $(FATE_FFT_FIXED32) $(FATE_AV_FFT_ALL)
-fate-fft-all: $(FATE_FFT_ALL) $(FATE_FFT_FIXED32) $(FATE_AV_FFT_ALL)
+FATE-$(call ALLYES, AVCODEC FFT MDCT) += $(FATE_FFT_ALL) $(FATE_AV_FFT_ALL)
+fate-fft-all: $(FATE_FFT_ALL) $(FATE_AV_FFT_ALL)
--
2.34.1
More information about the ffmpeg-devel
mailing list