xref: /dragonfly/sys/dev/drm/amd/display/dc/dce/dce_scl_filters.c (revision b843c749addef9340ee7d4e250b09fdd492602a1)
1 /*
2  * Copyright 2012-16 Advanced Micro Devices, Inc.
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a
5  * copy of this software and associated documentation files (the "Software"),
6  * to deal in the Software without restriction, including without limitation
7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8  * and/or sell copies of the Software, and to permit persons to whom the
9  * Software is furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice shall be included in
12  * all copies or substantial portions of the Software.
13  *
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
17  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
18  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20  * OTHER DEALINGS IN THE SOFTWARE.
21  *
22  * Authors: AMD
23  *
24  */
25 
26 #include "transform.h"
27 
28 static const uint16_t filter_2tap_16p[18] = {
29           4096, 0,
30           3840, 256,
31           3584, 512,
32           3328, 768,
33           3072, 1024,
34           2816, 1280,
35           2560, 1536,
36           2304, 1792,
37           2048, 2048
38 };
39 
40 static const uint16_t filter_3tap_16p_upscale[27] = {
41           2048, 2048, 0,
42           1708, 2424, 16348,
43           1372, 2796, 16308,
44           1056, 3148, 16272,
45           768, 3464, 16244,
46           512, 3728, 16236,
47           296, 3928, 16252,
48           124, 4052, 16296,
49           0, 4096, 0
50 };
51 
52 static const uint16_t filter_3tap_16p_117[27] = {
53           2048, 2048, 0,
54           1824, 2276, 16376,
55           1600, 2496, 16380,
56           1376, 2700, 16,
57           1156, 2880, 52,
58           948, 3032, 108,
59           756, 3144, 192,
60           580, 3212, 296,
61           428, 3236, 428
62 };
63 
64 static const uint16_t filter_3tap_16p_150[27] = {
65           2048, 2048, 0,
66           1872, 2184, 36,
67           1692, 2308, 88,
68           1516, 2420, 156,
69           1340, 2516, 236,
70           1168, 2592, 328,
71           1004, 2648, 440,
72           844, 2684, 560,
73           696, 2696, 696
74 };
75 
76 static const uint16_t filter_3tap_16p_183[27] = {
77           2048, 2048, 0,
78           1892, 2104, 92,
79           1744, 2152, 196,
80           1592, 2196, 300,
81           1448, 2232, 412,
82           1304, 2256, 528,
83           1168, 2276, 648,
84           1032, 2288, 772,
85           900, 2292, 900
86 };
87 
88 static const uint16_t filter_4tap_16p_upscale[36] = {
89           0, 4096, 0, 0,
90           16240, 4056, 180, 16380,
91           16136, 3952, 404, 16364,
92           16072, 3780, 664, 16344,
93           16040, 3556, 952, 16312,
94           16036, 3284, 1268, 16272,
95           16052, 2980, 1604, 16224,
96           16084, 2648, 1952, 16176,
97           16128, 2304, 2304, 16128
98 };
99 
100 static const uint16_t filter_4tap_16p_117[36] = {
101           428, 3236, 428, 0,
102           276, 3232, 604, 16364,
103           148, 3184, 800, 16340,
104           44, 3104, 1016, 16312,
105           16344, 2984, 1244, 16284,
106           16284, 2832, 1488, 16256,
107           16244, 2648, 1732, 16236,
108           16220, 2440, 1976, 16220,
109           16212, 2216, 2216, 16212
110 };
111 
112 static const uint16_t filter_4tap_16p_150[36] = {
113           696, 2700, 696, 0,
114           560, 2700, 848, 16364,
115           436, 2676, 1008, 16348,
116           328, 2628, 1180, 16336,
117           232, 2556, 1356, 16328,
118           152, 2460, 1536, 16328,
119           84, 2344, 1716, 16332,
120           28, 2208, 1888, 16348,
121           16376, 2052, 2052, 16376
122 };
123 
124 static const uint16_t filter_4tap_16p_183[36] = {
125           940, 2208, 940, 0,
126           832, 2200, 1052, 4,
127           728, 2180, 1164, 16,
128           628, 2148, 1280, 36,
129           536, 2100, 1392, 60,
130           448, 2044, 1504, 92,
131           368, 1976, 1612, 132,
132           296, 1900, 1716, 176,
133           232, 1812, 1812, 232
134 };
135 
136 static const uint16_t filter_2tap_64p[66] = {
137           4096, 0,
138           4032, 64,
139           3968, 128,
140           3904, 192,
141           3840, 256,
142           3776, 320,
143           3712, 384,
144           3648, 448,
145           3584, 512,
146           3520, 576,
147           3456, 640,
148           3392, 704,
149           3328, 768,
150           3264, 832,
151           3200, 896,
152           3136, 960,
153           3072, 1024,
154           3008, 1088,
155           2944, 1152,
156           2880, 1216,
157           2816, 1280,
158           2752, 1344,
159           2688, 1408,
160           2624, 1472,
161           2560, 1536,
162           2496, 1600,
163           2432, 1664,
164           2368, 1728,
165           2304, 1792,
166           2240, 1856,
167           2176, 1920,
168           2112, 1984,
169           2048, 2048 };
170 
171 static const uint16_t filter_3tap_64p_upscale[99] = {
172           2048, 2048, 0,
173           1960, 2140, 16376,
174           1876, 2236, 16364,
175           1792, 2328, 16356,
176           1708, 2424, 16348,
177           1620, 2516, 16336,
178           1540, 2612, 16328,
179           1456, 2704, 16316,
180           1372, 2796, 16308,
181           1292, 2884, 16296,
182           1212, 2976, 16288,
183           1136, 3060, 16280,
184           1056, 3148, 16272,
185           984, 3228, 16264,
186           908, 3312, 16256,
187           836, 3388, 16248,
188           768, 3464, 16244,
189           700, 3536, 16240,
190           636, 3604, 16236,
191           572, 3668, 16236,
192           512, 3728, 16236,
193           456, 3784, 16236,
194           400, 3836, 16240,
195           348, 3884, 16244,
196           296, 3928, 16252,
197           252, 3964, 16260,
198           204, 4000, 16268,
199           164, 4028, 16284,
200           124, 4052, 16296,
201           88, 4072, 16316,
202           56, 4084, 16336,
203           24, 4092, 16356,
204           0, 4096, 0
205 };
206 
207 static const uint16_t filter_3tap_64p_117[99] = {
208           2048, 2048, 0,
209           1992, 2104, 16380,
210           1936, 2160, 16380,
211           1880, 2220, 16376,
212           1824, 2276, 16376,
213           1768, 2332, 16376,
214           1712, 2388, 16376,
215           1656, 2444, 16376,
216           1600, 2496, 16380,
217           1544, 2548, 0,
218           1488, 2600, 4,
219           1432, 2652, 8,
220           1376, 2700, 16,
221           1320, 2748, 20,
222           1264, 2796, 32,
223           1212, 2840, 40,
224           1156, 2880, 52,
225           1104, 2920, 64,
226           1052, 2960, 80,
227           1000, 2996, 92,
228           948, 3032, 108,
229           900, 3060, 128,
230           852, 3092, 148,
231           804, 3120, 168,
232           756, 3144, 192,
233           712, 3164, 216,
234           668, 3184, 240,
235           624, 3200, 268,
236           580, 3212, 296,
237           540, 3220, 328,
238           500, 3228, 360,
239           464, 3232, 392,
240           428, 3236, 428
241 };
242 
243 static const uint16_t filter_3tap_64p_150[99] = {
244           2048, 2048, 0,
245           2004, 2080, 8,
246           1960, 2116, 16,
247           1916, 2148, 28,
248           1872, 2184, 36,
249           1824, 2216, 48,
250           1780, 2248, 60,
251           1736, 2280, 76,
252           1692, 2308, 88,
253           1648, 2336, 104,
254           1604, 2368, 120,
255           1560, 2392, 136,
256           1516, 2420, 156,
257           1472, 2444, 172,
258           1428, 2472, 192,
259           1384, 2492, 212,
260           1340, 2516, 236,
261           1296, 2536, 256,
262           1252, 2556, 280,
263           1212, 2576, 304,
264           1168, 2592, 328,
265           1124, 2608, 356,
266           1084, 2624, 384,
267           1044, 2636, 412,
268           1004, 2648, 440,
269           964, 2660, 468,
270           924, 2668, 500,
271           884, 2676, 528,
272           844, 2684, 560,
273           808, 2688, 596,
274           768, 2692, 628,
275           732, 2696, 664,
276           696, 2696, 696
277 };
278 
279 static const uint16_t filter_3tap_64p_183[99] = {
280           2048, 2048, 0,
281           2008, 2060, 20,
282           1968, 2076, 44,
283           1932, 2088, 68,
284           1892, 2104, 92,
285           1856, 2116, 120,
286           1816, 2128, 144,
287           1780, 2140, 168,
288           1744, 2152, 196,
289           1704, 2164, 220,
290           1668, 2176, 248,
291           1632, 2188, 272,
292           1592, 2196, 300,
293           1556, 2204, 328,
294           1520, 2216, 356,
295           1484, 2224, 384,
296           1448, 2232, 412,
297           1412, 2240, 440,
298           1376, 2244, 468,
299           1340, 2252, 496,
300           1304, 2256, 528,
301           1272, 2264, 556,
302           1236, 2268, 584,
303           1200, 2272, 616,
304           1168, 2276, 648,
305           1132, 2280, 676,
306           1100, 2284, 708,
307           1064, 2288, 740,
308           1032, 2288, 772,
309           996, 2292, 800,
310           964, 2292, 832,
311           932, 2292, 868,
312           900, 2292, 900
313 };
314 
315 static const uint16_t filter_4tap_64p_upscale[132] = {
316           0, 4096, 0, 0,
317           16344, 4092, 40, 0,
318           16308, 4084, 84, 16380,
319           16272, 4072, 132, 16380,
320           16240, 4056, 180, 16380,
321           16212, 4036, 232, 16376,
322           16184, 4012, 288, 16372,
323           16160, 3984, 344, 16368,
324           16136, 3952, 404, 16364,
325           16116, 3916, 464, 16360,
326           16100, 3872, 528, 16356,
327           16084, 3828, 596, 16348,
328           16072, 3780, 664, 16344,
329           16060, 3728, 732, 16336,
330           16052, 3676, 804, 16328,
331           16044, 3616, 876, 16320,
332           16040, 3556, 952, 16312,
333           16036, 3492, 1028, 16300,
334           16032, 3424, 1108, 16292,
335           16032, 3356, 1188, 16280,
336           16036, 3284, 1268, 16272,
337           16036, 3212, 1352, 16260,
338           16040, 3136, 1436, 16248,
339           16044, 3056, 1520, 16236,
340           16052, 2980, 1604, 16224,
341           16060, 2896, 1688, 16212,
342           16064, 2816, 1776, 16200,
343           16076, 2732, 1864, 16188,
344           16084, 2648, 1952, 16176,
345           16092, 2564, 2040, 16164,
346           16104, 2476, 2128, 16152,
347           16116, 2388, 2216, 16140,
348           16128, 2304, 2304, 16128 };
349 
350 static const uint16_t filter_4tap_64p_117[132] = {
351           420, 3248, 420, 0,
352           380, 3248, 464, 16380,
353           344, 3248, 508, 16372,
354           308, 3248, 552, 16368,
355           272, 3240, 596, 16364,
356           236, 3236, 644, 16356,
357           204, 3224, 692, 16352,
358           172, 3212, 744, 16344,
359           144, 3196, 796, 16340,
360           116, 3180, 848, 16332,
361           88, 3160, 900, 16324,
362           60, 3136, 956, 16320,
363           36, 3112, 1012, 16312,
364           16, 3084, 1068, 16304,
365           16380, 3056, 1124, 16296,
366           16360, 3024, 1184, 16292,
367           16340, 2992, 1244, 16284,
368           16324, 2956, 1304, 16276,
369           16308, 2920, 1364, 16268,
370           16292, 2880, 1424, 16264,
371           16280, 2836, 1484, 16256,
372           16268, 2792, 1548, 16252,
373           16256, 2748, 1608, 16244,
374           16248, 2700, 1668, 16240,
375           16240, 2652, 1732, 16232,
376           16232, 2604, 1792, 16228,
377           16228, 2552, 1856, 16224,
378           16220, 2500, 1916, 16220,
379           16216, 2444, 1980, 16216,
380           16216, 2388, 2040, 16216,
381           16212, 2332, 2100, 16212,
382           16212, 2276, 2160, 16212,
383           16212, 2220, 2220, 16212 };
384 
385 static const uint16_t filter_4tap_64p_150[132] = {
386           696, 2700, 696, 0,
387           660, 2704, 732, 16380,
388           628, 2704, 768, 16376,
389           596, 2704, 804, 16372,
390           564, 2700, 844, 16364,
391           532, 2696, 884, 16360,
392           500, 2692, 924, 16356,
393           472, 2684, 964, 16352,
394           440, 2676, 1004, 16352,
395           412, 2668, 1044, 16348,
396           384, 2656, 1088, 16344,
397           360, 2644, 1128, 16340,
398           332, 2632, 1172, 16336,
399           308, 2616, 1216, 16336,
400           284, 2600, 1260, 16332,
401           260, 2580, 1304, 16332,
402           236, 2560, 1348, 16328,
403           216, 2540, 1392, 16328,
404           196, 2516, 1436, 16328,
405           176, 2492, 1480, 16324,
406           156, 2468, 1524, 16324,
407           136, 2440, 1568, 16328,
408           120, 2412, 1612, 16328,
409           104, 2384, 1656, 16328,
410           88, 2352, 1700, 16332,
411           72, 2324, 1744, 16332,
412           60, 2288, 1788, 16336,
413           48, 2256, 1828, 16340,
414           36, 2220, 1872, 16344,
415           24, 2184, 1912, 16352,
416           12, 2148, 1952, 16356,
417           4, 2112, 1996, 16364,
418           16380, 2072, 2036, 16372 };
419 
420 static const uint16_t filter_4tap_64p_183[132] = {
421           944, 2204, 944, 0,
422           916, 2204, 972, 0,
423           888, 2200, 996, 0,
424           860, 2200, 1024, 4,
425           832, 2196, 1052, 4,
426           808, 2192, 1080, 8,
427           780, 2188, 1108, 12,
428           756, 2180, 1140, 12,
429           728, 2176, 1168, 16,
430           704, 2168, 1196, 20,
431           680, 2160, 1224, 24,
432           656, 2152, 1252, 28,
433           632, 2144, 1280, 36,
434           608, 2132, 1308, 40,
435           584, 2120, 1336, 48,
436           560, 2112, 1364, 52,
437           536, 2096, 1392, 60,
438           516, 2084, 1420, 68,
439           492, 2072, 1448, 76,
440           472, 2056, 1476, 84,
441           452, 2040, 1504, 92,
442           428, 2024, 1532, 100,
443           408, 2008, 1560, 112,
444           392, 1992, 1584, 120,
445           372, 1972, 1612, 132,
446           352, 1956, 1636, 144,
447           336, 1936, 1664, 156,
448           316, 1916, 1688, 168,
449           300, 1896, 1712, 180,
450           284, 1876, 1736, 192,
451           268, 1852, 1760, 208,
452           252, 1832, 1784, 220,
453           236, 1808, 1808, 236 };
454 
455 static const uint16_t filter_5tap_64p_upscale[165] = {
456           15936, 2496, 2496, 15936, 0,
457           15948, 2404, 2580, 15924, 0,
458           15960, 2312, 2664, 15912, 4,
459           15976, 2220, 2748, 15904, 8,
460           15992, 2128, 2832, 15896, 12,
461           16004, 2036, 2912, 15888, 16,
462           16020, 1944, 2992, 15880, 20,
463           16036, 1852, 3068, 15876, 20,
464           16056, 1760, 3140, 15876, 24,
465           16072, 1668, 3216, 15872, 28,
466           16088, 1580, 3284, 15872, 32,
467           16104, 1492, 3352, 15876, 32,
468           16120, 1404, 3420, 15876, 36,
469           16140, 1316, 3480, 15884, 40,
470           16156, 1228, 3540, 15892, 40,
471           16172, 1144, 3600, 15900, 40,
472           16188, 1060, 3652, 15908, 44,
473           16204, 980, 3704, 15924, 44,
474           16220, 900, 3756, 15936, 44,
475           16236, 824, 3800, 15956, 44,
476           16248, 744, 3844, 15972, 44,
477           16264, 672, 3884, 15996, 44,
478           16276, 600, 3920, 16020, 44,
479           16292, 528, 3952, 16044, 40,
480           16304, 460, 3980, 16072, 40,
481           16316, 396, 4008, 16104, 36,
482           16328, 332, 4032, 16136, 32,
483           16336, 272, 4048, 16172, 28,
484           16348, 212, 4064, 16208, 24,
485           16356, 156, 4080, 16248, 16,
486           16368, 100, 4088, 16292, 12,
487           16376, 48, 4092, 16336, 4,
488           0, 0, 4096, 0, 0 };
489 
490 static const uint16_t filter_5tap_64p_117[165] = {
491           16056, 2372, 2372, 16056, 0,
492           16052, 2312, 2432, 16060, 0,
493           16052, 2252, 2488, 16064, 0,
494           16052, 2188, 2548, 16072, 0,
495           16052, 2124, 2600, 16076, 0,
496           16052, 2064, 2656, 16088, 0,
497           16052, 2000, 2708, 16096, 0,
498           16056, 1932, 2760, 16108, 0,
499           16060, 1868, 2808, 16120, 0,
500           16064, 1804, 2856, 16132, 0,
501           16068, 1740, 2904, 16148, 16380,
502           16076, 1676, 2948, 16164, 16380,
503           16080, 1612, 2992, 16180, 16376,
504           16088, 1544, 3032, 16200, 16372,
505           16096, 1480, 3072, 16220, 16372,
506           16104, 1420, 3108, 16244, 16368,
507           16112, 1356, 3144, 16268, 16364,
508           16120, 1292, 3180, 16292, 16360,
509           16128, 1232, 3212, 16320, 16356,
510           16136, 1168, 3240, 16344, 16352,
511           16144, 1108, 3268, 16376, 16344,
512           16156, 1048, 3292, 20, 16340,
513           16164, 988, 3316, 52, 16332,
514           16172, 932, 3336, 88, 16328,
515           16184, 872, 3356, 124, 16320,
516           16192, 816, 3372, 160, 16316,
517           16204, 760, 3388, 196, 16308,
518           16212, 708, 3400, 236, 16300,
519           16220, 656, 3412, 276, 16292,
520           16232, 604, 3420, 320, 16284,
521           16240, 552, 3424, 364, 16276,
522           16248, 504, 3428, 408, 16268,
523           16256, 456, 3428, 456, 16256 };
524 
525 static const uint16_t filter_5tap_64p_150[165] = {
526           16368, 2064, 2064, 16368, 0,
527           16352, 2028, 2100, 16380, 16380,
528           16340, 1996, 2132, 12, 16376,
529           16328, 1960, 2168, 24, 16376,
530           16316, 1924, 2204, 44, 16372,
531           16308, 1888, 2236, 60, 16368,
532           16296, 1848, 2268, 76, 16364,
533           16288, 1812, 2300, 96, 16360,
534           16280, 1772, 2328, 116, 16356,
535           16272, 1736, 2360, 136, 16352,
536           16268, 1696, 2388, 160, 16348,
537           16260, 1656, 2416, 180, 16344,
538           16256, 1616, 2440, 204, 16340,
539           16248, 1576, 2464, 228, 16336,
540           16244, 1536, 2492, 252, 16332,
541           16240, 1496, 2512, 276, 16324,
542           16240, 1456, 2536, 304, 16320,
543           16236, 1416, 2556, 332, 16316,
544           16232, 1376, 2576, 360, 16312,
545           16232, 1336, 2592, 388, 16308,
546           16232, 1296, 2612, 416, 16300,
547           16232, 1256, 2628, 448, 16296,
548           16232, 1216, 2640, 480, 16292,
549           16232, 1172, 2652, 512, 16288,
550           16232, 1132, 2664, 544, 16284,
551           16232, 1092, 2676, 576, 16280,
552           16236, 1056, 2684, 608, 16272,
553           16236, 1016, 2692, 644, 16268,
554           16240, 976, 2700, 680, 16264,
555           16240, 936, 2704, 712, 16260,
556           16244, 900, 2708, 748, 16256,
557           16248, 860, 2708, 788, 16252,
558           16248, 824, 2708, 824, 16248 };
559 
560 static const uint16_t filter_5tap_64p_183[165] = {
561           228, 1816, 1816, 228, 0,
562           216, 1792, 1836, 248, 16380,
563           200, 1772, 1860, 264, 16376,
564           184, 1748, 1884, 280, 16376,
565           168, 1728, 1904, 300, 16372,
566           156, 1704, 1928, 316, 16368,
567           144, 1680, 1948, 336, 16364,
568           128, 1656, 1968, 356, 16364,
569           116, 1632, 1988, 376, 16360,
570           104, 1604, 2008, 396, 16356,
571           96, 1580, 2024, 416, 16356,
572           84, 1556, 2044, 440, 16352,
573           72, 1528, 2060, 460, 16348,
574           64, 1504, 2076, 484, 16348,
575           52, 1476, 2092, 504, 16344,
576           44, 1448, 2104, 528, 16344,
577           36, 1424, 2120, 552, 16340,
578           28, 1396, 2132, 576, 16340,
579           20, 1368, 2144, 600, 16340,
580           12, 1340, 2156, 624, 16336,
581           4, 1312, 2168, 652, 16336,
582           0, 1284, 2180, 676, 16336,
583           16376, 1256, 2188, 700, 16332,
584           16372, 1228, 2196, 728, 16332,
585           16368, 1200, 2204, 752, 16332,
586           16364, 1172, 2212, 780, 16332,
587           16356, 1144, 2216, 808, 16332,
588           16352, 1116, 2220, 836, 16332,
589           16352, 1084, 2224, 860, 16332,
590           16348, 1056, 2228, 888, 16336,
591           16344, 1028, 2232, 916, 16336,
592           16340, 1000, 2232, 944, 16336,
593           16340, 972, 2232, 972, 16340 };
594 
595 static const uint16_t filter_6tap_64p_upscale[198] = {
596           0, 0, 4092, 0, 0, 0,
597           12, 16332, 4092, 52, 16368, 0,
598           24, 16280, 4088, 108, 16356, 0,
599           36, 16236, 4080, 168, 16340, 0,
600           44, 16188, 4064, 228, 16324, 0,
601           56, 16148, 4052, 292, 16308, 0,
602           64, 16108, 4032, 356, 16292, 4,
603           72, 16072, 4008, 424, 16276, 4,
604           80, 16036, 3980, 492, 16256, 4,
605           88, 16004, 3952, 564, 16240, 8,
606           96, 15972, 3920, 636, 16220, 8,
607           100, 15944, 3884, 712, 16204, 12,
608           108, 15916, 3844, 788, 16184, 16,
609           112, 15896, 3800, 864, 16164, 20,
610           116, 15872, 3756, 944, 16144, 20,
611           120, 15852, 3708, 1024, 16124, 24,
612           120, 15836, 3656, 1108, 16104, 28,
613           124, 15824, 3600, 1192, 16084, 32,
614           124, 15808, 3544, 1276, 16064, 36,
615           124, 15800, 3484, 1360, 16044, 40,
616           128, 15792, 3420, 1448, 16024, 44,
617           128, 15784, 3352, 1536, 16004, 48,
618           124, 15780, 3288, 1624, 15988, 52,
619           124, 15776, 3216, 1712, 15968, 56,
620           124, 15776, 3144, 1800, 15948, 64,
621           120, 15776, 3068, 1888, 15932, 68,
622           120, 15780, 2992, 1976, 15912, 72,
623           116, 15784, 2916, 2064, 15896, 76,
624           112, 15792, 2836, 2152, 15880, 80,
625           108, 15796, 2752, 2244, 15868, 84,
626           104, 15804, 2672, 2328, 15852, 88,
627           104, 15816, 2588, 2416, 15840, 92,
628           100, 15828, 2504, 2504, 15828, 100 };
629 
630 static const uint16_t filter_6tap_64p_117[198] = {
631           16168, 476, 3568, 476, 16168, 0,
632           16180, 428, 3564, 528, 16156, 0,
633           16192, 376, 3556, 584, 16144, 4,
634           16204, 328, 3548, 636, 16128, 4,
635           16216, 280, 3540, 692, 16116, 8,
636           16228, 232, 3524, 748, 16104, 12,
637           16240, 188, 3512, 808, 16092, 12,
638           16252, 148, 3492, 864, 16080, 16,
639           16264, 104, 3472, 924, 16068, 16,
640           16276, 64, 3452, 984, 16056, 20,
641           16284, 28, 3428, 1044, 16048, 24,
642           16296, 16376, 3400, 1108, 16036, 24,
643           16304, 16340, 3372, 1168, 16024, 28,
644           16316, 16304, 3340, 1232, 16016, 32,
645           16324, 16272, 3308, 1296, 16004, 32,
646           16332, 16244, 3272, 1360, 15996, 36,
647           16344, 16212, 3236, 1424, 15988, 36,
648           16352, 16188, 3200, 1488, 15980, 40,
649           16360, 16160, 3160, 1552, 15972, 40,
650           16368, 16136, 3116, 1616, 15964, 40,
651           16372, 16112, 3072, 1680, 15956, 44,
652           16380, 16092, 3028, 1744, 15952, 44,
653           0, 16072, 2980, 1808, 15948, 44,
654           8, 16052, 2932, 1872, 15944, 48,
655           12, 16036, 2880, 1936, 15940, 48,
656           16, 16020, 2828, 2000, 15936, 48,
657           20, 16008, 2776, 2064, 15936, 48,
658           24, 15996, 2724, 2128, 15936, 48,
659           28, 15984, 2668, 2192, 15936, 48,
660           32, 15972, 2612, 2252, 15940, 44,
661           36, 15964, 2552, 2316, 15940, 44,
662           40, 15956, 2496, 2376, 15944, 44,
663           40, 15952, 2436, 2436, 15952, 40 };
664 
665 static const uint16_t filter_6tap_64p_150[198] = {
666           16148, 920, 2724, 920, 16148, 0,
667           16152, 880, 2724, 956, 16148, 0,
668           16152, 844, 2720, 996, 16144, 0,
669           16156, 804, 2716, 1032, 16144, 0,
670           16156, 768, 2712, 1072, 16144, 0,
671           16160, 732, 2708, 1112, 16144, 16380,
672           16164, 696, 2700, 1152, 16144, 16380,
673           16168, 660, 2692, 1192, 16148, 16380,
674           16172, 628, 2684, 1232, 16148, 16380,
675           16176, 592, 2672, 1272, 16152, 16376,
676           16180, 560, 2660, 1312, 16152, 16376,
677           16184, 524, 2648, 1348, 16156, 16376,
678           16192, 492, 2632, 1388, 16160, 16372,
679           16196, 460, 2616, 1428, 16164, 16372,
680           16200, 432, 2600, 1468, 16168, 16368,
681           16204, 400, 2584, 1508, 16176, 16364,
682           16212, 368, 2564, 1548, 16180, 16364,
683           16216, 340, 2544, 1588, 16188, 16360,
684           16220, 312, 2524, 1628, 16196, 16356,
685           16228, 284, 2504, 1668, 16204, 16356,
686           16232, 256, 2480, 1704, 16212, 16352,
687           16240, 232, 2456, 1744, 16224, 16348,
688           16244, 204, 2432, 1780, 16232, 16344,
689           16248, 180, 2408, 1820, 16244, 16340,
690           16256, 156, 2380, 1856, 16256, 16336,
691           16260, 132, 2352, 1896, 16268, 16332,
692           16268, 108, 2324, 1932, 16280, 16328,
693           16272, 88, 2296, 1968, 16292, 16324,
694           16276, 64, 2268, 2004, 16308, 16320,
695           16284, 44, 2236, 2036, 16324, 16312,
696           16288, 24, 2204, 2072, 16340, 16308,
697           16292, 8, 2172, 2108, 16356, 16304,
698           16300, 16372, 2140, 2140, 16372, 16300 };
699 
700 static const uint16_t filter_6tap_64p_183[198] = {
701           16296, 1032, 2196, 1032, 16296, 0,
702           16292, 1004, 2200, 1060, 16304, 16380,
703           16288, 976, 2200, 1088, 16308, 16380,
704           16284, 952, 2196, 1116, 16312, 16376,
705           16284, 924, 2196, 1144, 16320, 16376,
706           16280, 900, 2192, 1172, 16324, 16372,
707           16276, 872, 2192, 1200, 16332, 16368,
708           16276, 848, 2188, 1228, 16340, 16368,
709           16272, 820, 2180, 1256, 16348, 16364,
710           16272, 796, 2176, 1280, 16356, 16360,
711           16268, 768, 2168, 1308, 16364, 16360,
712           16268, 744, 2164, 1336, 16372, 16356,
713           16268, 716, 2156, 1364, 16380, 16352,
714           16264, 692, 2148, 1392, 4, 16352,
715           16264, 668, 2136, 1420, 16, 16348,
716           16264, 644, 2128, 1448, 28, 16344,
717           16264, 620, 2116, 1472, 36, 16340,
718           16264, 596, 2108, 1500, 48, 16340,
719           16268, 572, 2096, 1524, 60, 16336,
720           16268, 548, 2080, 1552, 72, 16332,
721           16268, 524, 2068, 1576, 88, 16328,
722           16268, 504, 2056, 1604, 100, 16324,
723           16272, 480, 2040, 1628, 112, 16324,
724           16272, 456, 2024, 1652, 128, 16320,
725           16272, 436, 2008, 1680, 144, 16316,
726           16276, 416, 1992, 1704, 156, 16312,
727           16276, 392, 1976, 1724, 172, 16308,
728           16280, 372, 1956, 1748, 188, 16308,
729           16280, 352, 1940, 1772, 204, 16304,
730           16284, 332, 1920, 1796, 224, 16300,
731           16288, 312, 1900, 1816, 240, 16296,
732           16288, 296, 1880, 1840, 256, 16296,
733           16292, 276, 1860, 1860, 276, 16292 };
734 
735 static const uint16_t filter_7tap_64p_upscale[231] = {
736           176, 15760, 2488, 2488, 15760, 176, 0,
737           172, 15772, 2404, 2572, 15752, 180, 16380,
738           168, 15784, 2324, 2656, 15740, 184, 16380,
739           164, 15800, 2240, 2736, 15732, 188, 16376,
740           160, 15812, 2152, 2816, 15728, 192, 16376,
741           152, 15828, 2068, 2896, 15724, 192, 16376,
742           148, 15848, 1984, 2972, 15720, 196, 16372,
743           140, 15864, 1896, 3048, 15720, 196, 16372,
744           136, 15884, 1812, 3124, 15720, 196, 16368,
745           128, 15900, 1724, 3196, 15720, 196, 16368,
746           120, 15920, 1640, 3268, 15724, 196, 16368,
747           116, 15940, 1552, 3336, 15732, 196, 16364,
748           108, 15964, 1468, 3400, 15740, 196, 16364,
749           104, 15984, 1384, 3464, 15748, 192, 16364,
750           96, 16004, 1300, 3524, 15760, 188, 16364,
751           88, 16028, 1216, 3584, 15776, 184, 16364,
752           84, 16048, 1132, 3640, 15792, 180, 16360,
753           76, 16072, 1048, 3692, 15812, 176, 16360,
754           68, 16092, 968, 3744, 15832, 168, 16360,
755           64, 16116, 888, 3788, 15856, 160, 16360,
756           56, 16140, 812, 3832, 15884, 152, 16360,
757           52, 16160, 732, 3876, 15912, 144, 16360,
758           44, 16184, 656, 3912, 15944, 136, 16364,
759           40, 16204, 584, 3944, 15976, 124, 16364,
760           32, 16228, 512, 3976, 16012, 116, 16364,
761           28, 16248, 440, 4004, 16048, 104, 16364,
762           24, 16268, 372, 4028, 16092, 88, 16368,
763           20, 16288, 304, 4048, 16132, 76, 16368,
764           12, 16308, 240, 4064, 16180, 60, 16372,
765           8, 16328, 176, 4076, 16228, 48, 16372,
766           4, 16348, 112, 4088, 16276, 32, 16376,
767           0, 16364, 56, 4092, 16328, 16, 16380,
768           0, 0, 0, 4096, 0, 0, 0 };
769 
770 static const uint16_t filter_7tap_64p_117[231] = {
771           92, 15868, 2464, 2464, 15868, 92, 0,
772           96, 15864, 2404, 2528, 15876, 88, 0,
773           100, 15860, 2344, 2584, 15884, 84, 0,
774           104, 15856, 2280, 2644, 15892, 76, 0,
775           108, 15852, 2216, 2700, 15904, 72, 0,
776           108, 15852, 2152, 2756, 15916, 64, 0,
777           112, 15852, 2088, 2812, 15932, 60, 0,
778           112, 15852, 2024, 2864, 15948, 52, 0,
779           112, 15856, 1960, 2916, 15964, 44, 0,
780           116, 15860, 1892, 2964, 15984, 36, 0,
781           116, 15864, 1828, 3016, 16004, 24, 4,
782           116, 15868, 1760, 3060, 16024, 16, 4,
783           116, 15876, 1696, 3108, 16048, 8, 8,
784           116, 15884, 1628, 3152, 16072, 16380, 8,
785           112, 15892, 1564, 3192, 16100, 16372, 8,
786           112, 15900, 1496, 3232, 16124, 16360, 12,
787           112, 15908, 1428, 3268, 16156, 16348, 12,
788           108, 15920, 1364, 3304, 16188, 16336, 16,
789           108, 15928, 1300, 3340, 16220, 16324, 20,
790           104, 15940, 1232, 3372, 16252, 16312, 20,
791           104, 15952, 1168, 3400, 16288, 16300, 24,
792           100, 15964, 1104, 3428, 16328, 16284, 28,
793           96, 15980, 1040, 3452, 16364, 16272, 28,
794           96, 15992, 976, 3476, 20, 16256, 32,
795           92, 16004, 916, 3496, 64, 16244, 36,
796           88, 16020, 856, 3516, 108, 16228, 40,
797           84, 16032, 792, 3532, 152, 16216, 44,
798           80, 16048, 732, 3544, 200, 16200, 48,
799           80, 16064, 676, 3556, 248, 16184, 48,
800           76, 16080, 616, 3564, 296, 16168, 52,
801           72, 16092, 560, 3568, 344, 16156, 56,
802           68, 16108, 504, 3572, 396, 16140, 60,
803           64, 16124, 452, 3576, 452, 16124, 64 };
804 
805 static const uint16_t filter_7tap_64p_150[231] = {
806           16224, 16380, 2208, 2208, 16380, 16224, 0,
807           16232, 16360, 2172, 2236, 16, 16216, 0,
808           16236, 16340, 2140, 2268, 40, 16212, 0,
809           16244, 16324, 2104, 2296, 60, 16204, 4,
810           16252, 16304, 2072, 2324, 84, 16196, 4,
811           16256, 16288, 2036, 2352, 108, 16192, 4,
812           16264, 16268, 2000, 2380, 132, 16184, 8,
813           16272, 16252, 1960, 2408, 160, 16176, 8,
814           16276, 16240, 1924, 2432, 184, 16172, 8,
815           16284, 16224, 1888, 2456, 212, 16164, 8,
816           16288, 16212, 1848, 2480, 240, 16160, 12,
817           16296, 16196, 1812, 2500, 268, 16152, 12,
818           16300, 16184, 1772, 2524, 296, 16144, 12,
819           16308, 16172, 1736, 2544, 324, 16140, 12,
820           16312, 16164, 1696, 2564, 356, 16136, 12,
821           16320, 16152, 1656, 2584, 388, 16128, 12,
822           16324, 16144, 1616, 2600, 416, 16124, 12,
823           16328, 16136, 1576, 2616, 448, 16116, 12,
824           16332, 16128, 1536, 2632, 480, 16112, 12,
825           16340, 16120, 1496, 2648, 516, 16108, 12,
826           16344, 16112, 1456, 2660, 548, 16104, 12,
827           16348, 16104, 1416, 2672, 580, 16100, 12,
828           16352, 16100, 1376, 2684, 616, 16096, 12,
829           16356, 16096, 1336, 2696, 652, 16092, 12,
830           16360, 16092, 1296, 2704, 688, 16088, 12,
831           16364, 16088, 1256, 2712, 720, 16084, 12,
832           16368, 16084, 1220, 2720, 760, 16084, 8,
833           16368, 16080, 1180, 2724, 796, 16080, 8,
834           16372, 16080, 1140, 2732, 832, 16080, 8,
835           16376, 16076, 1100, 2732, 868, 16076, 4,
836           16380, 16076, 1060, 2736, 908, 16076, 4,
837           16380, 16076, 1020, 2740, 944, 16076, 0,
838           0, 16076, 984, 2740, 984, 16076, 0 };
839 
840 static const uint16_t filter_7tap_64p_183[231] = {
841           16216, 324, 1884, 1884, 324, 16216, 0,
842           16220, 304, 1864, 1904, 344, 16216, 0,
843           16224, 284, 1844, 1924, 364, 16216, 0,
844           16224, 264, 1824, 1944, 384, 16212, 16380,
845           16228, 248, 1804, 1960, 408, 16212, 16380,
846           16228, 228, 1784, 1976, 428, 16208, 16380,
847           16232, 212, 1760, 1996, 452, 16208, 16380,
848           16236, 192, 1740, 2012, 472, 16208, 16376,
849           16240, 176, 1716, 2028, 496, 16208, 16376,
850           16240, 160, 1696, 2040, 516, 16208, 16376,
851           16244, 144, 1672, 2056, 540, 16208, 16376,
852           16248, 128, 1648, 2068, 564, 16208, 16372,
853           16252, 112, 1624, 2084, 588, 16208, 16372,
854           16256, 96, 1600, 2096, 612, 16208, 16368,
855           16256, 84, 1576, 2108, 636, 16208, 16368,
856           16260, 68, 1552, 2120, 660, 16208, 16368,
857           16264, 56, 1524, 2132, 684, 16212, 16364,
858           16268, 40, 1500, 2140, 712, 16212, 16364,
859           16272, 28, 1476, 2152, 736, 16216, 16360,
860           16276, 16, 1448, 2160, 760, 16216, 16356,
861           16280, 4, 1424, 2168, 788, 16220, 16356,
862           16284, 16376, 1396, 2176, 812, 16224, 16352,
863           16288, 16368, 1372, 2184, 840, 16224, 16352,
864           16292, 16356, 1344, 2188, 864, 16228, 16348,
865           16292, 16344, 1320, 2196, 892, 16232, 16344,
866           16296, 16336, 1292, 2200, 916, 16236, 16344,
867           16300, 16324, 1264, 2204, 944, 16240, 16340,
868           16304, 16316, 1240, 2208, 972, 16248, 16336,
869           16308, 16308, 1212, 2212, 996, 16252, 16332,
870           16312, 16300, 1184, 2216, 1024, 16256, 16332,
871           16316, 16292, 1160, 2216, 1052, 16264, 16328,
872           16316, 16284, 1132, 2216, 1076, 16268, 16324,
873           16320, 16276, 1104, 2216, 1104, 16276, 16320 };
874 
875 static const uint16_t filter_8tap_64p_upscale[264] = {
876           0, 0, 0, 4096, 0, 0, 0, 0,
877           16376, 20, 16328, 4092, 56, 16364, 4, 0,
878           16372, 36, 16272, 4088, 116, 16340, 12, 0,
879           16364, 56, 16220, 4080, 180, 16320, 20, 0,
880           16360, 76, 16172, 4064, 244, 16296, 24, 16380,
881           16356, 92, 16124, 4048, 312, 16276, 32, 16380,
882           16352, 108, 16080, 4032, 380, 16252, 40, 16380,
883           16344, 124, 16036, 4008, 452, 16228, 48, 16380,
884           16340, 136, 15996, 3980, 524, 16204, 56, 16380,
885           16340, 152, 15956, 3952, 600, 16180, 64, 16376,
886           16336, 164, 15920, 3920, 672, 16156, 76, 16376,
887           16332, 176, 15888, 3884, 752, 16132, 84, 16376,
888           16328, 188, 15860, 3844, 828, 16104, 92, 16372,
889           16328, 200, 15828, 3800, 908, 16080, 100, 16372,
890           16324, 208, 15804, 3756, 992, 16056, 108, 16372,
891           16324, 216, 15780, 3708, 1072, 16032, 120, 16368,
892           16320, 224, 15760, 3656, 1156, 16008, 128, 16368,
893           16320, 232, 15740, 3604, 1240, 15984, 136, 16364,
894           16320, 240, 15724, 3548, 1324, 15960, 144, 16364,
895           16320, 244, 15708, 3488, 1412, 15936, 152, 16360,
896           16320, 248, 15696, 3428, 1496, 15912, 160, 16360,
897           16320, 252, 15688, 3364, 1584, 15892, 172, 16356,
898           16320, 256, 15680, 3296, 1672, 15868, 180, 16352,
899           16320, 256, 15672, 3228, 1756, 15848, 188, 16352,
900           16320, 256, 15668, 3156, 1844, 15828, 192, 16348,
901           16320, 260, 15668, 3084, 1932, 15808, 200, 16348,
902           16320, 256, 15668, 3012, 2020, 15792, 208, 16344,
903           16324, 256, 15668, 2936, 2108, 15772, 216, 16344,
904           16324, 256, 15672, 2856, 2192, 15756, 220, 16340,
905           16324, 252, 15676, 2776, 2280, 15740, 228, 16336,
906           16328, 252, 15684, 2696, 2364, 15728, 232, 16336,
907           16328, 248, 15692, 2616, 2448, 15716, 240, 16332,
908           16332, 244, 15704, 2532, 2532, 15704, 244, 16332 };
909 
910 static const uint16_t filter_8tap_64p_117[264] = {
911           116, 16100, 428, 3564, 428, 16100, 116, 0,
912           112, 16116, 376, 3564, 484, 16084, 120, 16380,
913           104, 16136, 324, 3560, 540, 16064, 124, 16380,
914           100, 16152, 272, 3556, 600, 16048, 128, 16380,
915           96, 16168, 220, 3548, 656, 16032, 136, 16376,
916           88, 16188, 172, 3540, 716, 16016, 140, 16376,
917           84, 16204, 124, 3528, 780, 16000, 144, 16376,
918           80, 16220, 76, 3512, 840, 15984, 148, 16372,
919           76, 16236, 32, 3496, 904, 15968, 152, 16372,
920           68, 16252, 16376, 3480, 968, 15952, 156, 16372,
921           64, 16268, 16332, 3456, 1032, 15936, 160, 16372,
922           60, 16284, 16292, 3432, 1096, 15920, 164, 16368,
923           56, 16300, 16252, 3408, 1164, 15908, 164, 16368,
924           48, 16316, 16216, 3380, 1228, 15892, 168, 16368,
925           44, 16332, 16180, 3348, 1296, 15880, 168, 16368,
926           40, 16348, 16148, 3316, 1364, 15868, 172, 16364,
927           36, 16360, 16116, 3284, 1428, 15856, 172, 16364,
928           32, 16376, 16084, 3248, 1496, 15848, 176, 16364,
929           28, 4, 16052, 3208, 1564, 15836, 176, 16364,
930           24, 16, 16028, 3168, 1632, 15828, 176, 16364,
931           20, 28, 16000, 3124, 1700, 15820, 176, 16364,
932           16, 40, 15976, 3080, 1768, 15812, 176, 16364,
933           12, 52, 15952, 3036, 1836, 15808, 176, 16364,
934           8, 64, 15932, 2988, 1904, 15800, 176, 16364,
935           4, 76, 15912, 2940, 1972, 15800, 172, 16364,
936           4, 84, 15892, 2888, 2040, 15796, 172, 16364,
937           0, 96, 15876, 2836, 2104, 15792, 168, 16364,
938           16380, 104, 15864, 2780, 2172, 15792, 164, 16364,
939           16380, 112, 15848, 2724, 2236, 15792, 160, 16364,
940           16376, 120, 15836, 2668, 2300, 15796, 156, 16368,
941           16376, 128, 15828, 2608, 2364, 15800, 152, 16368,
942           16372, 136, 15816, 2548, 2428, 15804, 148, 16368,
943           16372, 140, 15812, 2488, 2488, 15812, 140, 16372 };
944 
945 static const uint16_t filter_8tap_64p_150[264] = {
946           16380, 16020, 1032, 2756, 1032, 16020, 16380, 0,
947           0, 16020, 992, 2756, 1068, 16024, 16376, 0,
948           4, 16020, 952, 2752, 1108, 16024, 16372, 0,
949           8, 16020, 916, 2748, 1148, 16028, 16368, 0,
950           12, 16020, 876, 2744, 1184, 16032, 16364, 4,
951           16, 16020, 840, 2740, 1224, 16036, 16356, 4,
952           20, 16024, 800, 2732, 1264, 16040, 16352, 4,
953           20, 16024, 764, 2724, 1304, 16044, 16348, 8,
954           24, 16028, 728, 2716, 1344, 16052, 16340, 8,
955           28, 16028, 692, 2704, 1380, 16056, 16336, 12,
956           28, 16032, 656, 2696, 1420, 16064, 16328, 12,
957           32, 16036, 620, 2684, 1460, 16072, 16324, 12,
958           36, 16040, 584, 2668, 1500, 16080, 16316, 16,
959           36, 16044, 548, 2656, 1536, 16088, 16308, 16,
960           36, 16048, 516, 2640, 1576, 16096, 16304, 20,
961           40, 16052, 480, 2624, 1612, 16108, 16296, 20,
962           40, 16060, 448, 2608, 1652, 16120, 16288, 20,
963           44, 16064, 416, 2588, 1692, 16132, 16280, 24,
964           44, 16068, 384, 2568, 1728, 16144, 16276, 24,
965           44, 16076, 352, 2548, 1764, 16156, 16268, 28,
966           44, 16080, 320, 2528, 1804, 16168, 16260, 28,
967           44, 16088, 292, 2508, 1840, 16184, 16252, 28,
968           44, 16096, 264, 2484, 1876, 16200, 16244, 32,
969           48, 16100, 232, 2460, 1912, 16216, 16236, 32,
970           48, 16108, 204, 2436, 1948, 16232, 16228, 32,
971           48, 16116, 176, 2412, 1980, 16248, 16220, 36,
972           48, 16124, 152, 2384, 2016, 16264, 16216, 36,
973           44, 16128, 124, 2356, 2052, 16284, 16208, 36,
974           44, 16136, 100, 2328, 2084, 16304, 16200, 40,
975           44, 16144, 72, 2300, 2116, 16324, 16192, 40,
976           44, 16152, 48, 2272, 2148, 16344, 16184, 40,
977           44, 16160, 24, 2244, 2180, 16364, 16176, 40,
978           44, 16168, 4, 2212, 2212, 4, 16168, 44 };
979 
980 static const uint16_t filter_8tap_64p_183[264] = {
981           16264, 16264, 1164, 2244, 1164, 16264, 16264, 0,
982           16268, 16256, 1136, 2240, 1188, 16272, 16260, 0,
983           16272, 16248, 1108, 2240, 1216, 16280, 16256, 0,
984           16276, 16240, 1080, 2236, 1240, 16292, 16252, 0,
985           16280, 16232, 1056, 2236, 1268, 16300, 16248, 0,
986           16284, 16224, 1028, 2232, 1292, 16312, 16244, 0,
987           16288, 16216, 1000, 2228, 1320, 16324, 16240, 0,
988           16292, 16212, 976, 2224, 1344, 16336, 16236, 0,
989           16296, 16204, 948, 2220, 1372, 16348, 16232, 0,
990           16300, 16200, 920, 2212, 1396, 16360, 16228, 4,
991           16304, 16196, 896, 2204, 1424, 16372, 16224, 4,
992           16308, 16188, 868, 2200, 1448, 0, 16220, 4,
993           16312, 16184, 844, 2192, 1472, 12, 16216, 4,
994           16316, 16180, 816, 2184, 1500, 28, 16212, 4,
995           16320, 16176, 792, 2172, 1524, 40, 16208, 4,
996           16324, 16172, 764, 2164, 1548, 56, 16204, 0,
997           16328, 16172, 740, 2156, 1572, 72, 16200, 0,
998           16328, 16168, 712, 2144, 1596, 88, 16196, 0,
999           16332, 16164, 688, 2132, 1620, 100, 16192, 0,
1000           16336, 16164, 664, 2120, 1644, 120, 16192, 0,
1001           16340, 16160, 640, 2108, 1668, 136, 16188, 0,
1002           16344, 16160, 616, 2096, 1688, 152, 16184, 0,
1003           16344, 16160, 592, 2080, 1712, 168, 16180, 0,
1004           16348, 16156, 568, 2068, 1736, 188, 16176, 16380,
1005           16352, 16156, 544, 2052, 1756, 204, 16176, 16380,
1006           16352, 16156, 520, 2036, 1780, 224, 16172, 16380,
1007           16356, 16156, 496, 2024, 1800, 244, 16172, 16380,
1008           16360, 16156, 472, 2008, 1820, 260, 16168, 16376,
1009           16360, 16156, 452, 1988, 1840, 280, 16164, 16376,
1010           16364, 16156, 428, 1972, 1860, 300, 16164, 16376,
1011           16364, 16156, 408, 1956, 1880, 320, 16164, 16372,
1012           16368, 16160, 384, 1936, 1900, 344, 16160, 16372,
1013           16368, 16160, 364, 1920, 1920, 364, 16160, 16368 };
1014 
get_filter_3tap_16p(struct fixed31_32 ratio)1015 const uint16_t *get_filter_3tap_16p(struct fixed31_32 ratio)
1016 {
1017           if (ratio.value < dc_fixpt_one.value)
1018                     return filter_3tap_16p_upscale;
1019           else if (ratio.value < dc_fixpt_from_fraction(4, 3).value)
1020                     return filter_3tap_16p_117;
1021           else if (ratio.value < dc_fixpt_from_fraction(5, 3).value)
1022                     return filter_3tap_16p_150;
1023           else
1024                     return filter_3tap_16p_183;
1025 }
1026 
get_filter_3tap_64p(struct fixed31_32 ratio)1027 const uint16_t *get_filter_3tap_64p(struct fixed31_32 ratio)
1028 {
1029           if (ratio.value < dc_fixpt_one.value)
1030                     return filter_3tap_64p_upscale;
1031           else if (ratio.value < dc_fixpt_from_fraction(4, 3).value)
1032                     return filter_3tap_64p_117;
1033           else if (ratio.value < dc_fixpt_from_fraction(5, 3).value)
1034                     return filter_3tap_64p_150;
1035           else
1036                     return filter_3tap_64p_183;
1037 }
1038 
get_filter_4tap_16p(struct fixed31_32 ratio)1039 const uint16_t *get_filter_4tap_16p(struct fixed31_32 ratio)
1040 {
1041           if (ratio.value < dc_fixpt_one.value)
1042                     return filter_4tap_16p_upscale;
1043           else if (ratio.value < dc_fixpt_from_fraction(4, 3).value)
1044                     return filter_4tap_16p_117;
1045           else if (ratio.value < dc_fixpt_from_fraction(5, 3).value)
1046                     return filter_4tap_16p_150;
1047           else
1048                     return filter_4tap_16p_183;
1049 }
1050 
get_filter_4tap_64p(struct fixed31_32 ratio)1051 const uint16_t *get_filter_4tap_64p(struct fixed31_32 ratio)
1052 {
1053           if (ratio.value < dc_fixpt_one.value)
1054                     return filter_4tap_64p_upscale;
1055           else if (ratio.value < dc_fixpt_from_fraction(4, 3).value)
1056                     return filter_4tap_64p_117;
1057           else if (ratio.value < dc_fixpt_from_fraction(5, 3).value)
1058                     return filter_4tap_64p_150;
1059           else
1060                     return filter_4tap_64p_183;
1061 }
1062 
get_filter_5tap_64p(struct fixed31_32 ratio)1063 const uint16_t *get_filter_5tap_64p(struct fixed31_32 ratio)
1064 {
1065           if (ratio.value < dc_fixpt_one.value)
1066                     return filter_5tap_64p_upscale;
1067           else if (ratio.value < dc_fixpt_from_fraction(4, 3).value)
1068                     return filter_5tap_64p_117;
1069           else if (ratio.value < dc_fixpt_from_fraction(5, 3).value)
1070                     return filter_5tap_64p_150;
1071           else
1072                     return filter_5tap_64p_183;
1073 }
1074 
get_filter_6tap_64p(struct fixed31_32 ratio)1075 const uint16_t *get_filter_6tap_64p(struct fixed31_32 ratio)
1076 {
1077           if (ratio.value < dc_fixpt_one.value)
1078                     return filter_6tap_64p_upscale;
1079           else if (ratio.value < dc_fixpt_from_fraction(4, 3).value)
1080                     return filter_6tap_64p_117;
1081           else if (ratio.value < dc_fixpt_from_fraction(5, 3).value)
1082                     return filter_6tap_64p_150;
1083           else
1084                     return filter_6tap_64p_183;
1085 }
1086 
get_filter_7tap_64p(struct fixed31_32 ratio)1087 const uint16_t *get_filter_7tap_64p(struct fixed31_32 ratio)
1088 {
1089           if (ratio.value < dc_fixpt_one.value)
1090                     return filter_7tap_64p_upscale;
1091           else if (ratio.value < dc_fixpt_from_fraction(4, 3).value)
1092                     return filter_7tap_64p_117;
1093           else if (ratio.value < dc_fixpt_from_fraction(5, 3).value)
1094                     return filter_7tap_64p_150;
1095           else
1096                     return filter_7tap_64p_183;
1097 }
1098 
get_filter_8tap_64p(struct fixed31_32 ratio)1099 const uint16_t *get_filter_8tap_64p(struct fixed31_32 ratio)
1100 {
1101           if (ratio.value < dc_fixpt_one.value)
1102                     return filter_8tap_64p_upscale;
1103           else if (ratio.value < dc_fixpt_from_fraction(4, 3).value)
1104                     return filter_8tap_64p_117;
1105           else if (ratio.value < dc_fixpt_from_fraction(5, 3).value)
1106                     return filter_8tap_64p_150;
1107           else
1108                     return filter_8tap_64p_183;
1109 }
1110 
get_filter_2tap_16p(void)1111 const uint16_t *get_filter_2tap_16p(void)
1112 {
1113           return filter_2tap_16p;
1114 }
1115 
get_filter_2tap_64p(void)1116 const uint16_t *get_filter_2tap_64p(void)
1117 {
1118           return filter_2tap_64p;
1119 }
1120