1 /*
2 * Copyright (c) 2012
3 * MIPS Technologies, Inc., California.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. Neither the name of the MIPS Technologies, Inc., nor the names of its
14 * contributors may be used to endorse or promote products derived from
15 * this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE MIPS TECHNOLOGIES, INC. ``AS IS'' AND
18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE MIPS TECHNOLOGIES, INC. BE LIABLE
21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 *
29 * Authors: Stanislav Ocovaj (socovaj@mips.com)
30 * Goran Cordasic (goran@mips.com)
31 * Djordje Pesut (djordje@mips.com)
32 *
33 * This file is part of FFmpeg.
34 *
35 * FFmpeg is free software; you can redistribute it and/or
36 * modify it under the terms of the GNU Lesser General Public
37 * License as published by the Free Software Foundation; either
38 * version 2.1 of the License, or (at your option) any later version.
39 *
40 * FFmpeg is distributed in the hope that it will be useful,
41 * but WITHOUT ANY WARRANTY; without even the implied warranty of
42 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
43 * Lesser General Public License for more details.
44 *
45 * You should have received a copy of the GNU Lesser General Public
46 * License along with FFmpeg; if not, write to the Free Software
47 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
48 */
49
50 /**
51 * @file
52 * definitions and initialization of LUT table for FFT
53 */
54 #include "libavutil/thread.h"
55
56 #include "libavcodec/fft_table.h"
57
58 const int32_t ff_w_tab_sr[MAX_FFT_SIZE/(4*16)] = {
59 2147483647, 2147483016, 2147481121, 2147477963, 2147473542, 2147467857, 2147460908, 2147452697,
60 2147443222, 2147432484, 2147420483, 2147407218, 2147392690, 2147376899, 2147359845, 2147341527,
61 2147321946, 2147301102, 2147278995, 2147255625, 2147230991, 2147205094, 2147177934, 2147149511,
62 2147119825, 2147088876, 2147056664, 2147023188, 2146988450, 2146952448, 2146915184, 2146876656,
63 2146836866, 2146795813, 2146753497, 2146709917, 2146665076, 2146618971, 2146571603, 2146522973,
64 2146473080, 2146421924, 2146369505, 2146315824, 2146260881, 2146204674, 2146147205, 2146088474,
65 2146028480, 2145967224, 2145904705, 2145840924, 2145775880, 2145709574, 2145642006, 2145573176,
66 2145503083, 2145431729, 2145359112, 2145285233, 2145210092, 2145133690, 2145056025, 2144977098,
67 2144896910, 2144815460, 2144732748, 2144648774, 2144563539, 2144477042, 2144389283, 2144300264,
68 2144209982, 2144118439, 2144025635, 2143931570, 2143836244, 2143739656, 2143641807, 2143542697,
69 2143442326, 2143340694, 2143237802, 2143133648, 2143028234, 2142921559, 2142813624, 2142704427,
70 2142593971, 2142482254, 2142369276, 2142255039, 2142139541, 2142022783, 2141904764, 2141785486,
71 2141664948, 2141543150, 2141420092, 2141295774, 2141170197, 2141043360, 2140915264, 2140785908,
72 2140655293, 2140523418, 2140390284, 2140255892, 2140120240, 2139983329, 2139845159, 2139705730,
73 2139565043, 2139423097, 2139279892, 2139135429, 2138989708, 2138842728, 2138694490, 2138544994,
74 2138394240, 2138242228, 2138088958, 2137934430, 2137778644, 2137621601, 2137463301, 2137303743,
75 2137142927, 2136980855, 2136817525, 2136652938, 2136487095, 2136319994, 2136151637, 2135982023,
76 2135811153, 2135639026, 2135465642, 2135291003, 2135115107, 2134937956, 2134759548, 2134579885,
77 2134398966, 2134216791, 2134033361, 2133848675, 2133662734, 2133475538, 2133287087, 2133097381,
78 2132906420, 2132714204, 2132520734, 2132326009, 2132130030, 2131932796, 2131734309, 2131534567,
79 2131333572, 2131131322, 2130927819, 2130723062, 2130517052, 2130309789, 2130101272, 2129891502,
80 2129680480, 2129468204, 2129254676, 2129039895, 2128823862, 2128606576, 2128388038, 2128168248,
81 2127947206, 2127724913, 2127501367, 2127276570, 2127050522, 2126823222, 2126594672, 2126364870,
82 2126133817, 2125901514, 2125667960, 2125433155, 2125197100, 2124959795, 2124721240, 2124481435,
83 2124240380, 2123998076, 2123754522, 2123509718, 2123263666, 2123016364, 2122767814, 2122518015,
84 2122266967, 2122014670, 2121761126, 2121506333, 2121250292, 2120993003, 2120734467, 2120474683,
85 2120213651, 2119951372, 2119687847, 2119423074, 2119157054, 2118889788, 2118621275, 2118351516,
86 2118080511, 2117808259, 2117534762, 2117260020, 2116984031, 2116706797, 2116428319, 2116148595,
87 2115867626, 2115585412, 2115301954, 2115017252, 2114731305, 2114444114, 2114155680, 2113866001,
88 2113575080, 2113282914, 2112989506, 2112694855, 2112398960, 2112101824, 2111803444, 2111503822,
89 2111202959, 2110900853, 2110597505, 2110292916, 2109987085, 2109680013, 2109371700, 2109062146,
90 2108751352, 2108439317, 2108126041, 2107811526, 2107495770, 2107178775, 2106860540, 2106541065,
91 2106220352, 2105898399, 2105575208, 2105250778, 2104925109, 2104598202, 2104270057, 2103940674,
92 2103610054, 2103278196, 2102945101, 2102610768, 2102275199, 2101938393, 2101600350, 2101261071,
93 2100920556, 2100578805, 2100235819, 2099891596, 2099546139, 2099199446, 2098851519, 2098502357,
94 2098151960, 2097800329, 2097447464, 2097093365, 2096738032, 2096381466, 2096023667, 2095664635,
95 2095304370, 2094942872, 2094580142, 2094216179, 2093850985, 2093484559, 2093116901, 2092748012,
96 2092377892, 2092006541, 2091633960, 2091260147, 2090885105, 2090508833, 2090131331, 2089752599,
97 2089372638, 2088991448, 2088609029, 2088225381, 2087840505, 2087454400, 2087067068, 2086678508,
98 2086288720, 2085897705, 2085505463, 2085111994, 2084717298, 2084321376, 2083924228, 2083525854,
99 2083126254, 2082725429, 2082323379, 2081920103, 2081515603, 2081109879, 2080702930, 2080294757,
100 2079885360, 2079474740, 2079062896, 2078649830, 2078235540, 2077820028, 2077403294, 2076985338,
101 2076566160, 2076145760, 2075724139, 2075301296, 2074877233, 2074451950, 2074025446, 2073597721,
102 2073168777, 2072738614, 2072307231, 2071874629, 2071440808, 2071005769, 2070569511, 2070132035,
103 2069693342, 2069253430, 2068812302, 2068369957, 2067926394, 2067481616, 2067035621, 2066588410,
104 2066139983, 2065690341, 2065239484, 2064787411, 2064334124, 2063879623, 2063423908, 2062966978,
105 2062508835, 2062049479, 2061588910, 2061127128, 2060664133, 2060199927, 2059734508, 2059267877,
106 2058800036, 2058330983, 2057860719, 2057389244, 2056916560, 2056442665, 2055967560, 2055491246,
107 2055013723, 2054534991, 2054055050, 2053573901, 2053091544, 2052607979, 2052123207, 2051637227,
108 2051150040, 2050661647, 2050172048, 2049681242, 2049189231, 2048696014, 2048201592, 2047705965,
109 2047209133, 2046711097, 2046211857, 2045711414, 2045209767, 2044706916, 2044202863, 2043697608,
110 2043191150, 2042683490, 2042174628, 2041664565, 2041153301, 2040640837, 2040127172, 2039612306,
111 2039096241, 2038578976, 2038060512, 2037540850, 2037019988, 2036497928, 2035974670, 2035450215,
112 2034924562, 2034397712, 2033869665, 2033340422, 2032809982, 2032278347, 2031745516, 2031211490,
113 2030676269, 2030139853, 2029602243, 2029063439, 2028523442, 2027982251, 2027439867, 2026896291,
114 2026351522, 2025805561, 2025258408, 2024710064, 2024160529, 2023609803, 2023057887, 2022504780,
115 2021950484, 2021394998, 2020838323, 2020280460, 2019721407, 2019161167, 2018599739, 2018037123,
116 2017473321, 2016908331, 2016342155, 2015774793, 2015206245, 2014636511, 2014065592, 2013493489,
117 2012920201, 2012345729, 2011770073, 2011193233, 2010615210, 2010036005, 2009455617, 2008874047,
118 2008291295, 2007707362, 2007122248, 2006535953, 2005948478, 2005359822, 2004769987, 2004178973,
119 2003586779, 2002993407, 2002398857, 2001803128, 2001206222, 2000608139, 2000008879, 1999408442,
120 1998806829, 1998204040, 1997600076, 1996994937, 1996388622, 1995781134, 1995172471, 1994562635,
121 1993951625, 1993339442, 1992726087, 1992111559, 1991495860, 1990878989, 1990260946, 1989641733,
122 1989021350, 1988399796, 1987777073, 1987153180, 1986528118, 1985901888, 1985274489, 1984645923,
123 1984016189, 1983385288, 1982753220, 1982119985, 1981485585, 1980850019, 1980213288, 1979575392,
124 1978936331, 1978296106, 1977654717, 1977012165, 1976368450, 1975723572, 1975077532, 1974430331,
125 1973781967, 1973132443, 1972481757, 1971829912, 1971176906, 1970522741, 1969867417, 1969210933,
126 1968553292, 1967894492, 1967234535, 1966573420, 1965911148, 1965247720, 1964583136, 1963917396,
127 1963250501, 1962582451, 1961913246, 1961242888, 1960571375, 1959898709, 1959224890, 1958549919,
128 1957873796, 1957196520, 1956518093, 1955838516, 1955157788, 1954475909, 1953792881, 1953108703,
129 1952423377, 1951736902, 1951049279, 1950360508, 1949670589, 1948979524, 1948287312, 1947593954,
130 1946899451, 1946203802, 1945507008, 1944809070, 1944109987, 1943409761, 1942708392, 1942005880,
131 1941302225, 1940597428, 1939891490, 1939184411, 1938476190, 1937766830, 1937056329, 1936344689,
132 1935631910, 1934917992, 1934202936, 1933486742, 1932769411, 1932050943, 1931331338, 1930610597,
133 1929888720, 1929165708, 1928441561, 1927716279, 1926989864, 1926262315, 1925533633, 1924803818,
134 1924072871, 1923340791, 1922607581, 1921873239, 1921137767, 1920401165, 1919663432, 1918924571,
135 1918184581, 1917443462, 1916701216, 1915957841, 1915213340, 1914467712, 1913720958, 1912973078,
136 1912224073, 1911473942, 1910722688, 1909970309, 1909216806, 1908462181, 1907706433, 1906949562,
137 1906191570, 1905432457, 1904672222, 1903910867, 1903148392, 1902384797, 1901620084, 1900854251,
138 1900087301, 1899319232, 1898550047, 1897779744, 1897008325, 1896235790, 1895462140, 1894687374,
139 1893911494, 1893134500, 1892356392, 1891577171, 1890796837, 1890015391, 1889232832, 1888449163,
140 1887664383, 1886878492, 1886091491, 1885303381, 1884514161, 1883723833, 1882932397, 1882139853,
141 1881346202, 1880551444, 1879755580, 1878958610, 1878160535, 1877361354, 1876561070, 1875759681,
142 1874957189, 1874153594, 1873348897, 1872543097, 1871736196, 1870928194, 1870119091, 1869308888,
143 1868497586, 1867685184, 1866871683, 1866057085, 1865241388, 1864424594, 1863606704, 1862787717,
144 1861967634, 1861146456, 1860324183, 1859500816, 1858676355, 1857850800, 1857024153, 1856196413,
145 1855367581, 1854537657, 1853706643, 1852874538, 1852041343, 1851207059, 1850371686, 1849535224,
146 1848697674, 1847859036, 1847019312, 1846178501, 1845336604, 1844493621, 1843649553, 1842804401,
147 1841958164, 1841110844, 1840262441, 1839412956, 1838562388, 1837710739, 1836858008, 1836004197,
148 1835149306, 1834293336, 1833436286, 1832578158, 1831718951, 1830858668, 1829997307, 1829134869,
149 1828271356, 1827406767, 1826541103, 1825674364, 1824806552, 1823937666, 1823067707, 1822196675,
150 1821324572, 1820451397, 1819577151, 1818701835, 1817825449, 1816947994, 1816069469, 1815189877,
151 1814309216, 1813427489, 1812544694, 1811660833, 1810775906, 1809889915, 1809002858, 1808114737,
152 1807225553, 1806335305, 1805443995, 1804551623, 1803658189, 1802763694, 1801868139, 1800971523,
153 1800073849, 1799175115, 1798275323, 1797374472, 1796472565, 1795569601, 1794665580, 1793760504,
154 1792854372, 1791947186, 1791038946, 1790129652, 1789219305, 1788307905, 1787395453, 1786481950,
155 1785567396, 1784651792, 1783735137, 1782817434, 1781898681, 1780978881, 1780058032, 1779136137,
156 1778213194, 1777289206, 1776364172, 1775438094, 1774510970, 1773582803, 1772653593, 1771723340,
157 1770792044, 1769859707, 1768926328, 1767991909, 1767056450, 1766119952, 1765182414, 1764243838,
158 1763304224, 1762363573, 1761421885, 1760479161, 1759535401, 1758590607, 1757644777, 1756697914,
159 1755750017, 1754801087, 1753851126, 1752900132, 1751948107, 1750995052, 1750040966, 1749085851,
160 1748129707, 1747172535, 1746214334, 1745255107, 1744294853, 1743333573, 1742371267, 1741407936,
161 1740443581, 1739478202, 1738511799, 1737544374, 1736575927, 1735606458, 1734635968, 1733664458,
162 1732691928, 1731718378, 1730743810, 1729768224, 1728791620, 1727813999, 1726835361, 1725855708,
163 1724875040, 1723893357, 1722910659, 1721926948, 1720942225, 1719956488, 1718969740, 1717981981,
164 1716993211, 1716003431, 1715012642, 1714020844, 1713028037, 1712034223, 1711039401, 1710043573,
165 1709046739, 1708048900, 1707050055, 1706050207, 1705049355, 1704047500, 1703044642, 1702040783,
166 1701035922, 1700030061, 1699023199, 1698015339, 1697006479, 1695996621, 1694985765, 1693973912,
167 1692961062, 1691947217, 1690932376, 1689916541, 1688899711, 1687881888, 1686863072, 1685843263,
168 1684822463, 1683800672, 1682777890, 1681754118, 1680729357, 1679703608, 1678676870, 1677649144,
169 1676620432, 1675590733, 1674560049, 1673528379, 1672495725, 1671462087, 1670427466, 1669391862,
170 1668355276, 1667317709, 1666279161, 1665239632, 1664199124, 1663157637, 1662115172, 1661071729,
171 1660027308, 1658981911, 1657935539, 1656888190, 1655839867, 1654790570, 1653740300, 1652689057,
172 1651636841, 1650583654, 1649529496, 1648474367, 1647418269, 1646361202, 1645303166, 1644244162,
173 1643184191, 1642123253, 1641061349, 1639998480, 1638934646, 1637869848, 1636804087, 1635737362,
174 1634669676, 1633601027, 1632531418, 1631460848, 1630389319, 1629316830, 1628243383, 1627168978,
175 1626093616, 1625017297, 1623940023, 1622861793, 1621782608, 1620702469, 1619621377, 1618539332,
176 1617456335, 1616372386, 1615287487, 1614201637, 1613114838, 1612027089, 1610938393, 1609848749,
177 1608758157, 1607666620, 1606574136, 1605480708, 1604386335, 1603291018, 1602194758, 1601097555,
178 1599999411, 1598900325, 1597800299, 1596699333, 1595597428, 1594494583, 1593390801, 1592286082,
179 1591180426, 1590073833, 1588966306, 1587857843, 1586748447, 1585638117, 1584526854, 1583414660,
180 1582301533, 1581187476, 1580072489, 1578956572, 1577839726, 1576721952, 1575603251, 1574483623,
181 1573363068, 1572241588, 1571119183, 1569995854, 1568871601, 1567746425, 1566620327, 1565493307,
182 1564365367, 1563236506, 1562106725, 1560976026, 1559844408, 1558711873, 1557578421, 1556444052,
183 1555308768, 1554172569, 1553035455, 1551897428, 1550758488, 1549618636, 1548477872, 1547336197,
184 1546193612, 1545050118, 1543905714, 1542760402, 1541614183, 1540467057, 1539319024, 1538170087,
185 1537020244, 1535869497, 1534717846, 1533565293, 1532411837, 1531257480, 1530102222, 1528946064,
186 1527789007, 1526631051, 1525472197, 1524312445, 1523151797, 1521990252, 1520827813, 1519664478,
187 1518500250, 1517335128, 1516169114, 1515002208, 1513834411, 1512665723, 1511496145, 1510325678,
188 1509154322, 1507982079, 1506808949, 1505634932, 1504460029, 1503284242, 1502107570, 1500930014,
189 1499751576, 1498572255, 1497392053, 1496210969, 1495029006, 1493846163, 1492662441, 1491477842,
190 1490292364, 1489106011, 1487918781, 1486730675, 1485541696, 1484351842, 1483161115, 1481969516,
191 1480777044, 1479583702, 1478389489, 1477194407, 1475998456, 1474801636, 1473603949, 1472405394,
192 1471205974, 1470005688, 1468804538, 1467602523, 1466399645, 1465195904, 1463991302, 1462785838,
193 1461579514, 1460372329, 1459164286, 1457955385, 1456745625, 1455535009, 1454323536, 1453111208,
194 1451898025, 1450683988, 1449469098, 1448253355, 1447036760, 1445819314, 1444601017, 1443381870,
195 1442161874, 1440941030, 1439719338, 1438496799, 1437273414, 1436049184, 1434824109, 1433598189,
196 1432371426, 1431143821, 1429915374, 1428686085, 1427455956, 1426224988, 1424993180, 1423760534,
197 1422527051, 1421292730, 1420057574, 1418821582, 1417584755, 1416347095, 1415108601, 1413869275,
198 1412629117, 1411388129, 1410146309, 1408903661, 1407660183, 1406415878, 1405170745, 1403924785,
199 1402678000, 1401430389, 1400181954, 1398932695, 1397682613, 1396431709, 1395179984, 1393927438,
200 1392674072, 1391419886, 1390164882, 1388909060, 1387652422, 1386394966, 1385136696, 1383877610,
201 1382617710, 1381356997, 1380095472, 1378833134, 1377569986, 1376306026, 1375041258, 1373775680,
202 1372509294, 1371242101, 1369974101, 1368705296, 1367435685, 1366165269, 1364894050, 1363622028,
203 1362349204, 1361075579, 1359801152, 1358525926, 1357249901, 1355973077, 1354695455, 1353417037,
204 1352137822, 1350857812, 1349577007, 1348295409, 1347013017, 1345729833, 1344445857, 1343161090,
205 1341875533, 1340589187, 1339302052, 1338014129, 1336725419, 1335435923, 1334145641, 1332854574,
206 1331562723, 1330270089, 1328976672, 1327682474, 1326387494, 1325091734, 1323795195, 1322497877,
207 1321199781, 1319900907, 1318601257, 1317300832, 1315999631, 1314697657, 1313394909, 1312091388,
208 1310787095, 1309482032, 1308176198, 1306869594, 1305562222, 1304254082, 1302945174, 1301635500,
209 1300325060, 1299013855, 1297701886, 1296389154, 1295075659, 1293761402, 1292446384, 1291130606,
210 1289814068, 1288496772, 1287178717, 1285859905, 1284540337, 1283220013, 1281898935, 1280577102,
211 1279254516, 1277931177, 1276607086, 1275282245, 1273956653, 1272630312, 1271303222, 1269975384,
212 1268646800, 1267317469, 1265987392, 1264656571, 1263325005, 1261992697, 1260659646, 1259325853,
213 1257991320, 1256656047, 1255320034, 1253983283, 1252645794, 1251307568, 1249968606, 1248628909,
214 1247288478, 1245947312, 1244605414, 1243262783, 1241919421, 1240575329, 1239230506, 1237884955,
215 1236538675, 1235191668, 1233843935, 1232495475, 1231146291, 1229796382, 1228445750, 1227094395,
216 1225742318, 1224389521, 1223036002, 1221681765, 1220326809, 1218971135, 1217614743, 1216257636,
217 1214899813, 1213541275, 1212182024, 1210822059, 1209461382, 1208099993, 1206737894, 1205375085,
218 1204011567, 1202647340, 1201282407, 1199916766, 1198550419, 1197183368, 1195815612, 1194447153,
219 1193077991, 1191708127, 1190337562, 1188966297, 1187594332, 1186221669, 1184848308, 1183474250,
220 1182099496, 1180724046, 1179347902, 1177971064, 1176593533, 1175215310, 1173836395, 1172456790,
221 1171076495, 1169695512, 1168313840, 1166931481, 1165548435, 1164164704, 1162780288, 1161395188,
222 1160009405, 1158622939, 1157235792, 1155847964, 1154459456, 1153070269, 1151680403, 1150289860,
223 1148898640, 1147506745, 1146114174, 1144720929, 1143327011, 1141932420, 1140537158, 1139141224,
224 1137744621, 1136347348, 1134949406, 1133550797, 1132151521, 1130751579, 1129350972, 1127949701,
225 1126547765, 1125145168, 1123741908, 1122337987, 1120933406, 1119528166, 1118122267, 1116715710,
226 1115308496, 1113900627, 1112492101, 1111082922, 1109673089, 1108262603, 1106851465, 1105439676,
227 1104027237, 1102614148, 1101200410, 1099786025, 1098370993, 1096955314, 1095538991, 1094122023,
228 1092704411, 1091286156, 1089867259, 1088447722, 1087027544, 1085606726, 1084185270, 1082763176,
229 1081340445, 1079917078, 1078493076, 1077068439, 1075643169, 1074217266, 1072790730, 1071363564,
230 1069935768, 1068507342, 1067078288, 1065648605, 1064218296, 1062787361, 1061355801, 1059923616,
231 1058490808, 1057057377, 1055623324, 1054188651, 1052753357, 1051317443, 1049880912, 1048443763,
232 1047005996, 1045567615, 1044128617, 1042689006, 1041248781, 1039807944, 1038366495, 1036924436,
233 1035481766, 1034038487, 1032594600, 1031150105, 1029705004, 1028259297, 1026812985, 1025366069,
234 1023918550, 1022470428, 1021021705, 1019572382, 1018122458, 1016671936, 1015220816, 1013769098,
235 1012316784, 1010863875, 1009410370, 1007956272, 1006501581, 1005046298, 1003590424, 1002133959,
236 1000676905, 999219262, 997761031, 996302214, 994842810, 993382821, 991922248, 990461091,
237 988999351, 987537030, 986074127, 984610645, 983146583, 981681943, 980216726, 978750932,
238 977284562, 975817617, 974350098, 972882006, 971413342, 969944106, 968474300, 967003923,
239 965532978, 964061465, 962589385, 961116739, 959643527, 958169751, 956695411, 955220508,
240 953745043, 952269017, 950792431, 949315286, 947837582, 946359321, 944880503, 943401129,
241 941921200, 940440717, 938959681, 937478092, 935995952, 934513261, 933030021, 931546231,
242 930061894, 928577010, 927091579, 925605603, 924119082, 922632018, 921144411, 919656262,
243 918167572, 916678342, 915188572, 913698265, 912207419, 910716038, 909224120, 907731667,
244 906238681, 904745161, 903251110, 901756526, 900261413, 898765769, 897269597, 895772898,
245 894275671, 892777918, 891279640, 889780838, 888281512, 886781663, 885281293, 883780402,
246 882278992, 880777062, 879274614, 877771649, 876268167, 874764170, 873259659, 871754633,
247 870249095, 868743045, 867236484, 865729413, 864221832, 862713743, 861205147, 859696043,
248 858186435, 856676321, 855165703, 853654582, 852142959, 850630835, 849118210, 847605086,
249 846091463, 844577343, 843062726, 841547612, 840032004, 838515901, 836999305, 835482217,
250 833964638, 832446567, 830928007, 829408958, 827889422, 826369398, 824848888, 823327893,
251 821806413, 820284450, 818762005, 817239078, 815715670, 814191782, 812667415, 811142571,
252 809617249, 808091450, 806565177, 805038429, 803511207, 801983513, 800455346, 798926709,
253 797397602, 795868026, 794337982, 792807470, 791276492, 789745049, 788213141, 786680769,
254 785147934, 783614638, 782080880, 780546663, 779011986, 777476851, 775941259, 774405210,
255 772868706, 771331747, 769794334, 768256469, 766718151, 765179382, 763640164, 762100496,
256 760560380, 759019816, 757478806, 755937350, 754395449, 752853105, 751310318, 749767089,
257 748223418, 746679308, 745134758, 743589770, 742044345, 740498483, 738952186, 737405453,
258 735858287, 734310688, 732762657, 731214195, 729665303, 728115982, 726566232, 725016055,
259 723465451, 721914422, 720362968, 718811090, 717258790, 715706067, 714152924, 712599360,
260 711045377, 709490976, 707936158, 706380923, 704825272, 703269207, 701712728, 700155836,
261 698598533, 697040818, 695482694, 693924160, 692365218, 690805869, 689246113, 687685952,
262 686125387, 684564417, 683003045, 681441272, 679879097, 678316522, 676753549, 675190177,
263 673626408, 672062243, 670497682, 668932727, 667367379, 665801638, 664235505, 662668981,
264 661102068, 659534766, 657967075, 656398998, 654830535, 653261686, 651692453, 650122837,
265 648552838, 646982457, 645411696, 643840556, 642269036, 640697139, 639124865, 637552215,
266 635979190, 634405791, 632832018, 631257873, 629683357, 628108471, 626533215, 624957590,
267 623381598, 621805239, 620228514, 618651424, 617073971, 615496154, 613917975, 612339436,
268 610760536, 609181276, 607601658, 606021683, 604441352, 602860664, 601279623, 599698227,
269 598116479, 596534378, 594951927, 593369126, 591785976, 590202477, 588618632, 587034440,
270 585449903, 583865021, 582279796, 580694229, 579108320, 577522070, 575935480, 574348552,
271 572761285, 571173682, 569585743, 567997469, 566408860, 564819919, 563230645, 561641039,
272 560051104, 558460839, 556870245, 555279324, 553688076, 552096502, 550504604, 548912382,
273 547319836, 545726969, 544133781, 542540273, 540946445, 539352300, 537757837, 536163058,
274 534567963, 532972554, 531376831, 529780796, 528184449, 526587791, 524990824, 523393547,
275 521795963, 520198072, 518599875, 517001373, 515402566, 513803457, 512204045, 510604332,
276 509004318, 507404005, 505803394, 504202485, 502601279, 500999778, 499397982, 497795892,
277 496193509, 494590835, 492987869, 491384614, 489781069, 488177236, 486573117, 484968710,
278 483364019, 481759043, 480153784, 478548243, 476942419, 475336316, 473729932, 472123270,
279 470516330, 468909114, 467301622, 465693854, 464085813, 462477499, 460868912, 459260055,
280 457650927, 456041530, 454431865, 452821933, 451211734, 449601270, 447990541, 446379549,
281 444768294, 443156777, 441545000, 439932963, 438320667, 436708113, 435095303, 433482236,
282 431868915, 430255339, 428641511, 427027430, 425413098, 423798515, 422183684, 420568604,
283 418953276, 417337703, 415721883, 414105819, 412489512, 410872962, 409256170, 407639137,
284 406021865, 404404353, 402786604, 401168618, 399550396, 397931939, 396313247, 394694323,
285 393075166, 391455778, 389836160, 388216313, 386596237, 384975934, 383355404, 381734649,
286 380113669, 378492466, 376871039, 375249392, 373627523, 372005435, 370383128, 368760603,
287 367137861, 365514903, 363891730, 362268343, 360644742, 359020930, 357396906, 355772673,
288 354148230, 352523578, 350898719, 349273654, 347648383, 346022908, 344397230, 342771348,
289 341145265, 339518981, 337892498, 336265816, 334638936, 333011859, 331384586, 329757119,
290 328129457, 326501602, 324873555, 323245317, 321616889, 319988272, 318359466, 316730474,
291 315101295, 313471930, 311842381, 310212649, 308582734, 306952638, 305322361, 303691904,
292 302061269, 300430456, 298799466, 297168301, 295536961, 293905447, 292273760, 290641901,
293 289009871, 287377671, 285745302, 284112765, 282480061, 280847190, 279214155, 277580955,
294 275947592, 274314066, 272680379, 271046532, 269412525, 267778360, 266144038, 264509558,
295 262874923, 261240134, 259605191, 257970095, 256334847, 254699448, 253063900, 251428203,
296 249792358, 248156366, 246520228, 244883945, 243247518, 241610947, 239974235, 238337382,
297 236700388, 235063255, 233425984, 231788575, 230151030, 228513350, 226875535, 225237587,
298 223599506, 221961294, 220322951, 218684479, 217045878, 215407149, 213768293, 212129312,
299 210490206, 208850976, 207211624, 205572149, 203932553, 202292838, 200653003, 199013051,
300 197372981, 195732795, 194092495, 192452080, 190811551, 189170911, 187530159, 185889297,
301 184248325, 182607245, 180966058, 179324764, 177683365, 176041861, 174400254, 172758544,
302 171116733, 169474820, 167832808, 166190698, 164548489, 162906184, 161263783, 159621287,
303 157978697, 156336015, 154693240, 153050374, 151407418, 149764374, 148121241, 146478021,
304 144834714, 143191323, 141547847, 139904288, 138260647, 136616925, 134973122, 133329239,
305 131685278, 130041240, 128397125, 126752935, 125108670, 123464332, 121819921, 120175438,
306 118530885, 116886262, 115241570, 113596810, 111951983, 110307091, 108662134, 107017112,
307 105372028, 103726882, 102081675, 100436408, 98791081, 97145697, 95500255, 93854758,
308 92209205, 90563597, 88917937, 87272224, 85626460, 83980645, 82334782, 80688869,
309 79042909, 77396903, 75750851, 74104755, 72458615, 70812432, 69166208, 67519943,
310 65873638, 64227295, 62580914, 60934496, 59288042, 57641553, 55995030, 54348475,
311 52701887, 51055268, 49408620, 47761942, 46115236, 44468503, 42821744, 41174960,
312 39528151, 37881320, 36234466, 34587590, 32940695, 31293780, 29646846, 27999895,
313 26352928, 24705945, 23058947, 21411936, 19764913, 18117878, 16470832, 14823776,
314 13176712, 11529640, 9882561, 8235476, 6588387, 4941294, 3294197, 1647099
315 };
316
317 uint16_t ff_fft_offsets_lut[21845];
318
fft_lut_init(uint16_t * table,int off,int size,int * index)319 static void fft_lut_init(uint16_t *table, int off, int size, int *index)
320 {
321 if (size < 16) {
322 table[*index] = off >> 2;
323 (*index)++;
324 }
325 else {
326 fft_lut_init(table, off, size >> 1, index);
327 fft_lut_init(table, off + (size >> 1), size >> 2, index);
328 fft_lut_init(table, off + 3 * (size >> 2), size >> 2, index);
329 }
330 }
331
fft_lut_init_start(void)332 static void fft_lut_init_start(void)
333 {
334 int n = 0;
335
336 fft_lut_init(ff_fft_offsets_lut, 0, 1 << 17, &n);
337 }
338
ff_fft_lut_init(void)339 void ff_fft_lut_init(void)
340 {
341 static AVOnce init_once = AV_ONCE_INIT;
342
343 ff_thread_once(&init_once, fft_lut_init_start);
344 }
345