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