1 // SPDX-License-Identifier: MIT
2 //
3 // Copyright 2024 Advanced Micro Devices, Inc.
4
5 #include "spl_debug.h"
6 #include "dc_spl_filters.h"
7 #include "dc_spl_scl_filters.h"
8 #include "dc_spl_scl_easf_filters.h"
9
10 //========================================================
11 // <using> gen_scaler_coeffs_cnf_file.m
12 // <using> make_test_script.m
13 // <date> 03-Apr-2024
14 // <coeffDescrip> 3t_64p_LanczosEd_p_0.3_p_10qb_
15 // <num_taps> 3
16 // <num_phases> 64
17 // <scale_ratio> input/output = 0.300000000000
18 // <CoefType> LanczosEd
19 // <CoefQuant> S1.10
20 //========================================================
21 static const uint16_t easf_filter_3tap_64p_ratio_0_30[99] = {
22 0x0200, 0x0200, 0x0000,
23 0x01F6, 0x0206, 0x0004,
24 0x01EC, 0x020B, 0x0009,
25 0x01E2, 0x0211, 0x000D,
26 0x01D8, 0x0216, 0x0012,
27 0x01CE, 0x021C, 0x0016,
28 0x01C4, 0x0221, 0x001B,
29 0x01BA, 0x0226, 0x0020,
30 0x01B0, 0x022A, 0x0026,
31 0x01A6, 0x022F, 0x002B,
32 0x019C, 0x0233, 0x0031,
33 0x0192, 0x0238, 0x0036,
34 0x0188, 0x023C, 0x003C,
35 0x017E, 0x0240, 0x0042,
36 0x0174, 0x0244, 0x0048,
37 0x016A, 0x0248, 0x004E,
38 0x0161, 0x024A, 0x0055,
39 0x0157, 0x024E, 0x005B,
40 0x014D, 0x0251, 0x0062,
41 0x0144, 0x0253, 0x0069,
42 0x013A, 0x0256, 0x0070,
43 0x0131, 0x0258, 0x0077,
44 0x0127, 0x025B, 0x007E,
45 0x011E, 0x025C, 0x0086,
46 0x0115, 0x025E, 0x008D,
47 0x010B, 0x0260, 0x0095,
48 0x0102, 0x0262, 0x009C,
49 0x00F9, 0x0263, 0x00A4,
50 0x00F0, 0x0264, 0x00AC,
51 0x00E7, 0x0265, 0x00B4,
52 0x00DF, 0x0264, 0x00BD,
53 0x00D6, 0x0265, 0x00C5,
54 0x00CD, 0x0266, 0x00CD,
55 };
56
57 //========================================================
58 // <using> gen_scaler_coeffs_cnf_file.m
59 // <using> make_test_script.m
60 // <date> 03-Apr-2024
61 // <coeffDescrip> 3t_64p_LanczosEd_p_0.4_p_10qb_
62 // <num_taps> 3
63 // <num_phases> 64
64 // <scale_ratio> input/output = 0.400000000000
65 // <CoefType> LanczosEd
66 // <CoefQuant> S1.10
67 //========================================================
68 static const uint16_t easf_filter_3tap_64p_ratio_0_40[99] = {
69 0x0200, 0x0200, 0x0000,
70 0x01F6, 0x0206, 0x0004,
71 0x01EB, 0x020E, 0x0007,
72 0x01E1, 0x0214, 0x000B,
73 0x01D7, 0x021A, 0x000F,
74 0x01CD, 0x0220, 0x0013,
75 0x01C2, 0x0226, 0x0018,
76 0x01B8, 0x022C, 0x001C,
77 0x01AE, 0x0231, 0x0021,
78 0x01A3, 0x0237, 0x0026,
79 0x0199, 0x023C, 0x002B,
80 0x018F, 0x0240, 0x0031,
81 0x0185, 0x0245, 0x0036,
82 0x017A, 0x024A, 0x003C,
83 0x0170, 0x024F, 0x0041,
84 0x0166, 0x0253, 0x0047,
85 0x015C, 0x0257, 0x004D,
86 0x0152, 0x025A, 0x0054,
87 0x0148, 0x025E, 0x005A,
88 0x013E, 0x0261, 0x0061,
89 0x0134, 0x0264, 0x0068,
90 0x012B, 0x0266, 0x006F,
91 0x0121, 0x0269, 0x0076,
92 0x0117, 0x026C, 0x007D,
93 0x010E, 0x026E, 0x0084,
94 0x0104, 0x0270, 0x008C,
95 0x00FB, 0x0271, 0x0094,
96 0x00F2, 0x0272, 0x009C,
97 0x00E9, 0x0273, 0x00A4,
98 0x00E0, 0x0274, 0x00AC,
99 0x00D7, 0x0275, 0x00B4,
100 0x00CE, 0x0275, 0x00BD,
101 0x00C5, 0x0276, 0x00C5,
102 };
103
104 //========================================================
105 // <using> gen_scaler_coeffs_cnf_file.m
106 // <using> make_test_script.m
107 // <date> 03-Apr-2024
108 // <coeffDescrip> 3t_64p_LanczosEd_p_0.5_p_10qb_
109 // <num_taps> 3
110 // <num_phases> 64
111 // <scale_ratio> input/output = 0.500000000000
112 // <CoefType> LanczosEd
113 // <CoefQuant> S1.10
114 //========================================================
115 static const uint16_t easf_filter_3tap_64p_ratio_0_50[99] = {
116 0x0200, 0x0200, 0x0000,
117 0x01F5, 0x0209, 0x0002,
118 0x01EA, 0x0211, 0x0005,
119 0x01DF, 0x021A, 0x0007,
120 0x01D4, 0x0222, 0x000A,
121 0x01C9, 0x022A, 0x000D,
122 0x01BE, 0x0232, 0x0010,
123 0x01B3, 0x0239, 0x0014,
124 0x01A8, 0x0241, 0x0017,
125 0x019D, 0x0248, 0x001B,
126 0x0192, 0x024F, 0x001F,
127 0x0187, 0x0255, 0x0024,
128 0x017C, 0x025C, 0x0028,
129 0x0171, 0x0262, 0x002D,
130 0x0166, 0x0268, 0x0032,
131 0x015B, 0x026E, 0x0037,
132 0x0150, 0x0273, 0x003D,
133 0x0146, 0x0278, 0x0042,
134 0x013B, 0x027D, 0x0048,
135 0x0130, 0x0282, 0x004E,
136 0x0126, 0x0286, 0x0054,
137 0x011B, 0x028A, 0x005B,
138 0x0111, 0x028D, 0x0062,
139 0x0107, 0x0290, 0x0069,
140 0x00FD, 0x0293, 0x0070,
141 0x00F3, 0x0296, 0x0077,
142 0x00E9, 0x0298, 0x007F,
143 0x00DF, 0x029A, 0x0087,
144 0x00D5, 0x029C, 0x008F,
145 0x00CC, 0x029D, 0x0097,
146 0x00C3, 0x029E, 0x009F,
147 0x00BA, 0x029E, 0x00A8,
148 0x00B1, 0x029E, 0x00B1,
149 };
150
151 //========================================================
152 // <using> gen_scaler_coeffs_cnf_file.m
153 // <using> make_test_script.m
154 // <date> 03-Apr-2024
155 // <coeffDescrip> 3t_64p_LanczosEd_p_0.6_p_10qb_
156 // <num_taps> 3
157 // <num_phases> 64
158 // <scale_ratio> input/output = 0.600000000000
159 // <CoefType> LanczosEd
160 // <CoefQuant> S1.10
161 //========================================================
162 static const uint16_t easf_filter_3tap_64p_ratio_0_60[99] = {
163 0x0200, 0x0200, 0x0000,
164 0x01F4, 0x020B, 0x0001,
165 0x01E8, 0x0216, 0x0002,
166 0x01DC, 0x0221, 0x0003,
167 0x01D0, 0x022B, 0x0005,
168 0x01C4, 0x0235, 0x0007,
169 0x01B8, 0x0240, 0x0008,
170 0x01AC, 0x0249, 0x000B,
171 0x01A0, 0x0253, 0x000D,
172 0x0194, 0x025C, 0x0010,
173 0x0188, 0x0265, 0x0013,
174 0x017C, 0x026E, 0x0016,
175 0x0170, 0x0277, 0x0019,
176 0x0164, 0x027F, 0x001D,
177 0x0158, 0x0287, 0x0021,
178 0x014C, 0x028F, 0x0025,
179 0x0140, 0x0297, 0x0029,
180 0x0135, 0x029D, 0x002E,
181 0x0129, 0x02A4, 0x0033,
182 0x011D, 0x02AB, 0x0038,
183 0x0112, 0x02B0, 0x003E,
184 0x0107, 0x02B5, 0x0044,
185 0x00FC, 0x02BA, 0x004A,
186 0x00F1, 0x02BF, 0x0050,
187 0x00E6, 0x02C3, 0x0057,
188 0x00DB, 0x02C7, 0x005E,
189 0x00D1, 0x02CA, 0x0065,
190 0x00C7, 0x02CC, 0x006D,
191 0x00BD, 0x02CE, 0x0075,
192 0x00B3, 0x02D0, 0x007D,
193 0x00A9, 0x02D2, 0x0085,
194 0x00A0, 0x02D2, 0x008E,
195 0x0097, 0x02D2, 0x0097,
196 };
197
198 //========================================================
199 // <using> gen_scaler_coeffs_cnf_file.m
200 // <using> make_test_script.m
201 // <date> 03-Apr-2024
202 // <coeffDescrip> 3t_64p_LanczosEd_p_0.7_p_10qb_
203 // <num_taps> 3
204 // <num_phases> 64
205 // <scale_ratio> input/output = 0.700000000000
206 // <CoefType> LanczosEd
207 // <CoefQuant> S1.10
208 //========================================================
209 static const uint16_t easf_filter_3tap_64p_ratio_0_70[99] = {
210 0x0200, 0x0200, 0x0000,
211 0x01F3, 0x020D, 0x0000,
212 0x01E5, 0x021B, 0x0000,
213 0x01D8, 0x0228, 0x0000,
214 0x01CB, 0x0235, 0x0000,
215 0x01BD, 0x0243, 0x0000,
216 0x01B0, 0x024F, 0x0001,
217 0x01A2, 0x025C, 0x0002,
218 0x0195, 0x0268, 0x0003,
219 0x0187, 0x0275, 0x0004,
220 0x017A, 0x0280, 0x0006,
221 0x016D, 0x028C, 0x0007,
222 0x015F, 0x0298, 0x0009,
223 0x0152, 0x02A2, 0x000C,
224 0x0145, 0x02AD, 0x000E,
225 0x0138, 0x02B7, 0x0011,
226 0x012B, 0x02C0, 0x0015,
227 0x011E, 0x02CA, 0x0018,
228 0x0111, 0x02D3, 0x001C,
229 0x0105, 0x02DB, 0x0020,
230 0x00F8, 0x02E3, 0x0025,
231 0x00EC, 0x02EA, 0x002A,
232 0x00E0, 0x02F1, 0x002F,
233 0x00D5, 0x02F6, 0x0035,
234 0x00C9, 0x02FC, 0x003B,
235 0x00BE, 0x0301, 0x0041,
236 0x00B3, 0x0305, 0x0048,
237 0x00A8, 0x0309, 0x004F,
238 0x009E, 0x030C, 0x0056,
239 0x0094, 0x030E, 0x005E,
240 0x008A, 0x0310, 0x0066,
241 0x0081, 0x0310, 0x006F,
242 0x0077, 0x0312, 0x0077,
243 };
244
245 //========================================================
246 // <using> gen_scaler_coeffs_cnf_file.m
247 // <using> make_test_script.m
248 // <date> 03-Apr-2024
249 // <coeffDescrip> 3t_64p_LanczosEd_p_0.8_p_10qb_
250 // <num_taps> 3
251 // <num_phases> 64
252 // <scale_ratio> input/output = 0.800000000000
253 // <CoefType> LanczosEd
254 // <CoefQuant> S1.10
255 //========================================================
256 static const uint16_t easf_filter_3tap_64p_ratio_0_80[99] = {
257 0x0200, 0x0200, 0x0000,
258 0x01F1, 0x0210, 0x0FFF,
259 0x01E2, 0x0220, 0x0FFE,
260 0x01D2, 0x0232, 0x0FFC,
261 0x01C3, 0x0241, 0x0FFC,
262 0x01B4, 0x0251, 0x0FFB,
263 0x01A4, 0x0262, 0x0FFA,
264 0x0195, 0x0271, 0x0FFA,
265 0x0186, 0x0281, 0x0FF9,
266 0x0176, 0x0291, 0x0FF9,
267 0x0167, 0x02A0, 0x0FF9,
268 0x0158, 0x02AE, 0x0FFA,
269 0x0149, 0x02BD, 0x0FFA,
270 0x013A, 0x02CB, 0x0FFB,
271 0x012C, 0x02D7, 0x0FFD,
272 0x011D, 0x02E5, 0x0FFE,
273 0x010F, 0x02F1, 0x0000,
274 0x0101, 0x02FD, 0x0002,
275 0x00F3, 0x0308, 0x0005,
276 0x00E5, 0x0313, 0x0008,
277 0x00D8, 0x031D, 0x000B,
278 0x00CB, 0x0326, 0x000F,
279 0x00BE, 0x032F, 0x0013,
280 0x00B2, 0x0337, 0x0017,
281 0x00A6, 0x033E, 0x001C,
282 0x009A, 0x0345, 0x0021,
283 0x008F, 0x034A, 0x0027,
284 0x0084, 0x034F, 0x002D,
285 0x0079, 0x0353, 0x0034,
286 0x006F, 0x0356, 0x003B,
287 0x0065, 0x0358, 0x0043,
288 0x005C, 0x0359, 0x004B,
289 0x0053, 0x035A, 0x0053,
290 };
291
292 //========================================================
293 // <using> gen_scaler_coeffs_cnf_file.m
294 // <using> make_test_script.m
295 // <date> 03-Apr-2024
296 // <coeffDescrip> 3t_64p_LanczosEd_p_0.9_p_10qb_
297 // <num_taps> 3
298 // <num_phases> 64
299 // <scale_ratio> input/output = 0.900000000000
300 // <CoefType> LanczosEd
301 // <CoefQuant> S1.10
302 //========================================================
303 static const uint16_t easf_filter_3tap_64p_ratio_0_90[99] = {
304 0x0200, 0x0200, 0x0000,
305 0x01EE, 0x0214, 0x0FFE,
306 0x01DC, 0x0228, 0x0FFC,
307 0x01CA, 0x023C, 0x0FFA,
308 0x01B9, 0x024F, 0x0FF8,
309 0x01A7, 0x0262, 0x0FF7,
310 0x0195, 0x0276, 0x0FF5,
311 0x0183, 0x028A, 0x0FF3,
312 0x0172, 0x029C, 0x0FF2,
313 0x0160, 0x02AF, 0x0FF1,
314 0x014F, 0x02C2, 0x0FEF,
315 0x013E, 0x02D4, 0x0FEE,
316 0x012D, 0x02E5, 0x0FEE,
317 0x011C, 0x02F7, 0x0FED,
318 0x010C, 0x0307, 0x0FED,
319 0x00FB, 0x0318, 0x0FED,
320 0x00EC, 0x0327, 0x0FED,
321 0x00DC, 0x0336, 0x0FEE,
322 0x00CD, 0x0344, 0x0FEF,
323 0x00BE, 0x0352, 0x0FF0,
324 0x00B0, 0x035E, 0x0FF2,
325 0x00A2, 0x036A, 0x0FF4,
326 0x0095, 0x0375, 0x0FF6,
327 0x0088, 0x037F, 0x0FF9,
328 0x007B, 0x0388, 0x0FFD,
329 0x006F, 0x0391, 0x0000,
330 0x0064, 0x0397, 0x0005,
331 0x0059, 0x039D, 0x000A,
332 0x004E, 0x03A3, 0x000F,
333 0x0045, 0x03A6, 0x0015,
334 0x003B, 0x03A9, 0x001C,
335 0x0033, 0x03AA, 0x0023,
336 0x002A, 0x03AC, 0x002A,
337 };
338
339 //========================================================
340 // <using> gen_scaler_coeffs_cnf_file.m
341 // <using> make_test_script.m
342 // <date> 03-Apr-2024
343 // <coeffDescrip> 3t_64p_LanczosEd_p_1_p_10qb_
344 // <num_taps> 3
345 // <num_phases> 64
346 // <scale_ratio> input/output = 1.000000000000
347 // <CoefType> LanczosEd
348 // <CoefQuant> S1.10
349 //========================================================
350 static const uint16_t easf_filter_3tap_64p_ratio_1_00[99] = {
351 0x0200, 0x0200, 0x0000,
352 0x01EB, 0x0217, 0x0FFE,
353 0x01D5, 0x022F, 0x0FFC,
354 0x01C0, 0x0247, 0x0FF9,
355 0x01AB, 0x025E, 0x0FF7,
356 0x0196, 0x0276, 0x0FF4,
357 0x0181, 0x028D, 0x0FF2,
358 0x016C, 0x02A5, 0x0FEF,
359 0x0158, 0x02BB, 0x0FED,
360 0x0144, 0x02D1, 0x0FEB,
361 0x0130, 0x02E8, 0x0FE8,
362 0x011C, 0x02FE, 0x0FE6,
363 0x0109, 0x0313, 0x0FE4,
364 0x00F6, 0x0328, 0x0FE2,
365 0x00E4, 0x033C, 0x0FE0,
366 0x00D2, 0x034F, 0x0FDF,
367 0x00C0, 0x0363, 0x0FDD,
368 0x00B0, 0x0374, 0x0FDC,
369 0x009F, 0x0385, 0x0FDC,
370 0x0090, 0x0395, 0x0FDB,
371 0x0081, 0x03A4, 0x0FDB,
372 0x0072, 0x03B3, 0x0FDB,
373 0x0064, 0x03C0, 0x0FDC,
374 0x0057, 0x03CC, 0x0FDD,
375 0x004B, 0x03D6, 0x0FDF,
376 0x003F, 0x03E0, 0x0FE1,
377 0x0034, 0x03E8, 0x0FE4,
378 0x002A, 0x03EF, 0x0FE7,
379 0x0020, 0x03F5, 0x0FEB,
380 0x0017, 0x03FA, 0x0FEF,
381 0x000F, 0x03FD, 0x0FF4,
382 0x0007, 0x03FF, 0x0FFA,
383 0x0000, 0x0400, 0x0000,
384 };
385
386 //========================================================
387 // <using> gen_scaler_coeffs_cnf_file.m
388 // <using> make_test_script.m
389 // <date> 03-Apr-2024
390 // <coeffDescrip> 4t_64p_LanczosEd_p_0.3_p_10qb_
391 // <num_taps> 4
392 // <num_phases> 64
393 // <scale_ratio> input/output = 0.300000000000
394 // <CoefType> LanczosEd
395 // <CoefQuant> S1.10
396 //========================================================
397 static const uint16_t easf_filter_4tap_64p_ratio_0_30[132] = {
398 0x0104, 0x01F8, 0x0104, 0x0000,
399 0x00FE, 0x01F7, 0x010A, 0x0001,
400 0x00F8, 0x01F6, 0x010F, 0x0003,
401 0x00F2, 0x01F5, 0x0114, 0x0005,
402 0x00EB, 0x01F4, 0x011B, 0x0006,
403 0x00E5, 0x01F3, 0x0120, 0x0008,
404 0x00DF, 0x01F2, 0x0125, 0x000A,
405 0x00DA, 0x01F0, 0x012A, 0x000C,
406 0x00D4, 0x01EE, 0x0130, 0x000E,
407 0x00CE, 0x01ED, 0x0135, 0x0010,
408 0x00C8, 0x01EB, 0x013A, 0x0013,
409 0x00C2, 0x01E9, 0x0140, 0x0015,
410 0x00BD, 0x01E7, 0x0145, 0x0017,
411 0x00B7, 0x01E5, 0x014A, 0x001A,
412 0x00B1, 0x01E2, 0x0151, 0x001C,
413 0x00AC, 0x01E0, 0x0155, 0x001F,
414 0x00A7, 0x01DD, 0x015A, 0x0022,
415 0x00A1, 0x01DB, 0x015F, 0x0025,
416 0x009C, 0x01D8, 0x0165, 0x0027,
417 0x0097, 0x01D5, 0x016A, 0x002A,
418 0x0092, 0x01D2, 0x016E, 0x002E,
419 0x008C, 0x01CF, 0x0174, 0x0031,
420 0x0087, 0x01CC, 0x0179, 0x0034,
421 0x0083, 0x01C9, 0x017D, 0x0037,
422 0x007E, 0x01C5, 0x0182, 0x003B,
423 0x0079, 0x01C2, 0x0187, 0x003E,
424 0x0074, 0x01BE, 0x018C, 0x0042,
425 0x0070, 0x01BA, 0x0190, 0x0046,
426 0x006B, 0x01B7, 0x0195, 0x0049,
427 0x0066, 0x01B3, 0x019A, 0x004D,
428 0x0062, 0x01AF, 0x019E, 0x0051,
429 0x005E, 0x01AB, 0x01A2, 0x0055,
430 0x005A, 0x01A6, 0x01A6, 0x005A,
431 };
432
433 //========================================================
434 // <using> gen_scaler_coeffs_cnf_file.m
435 // <using> make_test_script.m
436 // <date> 03-Apr-2024
437 // <coeffDescrip> 4t_64p_LanczosEd_p_0.4_p_10qb_
438 // <num_taps> 4
439 // <num_phases> 64
440 // <scale_ratio> input/output = 0.400000000000
441 // <CoefType> LanczosEd
442 // <CoefQuant> S1.10
443 //========================================================
444 static const uint16_t easf_filter_4tap_64p_ratio_0_40[132] = {
445 0x00FB, 0x0209, 0x00FC, 0x0000,
446 0x00F5, 0x0209, 0x0101, 0x0001,
447 0x00EE, 0x0208, 0x0108, 0x0002,
448 0x00E8, 0x0207, 0x010E, 0x0003,
449 0x00E2, 0x0206, 0x0114, 0x0004,
450 0x00DB, 0x0205, 0x011A, 0x0006,
451 0x00D5, 0x0204, 0x0120, 0x0007,
452 0x00CF, 0x0203, 0x0125, 0x0009,
453 0x00C9, 0x0201, 0x012C, 0x000A,
454 0x00C3, 0x01FF, 0x0132, 0x000C,
455 0x00BD, 0x01FD, 0x0138, 0x000E,
456 0x00B7, 0x01FB, 0x013E, 0x0010,
457 0x00B1, 0x01F9, 0x0144, 0x0012,
458 0x00AC, 0x01F7, 0x0149, 0x0014,
459 0x00A6, 0x01F4, 0x0150, 0x0016,
460 0x00A0, 0x01F2, 0x0156, 0x0018,
461 0x009B, 0x01EF, 0x015C, 0x001A,
462 0x0095, 0x01EC, 0x0162, 0x001D,
463 0x0090, 0x01E9, 0x0168, 0x001F,
464 0x008B, 0x01E6, 0x016D, 0x0022,
465 0x0085, 0x01E3, 0x0173, 0x0025,
466 0x0080, 0x01DF, 0x0179, 0x0028,
467 0x007B, 0x01DC, 0x017E, 0x002B,
468 0x0076, 0x01D8, 0x0184, 0x002E,
469 0x0071, 0x01D4, 0x018A, 0x0031,
470 0x006D, 0x01D1, 0x018E, 0x0034,
471 0x0068, 0x01CD, 0x0193, 0x0038,
472 0x0063, 0x01C8, 0x019A, 0x003B,
473 0x005F, 0x01C4, 0x019E, 0x003F,
474 0x005B, 0x01C0, 0x01A3, 0x0042,
475 0x0056, 0x01BB, 0x01A9, 0x0046,
476 0x0052, 0x01B7, 0x01AD, 0x004A,
477 0x004E, 0x01B2, 0x01B2, 0x004E,
478 };
479
480 //========================================================
481 // <using> gen_scaler_coeffs_cnf_file.m
482 // <using> make_test_script.m
483 // <date> 03-Apr-2024
484 // <coeffDescrip> 4t_64p_LanczosEd_p_0.5_p_10qb_
485 // <num_taps> 4
486 // <num_phases> 64
487 // <scale_ratio> input/output = 0.500000000000
488 // <CoefType> LanczosEd
489 // <CoefQuant> S1.10
490 //========================================================
491 static const uint16_t easf_filter_4tap_64p_ratio_0_50[132] = {
492 0x00E5, 0x0236, 0x00E5, 0x0000,
493 0x00DE, 0x0235, 0x00ED, 0x0000,
494 0x00D7, 0x0235, 0x00F4, 0x0000,
495 0x00D0, 0x0235, 0x00FB, 0x0000,
496 0x00C9, 0x0234, 0x0102, 0x0001,
497 0x00C2, 0x0233, 0x010A, 0x0001,
498 0x00BC, 0x0232, 0x0111, 0x0001,
499 0x00B5, 0x0230, 0x0119, 0x0002,
500 0x00AE, 0x022F, 0x0121, 0x0002,
501 0x00A8, 0x022D, 0x0128, 0x0003,
502 0x00A2, 0x022B, 0x012F, 0x0004,
503 0x009B, 0x0229, 0x0137, 0x0005,
504 0x0095, 0x0226, 0x013F, 0x0006,
505 0x008F, 0x0224, 0x0146, 0x0007,
506 0x0089, 0x0221, 0x014E, 0x0008,
507 0x0083, 0x021E, 0x0155, 0x000A,
508 0x007E, 0x021B, 0x015C, 0x000B,
509 0x0078, 0x0217, 0x0164, 0x000D,
510 0x0072, 0x0213, 0x016D, 0x000E,
511 0x006D, 0x0210, 0x0173, 0x0010,
512 0x0068, 0x020C, 0x017A, 0x0012,
513 0x0063, 0x0207, 0x0182, 0x0014,
514 0x005E, 0x0203, 0x0189, 0x0016,
515 0x0059, 0x01FE, 0x0191, 0x0018,
516 0x0054, 0x01F9, 0x0198, 0x001B,
517 0x0050, 0x01F4, 0x019F, 0x001D,
518 0x004B, 0x01EF, 0x01A6, 0x0020,
519 0x0047, 0x01EA, 0x01AC, 0x0023,
520 0x0043, 0x01E4, 0x01B3, 0x0026,
521 0x003F, 0x01DF, 0x01B9, 0x0029,
522 0x003B, 0x01D9, 0x01C0, 0x002C,
523 0x0037, 0x01D3, 0x01C6, 0x0030,
524 0x0033, 0x01CD, 0x01CD, 0x0033,
525 };
526
527 //========================================================
528 // <using> gen_scaler_coeffs_cnf_file.m
529 // <using> make_test_script.m
530 // <date> 03-Apr-2024
531 // <coeffDescrip> 4t_64p_LanczosEd_p_0.6_p_10qb_
532 // <num_taps> 4
533 // <num_phases> 64
534 // <scale_ratio> input/output = 0.600000000000
535 // <CoefType> LanczosEd
536 // <CoefQuant> S1.10
537 //========================================================
538 static const uint16_t easf_filter_4tap_64p_ratio_0_60[132] = {
539 0x00C8, 0x026F, 0x00C9, 0x0000,
540 0x00C0, 0x0270, 0x00D1, 0x0FFF,
541 0x00B8, 0x0270, 0x00D9, 0x0FFF,
542 0x00B1, 0x0270, 0x00E1, 0x0FFE,
543 0x00A9, 0x026F, 0x00EB, 0x0FFD,
544 0x00A2, 0x026E, 0x00F3, 0x0FFD,
545 0x009A, 0x026D, 0x00FD, 0x0FFC,
546 0x0093, 0x026C, 0x0105, 0x0FFC,
547 0x008C, 0x026A, 0x010F, 0x0FFB,
548 0x0085, 0x0268, 0x0118, 0x0FFB,
549 0x007E, 0x0265, 0x0122, 0x0FFB,
550 0x0078, 0x0263, 0x012A, 0x0FFB,
551 0x0071, 0x0260, 0x0134, 0x0FFB,
552 0x006B, 0x025C, 0x013E, 0x0FFB,
553 0x0065, 0x0259, 0x0147, 0x0FFB,
554 0x005F, 0x0255, 0x0151, 0x0FFB,
555 0x0059, 0x0251, 0x015A, 0x0FFC,
556 0x0054, 0x024D, 0x0163, 0x0FFC,
557 0x004E, 0x0248, 0x016D, 0x0FFD,
558 0x0049, 0x0243, 0x0176, 0x0FFE,
559 0x0044, 0x023E, 0x017F, 0x0FFF,
560 0x003F, 0x0238, 0x0189, 0x0000,
561 0x003A, 0x0232, 0x0193, 0x0001,
562 0x0036, 0x022C, 0x019C, 0x0002,
563 0x0031, 0x0226, 0x01A5, 0x0004,
564 0x002D, 0x021F, 0x01AF, 0x0005,
565 0x0029, 0x0218, 0x01B8, 0x0007,
566 0x0025, 0x0211, 0x01C1, 0x0009,
567 0x0022, 0x020A, 0x01C9, 0x000B,
568 0x001E, 0x0203, 0x01D2, 0x000D,
569 0x001B, 0x01FB, 0x01DA, 0x0010,
570 0x0018, 0x01F3, 0x01E3, 0x0012,
571 0x0015, 0x01EB, 0x01EB, 0x0015,
572 };
573
574 //========================================================
575 // <using> gen_scaler_coeffs_cnf_file.m
576 // <using> make_test_script.m
577 // <date> 03-Apr-2024
578 // <coeffDescrip> 4t_64p_LanczosEd_p_0.7_p_10qb_
579 // <num_taps> 4
580 // <num_phases> 64
581 // <scale_ratio> input/output = 0.700000000000
582 // <CoefType> LanczosEd
583 // <CoefQuant> S1.10
584 //========================================================
585 static const uint16_t easf_filter_4tap_64p_ratio_0_70[132] = {
586 0x00A3, 0x02B9, 0x00A4, 0x0000,
587 0x009A, 0x02BA, 0x00AD, 0x0FFF,
588 0x0092, 0x02BA, 0x00B6, 0x0FFE,
589 0x0089, 0x02BA, 0x00C1, 0x0FFC,
590 0x0081, 0x02B9, 0x00CB, 0x0FFB,
591 0x0079, 0x02B8, 0x00D5, 0x0FFA,
592 0x0071, 0x02B7, 0x00DF, 0x0FF9,
593 0x0069, 0x02B5, 0x00EA, 0x0FF8,
594 0x0062, 0x02B3, 0x00F4, 0x0FF7,
595 0x005B, 0x02B0, 0x00FF, 0x0FF6,
596 0x0054, 0x02AD, 0x010B, 0x0FF4,
597 0x004D, 0x02A9, 0x0117, 0x0FF3,
598 0x0046, 0x02A5, 0x0123, 0x0FF2,
599 0x0040, 0x02A1, 0x012D, 0x0FF2,
600 0x003A, 0x029C, 0x0139, 0x0FF1,
601 0x0034, 0x0297, 0x0145, 0x0FF0,
602 0x002F, 0x0292, 0x0150, 0x0FEF,
603 0x0029, 0x028C, 0x015C, 0x0FEF,
604 0x0024, 0x0285, 0x0169, 0x0FEE,
605 0x001F, 0x027F, 0x0174, 0x0FEE,
606 0x001B, 0x0278, 0x017F, 0x0FEE,
607 0x0016, 0x0270, 0x018D, 0x0FED,
608 0x0012, 0x0268, 0x0199, 0x0FED,
609 0x000E, 0x0260, 0x01A4, 0x0FEE,
610 0x000B, 0x0258, 0x01AF, 0x0FEE,
611 0x0007, 0x024F, 0x01BC, 0x0FEE,
612 0x0004, 0x0246, 0x01C7, 0x0FEF,
613 0x0001, 0x023D, 0x01D3, 0x0FEF,
614 0x0FFE, 0x0233, 0x01DF, 0x0FF0,
615 0x0FFC, 0x0229, 0x01EA, 0x0FF1,
616 0x0FFA, 0x021F, 0x01F4, 0x0FF3,
617 0x0FF8, 0x0215, 0x01FF, 0x0FF4,
618 0x0FF6, 0x020A, 0x020A, 0x0FF6,
619 };
620
621 //========================================================
622 // <using> gen_scaler_coeffs_cnf_file.m
623 // <using> make_test_script.m
624 // <date> 03-Apr-2024
625 // <coeffDescrip> 4t_64p_LanczosEd_p_0.8_p_10qb_
626 // <num_taps> 4
627 // <num_phases> 64
628 // <scale_ratio> input/output = 0.800000000000
629 // <CoefType> LanczosEd
630 // <CoefQuant> S1.10
631 //========================================================
632 static const uint16_t easf_filter_4tap_64p_ratio_0_80[132] = {
633 0x0075, 0x0315, 0x0076, 0x0000,
634 0x006C, 0x0316, 0x007F, 0x0FFF,
635 0x0062, 0x0316, 0x008A, 0x0FFE,
636 0x0059, 0x0315, 0x0096, 0x0FFC,
637 0x0050, 0x0314, 0x00A1, 0x0FFB,
638 0x0048, 0x0312, 0x00AD, 0x0FF9,
639 0x0040, 0x0310, 0x00B8, 0x0FF8,
640 0x0038, 0x030D, 0x00C5, 0x0FF6,
641 0x0030, 0x030A, 0x00D1, 0x0FF5,
642 0x0029, 0x0306, 0x00DE, 0x0FF3,
643 0x0022, 0x0301, 0x00EB, 0x0FF2,
644 0x001C, 0x02FC, 0x00F8, 0x0FF0,
645 0x0015, 0x02F7, 0x0106, 0x0FEE,
646 0x0010, 0x02F1, 0x0112, 0x0FED,
647 0x000A, 0x02EA, 0x0121, 0x0FEB,
648 0x0005, 0x02E3, 0x012F, 0x0FE9,
649 0x0000, 0x02DB, 0x013D, 0x0FE8,
650 0x0FFB, 0x02D3, 0x014C, 0x0FE6,
651 0x0FF7, 0x02CA, 0x015A, 0x0FE5,
652 0x0FF3, 0x02C1, 0x0169, 0x0FE3,
653 0x0FF0, 0x02B7, 0x0177, 0x0FE2,
654 0x0FEC, 0x02AD, 0x0186, 0x0FE1,
655 0x0FE9, 0x02A2, 0x0196, 0x0FDF,
656 0x0FE7, 0x0297, 0x01A4, 0x0FDE,
657 0x0FE4, 0x028C, 0x01B3, 0x0FDD,
658 0x0FE2, 0x0280, 0x01C2, 0x0FDC,
659 0x0FE0, 0x0274, 0x01D0, 0x0FDC,
660 0x0FDF, 0x0268, 0x01DE, 0x0FDB,
661 0x0FDD, 0x025B, 0x01EE, 0x0FDA,
662 0x0FDC, 0x024E, 0x01FC, 0x0FDA,
663 0x0FDB, 0x0241, 0x020A, 0x0FDA,
664 0x0FDB, 0x0233, 0x0218, 0x0FDA,
665 0x0FDA, 0x0226, 0x0226, 0x0FDA,
666 };
667
668 //========================================================
669 // <using> gen_scaler_coeffs_cnf_file.m
670 // <using> make_test_script.m
671 // <date> 03-Apr-2024
672 // <coeffDescrip> 4t_64p_LanczosEd_p_0.9_p_10qb_
673 // <num_taps> 4
674 // <num_phases> 64
675 // <scale_ratio> input/output = 0.900000000000
676 // <CoefType> LanczosEd
677 // <CoefQuant> S1.10
678 //========================================================
679 static const uint16_t easf_filter_4tap_64p_ratio_0_90[132] = {
680 0x003F, 0x0383, 0x003E, 0x0000,
681 0x0034, 0x0383, 0x004A, 0x0FFF,
682 0x002B, 0x0383, 0x0054, 0x0FFE,
683 0x0021, 0x0381, 0x0061, 0x0FFD,
684 0x0019, 0x037F, 0x006C, 0x0FFC,
685 0x0010, 0x037C, 0x0079, 0x0FFB,
686 0x0008, 0x0378, 0x0086, 0x0FFA,
687 0x0001, 0x0374, 0x0093, 0x0FF8,
688 0x0FFA, 0x036E, 0x00A1, 0x0FF7,
689 0x0FF3, 0x0368, 0x00B0, 0x0FF5,
690 0x0FED, 0x0361, 0x00BF, 0x0FF3,
691 0x0FE8, 0x035A, 0x00CD, 0x0FF1,
692 0x0FE2, 0x0352, 0x00DC, 0x0FF0,
693 0x0FDE, 0x0349, 0x00EB, 0x0FEE,
694 0x0FD9, 0x033F, 0x00FC, 0x0FEC,
695 0x0FD5, 0x0335, 0x010D, 0x0FE9,
696 0x0FD2, 0x032A, 0x011D, 0x0FE7,
697 0x0FCF, 0x031E, 0x012E, 0x0FE5,
698 0x0FCC, 0x0312, 0x013F, 0x0FE3,
699 0x0FCA, 0x0305, 0x0150, 0x0FE1,
700 0x0FC8, 0x02F8, 0x0162, 0x0FDE,
701 0x0FC6, 0x02EA, 0x0174, 0x0FDC,
702 0x0FC5, 0x02DC, 0x0185, 0x0FDA,
703 0x0FC4, 0x02CD, 0x0197, 0x0FD8,
704 0x0FC3, 0x02BE, 0x01AA, 0x0FD5,
705 0x0FC3, 0x02AF, 0x01BB, 0x0FD3,
706 0x0FC3, 0x029F, 0x01CD, 0x0FD1,
707 0x0FC3, 0x028E, 0x01E0, 0x0FCF,
708 0x0FC3, 0x027E, 0x01F2, 0x0FCD,
709 0x0FC4, 0x026D, 0x0203, 0x0FCC,
710 0x0FC5, 0x025C, 0x0215, 0x0FCA,
711 0x0FC6, 0x024B, 0x0227, 0x0FC8,
712 0x0FC7, 0x0239, 0x0239, 0x0FC7,
713 };
714
715 //========================================================
716 // <using> gen_scaler_coeffs_cnf_file.m
717 // <using> make_test_script.m
718 // <date> 03-Apr-2024
719 // <coeffDescrip> 4t_64p_LanczosEd_p_1_p_10qb_
720 // <num_taps> 4
721 // <num_phases> 64
722 // <scale_ratio> input/output = 1.000000000000
723 // <CoefType> LanczosEd
724 // <CoefQuant> S1.10
725 //========================================================
726 static const uint16_t easf_filter_4tap_64p_ratio_1_00[132] = {
727 0x0000, 0x0400, 0x0000, 0x0000,
728 0x0FF6, 0x03FF, 0x000B, 0x0000,
729 0x0FED, 0x03FE, 0x0015, 0x0000,
730 0x0FE4, 0x03FB, 0x0022, 0x0FFF,
731 0x0FDC, 0x03F7, 0x002E, 0x0FFF,
732 0x0FD5, 0x03F2, 0x003B, 0x0FFE,
733 0x0FCE, 0x03EC, 0x0048, 0x0FFE,
734 0x0FC8, 0x03E5, 0x0056, 0x0FFD,
735 0x0FC3, 0x03DC, 0x0065, 0x0FFC,
736 0x0FBE, 0x03D3, 0x0075, 0x0FFA,
737 0x0FB9, 0x03C9, 0x0085, 0x0FF9,
738 0x0FB6, 0x03BE, 0x0094, 0x0FF8,
739 0x0FB2, 0x03B2, 0x00A6, 0x0FF6,
740 0x0FB0, 0x03A5, 0x00B7, 0x0FF4,
741 0x0FAD, 0x0397, 0x00CA, 0x0FF2,
742 0x0FAB, 0x0389, 0x00DC, 0x0FF0,
743 0x0FAA, 0x0379, 0x00EF, 0x0FEE,
744 0x0FA9, 0x0369, 0x0102, 0x0FEC,
745 0x0FA9, 0x0359, 0x0115, 0x0FE9,
746 0x0FA9, 0x0348, 0x0129, 0x0FE6,
747 0x0FA9, 0x0336, 0x013D, 0x0FE4,
748 0x0FA9, 0x0323, 0x0153, 0x0FE1,
749 0x0FAA, 0x0310, 0x0168, 0x0FDE,
750 0x0FAC, 0x02FD, 0x017C, 0x0FDB,
751 0x0FAD, 0x02E9, 0x0192, 0x0FD8,
752 0x0FAF, 0x02D5, 0x01A7, 0x0FD5,
753 0x0FB1, 0x02C0, 0x01BD, 0x0FD2,
754 0x0FB3, 0x02AC, 0x01D2, 0x0FCF,
755 0x0FB5, 0x0296, 0x01E9, 0x0FCC,
756 0x0FB8, 0x0281, 0x01FE, 0x0FC9,
757 0x0FBA, 0x026C, 0x0214, 0x0FC6,
758 0x0FBD, 0x0256, 0x022A, 0x0FC3,
759 0x0FC0, 0x0240, 0x0240, 0x0FC0,
760 };
761
762 //========================================================
763 // <using> gen_scaler_coeffs_cnf_file.m
764 // <using> make_test_script.m
765 // <date> 02-Apr-2024
766 // <coeffDescrip> 6t_64p_LanczosEd_p_0.3_p_10qb_
767 // <num_taps> 6
768 // <num_phases> 64
769 // <scale_ratio> input/output = 0.300000000000
770 // <CoefType> LanczosEd
771 // <CoefQuant> S1.10
772 //========================================================
773 static const uint16_t easf_filter_6tap_64p_ratio_0_30[198] = {
774 0x004B, 0x0100, 0x0169, 0x0101, 0x004B, 0x0000,
775 0x0049, 0x00FD, 0x0169, 0x0103, 0x004E, 0x0000,
776 0x0047, 0x00FA, 0x0169, 0x0106, 0x0050, 0x0000,
777 0x0045, 0x00F7, 0x0168, 0x0109, 0x0052, 0x0001,
778 0x0043, 0x00F5, 0x0168, 0x010B, 0x0054, 0x0001,
779 0x0040, 0x00F2, 0x0168, 0x010E, 0x0057, 0x0001,
780 0x003E, 0x00EF, 0x0168, 0x0110, 0x0059, 0x0002,
781 0x003C, 0x00EC, 0x0167, 0x0113, 0x005C, 0x0002,
782 0x003A, 0x00E9, 0x0167, 0x0116, 0x005E, 0x0002,
783 0x0038, 0x00E6, 0x0166, 0x0118, 0x0061, 0x0003,
784 0x0036, 0x00E3, 0x0165, 0x011C, 0x0063, 0x0003,
785 0x0034, 0x00E0, 0x0165, 0x011D, 0x0066, 0x0004,
786 0x0033, 0x00DD, 0x0164, 0x0120, 0x0068, 0x0004,
787 0x0031, 0x00DA, 0x0163, 0x0122, 0x006B, 0x0005,
788 0x002F, 0x00D7, 0x0163, 0x0125, 0x006D, 0x0005,
789 0x002D, 0x00D3, 0x0162, 0x0128, 0x0070, 0x0006,
790 0x002B, 0x00D0, 0x0161, 0x012A, 0x0073, 0x0007,
791 0x002A, 0x00CD, 0x0160, 0x012D, 0x0075, 0x0007,
792 0x0028, 0x00CA, 0x015F, 0x012F, 0x0078, 0x0008,
793 0x0026, 0x00C7, 0x015E, 0x0131, 0x007B, 0x0009,
794 0x0025, 0x00C4, 0x015D, 0x0133, 0x007E, 0x0009,
795 0x0023, 0x00C1, 0x015C, 0x0136, 0x0080, 0x000A,
796 0x0022, 0x00BE, 0x015A, 0x0138, 0x0083, 0x000B,
797 0x0020, 0x00BB, 0x0159, 0x013A, 0x0086, 0x000C,
798 0x001F, 0x00B8, 0x0158, 0x013B, 0x0089, 0x000D,
799 0x001E, 0x00B5, 0x0156, 0x013E, 0x008C, 0x000D,
800 0x001C, 0x00B2, 0x0155, 0x0140, 0x008F, 0x000E,
801 0x001B, 0x00AF, 0x0153, 0x0143, 0x0091, 0x000F,
802 0x0019, 0x00AC, 0x0152, 0x0145, 0x0094, 0x0010,
803 0x0018, 0x00A9, 0x0150, 0x0147, 0x0097, 0x0011,
804 0x0017, 0x00A6, 0x014F, 0x0148, 0x009A, 0x0012,
805 0x0016, 0x00A3, 0x014D, 0x0149, 0x009D, 0x0014,
806 0x0015, 0x00A0, 0x014B, 0x014B, 0x00A0, 0x0015,
807 };
808
809 //========================================================
810 // <using> gen_scaler_coeffs_cnf_file.m
811 // <using> make_test_script.m
812 // <date> 02-Apr-2024
813 // <coeffDescrip> 6t_64p_LanczosEd_p_0.4_p_10qb_
814 // <num_taps> 6
815 // <num_phases> 64
816 // <scale_ratio> input/output = 0.400000000000
817 // <CoefType> LanczosEd
818 // <CoefQuant> S1.10
819 //========================================================
820 static const uint16_t easf_filter_6tap_64p_ratio_0_40[198] = {
821 0x0028, 0x0106, 0x01A3, 0x0107, 0x0028, 0x0000,
822 0x0026, 0x0102, 0x01A3, 0x010A, 0x002B, 0x0000,
823 0x0024, 0x00FE, 0x01A3, 0x010F, 0x002D, 0x0FFF,
824 0x0022, 0x00FA, 0x01A3, 0x0113, 0x002F, 0x0FFF,
825 0x0021, 0x00F6, 0x01A3, 0x0116, 0x0031, 0x0FFF,
826 0x001F, 0x00F2, 0x01A2, 0x011B, 0x0034, 0x0FFE,
827 0x001D, 0x00EE, 0x01A2, 0x011F, 0x0036, 0x0FFE,
828 0x001B, 0x00EA, 0x01A1, 0x0123, 0x0039, 0x0FFE,
829 0x0019, 0x00E6, 0x01A1, 0x0127, 0x003B, 0x0FFE,
830 0x0018, 0x00E2, 0x01A0, 0x012A, 0x003E, 0x0FFE,
831 0x0016, 0x00DE, 0x01A0, 0x012E, 0x0041, 0x0FFD,
832 0x0015, 0x00DA, 0x019F, 0x0132, 0x0043, 0x0FFD,
833 0x0013, 0x00D6, 0x019E, 0x0136, 0x0046, 0x0FFD,
834 0x0012, 0x00D2, 0x019D, 0x0139, 0x0049, 0x0FFD,
835 0x0010, 0x00CE, 0x019C, 0x013D, 0x004C, 0x0FFD,
836 0x000F, 0x00CA, 0x019A, 0x0141, 0x004F, 0x0FFD,
837 0x000E, 0x00C6, 0x0199, 0x0144, 0x0052, 0x0FFD,
838 0x000D, 0x00C2, 0x0197, 0x0148, 0x0055, 0x0FFD,
839 0x000B, 0x00BE, 0x0196, 0x014C, 0x0058, 0x0FFD,
840 0x000A, 0x00BA, 0x0195, 0x014F, 0x005B, 0x0FFD,
841 0x0009, 0x00B6, 0x0193, 0x0153, 0x005E, 0x0FFD,
842 0x0008, 0x00B2, 0x0191, 0x0157, 0x0061, 0x0FFD,
843 0x0007, 0x00AE, 0x0190, 0x015A, 0x0064, 0x0FFD,
844 0x0006, 0x00AA, 0x018E, 0x015D, 0x0068, 0x0FFD,
845 0x0005, 0x00A6, 0x018C, 0x0161, 0x006B, 0x0FFD,
846 0x0005, 0x00A2, 0x0189, 0x0164, 0x006F, 0x0FFD,
847 0x0004, 0x009E, 0x0187, 0x0167, 0x0072, 0x0FFE,
848 0x0003, 0x009A, 0x0185, 0x016B, 0x0075, 0x0FFE,
849 0x0002, 0x0096, 0x0183, 0x016E, 0x0079, 0x0FFE,
850 0x0002, 0x0093, 0x0180, 0x016F, 0x007D, 0x0FFF,
851 0x0001, 0x008F, 0x017E, 0x0173, 0x0080, 0x0FFF,
852 0x0001, 0x008B, 0x017B, 0x0175, 0x0084, 0x0000,
853 0x0000, 0x0087, 0x0179, 0x0179, 0x0087, 0x0000,
854 };
855
856 //========================================================
857 // <using> gen_scaler_coeffs_cnf_file.m
858 // <using> make_test_script.m
859 // <date> 02-Apr-2024
860 // <coeffDescrip> 6t_64p_LanczosEd_p_0.5_p_10qb_
861 // <num_taps> 6
862 // <num_phases> 64
863 // <scale_ratio> input/output = 0.500000000000
864 // <CoefType> LanczosEd
865 // <CoefQuant> S1.10
866 //========================================================
867 static const uint16_t easf_filter_6tap_64p_ratio_0_50[198] = {
868 0x0000, 0x0107, 0x01F3, 0x0106, 0x0000, 0x0000,
869 0x0FFE, 0x0101, 0x01F3, 0x010D, 0x0002, 0x0FFF,
870 0x0FFD, 0x00FB, 0x01F3, 0x0113, 0x0003, 0x0FFF,
871 0x0FFC, 0x00F6, 0x01F3, 0x0118, 0x0005, 0x0FFE,
872 0x0FFA, 0x00F0, 0x01F3, 0x011E, 0x0007, 0x0FFE,
873 0x0FF9, 0x00EB, 0x01F2, 0x0124, 0x0009, 0x0FFD,
874 0x0FF8, 0x00E5, 0x01F2, 0x0129, 0x000B, 0x0FFD,
875 0x0FF7, 0x00E0, 0x01F1, 0x012F, 0x000D, 0x0FFC,
876 0x0FF6, 0x00DA, 0x01F0, 0x0135, 0x0010, 0x0FFB,
877 0x0FF5, 0x00D4, 0x01EF, 0x013B, 0x0012, 0x0FFB,
878 0x0FF4, 0x00CF, 0x01EE, 0x0141, 0x0014, 0x0FFA,
879 0x0FF3, 0x00C9, 0x01ED, 0x0147, 0x0017, 0x0FF9,
880 0x0FF2, 0x00C4, 0x01EB, 0x014C, 0x001A, 0x0FF9,
881 0x0FF1, 0x00BF, 0x01EA, 0x0152, 0x001C, 0x0FF8,
882 0x0FF1, 0x00B9, 0x01E8, 0x0157, 0x001F, 0x0FF8,
883 0x0FF0, 0x00B4, 0x01E6, 0x015D, 0x0022, 0x0FF7,
884 0x0FF0, 0x00AE, 0x01E4, 0x0163, 0x0025, 0x0FF6,
885 0x0FEF, 0x00A9, 0x01E2, 0x0168, 0x0028, 0x0FF6,
886 0x0FEF, 0x00A4, 0x01DF, 0x016E, 0x002B, 0x0FF5,
887 0x0FEF, 0x009F, 0x01DD, 0x0172, 0x002E, 0x0FF5,
888 0x0FEE, 0x009A, 0x01DA, 0x0178, 0x0032, 0x0FF4,
889 0x0FEE, 0x0094, 0x01D8, 0x017E, 0x0035, 0x0FF3,
890 0x0FEE, 0x008F, 0x01D5, 0x0182, 0x0039, 0x0FF3,
891 0x0FEE, 0x008A, 0x01D2, 0x0188, 0x003C, 0x0FF2,
892 0x0FEE, 0x0085, 0x01CF, 0x018C, 0x0040, 0x0FF2,
893 0x0FEE, 0x0081, 0x01CB, 0x0191, 0x0044, 0x0FF1,
894 0x0FEE, 0x007C, 0x01C8, 0x0196, 0x0047, 0x0FF1,
895 0x0FEE, 0x0077, 0x01C4, 0x019C, 0x004B, 0x0FF0,
896 0x0FEE, 0x0072, 0x01C1, 0x01A0, 0x004F, 0x0FF0,
897 0x0FEE, 0x006E, 0x01BD, 0x01A4, 0x0053, 0x0FF0,
898 0x0FEE, 0x0069, 0x01B9, 0x01A9, 0x0058, 0x0FEF,
899 0x0FEE, 0x0065, 0x01B5, 0x01AD, 0x005C, 0x0FEF,
900 0x0FEF, 0x0060, 0x01B1, 0x01B1, 0x0060, 0x0FEF,
901 };
902
903 //========================================================
904 // <using> gen_scaler_coeffs_cnf_file.m
905 // <using> make_test_script.m
906 // <date> 02-Apr-2024
907 // <coeffDescrip> 6t_64p_LanczosEd_p_0.6_p_10qb_
908 // <num_taps> 6
909 // <num_phases> 64
910 // <scale_ratio> input/output = 0.600000000000
911 // <CoefType> LanczosEd
912 // <CoefQuant> S1.10
913 //========================================================
914 static const uint16_t easf_filter_6tap_64p_ratio_0_60[198] = {
915 0x0FD9, 0x00FB, 0x0258, 0x00FB, 0x0FD9, 0x0000,
916 0x0FD9, 0x00F3, 0x0258, 0x0102, 0x0FDA, 0x0000,
917 0x0FD8, 0x00EB, 0x0258, 0x010B, 0x0FDB, 0x0FFF,
918 0x0FD8, 0x00E3, 0x0258, 0x0112, 0x0FDC, 0x0FFF,
919 0x0FD8, 0x00DC, 0x0257, 0x011B, 0x0FDC, 0x0FFE,
920 0x0FD7, 0x00D4, 0x0256, 0x0123, 0x0FDE, 0x0FFE,
921 0x0FD7, 0x00CD, 0x0255, 0x012B, 0x0FDF, 0x0FFD,
922 0x0FD7, 0x00C5, 0x0254, 0x0133, 0x0FE0, 0x0FFD,
923 0x0FD7, 0x00BE, 0x0252, 0x013C, 0x0FE1, 0x0FFC,
924 0x0FD7, 0x00B6, 0x0251, 0x0143, 0x0FE3, 0x0FFC,
925 0x0FD8, 0x00AF, 0x024F, 0x014B, 0x0FE4, 0x0FFB,
926 0x0FD8, 0x00A8, 0x024C, 0x0154, 0x0FE6, 0x0FFA,
927 0x0FD8, 0x00A1, 0x024A, 0x015B, 0x0FE8, 0x0FFA,
928 0x0FD9, 0x009A, 0x0247, 0x0163, 0x0FEA, 0x0FF9,
929 0x0FD9, 0x0093, 0x0244, 0x016C, 0x0FEC, 0x0FF8,
930 0x0FD9, 0x008C, 0x0241, 0x0174, 0x0FEF, 0x0FF7,
931 0x0FDA, 0x0085, 0x023E, 0x017B, 0x0FF1, 0x0FF7,
932 0x0FDB, 0x007F, 0x023A, 0x0183, 0x0FF3, 0x0FF6,
933 0x0FDB, 0x0078, 0x0237, 0x018B, 0x0FF6, 0x0FF5,
934 0x0FDC, 0x0072, 0x0233, 0x0192, 0x0FF9, 0x0FF4,
935 0x0FDD, 0x006C, 0x022F, 0x0199, 0x0FFC, 0x0FF3,
936 0x0FDD, 0x0065, 0x022A, 0x01A3, 0x0FFF, 0x0FF2,
937 0x0FDE, 0x005F, 0x0226, 0x01AA, 0x0002, 0x0FF1,
938 0x0FDF, 0x005A, 0x0221, 0x01B0, 0x0006, 0x0FF0,
939 0x0FE0, 0x0054, 0x021C, 0x01B7, 0x0009, 0x0FF0,
940 0x0FE1, 0x004E, 0x0217, 0x01BE, 0x000D, 0x0FEF,
941 0x0FE2, 0x0048, 0x0212, 0x01C6, 0x0010, 0x0FEE,
942 0x0FE3, 0x0043, 0x020C, 0x01CD, 0x0014, 0x0FED,
943 0x0FE4, 0x003E, 0x0207, 0x01D3, 0x0018, 0x0FEC,
944 0x0FE5, 0x0039, 0x0200, 0x01DA, 0x001D, 0x0FEB,
945 0x0FE6, 0x0034, 0x01FA, 0x01E1, 0x0021, 0x0FEA,
946 0x0FE7, 0x002F, 0x01F5, 0x01E7, 0x0025, 0x0FE9,
947 0x0FE8, 0x002A, 0x01EE, 0x01EE, 0x002A, 0x0FE8,
948 };
949
950 //========================================================
951 // <using> gen_scaler_coeffs_cnf_file.m
952 // <using> make_test_script.m
953 // <date> 02-Apr-2024
954 // <coeffDescrip> 6t_64p_LanczosEd_p_0.7_p_10qb_
955 // <num_taps> 6
956 // <num_phases> 64
957 // <scale_ratio> input/output = 0.700000000000
958 // <CoefType> LanczosEd
959 // <CoefQuant> S1.10
960 //========================================================
961 static const uint16_t easf_filter_6tap_64p_ratio_0_70[198] = {
962 0x0FC0, 0x00DA, 0x02CC, 0x00DA, 0x0FC0, 0x0000,
963 0x0FC1, 0x00D0, 0x02CC, 0x00E4, 0x0FBF, 0x0000,
964 0x0FC2, 0x00C6, 0x02CB, 0x00EF, 0x0FBE, 0x0000,
965 0x0FC3, 0x00BC, 0x02CA, 0x00F9, 0x0FBE, 0x0000,
966 0x0FC4, 0x00B2, 0x02C9, 0x0104, 0x0FBD, 0x0000,
967 0x0FC5, 0x00A8, 0x02C7, 0x010F, 0x0FBD, 0x0000,
968 0x0FC7, 0x009F, 0x02C5, 0x0119, 0x0FBC, 0x0000,
969 0x0FC8, 0x0095, 0x02C3, 0x0124, 0x0FBC, 0x0000,
970 0x0FC9, 0x008C, 0x02C0, 0x012F, 0x0FBC, 0x0000,
971 0x0FCB, 0x0083, 0x02BD, 0x0139, 0x0FBC, 0x0000,
972 0x0FCC, 0x007A, 0x02BA, 0x0144, 0x0FBC, 0x0000,
973 0x0FCE, 0x0072, 0x02B6, 0x014D, 0x0FBD, 0x0000,
974 0x0FD0, 0x0069, 0x02B2, 0x0159, 0x0FBD, 0x0FFF,
975 0x0FD1, 0x0061, 0x02AD, 0x0164, 0x0FBE, 0x0FFF,
976 0x0FD3, 0x0059, 0x02A9, 0x016E, 0x0FBF, 0x0FFE,
977 0x0FD4, 0x0051, 0x02A4, 0x017A, 0x0FBF, 0x0FFE,
978 0x0FD6, 0x0049, 0x029E, 0x0184, 0x0FC1, 0x0FFE,
979 0x0FD8, 0x0042, 0x0299, 0x018E, 0x0FC2, 0x0FFD,
980 0x0FD9, 0x003A, 0x0293, 0x019B, 0x0FC3, 0x0FFC,
981 0x0FDB, 0x0033, 0x028D, 0x01A4, 0x0FC5, 0x0FFC,
982 0x0FDC, 0x002D, 0x0286, 0x01AF, 0x0FC7, 0x0FFB,
983 0x0FDE, 0x0026, 0x0280, 0x01BA, 0x0FC8, 0x0FFA,
984 0x0FE0, 0x001F, 0x0279, 0x01C4, 0x0FCB, 0x0FF9,
985 0x0FE1, 0x0019, 0x0272, 0x01CE, 0x0FCD, 0x0FF9,
986 0x0FE3, 0x0013, 0x026A, 0x01D9, 0x0FCF, 0x0FF8,
987 0x0FE4, 0x000D, 0x0263, 0x01E3, 0x0FD2, 0x0FF7,
988 0x0FE6, 0x0008, 0x025B, 0x01EC, 0x0FD5, 0x0FF6,
989 0x0FE7, 0x0002, 0x0253, 0x01F7, 0x0FD8, 0x0FF5,
990 0x0FE9, 0x0FFD, 0x024A, 0x0202, 0x0FDB, 0x0FF3,
991 0x0FEA, 0x0FF8, 0x0242, 0x020B, 0x0FDF, 0x0FF2,
992 0x0FEC, 0x0FF3, 0x0239, 0x0215, 0x0FE2, 0x0FF1,
993 0x0FED, 0x0FEF, 0x0230, 0x021E, 0x0FE6, 0x0FF0,
994 0x0FEF, 0x0FEB, 0x0226, 0x0226, 0x0FEB, 0x0FEF,
995 };
996
997 //========================================================
998 // <using> gen_scaler_coeffs_cnf_file.m
999 // <using> make_test_script.m
1000 // <date> 02-Apr-2024
1001 // <coeffDescrip> 6t_64p_LanczosEd_p_0.8_p_10qb_
1002 // <num_taps> 6
1003 // <num_phases> 64
1004 // <scale_ratio> input/output = 0.800000000000
1005 // <CoefType> LanczosEd
1006 // <CoefQuant> S1.10
1007 //========================================================
1008 static const uint16_t easf_filter_6tap_64p_ratio_0_80[198] = {
1009 0x0FBF, 0x00A1, 0x0340, 0x00A1, 0x0FBF, 0x0000,
1010 0x0FC1, 0x0095, 0x0340, 0x00AD, 0x0FBC, 0x0001,
1011 0x0FC4, 0x0089, 0x033E, 0x00BA, 0x0FBA, 0x0001,
1012 0x0FC6, 0x007D, 0x033D, 0x00C6, 0x0FB8, 0x0002,
1013 0x0FC9, 0x0072, 0x033A, 0x00D3, 0x0FB6, 0x0002,
1014 0x0FCC, 0x0067, 0x0338, 0x00DF, 0x0FB3, 0x0003,
1015 0x0FCE, 0x005C, 0x0334, 0x00EE, 0x0FB1, 0x0003,
1016 0x0FD1, 0x0051, 0x0331, 0x00FA, 0x0FAF, 0x0004,
1017 0x0FD3, 0x0047, 0x032D, 0x0108, 0x0FAD, 0x0004,
1018 0x0FD6, 0x003D, 0x0328, 0x0116, 0x0FAB, 0x0004,
1019 0x0FD8, 0x0033, 0x0323, 0x0123, 0x0FAA, 0x0005,
1020 0x0FDB, 0x002A, 0x031D, 0x0131, 0x0FA8, 0x0005,
1021 0x0FDD, 0x0021, 0x0317, 0x013F, 0x0FA7, 0x0005,
1022 0x0FDF, 0x0018, 0x0311, 0x014D, 0x0FA5, 0x0006,
1023 0x0FE2, 0x0010, 0x030A, 0x015A, 0x0FA4, 0x0006,
1024 0x0FE4, 0x0008, 0x0302, 0x0169, 0x0FA3, 0x0006,
1025 0x0FE6, 0x0000, 0x02FB, 0x0177, 0x0FA2, 0x0006,
1026 0x0FE8, 0x0FF9, 0x02F3, 0x0185, 0x0FA1, 0x0006,
1027 0x0FEB, 0x0FF1, 0x02EA, 0x0193, 0x0FA1, 0x0006,
1028 0x0FED, 0x0FEB, 0x02E1, 0x01A1, 0x0FA0, 0x0006,
1029 0x0FEE, 0x0FE4, 0x02D8, 0x01B0, 0x0FA0, 0x0006,
1030 0x0FF0, 0x0FDE, 0x02CE, 0x01BE, 0x0FA0, 0x0006,
1031 0x0FF2, 0x0FD8, 0x02C5, 0x01CB, 0x0FA0, 0x0006,
1032 0x0FF4, 0x0FD3, 0x02BA, 0x01D8, 0x0FA1, 0x0006,
1033 0x0FF6, 0x0FCD, 0x02B0, 0x01E7, 0x0FA1, 0x0005,
1034 0x0FF7, 0x0FC8, 0x02A5, 0x01F5, 0x0FA2, 0x0005,
1035 0x0FF9, 0x0FC4, 0x029A, 0x0202, 0x0FA3, 0x0004,
1036 0x0FFA, 0x0FC0, 0x028E, 0x0210, 0x0FA4, 0x0004,
1037 0x0FFB, 0x0FBC, 0x0283, 0x021D, 0x0FA6, 0x0003,
1038 0x0FFD, 0x0FB8, 0x0276, 0x022A, 0x0FA8, 0x0003,
1039 0x0FFE, 0x0FB4, 0x026B, 0x0237, 0x0FAA, 0x0002,
1040 0x0FFF, 0x0FB1, 0x025E, 0x0245, 0x0FAC, 0x0001,
1041 0x0000, 0x0FAE, 0x0252, 0x0252, 0x0FAE, 0x0000,
1042 };
1043
1044 //========================================================
1045 // <using> gen_scaler_coeffs_cnf_file.m
1046 // <using> make_test_script.m
1047 // <date> 02-Apr-2024
1048 // <coeffDescrip> 6t_64p_LanczosEd_p_0.9_p_10qb_
1049 // <num_taps> 6
1050 // <num_phases> 64
1051 // <scale_ratio> input/output = 0.900000000000
1052 // <CoefType> LanczosEd
1053 // <CoefQuant> S1.10
1054 //========================================================
1055 static const uint16_t easf_filter_6tap_64p_ratio_0_90[198] = {
1056 0x0FD8, 0x0055, 0x03A7, 0x0054, 0x0FD8, 0x0000,
1057 0x0FDB, 0x0047, 0x03A7, 0x0063, 0x0FD4, 0x0000,
1058 0x0FDF, 0x003B, 0x03A5, 0x006F, 0x0FD1, 0x0001,
1059 0x0FE2, 0x002E, 0x03A3, 0x007E, 0x0FCD, 0x0002,
1060 0x0FE5, 0x0022, 0x03A0, 0x008D, 0x0FCA, 0x0002,
1061 0x0FE8, 0x0017, 0x039D, 0x009B, 0x0FC6, 0x0003,
1062 0x0FEB, 0x000C, 0x0398, 0x00AC, 0x0FC2, 0x0003,
1063 0x0FEE, 0x0001, 0x0394, 0x00BA, 0x0FBF, 0x0004,
1064 0x0FF1, 0x0FF7, 0x038E, 0x00CA, 0x0FBB, 0x0005,
1065 0x0FF4, 0x0FED, 0x0388, 0x00DA, 0x0FB8, 0x0005,
1066 0x0FF6, 0x0FE4, 0x0381, 0x00EB, 0x0FB4, 0x0006,
1067 0x0FF9, 0x0FDB, 0x037A, 0x00FA, 0x0FB1, 0x0007,
1068 0x0FFB, 0x0FD3, 0x0372, 0x010B, 0x0FAD, 0x0008,
1069 0x0FFD, 0x0FCB, 0x0369, 0x011D, 0x0FAA, 0x0008,
1070 0x0000, 0x0FC3, 0x0360, 0x012E, 0x0FA6, 0x0009,
1071 0x0002, 0x0FBC, 0x0356, 0x013F, 0x0FA3, 0x000A,
1072 0x0003, 0x0FB6, 0x034C, 0x0150, 0x0FA0, 0x000B,
1073 0x0005, 0x0FB0, 0x0341, 0x0162, 0x0F9D, 0x000B,
1074 0x0007, 0x0FAA, 0x0336, 0x0173, 0x0F9A, 0x000C,
1075 0x0008, 0x0FA5, 0x032A, 0x0185, 0x0F97, 0x000D,
1076 0x000A, 0x0FA0, 0x031E, 0x0197, 0x0F94, 0x000D,
1077 0x000B, 0x0F9B, 0x0311, 0x01A9, 0x0F92, 0x000E,
1078 0x000C, 0x0F97, 0x0303, 0x01BC, 0x0F8F, 0x000F,
1079 0x000D, 0x0F94, 0x02F6, 0x01CD, 0x0F8D, 0x000F,
1080 0x000E, 0x0F91, 0x02E8, 0x01DE, 0x0F8B, 0x0010,
1081 0x000F, 0x0F8E, 0x02D9, 0x01F1, 0x0F89, 0x0010,
1082 0x0010, 0x0F8B, 0x02CA, 0x0202, 0x0F88, 0x0011,
1083 0x0010, 0x0F89, 0x02BB, 0x0214, 0x0F87, 0x0011,
1084 0x0011, 0x0F87, 0x02AB, 0x0226, 0x0F86, 0x0011,
1085 0x0011, 0x0F86, 0x029C, 0x0236, 0x0F85, 0x0012,
1086 0x0011, 0x0F85, 0x028B, 0x0249, 0x0F84, 0x0012,
1087 0x0012, 0x0F84, 0x027B, 0x0259, 0x0F84, 0x0012,
1088 0x0012, 0x0F84, 0x026A, 0x026A, 0x0F84, 0x0012,
1089 };
1090
1091 //========================================================
1092 // <using> gen_scaler_coeffs_cnf_file.m
1093 // <using> make_test_script.m
1094 // <date> 02-Apr-2024
1095 // <coeffDescrip> 6t_64p_LanczosEd_p_1_p_10qb_
1096 // <num_taps> 6
1097 // <num_phases> 64
1098 // <scale_ratio> input/output = 1.000000000000
1099 // <CoefType> LanczosEd
1100 // <CoefQuant> S1.10
1101 //========================================================
1102 static const uint16_t easf_filter_6tap_64p_ratio_1_00[198] = {
1103 0x0000, 0x0000, 0x0400, 0x0000, 0x0000, 0x0000,
1104 0x0003, 0x0FF3, 0x0400, 0x000D, 0x0FFD, 0x0000,
1105 0x0006, 0x0FE7, 0x03FE, 0x001C, 0x0FF9, 0x0000,
1106 0x0009, 0x0FDB, 0x03FC, 0x002B, 0x0FF5, 0x0000,
1107 0x000C, 0x0FD0, 0x03F9, 0x003A, 0x0FF1, 0x0000,
1108 0x000E, 0x0FC5, 0x03F5, 0x004A, 0x0FED, 0x0001,
1109 0x0011, 0x0FBB, 0x03F0, 0x005A, 0x0FE9, 0x0001,
1110 0x0013, 0x0FB2, 0x03EB, 0x006A, 0x0FE5, 0x0001,
1111 0x0015, 0x0FA9, 0x03E4, 0x007B, 0x0FE1, 0x0002,
1112 0x0017, 0x0FA1, 0x03DD, 0x008D, 0x0FDC, 0x0002,
1113 0x0018, 0x0F99, 0x03D4, 0x00A0, 0x0FD8, 0x0003,
1114 0x001A, 0x0F92, 0x03CB, 0x00B2, 0x0FD3, 0x0004,
1115 0x001B, 0x0F8C, 0x03C1, 0x00C6, 0x0FCE, 0x0004,
1116 0x001C, 0x0F86, 0x03B7, 0x00D9, 0x0FC9, 0x0005,
1117 0x001D, 0x0F80, 0x03AB, 0x00EE, 0x0FC4, 0x0006,
1118 0x001E, 0x0F7C, 0x039F, 0x0101, 0x0FBF, 0x0007,
1119 0x001F, 0x0F78, 0x0392, 0x0115, 0x0FBA, 0x0008,
1120 0x001F, 0x0F74, 0x0385, 0x012B, 0x0FB5, 0x0008,
1121 0x0020, 0x0F71, 0x0376, 0x0140, 0x0FB0, 0x0009,
1122 0x0020, 0x0F6E, 0x0367, 0x0155, 0x0FAB, 0x000B,
1123 0x0020, 0x0F6C, 0x0357, 0x016B, 0x0FA6, 0x000C,
1124 0x0020, 0x0F6A, 0x0347, 0x0180, 0x0FA2, 0x000D,
1125 0x0020, 0x0F69, 0x0336, 0x0196, 0x0F9D, 0x000E,
1126 0x0020, 0x0F69, 0x0325, 0x01AB, 0x0F98, 0x000F,
1127 0x001F, 0x0F68, 0x0313, 0x01C3, 0x0F93, 0x0010,
1128 0x001F, 0x0F69, 0x0300, 0x01D8, 0x0F8F, 0x0011,
1129 0x001E, 0x0F69, 0x02ED, 0x01EF, 0x0F8B, 0x0012,
1130 0x001D, 0x0F6A, 0x02D9, 0x0205, 0x0F87, 0x0014,
1131 0x001D, 0x0F6C, 0x02C5, 0x021A, 0x0F83, 0x0015,
1132 0x001C, 0x0F6E, 0x02B1, 0x0230, 0x0F7F, 0x0016,
1133 0x001B, 0x0F70, 0x029C, 0x0247, 0x0F7B, 0x0017,
1134 0x001A, 0x0F72, 0x0287, 0x025D, 0x0F78, 0x0018,
1135 0x0019, 0x0F75, 0x0272, 0x0272, 0x0F75, 0x0019,
1136 };
1137
1138 /* Converted scaler coeff tables from S1.10 to S1.12 */
1139 static const uint16_t easf_filter_3tap_64p_ratio_0_30_s1_12[99] = {
1140 0x0800, 0x0800, 0x0000,
1141 0x07d8, 0x0818, 0x0010,
1142 0x07b0, 0x082c, 0x0024,
1143 0x0788, 0x0844, 0x0034,
1144 0x0760, 0x0858, 0x0048,
1145 0x0738, 0x0870, 0x0058,
1146 0x0710, 0x0884, 0x006c,
1147 0x06e8, 0x0898, 0x0080,
1148 0x06c0, 0x08a8, 0x0098,
1149 0x0698, 0x08bc, 0x00ac,
1150 0x0670, 0x08cc, 0x00c4,
1151 0x0648, 0x08e0, 0x00d8,
1152 0x0620, 0x08f0, 0x00f0,
1153 0x05f8, 0x0900, 0x0108,
1154 0x05d0, 0x0910, 0x0120,
1155 0x05a8, 0x0920, 0x0138,
1156 0x0584, 0x0928, 0x0154,
1157 0x055c, 0x0938, 0x016c,
1158 0x0534, 0x0944, 0x0188,
1159 0x0510, 0x094c, 0x01a4,
1160 0x04e8, 0x0958, 0x01c0,
1161 0x04c4, 0x0960, 0x01dc,
1162 0x049c, 0x096c, 0x01f8,
1163 0x0478, 0x0970, 0x0218,
1164 0x0454, 0x0978, 0x0234,
1165 0x042c, 0x0980, 0x0254,
1166 0x0408, 0x0988, 0x0270,
1167 0x03e4, 0x098c, 0x0290,
1168 0x03c0, 0x0990, 0x02b0,
1169 0x039c, 0x0994, 0x02d0,
1170 0x037c, 0x0990, 0x02f4,
1171 0x0358, 0x0994, 0x0314,
1172 0x0334, 0x0998, 0x0334,
1173 };
1174
1175 static const uint16_t easf_filter_3tap_64p_ratio_0_40_s1_12[99] = {
1176 0x0800, 0x0800, 0x0000,
1177 0x07d8, 0x0818, 0x0010,
1178 0x07ac, 0x0838, 0x001c,
1179 0x0784, 0x0850, 0x002c,
1180 0x075c, 0x0868, 0x003c,
1181 0x0734, 0x0880, 0x004c,
1182 0x0708, 0x0898, 0x0060,
1183 0x06e0, 0x08b0, 0x0070,
1184 0x06b8, 0x08c4, 0x0084,
1185 0x068c, 0x08dc, 0x0098,
1186 0x0664, 0x08f0, 0x00ac,
1187 0x063c, 0x0900, 0x00c4,
1188 0x0614, 0x0914, 0x00d8,
1189 0x05e8, 0x0928, 0x00f0,
1190 0x05c0, 0x093c, 0x0104,
1191 0x0598, 0x094c, 0x011c,
1192 0x0570, 0x095c, 0x0134,
1193 0x0548, 0x0968, 0x0150,
1194 0x0520, 0x0978, 0x0168,
1195 0x04f8, 0x0984, 0x0184,
1196 0x04d0, 0x0990, 0x01a0,
1197 0x04ac, 0x0998, 0x01bc,
1198 0x0484, 0x09a4, 0x01d8,
1199 0x045c, 0x09b0, 0x01f4,
1200 0x0438, 0x09b8, 0x0210,
1201 0x0410, 0x09c0, 0x0230,
1202 0x03ec, 0x09c4, 0x0250,
1203 0x03c8, 0x09c8, 0x0270,
1204 0x03a4, 0x09cc, 0x0290,
1205 0x0380, 0x09d0, 0x02b0,
1206 0x035c, 0x09d4, 0x02d0,
1207 0x0338, 0x09d4, 0x02f4,
1208 0x0314, 0x09d8, 0x0314,
1209 };
1210
1211 static const uint16_t easf_filter_3tap_64p_ratio_0_50_s1_12[99] = {
1212 0x0800, 0x0800, 0x0000,
1213 0x07d4, 0x0824, 0x0008,
1214 0x07a8, 0x0844, 0x0014,
1215 0x077c, 0x0868, 0x001c,
1216 0x0750, 0x0888, 0x0028,
1217 0x0724, 0x08a8, 0x0034,
1218 0x06f8, 0x08c8, 0x0040,
1219 0x06cc, 0x08e4, 0x0050,
1220 0x06a0, 0x0904, 0x005c,
1221 0x0674, 0x0920, 0x006c,
1222 0x0648, 0x093c, 0x007c,
1223 0x061c, 0x0954, 0x0090,
1224 0x05f0, 0x0970, 0x00a0,
1225 0x05c4, 0x0988, 0x00b4,
1226 0x0598, 0x09a0, 0x00c8,
1227 0x056c, 0x09b8, 0x00dc,
1228 0x0540, 0x09cc, 0x00f4,
1229 0x0518, 0x09e0, 0x0108,
1230 0x04ec, 0x09f4, 0x0120,
1231 0x04c0, 0x0a08, 0x0138,
1232 0x0498, 0x0a18, 0x0150,
1233 0x046c, 0x0a28, 0x016c,
1234 0x0444, 0x0a34, 0x0188,
1235 0x041c, 0x0a40, 0x01a4,
1236 0x03f4, 0x0a4c, 0x01c0,
1237 0x03cc, 0x0a58, 0x01dc,
1238 0x03a4, 0x0a60, 0x01fc,
1239 0x037c, 0x0a68, 0x021c,
1240 0x0354, 0x0a70, 0x023c,
1241 0x0330, 0x0a74, 0x025c,
1242 0x030c, 0x0a78, 0x027c,
1243 0x02e8, 0x0a78, 0x02a0,
1244 0x02c4, 0x0a78, 0x02c4,
1245 };
1246
1247 static const uint16_t easf_filter_3tap_64p_ratio_0_60_s1_12[99] = {
1248 0x0800, 0x0800, 0x0000,
1249 0x07d0, 0x082c, 0x0004,
1250 0x07a0, 0x0858, 0x0008,
1251 0x0770, 0x0884, 0x000c,
1252 0x0740, 0x08ac, 0x0014,
1253 0x0710, 0x08d4, 0x001c,
1254 0x06e0, 0x0900, 0x0020,
1255 0x06b0, 0x0924, 0x002c,
1256 0x0680, 0x094c, 0x0034,
1257 0x0650, 0x0970, 0x0040,
1258 0x0620, 0x0994, 0x004c,
1259 0x05f0, 0x09b8, 0x0058,
1260 0x05c0, 0x09dc, 0x0064,
1261 0x0590, 0x09fc, 0x0074,
1262 0x0560, 0x0a1c, 0x0084,
1263 0x0530, 0x0a3c, 0x0094,
1264 0x0500, 0x0a5c, 0x00a4,
1265 0x04d4, 0x0a74, 0x00b8,
1266 0x04a4, 0x0a90, 0x00cc,
1267 0x0474, 0x0aac, 0x00e0,
1268 0x0448, 0x0ac0, 0x00f8,
1269 0x041c, 0x0ad4, 0x0110,
1270 0x03f0, 0x0ae8, 0x0128,
1271 0x03c4, 0x0afc, 0x0140,
1272 0x0398, 0x0b0c, 0x015c,
1273 0x036c, 0x0b1c, 0x0178,
1274 0x0344, 0x0b28, 0x0194,
1275 0x031c, 0x0b30, 0x01b4,
1276 0x02f4, 0x0b38, 0x01d4,
1277 0x02cc, 0x0b40, 0x01f4,
1278 0x02a4, 0x0b48, 0x0214,
1279 0x0280, 0x0b48, 0x0238,
1280 0x025c, 0x0b48, 0x025c,
1281 };
1282
1283 static const uint16_t easf_filter_3tap_64p_ratio_0_70_s1_12[99] = {
1284 0x0800, 0x0800, 0x0000,
1285 0x07cc, 0x0834, 0x0000,
1286 0x0794, 0x086c, 0x0000,
1287 0x0760, 0x08a0, 0x0000,
1288 0x072c, 0x08d4, 0x0000,
1289 0x06f4, 0x090c, 0x0000,
1290 0x06c0, 0x093c, 0x0004,
1291 0x0688, 0x0970, 0x0008,
1292 0x0654, 0x09a0, 0x000c,
1293 0x061c, 0x09d4, 0x0010,
1294 0x05e8, 0x0a00, 0x0018,
1295 0x05b4, 0x0a30, 0x001c,
1296 0x057c, 0x0a60, 0x0024,
1297 0x0548, 0x0a88, 0x0030,
1298 0x0514, 0x0ab4, 0x0038,
1299 0x04e0, 0x0adc, 0x0044,
1300 0x04ac, 0x0b00, 0x0054,
1301 0x0478, 0x0b28, 0x0060,
1302 0x0444, 0x0b4c, 0x0070,
1303 0x0414, 0x0b6c, 0x0080,
1304 0x03e0, 0x0b8c, 0x0094,
1305 0x03b0, 0x0ba8, 0x00a8,
1306 0x0380, 0x0bc4, 0x00bc,
1307 0x0354, 0x0bd8, 0x00d4,
1308 0x0324, 0x0bf0, 0x00ec,
1309 0x02f8, 0x0c04, 0x0104,
1310 0x02cc, 0x0c14, 0x0120,
1311 0x02a0, 0x0c24, 0x013c,
1312 0x0278, 0x0c30, 0x0158,
1313 0x0250, 0x0c38, 0x0178,
1314 0x0228, 0x0c40, 0x0198,
1315 0x0204, 0x0c40, 0x01bc,
1316 0x01dc, 0x0c48, 0x01dc,
1317 };
1318
1319 static const uint16_t easf_filter_3tap_64p_ratio_0_80_s1_12[99] = {
1320 0x0800, 0x0800, 0x0000,
1321 0x07c4, 0x0840, 0x3ffc,
1322 0x0788, 0x0880, 0x3ff8,
1323 0x0748, 0x08c8, 0x3ff0,
1324 0x070c, 0x0904, 0x3ff0,
1325 0x06d0, 0x0944, 0x3fec,
1326 0x0690, 0x0988, 0x3fe8,
1327 0x0654, 0x09c4, 0x3fe8,
1328 0x0618, 0x0a04, 0x3fe4,
1329 0x05d8, 0x0a44, 0x3fe4,
1330 0x059c, 0x0a80, 0x3fe4,
1331 0x0560, 0x0ab8, 0x3fe8,
1332 0x0524, 0x0af4, 0x3fe8,
1333 0x04e8, 0x0b2c, 0x3fec,
1334 0x04b0, 0x0b5c, 0x3ff4,
1335 0x0474, 0x0b94, 0x3ff8,
1336 0x043c, 0x0bc4, 0x0000,
1337 0x0404, 0x0bf4, 0x0008,
1338 0x03cc, 0x0c20, 0x0014,
1339 0x0394, 0x0c4c, 0x0020,
1340 0x0360, 0x0c74, 0x002c,
1341 0x032c, 0x0c98, 0x003c,
1342 0x02f8, 0x0cbc, 0x004c,
1343 0x02c8, 0x0cdc, 0x005c,
1344 0x0298, 0x0cf8, 0x0070,
1345 0x0268, 0x0d14, 0x0084,
1346 0x023c, 0x0d28, 0x009c,
1347 0x0210, 0x0d3c, 0x00b4,
1348 0x01e4, 0x0d4c, 0x00d0,
1349 0x01bc, 0x0d58, 0x00ec,
1350 0x0194, 0x0d60, 0x010c,
1351 0x0170, 0x0d64, 0x012c,
1352 0x014c, 0x0d68, 0x014c,
1353 };
1354
1355 static const uint16_t easf_filter_3tap_64p_ratio_0_90_s1_12[99] = {
1356 0x0800, 0x0800, 0x0000,
1357 0x07b8, 0x0850, 0x3ff8,
1358 0x0770, 0x08a0, 0x3ff0,
1359 0x0728, 0x08f0, 0x3fe8,
1360 0x06e4, 0x093c, 0x3fe0,
1361 0x069c, 0x0988, 0x3fdc,
1362 0x0654, 0x09d8, 0x3fd4,
1363 0x060c, 0x0a28, 0x3fcc,
1364 0x05c8, 0x0a70, 0x3fc8,
1365 0x0580, 0x0abc, 0x3fc4,
1366 0x053c, 0x0b08, 0x3fbc,
1367 0x04f8, 0x0b50, 0x3fb8,
1368 0x04b4, 0x0b94, 0x3fb8,
1369 0x0470, 0x0bdc, 0x3fb4,
1370 0x0430, 0x0c1c, 0x3fb4,
1371 0x03ec, 0x0c60, 0x3fb4,
1372 0x03b0, 0x0c9c, 0x3fb4,
1373 0x0370, 0x0cd8, 0x3fb8,
1374 0x0334, 0x0d10, 0x3fbc,
1375 0x02f8, 0x0d48, 0x3fc0,
1376 0x02c0, 0x0d78, 0x3fc8,
1377 0x0288, 0x0da8, 0x3fd0,
1378 0x0254, 0x0dd4, 0x3fd8,
1379 0x0220, 0x0dfc, 0x3fe4,
1380 0x01ec, 0x0e20, 0x3ff4,
1381 0x01bc, 0x0e44, 0x0000,
1382 0x0190, 0x0e5c, 0x0014,
1383 0x0164, 0x0e74, 0x0028,
1384 0x0138, 0x0e8c, 0x003c,
1385 0x0114, 0x0e98, 0x0054,
1386 0x00ec, 0x0ea4, 0x0070,
1387 0x00cc, 0x0ea8, 0x008c,
1388 0x00a8, 0x0eb0, 0x00a8,
1389 };
1390
1391 static const uint16_t easf_filter_3tap_64p_ratio_1_00_s1_12[99] = {
1392 0x0800, 0x0800, 0x0000,
1393 0x07ac, 0x085c, 0x3ff8,
1394 0x0754, 0x08bc, 0x3ff0,
1395 0x0700, 0x091c, 0x3fe4,
1396 0x06ac, 0x0978, 0x3fdc,
1397 0x0658, 0x09d8, 0x3fd0,
1398 0x0604, 0x0a34, 0x3fc8,
1399 0x05b0, 0x0a94, 0x3fbc,
1400 0x0560, 0x0aec, 0x3fb4,
1401 0x0510, 0x0b44, 0x3fac,
1402 0x04c0, 0x0ba0, 0x3fa0,
1403 0x0470, 0x0bf8, 0x3f98,
1404 0x0424, 0x0c4c, 0x3f90,
1405 0x03d8, 0x0ca0, 0x3f88,
1406 0x0390, 0x0cf0, 0x3f80,
1407 0x0348, 0x0d3c, 0x3f7c,
1408 0x0300, 0x0d8c, 0x3f74,
1409 0x02c0, 0x0dd0, 0x3f70,
1410 0x027c, 0x0e14, 0x3f70,
1411 0x0240, 0x0e54, 0x3f6c,
1412 0x0204, 0x0e90, 0x3f6c,
1413 0x01c8, 0x0ecc, 0x3f6c,
1414 0x0190, 0x0f00, 0x3f70,
1415 0x015c, 0x0f30, 0x3f74,
1416 0x012c, 0x0f58, 0x3f7c,
1417 0x00fc, 0x0f80, 0x3f84,
1418 0x00d0, 0x0fa0, 0x3f90,
1419 0x00a8, 0x0fbc, 0x3f9c,
1420 0x0080, 0x0fd4, 0x3fac,
1421 0x005c, 0x0fe8, 0x3fbc,
1422 0x003c, 0x0ff4, 0x3fd0,
1423 0x001c, 0x0ffc, 0x3fe8,
1424 0x0000, 0x1000, 0x0000,
1425 };
1426
1427 static const uint16_t easf_filter_4tap_64p_ratio_0_30_s1_12[132] = {
1428 0x0410, 0x07e0, 0x0410, 0x0000,
1429 0x03f8, 0x07dc, 0x0428, 0x0004,
1430 0x03e0, 0x07d8, 0x043c, 0x000c,
1431 0x03c8, 0x07d4, 0x0450, 0x0014,
1432 0x03ac, 0x07d0, 0x046c, 0x0018,
1433 0x0394, 0x07cc, 0x0480, 0x0020,
1434 0x037c, 0x07c8, 0x0494, 0x0028,
1435 0x0368, 0x07c0, 0x04a8, 0x0030,
1436 0x0350, 0x07b8, 0x04c0, 0x0038,
1437 0x0338, 0x07b4, 0x04d4, 0x0040,
1438 0x0320, 0x07ac, 0x04e8, 0x004c,
1439 0x0308, 0x07a4, 0x0500, 0x0054,
1440 0x02f4, 0x079c, 0x0514, 0x005c,
1441 0x02dc, 0x0794, 0x0528, 0x0068,
1442 0x02c4, 0x0788, 0x0544, 0x0070,
1443 0x02b0, 0x0780, 0x0554, 0x007c,
1444 0x029c, 0x0774, 0x0568, 0x0088,
1445 0x0284, 0x076c, 0x057c, 0x0094,
1446 0x0270, 0x0760, 0x0594, 0x009c,
1447 0x025c, 0x0754, 0x05a8, 0x00a8,
1448 0x0248, 0x0748, 0x05b8, 0x00b8,
1449 0x0230, 0x073c, 0x05d0, 0x00c4,
1450 0x021c, 0x0730, 0x05e4, 0x00d0,
1451 0x020c, 0x0724, 0x05f4, 0x00dc,
1452 0x01f8, 0x0714, 0x0608, 0x00ec,
1453 0x01e4, 0x0708, 0x061c, 0x00f8,
1454 0x01d0, 0x06f8, 0x0630, 0x0108,
1455 0x01c0, 0x06e8, 0x0640, 0x0118,
1456 0x01ac, 0x06dc, 0x0654, 0x0124,
1457 0x0198, 0x06cc, 0x0668, 0x0134,
1458 0x0188, 0x06bc, 0x0678, 0x0144,
1459 0x0178, 0x06ac, 0x0688, 0x0154,
1460 0x0168, 0x0698, 0x0698, 0x0168,
1461 };
1462
1463 static const uint16_t easf_filter_4tap_64p_ratio_0_40_s1_12[132] = {
1464 0x03ec, 0x0824, 0x03f0, 0x0000,
1465 0x03d4, 0x0824, 0x0404, 0x0004,
1466 0x03b8, 0x0820, 0x0420, 0x0008,
1467 0x03a0, 0x081c, 0x0438, 0x000c,
1468 0x0388, 0x0818, 0x0450, 0x0010,
1469 0x036c, 0x0814, 0x0468, 0x0018,
1470 0x0354, 0x0810, 0x0480, 0x001c,
1471 0x033c, 0x080c, 0x0494, 0x0024,
1472 0x0324, 0x0804, 0x04b0, 0x0028,
1473 0x030c, 0x07fc, 0x04c8, 0x0030,
1474 0x02f4, 0x07f4, 0x04e0, 0x0038,
1475 0x02dc, 0x07ec, 0x04f8, 0x0040,
1476 0x02c4, 0x07e4, 0x0510, 0x0048,
1477 0x02b0, 0x07dc, 0x0524, 0x0050,
1478 0x0298, 0x07d0, 0x0540, 0x0058,
1479 0x0280, 0x07c8, 0x0558, 0x0060,
1480 0x026c, 0x07bc, 0x0570, 0x0068,
1481 0x0254, 0x07b0, 0x0588, 0x0074,
1482 0x0240, 0x07a4, 0x05a0, 0x007c,
1483 0x022c, 0x0798, 0x05b4, 0x0088,
1484 0x0214, 0x078c, 0x05cc, 0x0094,
1485 0x0200, 0x077c, 0x05e4, 0x00a0,
1486 0x01ec, 0x0770, 0x05f8, 0x00ac,
1487 0x01d8, 0x0760, 0x0610, 0x00b8,
1488 0x01c4, 0x0750, 0x0628, 0x00c4,
1489 0x01b4, 0x0744, 0x0638, 0x00d0,
1490 0x01a0, 0x0734, 0x064c, 0x00e0,
1491 0x018c, 0x0720, 0x0668, 0x00ec,
1492 0x017c, 0x0710, 0x0678, 0x00fc,
1493 0x016c, 0x0700, 0x068c, 0x0108,
1494 0x0158, 0x06ec, 0x06a4, 0x0118,
1495 0x0148, 0x06dc, 0x06b4, 0x0128,
1496 0x0138, 0x06c8, 0x06c8, 0x0138,
1497 };
1498
1499 static const uint16_t easf_filter_4tap_64p_ratio_0_50_s1_12[132] = {
1500 0x0394, 0x08d8, 0x0394, 0x0000,
1501 0x0378, 0x08d4, 0x03b4, 0x0000,
1502 0x035c, 0x08d4, 0x03d0, 0x0000,
1503 0x0340, 0x08d4, 0x03ec, 0x0000,
1504 0x0324, 0x08d0, 0x0408, 0x0004,
1505 0x0308, 0x08cc, 0x0428, 0x0004,
1506 0x02f0, 0x08c8, 0x0444, 0x0004,
1507 0x02d4, 0x08c0, 0x0464, 0x0008,
1508 0x02b8, 0x08bc, 0x0484, 0x0008,
1509 0x02a0, 0x08b4, 0x04a0, 0x000c,
1510 0x0288, 0x08ac, 0x04bc, 0x0010,
1511 0x026c, 0x08a4, 0x04dc, 0x0014,
1512 0x0254, 0x0898, 0x04fc, 0x0018,
1513 0x023c, 0x0890, 0x0518, 0x001c,
1514 0x0224, 0x0884, 0x0538, 0x0020,
1515 0x020c, 0x0878, 0x0554, 0x0028,
1516 0x01f8, 0x086c, 0x0570, 0x002c,
1517 0x01e0, 0x085c, 0x0590, 0x0034,
1518 0x01c8, 0x084c, 0x05b4, 0x0038,
1519 0x01b4, 0x0840, 0x05cc, 0x0040,
1520 0x01a0, 0x0830, 0x05e8, 0x0048,
1521 0x018c, 0x081c, 0x0608, 0x0050,
1522 0x0178, 0x080c, 0x0624, 0x0058,
1523 0x0164, 0x07f8, 0x0644, 0x0060,
1524 0x0150, 0x07e4, 0x0660, 0x006c,
1525 0x0140, 0x07d0, 0x067c, 0x0074,
1526 0x012c, 0x07bc, 0x0698, 0x0080,
1527 0x011c, 0x07a8, 0x06b0, 0x008c,
1528 0x010c, 0x0790, 0x06cc, 0x0098,
1529 0x00fc, 0x077c, 0x06e4, 0x00a4,
1530 0x00ec, 0x0764, 0x0700, 0x00b0,
1531 0x00dc, 0x074c, 0x0718, 0x00c0,
1532 0x00cc, 0x0734, 0x0734, 0x00cc,
1533 };
1534
1535 static const uint16_t easf_filter_4tap_64p_ratio_0_60_s1_12[132] = {
1536 0x0320, 0x09bc, 0x0324, 0x0000,
1537 0x0300, 0x09c0, 0x0344, 0x3ffc,
1538 0x02e0, 0x09c0, 0x0364, 0x3ffc,
1539 0x02c4, 0x09c0, 0x0384, 0x3ff8,
1540 0x02a4, 0x09bc, 0x03ac, 0x3ff4,
1541 0x0288, 0x09b8, 0x03cc, 0x3ff4,
1542 0x0268, 0x09b4, 0x03f4, 0x3ff0,
1543 0x024c, 0x09b0, 0x0414, 0x3ff0,
1544 0x0230, 0x09a8, 0x043c, 0x3fec,
1545 0x0214, 0x09a0, 0x0460, 0x3fec,
1546 0x01f8, 0x0994, 0x0488, 0x3fec,
1547 0x01e0, 0x098c, 0x04a8, 0x3fec,
1548 0x01c4, 0x0980, 0x04d0, 0x3fec,
1549 0x01ac, 0x0970, 0x04f8, 0x3fec,
1550 0x0194, 0x0964, 0x051c, 0x3fec,
1551 0x017c, 0x0954, 0x0544, 0x3fec,
1552 0x0164, 0x0944, 0x0568, 0x3ff0,
1553 0x0150, 0x0934, 0x058c, 0x3ff0,
1554 0x0138, 0x0920, 0x05b4, 0x3ff4,
1555 0x0124, 0x090c, 0x05d8, 0x3ff8,
1556 0x0110, 0x08f8, 0x05fc, 0x3ffc,
1557 0x00fc, 0x08e0, 0x0624, 0x0000,
1558 0x00e8, 0x08c8, 0x064c, 0x0004,
1559 0x00d8, 0x08b0, 0x0670, 0x0008,
1560 0x00c4, 0x0898, 0x0694, 0x0010,
1561 0x00b4, 0x087c, 0x06bc, 0x0014,
1562 0x00a4, 0x0860, 0x06e0, 0x001c,
1563 0x0094, 0x0844, 0x0704, 0x0024,
1564 0x0088, 0x0828, 0x0724, 0x002c,
1565 0x0078, 0x080c, 0x0748, 0x0034,
1566 0x006c, 0x07ec, 0x0768, 0x0040,
1567 0x0060, 0x07cc, 0x078c, 0x0048,
1568 0x0054, 0x07ac, 0x07ac, 0x0054,
1569 };
1570
1571 static const uint16_t easf_filter_4tap_64p_ratio_0_70_s1_12[132] = {
1572 0x028c, 0x0ae4, 0x0290, 0x0000,
1573 0x0268, 0x0ae8, 0x02b4, 0x3ffc,
1574 0x0248, 0x0ae8, 0x02d8, 0x3ff8,
1575 0x0224, 0x0ae8, 0x0304, 0x3ff0,
1576 0x0204, 0x0ae4, 0x032c, 0x3fec,
1577 0x01e4, 0x0ae0, 0x0354, 0x3fe8,
1578 0x01c4, 0x0adc, 0x037c, 0x3fe4,
1579 0x01a4, 0x0ad4, 0x03a8, 0x3fe0,
1580 0x0188, 0x0acc, 0x03d0, 0x3fdc,
1581 0x016c, 0x0ac0, 0x03fc, 0x3fd8,
1582 0x0150, 0x0ab4, 0x042c, 0x3fd0,
1583 0x0134, 0x0aa4, 0x045c, 0x3fcc,
1584 0x0118, 0x0a94, 0x048c, 0x3fc8,
1585 0x0100, 0x0a84, 0x04b4, 0x3fc8,
1586 0x00e8, 0x0a70, 0x04e4, 0x3fc4,
1587 0x00d0, 0x0a5c, 0x0514, 0x3fc0,
1588 0x00bc, 0x0a48, 0x0540, 0x3fbc,
1589 0x00a4, 0x0a30, 0x0570, 0x3fbc,
1590 0x0090, 0x0a14, 0x05a4, 0x3fb8,
1591 0x007c, 0x09fc, 0x05d0, 0x3fb8,
1592 0x006c, 0x09e0, 0x05fc, 0x3fb8,
1593 0x0058, 0x09c0, 0x0634, 0x3fb4,
1594 0x0048, 0x09a0, 0x0664, 0x3fb4,
1595 0x0038, 0x0980, 0x0690, 0x3fb8,
1596 0x002c, 0x0960, 0x06bc, 0x3fb8,
1597 0x001c, 0x093c, 0x06f0, 0x3fb8,
1598 0x0010, 0x0918, 0x071c, 0x3fbc,
1599 0x0004, 0x08f4, 0x074c, 0x3fbc,
1600 0x3ff8, 0x08cc, 0x077c, 0x3fc0,
1601 0x3ff0, 0x08a4, 0x07a8, 0x3fc4,
1602 0x3fe8, 0x087c, 0x07d0, 0x3fcc,
1603 0x3fe0, 0x0854, 0x07fc, 0x3fd0,
1604 0x3fd8, 0x0828, 0x0828, 0x3fd8,
1605 };
1606
1607 static const uint16_t easf_filter_4tap_64p_ratio_0_80_s1_12[132] = {
1608 0x01d4, 0x0c54, 0x01d8, 0x0000,
1609 0x01b0, 0x0c58, 0x01fc, 0x3ffc,
1610 0x0188, 0x0c58, 0x0228, 0x3ff8,
1611 0x0164, 0x0c54, 0x0258, 0x3ff0,
1612 0x0140, 0x0c50, 0x0284, 0x3fec,
1613 0x0120, 0x0c48, 0x02b4, 0x3fe4,
1614 0x0100, 0x0c40, 0x02e0, 0x3fe0,
1615 0x00e0, 0x0c34, 0x0314, 0x3fd8,
1616 0x00c0, 0x0c28, 0x0344, 0x3fd4,
1617 0x00a4, 0x0c18, 0x0378, 0x3fcc,
1618 0x0088, 0x0c04, 0x03ac, 0x3fc8,
1619 0x0070, 0x0bf0, 0x03e0, 0x3fc0,
1620 0x0054, 0x0bdc, 0x0418, 0x3fb8,
1621 0x0040, 0x0bc4, 0x0448, 0x3fb4,
1622 0x0028, 0x0ba8, 0x0484, 0x3fac,
1623 0x0014, 0x0b8c, 0x04bc, 0x3fa4,
1624 0x0000, 0x0b6c, 0x04f4, 0x3fa0,
1625 0x3fec, 0x0b4c, 0x0530, 0x3f98,
1626 0x3fdc, 0x0b28, 0x0568, 0x3f94,
1627 0x3fcc, 0x0b04, 0x05a4, 0x3f8c,
1628 0x3fc0, 0x0adc, 0x05dc, 0x3f88,
1629 0x3fb0, 0x0ab4, 0x0618, 0x3f84,
1630 0x3fa4, 0x0a88, 0x0658, 0x3f7c,
1631 0x3f9c, 0x0a5c, 0x0690, 0x3f78,
1632 0x3f90, 0x0a30, 0x06cc, 0x3f74,
1633 0x3f88, 0x0a00, 0x0708, 0x3f70,
1634 0x3f80, 0x09d0, 0x0740, 0x3f70,
1635 0x3f7c, 0x09a0, 0x0778, 0x3f6c,
1636 0x3f74, 0x096c, 0x07b8, 0x3f68,
1637 0x3f70, 0x0938, 0x07f0, 0x3f68,
1638 0x3f6c, 0x0904, 0x0828, 0x3f68,
1639 0x3f6c, 0x08cc, 0x0860, 0x3f68,
1640 0x3f68, 0x0898, 0x0898, 0x3f68,
1641 };
1642
1643 static const uint16_t easf_filter_4tap_64p_ratio_0_90_s1_12[132] = {
1644 0x00fc, 0x0e0c, 0x00f8, 0x0000,
1645 0x00d0, 0x0e0c, 0x0128, 0x3ffc,
1646 0x00ac, 0x0e0c, 0x0150, 0x3ff8,
1647 0x0084, 0x0e04, 0x0184, 0x3ff4,
1648 0x0064, 0x0dfc, 0x01b0, 0x3ff0,
1649 0x0040, 0x0df0, 0x01e4, 0x3fec,
1650 0x0020, 0x0de0, 0x0218, 0x3fe8,
1651 0x0004, 0x0dd0, 0x024c, 0x3fe0,
1652 0x3fe8, 0x0db8, 0x0284, 0x3fdc,
1653 0x3fcc, 0x0da0, 0x02c0, 0x3fd4,
1654 0x3fb4, 0x0d84, 0x02fc, 0x3fcc,
1655 0x3fa0, 0x0d68, 0x0334, 0x3fc4,
1656 0x3f88, 0x0d48, 0x0370, 0x3fc0,
1657 0x3f78, 0x0d24, 0x03ac, 0x3fb8,
1658 0x3f64, 0x0cfc, 0x03f0, 0x3fb0,
1659 0x3f54, 0x0cd4, 0x0434, 0x3fa4,
1660 0x3f48, 0x0ca8, 0x0474, 0x3f9c,
1661 0x3f3c, 0x0c78, 0x04b8, 0x3f94,
1662 0x3f30, 0x0c48, 0x04fc, 0x3f8c,
1663 0x3f28, 0x0c14, 0x0540, 0x3f84,
1664 0x3f20, 0x0be0, 0x0588, 0x3f78,
1665 0x3f18, 0x0ba8, 0x05d0, 0x3f70,
1666 0x3f14, 0x0b70, 0x0614, 0x3f68,
1667 0x3f10, 0x0b34, 0x065c, 0x3f60,
1668 0x3f0c, 0x0af8, 0x06a8, 0x3f54,
1669 0x3f0c, 0x0abc, 0x06ec, 0x3f4c,
1670 0x3f0c, 0x0a7c, 0x0734, 0x3f44,
1671 0x3f0c, 0x0a38, 0x0780, 0x3f3c,
1672 0x3f0c, 0x09f8, 0x07c8, 0x3f34,
1673 0x3f10, 0x09b4, 0x080c, 0x3f30,
1674 0x3f14, 0x0970, 0x0854, 0x3f28,
1675 0x3f18, 0x092c, 0x089c, 0x3f20,
1676 0x3f1c, 0x08e4, 0x08e4, 0x3f1c,
1677 };
1678
1679 static const uint16_t easf_filter_4tap_64p_ratio_1_00_s1_12[132] = {
1680 0x0000, 0x1000, 0x0000, 0x0000,
1681 0x3fd8, 0x0ffc, 0x002c, 0x0000,
1682 0x3fb4, 0x0ff8, 0x0054, 0x0000,
1683 0x3f90, 0x0fec, 0x0088, 0x3ffc,
1684 0x3f70, 0x0fdc, 0x00b8, 0x3ffc,
1685 0x3f54, 0x0fc8, 0x00ec, 0x3ff8,
1686 0x3f38, 0x0fb0, 0x0120, 0x3ff8,
1687 0x3f20, 0x0f94, 0x0158, 0x3ff4,
1688 0x3f0c, 0x0f70, 0x0194, 0x3ff0,
1689 0x3ef8, 0x0f4c, 0x01d4, 0x3fe8,
1690 0x3ee4, 0x0f24, 0x0214, 0x3fe4,
1691 0x3ed8, 0x0ef8, 0x0250, 0x3fe0,
1692 0x3ec8, 0x0ec8, 0x0298, 0x3fd8,
1693 0x3ec0, 0x0e94, 0x02dc, 0x3fd0,
1694 0x3eb4, 0x0e5c, 0x0328, 0x3fc8,
1695 0x3eac, 0x0e24, 0x0370, 0x3fc0,
1696 0x3ea8, 0x0de4, 0x03bc, 0x3fb8,
1697 0x3ea4, 0x0da4, 0x0408, 0x3fb0,
1698 0x3ea4, 0x0d64, 0x0454, 0x3fa4,
1699 0x3ea4, 0x0d20, 0x04a4, 0x3f98,
1700 0x3ea4, 0x0cd8, 0x04f4, 0x3f90,
1701 0x3ea4, 0x0c8c, 0x054c, 0x3f84,
1702 0x3ea8, 0x0c40, 0x05a0, 0x3f78,
1703 0x3eb0, 0x0bf4, 0x05f0, 0x3f6c,
1704 0x3eb4, 0x0ba4, 0x0648, 0x3f60,
1705 0x3ebc, 0x0b54, 0x069c, 0x3f54,
1706 0x3ec4, 0x0b00, 0x06f4, 0x3f48,
1707 0x3ecc, 0x0ab0, 0x0748, 0x3f3c,
1708 0x3ed4, 0x0a58, 0x07a4, 0x3f30,
1709 0x3ee0, 0x0a04, 0x07f8, 0x3f24,
1710 0x3ee8, 0x09b0, 0x0850, 0x3f18,
1711 0x3ef4, 0x0958, 0x08a8, 0x3f0c,
1712 0x3f00, 0x0900, 0x0900, 0x3f00,
1713 };
1714
1715 static const uint16_t easf_filter_6tap_64p_ratio_0_30_s1_12[198] = {
1716 0x012c, 0x0400, 0x05a4, 0x0404, 0x012c, 0x0000,
1717 0x0124, 0x03f4, 0x05a4, 0x040c, 0x0138, 0x0000,
1718 0x011c, 0x03e8, 0x05a4, 0x0418, 0x0140, 0x0000,
1719 0x0114, 0x03dc, 0x05a0, 0x0424, 0x0148, 0x0004,
1720 0x010c, 0x03d4, 0x05a0, 0x042c, 0x0150, 0x0004,
1721 0x0100, 0x03c8, 0x05a0, 0x0438, 0x015c, 0x0004,
1722 0x00f8, 0x03bc, 0x05a0, 0x0440, 0x0164, 0x0008,
1723 0x00f0, 0x03b0, 0x059c, 0x044c, 0x0170, 0x0008,
1724 0x00e8, 0x03a4, 0x059c, 0x0458, 0x0178, 0x0008,
1725 0x00e0, 0x0398, 0x0598, 0x0460, 0x0184, 0x000c,
1726 0x00d8, 0x038c, 0x0594, 0x0470, 0x018c, 0x000c,
1727 0x00d0, 0x0380, 0x0594, 0x0474, 0x0198, 0x0010,
1728 0x00cc, 0x0374, 0x0590, 0x0480, 0x01a0, 0x0010,
1729 0x00c4, 0x0368, 0x058c, 0x0488, 0x01ac, 0x0014,
1730 0x00bc, 0x035c, 0x058c, 0x0494, 0x01b4, 0x0014,
1731 0x00b4, 0x034c, 0x0588, 0x04a0, 0x01c0, 0x0018,
1732 0x00ac, 0x0340, 0x0584, 0x04a8, 0x01cc, 0x001c,
1733 0x00a8, 0x0334, 0x0580, 0x04b4, 0x01d4, 0x001c,
1734 0x00a0, 0x0328, 0x057c, 0x04bc, 0x01e0, 0x0020,
1735 0x0098, 0x031c, 0x0578, 0x04c4, 0x01ec, 0x0024,
1736 0x0094, 0x0310, 0x0574, 0x04cc, 0x01f8, 0x0024,
1737 0x008c, 0x0304, 0x0570, 0x04d8, 0x0200, 0x0028,
1738 0x0088, 0x02f8, 0x0568, 0x04e0, 0x020c, 0x002c,
1739 0x0080, 0x02ec, 0x0564, 0x04e8, 0x0218, 0x0030,
1740 0x007c, 0x02e0, 0x0560, 0x04ec, 0x0224, 0x0034,
1741 0x0078, 0x02d4, 0x0558, 0x04f8, 0x0230, 0x0034,
1742 0x0070, 0x02c8, 0x0554, 0x0500, 0x023c, 0x0038,
1743 0x006c, 0x02bc, 0x054c, 0x050c, 0x0244, 0x003c,
1744 0x0064, 0x02b0, 0x0548, 0x0514, 0x0250, 0x0040,
1745 0x0060, 0x02a4, 0x0540, 0x051c, 0x025c, 0x0044,
1746 0x005c, 0x0298, 0x053c, 0x0520, 0x0268, 0x0048,
1747 0x0058, 0x028c, 0x0534, 0x0524, 0x0274, 0x0050,
1748 0x0054, 0x0280, 0x052c, 0x052c, 0x0280, 0x0054,
1749 };
1750
1751 static const uint16_t easf_filter_6tap_64p_ratio_0_40_s1_12[198] = {
1752 0x00a0, 0x0418, 0x068c, 0x041c, 0x00a0, 0x0000,
1753 0x0098, 0x0408, 0x068c, 0x0428, 0x00ac, 0x0000,
1754 0x0090, 0x03f8, 0x068c, 0x043c, 0x00b4, 0x3ffc,
1755 0x0088, 0x03e8, 0x068c, 0x044c, 0x00bc, 0x3ffc,
1756 0x0084, 0x03d8, 0x068c, 0x0458, 0x00c4, 0x3ffc,
1757 0x007c, 0x03c8, 0x0688, 0x046c, 0x00d0, 0x3ff8,
1758 0x0074, 0x03b8, 0x0688, 0x047c, 0x00d8, 0x3ff8,
1759 0x006c, 0x03a8, 0x0684, 0x048c, 0x00e4, 0x3ff8,
1760 0x0064, 0x0398, 0x0684, 0x049c, 0x00ec, 0x3ff8,
1761 0x0060, 0x0388, 0x0680, 0x04a8, 0x00f8, 0x3ff8,
1762 0x0058, 0x0378, 0x0680, 0x04b8, 0x0104, 0x3ff4,
1763 0x0054, 0x0368, 0x067c, 0x04c8, 0x010c, 0x3ff4,
1764 0x004c, 0x0358, 0x0678, 0x04d8, 0x0118, 0x3ff4,
1765 0x0048, 0x0348, 0x0674, 0x04e4, 0x0124, 0x3ff4,
1766 0x0040, 0x0338, 0x0670, 0x04f4, 0x0130, 0x3ff4,
1767 0x003c, 0x0328, 0x0668, 0x0504, 0x013c, 0x3ff4,
1768 0x0038, 0x0318, 0x0664, 0x0510, 0x0148, 0x3ff4,
1769 0x0034, 0x0308, 0x065c, 0x0520, 0x0154, 0x3ff4,
1770 0x002c, 0x02f8, 0x0658, 0x0530, 0x0160, 0x3ff4,
1771 0x0028, 0x02e8, 0x0654, 0x053c, 0x016c, 0x3ff4,
1772 0x0024, 0x02d8, 0x064c, 0x054c, 0x0178, 0x3ff4,
1773 0x0020, 0x02c8, 0x0644, 0x055c, 0x0184, 0x3ff4,
1774 0x001c, 0x02b8, 0x0640, 0x0568, 0x0190, 0x3ff4,
1775 0x0018, 0x02a8, 0x0638, 0x0574, 0x01a0, 0x3ff4,
1776 0x0014, 0x0298, 0x0630, 0x0584, 0x01ac, 0x3ff4,
1777 0x0014, 0x0288, 0x0624, 0x0590, 0x01bc, 0x3ff4,
1778 0x0010, 0x0278, 0x061c, 0x059c, 0x01c8, 0x3ff8,
1779 0x000c, 0x0268, 0x0614, 0x05ac, 0x01d4, 0x3ff8,
1780 0x0008, 0x0258, 0x060c, 0x05b8, 0x01e4, 0x3ff8,
1781 0x0008, 0x024c, 0x0600, 0x05bc, 0x01f4, 0x3ffc,
1782 0x0004, 0x023c, 0x05f8, 0x05cc, 0x0200, 0x3ffc,
1783 0x0004, 0x022c, 0x05ec, 0x05d4, 0x0210, 0x0000,
1784 0x0000, 0x021c, 0x05e4, 0x05e4, 0x021c, 0x0000,
1785 };
1786
1787 static const uint16_t easf_filter_6tap_64p_ratio_0_50_s1_12[198] = {
1788 0x0000, 0x041c, 0x07cc, 0x0418, 0x0000, 0x0000,
1789 0x3ff8, 0x0404, 0x07cc, 0x0434, 0x0008, 0x3ffc,
1790 0x3ff4, 0x03ec, 0x07cc, 0x044c, 0x000c, 0x3ffc,
1791 0x3ff0, 0x03d8, 0x07cc, 0x0460, 0x0014, 0x3ff8,
1792 0x3fe8, 0x03c0, 0x07cc, 0x0478, 0x001c, 0x3ff8,
1793 0x3fe4, 0x03ac, 0x07c8, 0x0490, 0x0024, 0x3ff4,
1794 0x3fe0, 0x0394, 0x07c8, 0x04a4, 0x002c, 0x3ff4,
1795 0x3fdc, 0x0380, 0x07c4, 0x04bc, 0x0034, 0x3ff0,
1796 0x3fd8, 0x0368, 0x07c0, 0x04d4, 0x0040, 0x3fec,
1797 0x3fd4, 0x0350, 0x07bc, 0x04ec, 0x0048, 0x3fec,
1798 0x3fd0, 0x033c, 0x07b8, 0x0504, 0x0050, 0x3fe8,
1799 0x3fcc, 0x0324, 0x07b4, 0x051c, 0x005c, 0x3fe4,
1800 0x3fc8, 0x0310, 0x07ac, 0x0530, 0x0068, 0x3fe4,
1801 0x3fc4, 0x02fc, 0x07a8, 0x0548, 0x0070, 0x3fe0,
1802 0x3fc4, 0x02e4, 0x07a0, 0x055c, 0x007c, 0x3fe0,
1803 0x3fc0, 0x02d0, 0x0798, 0x0574, 0x0088, 0x3fdc,
1804 0x3fc0, 0x02b8, 0x0790, 0x058c, 0x0094, 0x3fd8,
1805 0x3fbc, 0x02a4, 0x0788, 0x05a0, 0x00a0, 0x3fd8,
1806 0x3fbc, 0x0290, 0x077c, 0x05b8, 0x00ac, 0x3fd4,
1807 0x3fbc, 0x027c, 0x0774, 0x05c8, 0x00b8, 0x3fd4,
1808 0x3fb8, 0x0268, 0x0768, 0x05e0, 0x00c8, 0x3fd0,
1809 0x3fb8, 0x0250, 0x0760, 0x05f8, 0x00d4, 0x3fcc,
1810 0x3fb8, 0x023c, 0x0754, 0x0608, 0x00e4, 0x3fcc,
1811 0x3fb8, 0x0228, 0x0748, 0x0620, 0x00f0, 0x3fc8,
1812 0x3fb8, 0x0214, 0x073c, 0x0630, 0x0100, 0x3fc8,
1813 0x3fb8, 0x0204, 0x072c, 0x0644, 0x0110, 0x3fc4,
1814 0x3fb8, 0x01f0, 0x0720, 0x0658, 0x011c, 0x3fc4,
1815 0x3fb8, 0x01dc, 0x0710, 0x0670, 0x012c, 0x3fc0,
1816 0x3fb8, 0x01c8, 0x0704, 0x0680, 0x013c, 0x3fc0,
1817 0x3fb8, 0x01b8, 0x06f4, 0x0690, 0x014c, 0x3fc0,
1818 0x3fb8, 0x01a4, 0x06e4, 0x06a4, 0x0160, 0x3fbc,
1819 0x3fb8, 0x0194, 0x06d4, 0x06b4, 0x0170, 0x3fbc,
1820 0x3fbc, 0x0180, 0x06c4, 0x06c4, 0x0180, 0x3fbc,
1821 };
1822
1823 static const uint16_t easf_filter_6tap_64p_ratio_0_60_s1_12[198] = {
1824 0x3f64, 0x03ec, 0x0960, 0x03ec, 0x3f64, 0x0000,
1825 0x3f64, 0x03cc, 0x0960, 0x0408, 0x3f68, 0x0000,
1826 0x3f60, 0x03ac, 0x0960, 0x042c, 0x3f6c, 0x3ffc,
1827 0x3f60, 0x038c, 0x0960, 0x0448, 0x3f70, 0x3ffc,
1828 0x3f60, 0x0370, 0x095c, 0x046c, 0x3f70, 0x3ff8,
1829 0x3f5c, 0x0350, 0x0958, 0x048c, 0x3f78, 0x3ff8,
1830 0x3f5c, 0x0334, 0x0954, 0x04ac, 0x3f7c, 0x3ff4,
1831 0x3f5c, 0x0314, 0x0950, 0x04cc, 0x3f80, 0x3ff4,
1832 0x3f5c, 0x02f8, 0x0948, 0x04f0, 0x3f84, 0x3ff0,
1833 0x3f5c, 0x02d8, 0x0944, 0x050c, 0x3f8c, 0x3ff0,
1834 0x3f60, 0x02bc, 0x093c, 0x052c, 0x3f90, 0x3fec,
1835 0x3f60, 0x02a0, 0x0930, 0x0550, 0x3f98, 0x3fe8,
1836 0x3f60, 0x0284, 0x0928, 0x056c, 0x3fa0, 0x3fe8,
1837 0x3f64, 0x0268, 0x091c, 0x058c, 0x3fa8, 0x3fe4,
1838 0x3f64, 0x024c, 0x0910, 0x05b0, 0x3fb0, 0x3fe0,
1839 0x3f64, 0x0230, 0x0904, 0x05d0, 0x3fbc, 0x3fdc,
1840 0x3f68, 0x0214, 0x08f8, 0x05ec, 0x3fc4, 0x3fdc,
1841 0x3f6c, 0x01fc, 0x08e8, 0x060c, 0x3fcc, 0x3fd8,
1842 0x3f6c, 0x01e0, 0x08dc, 0x062c, 0x3fd8, 0x3fd4,
1843 0x3f70, 0x01c8, 0x08cc, 0x0648, 0x3fe4, 0x3fd0,
1844 0x3f74, 0x01b0, 0x08bc, 0x0664, 0x3ff0, 0x3fcc,
1845 0x3f74, 0x0194, 0x08a8, 0x068c, 0x3ffc, 0x3fc8,
1846 0x3f78, 0x017c, 0x0898, 0x06a8, 0x0008, 0x3fc4,
1847 0x3f7c, 0x0168, 0x0884, 0x06c0, 0x0018, 0x3fc0,
1848 0x3f80, 0x0150, 0x0870, 0x06dc, 0x0024, 0x3fc0,
1849 0x3f84, 0x0138, 0x085c, 0x06f8, 0x0034, 0x3fbc,
1850 0x3f88, 0x0120, 0x0848, 0x0718, 0x0040, 0x3fb8,
1851 0x3f8c, 0x010c, 0x0830, 0x0734, 0x0050, 0x3fb4,
1852 0x3f90, 0x00f8, 0x081c, 0x074c, 0x0060, 0x3fb0,
1853 0x3f94, 0x00e4, 0x0800, 0x0768, 0x0074, 0x3fac,
1854 0x3f98, 0x00d0, 0x07e8, 0x0784, 0x0084, 0x3fa8,
1855 0x3f9c, 0x00bc, 0x07d4, 0x079c, 0x0094, 0x3fa4,
1856 0x3fa0, 0x00a8, 0x07b8, 0x07b8, 0x00a8, 0x3fa0,
1857 };
1858
1859 static const uint16_t easf_filter_6tap_64p_ratio_0_70_s1_12[198] = {
1860 0x3f00, 0x0368, 0x0b30, 0x0368, 0x3f00, 0x0000,
1861 0x3f04, 0x0340, 0x0b30, 0x0390, 0x3efc, 0x0000,
1862 0x3f08, 0x0318, 0x0b2c, 0x03bc, 0x3ef8, 0x0000,
1863 0x3f0c, 0x02f0, 0x0b28, 0x03e4, 0x3ef8, 0x0000,
1864 0x3f10, 0x02c8, 0x0b24, 0x0410, 0x3ef4, 0x0000,
1865 0x3f14, 0x02a0, 0x0b1c, 0x043c, 0x3ef4, 0x0000,
1866 0x3f1c, 0x027c, 0x0b14, 0x0464, 0x3ef0, 0x0000,
1867 0x3f20, 0x0254, 0x0b0c, 0x0490, 0x3ef0, 0x0000,
1868 0x3f24, 0x0230, 0x0b00, 0x04bc, 0x3ef0, 0x0000,
1869 0x3f2c, 0x020c, 0x0af4, 0x04e4, 0x3ef0, 0x0000,
1870 0x3f30, 0x01e8, 0x0ae8, 0x0510, 0x3ef0, 0x0000,
1871 0x3f38, 0x01c8, 0x0ad8, 0x0534, 0x3ef4, 0x0000,
1872 0x3f40, 0x01a4, 0x0ac8, 0x0564, 0x3ef4, 0x3ffc,
1873 0x3f44, 0x0184, 0x0ab4, 0x0590, 0x3ef8, 0x3ffc,
1874 0x3f4c, 0x0164, 0x0aa4, 0x05b8, 0x3efc, 0x3ff8,
1875 0x3f50, 0x0144, 0x0a90, 0x05e8, 0x3efc, 0x3ff8,
1876 0x3f58, 0x0124, 0x0a78, 0x0610, 0x3f04, 0x3ff8,
1877 0x3f60, 0x0108, 0x0a64, 0x0638, 0x3f08, 0x3ff4,
1878 0x3f64, 0x00e8, 0x0a4c, 0x066c, 0x3f0c, 0x3ff0,
1879 0x3f6c, 0x00cc, 0x0a34, 0x0690, 0x3f14, 0x3ff0,
1880 0x3f70, 0x00b4, 0x0a18, 0x06bc, 0x3f1c, 0x3fec,
1881 0x3f78, 0x0098, 0x0a00, 0x06e8, 0x3f20, 0x3fe8,
1882 0x3f80, 0x007c, 0x09e4, 0x0710, 0x3f2c, 0x3fe4,
1883 0x3f84, 0x0064, 0x09c8, 0x0738, 0x3f34, 0x3fe4,
1884 0x3f8c, 0x004c, 0x09a8, 0x0764, 0x3f3c, 0x3fe0,
1885 0x3f90, 0x0034, 0x098c, 0x078c, 0x3f48, 0x3fdc,
1886 0x3f98, 0x0020, 0x096c, 0x07b0, 0x3f54, 0x3fd8,
1887 0x3f9c, 0x0008, 0x094c, 0x07dc, 0x3f60, 0x3fd4,
1888 0x3fa4, 0x3ff4, 0x0928, 0x0808, 0x3f6c, 0x3fcc,
1889 0x3fa8, 0x3fe0, 0x0908, 0x082c, 0x3f7c, 0x3fc8,
1890 0x3fb0, 0x3fcc, 0x08e4, 0x0854, 0x3f88, 0x3fc4,
1891 0x3fb4, 0x3fbc, 0x08c0, 0x0878, 0x3f98, 0x3fc0,
1892 0x3fbc, 0x3fac, 0x0898, 0x0898, 0x3fac, 0x3fbc,
1893 };
1894
1895 static const uint16_t easf_filter_6tap_64p_ratio_0_80_s1_12[198] = {
1896 0x3efc, 0x0284, 0x0d00, 0x0284, 0x3efc, 0x0000,
1897 0x3f04, 0x0254, 0x0d00, 0x02b4, 0x3ef0, 0x0004,
1898 0x3f10, 0x0224, 0x0cf8, 0x02e8, 0x3ee8, 0x0004,
1899 0x3f18, 0x01f4, 0x0cf4, 0x0318, 0x3ee0, 0x0008,
1900 0x3f24, 0x01c8, 0x0ce8, 0x034c, 0x3ed8, 0x0008,
1901 0x3f30, 0x019c, 0x0ce0, 0x037c, 0x3ecc, 0x000c,
1902 0x3f38, 0x0170, 0x0cd0, 0x03b8, 0x3ec4, 0x000c,
1903 0x3f44, 0x0144, 0x0cc4, 0x03e8, 0x3ebc, 0x0010,
1904 0x3f4c, 0x011c, 0x0cb4, 0x0420, 0x3eb4, 0x0010,
1905 0x3f58, 0x00f4, 0x0ca0, 0x0458, 0x3eac, 0x0010,
1906 0x3f60, 0x00cc, 0x0c8c, 0x048c, 0x3ea8, 0x0014,
1907 0x3f6c, 0x00a8, 0x0c74, 0x04c4, 0x3ea0, 0x0014,
1908 0x3f74, 0x0084, 0x0c5c, 0x04fc, 0x3e9c, 0x0014,
1909 0x3f7c, 0x0060, 0x0c44, 0x0534, 0x3e94, 0x0018,
1910 0x3f88, 0x0040, 0x0c28, 0x0568, 0x3e90, 0x0018,
1911 0x3f90, 0x0020, 0x0c08, 0x05a4, 0x3e8c, 0x0018,
1912 0x3f98, 0x0000, 0x0bec, 0x05dc, 0x3e88, 0x0018,
1913 0x3fa0, 0x3fe4, 0x0bcc, 0x0614, 0x3e84, 0x0018,
1914 0x3fac, 0x3fc4, 0x0ba8, 0x064c, 0x3e84, 0x0018,
1915 0x3fb4, 0x3fac, 0x0b84, 0x0684, 0x3e80, 0x0018,
1916 0x3fb8, 0x3f90, 0x0b60, 0x06c0, 0x3e80, 0x0018,
1917 0x3fc0, 0x3f78, 0x0b38, 0x06f8, 0x3e80, 0x0018,
1918 0x3fc8, 0x3f60, 0x0b14, 0x072c, 0x3e80, 0x0018,
1919 0x3fd0, 0x3f4c, 0x0ae8, 0x0760, 0x3e84, 0x0018,
1920 0x3fd8, 0x3f34, 0x0ac0, 0x079c, 0x3e84, 0x0014,
1921 0x3fdc, 0x3f20, 0x0a94, 0x07d4, 0x3e88, 0x0014,
1922 0x3fe4, 0x3f10, 0x0a68, 0x0808, 0x3e8c, 0x0010,
1923 0x3fe8, 0x3f00, 0x0a38, 0x0840, 0x3e90, 0x0010,
1924 0x3fec, 0x3ef0, 0x0a0c, 0x0874, 0x3e98, 0x000c,
1925 0x3ff4, 0x3ee0, 0x09d8, 0x08a8, 0x3ea0, 0x000c,
1926 0x3ff8, 0x3ed0, 0x09ac, 0x08dc, 0x3ea8, 0x0008,
1927 0x3ffc, 0x3ec4, 0x0978, 0x0914, 0x3eb0, 0x0004,
1928 0x0000, 0x3eb8, 0x0948, 0x0948, 0x3eb8, 0x0000,
1929 };
1930
1931 static const uint16_t easf_filter_6tap_64p_ratio_0_90_s1_12[198] = {
1932 0x3f60, 0x0154, 0x0e9c, 0x0150, 0x3f60, 0x0000,
1933 0x3f6c, 0x011c, 0x0e9c, 0x018c, 0x3f50, 0x0000,
1934 0x3f7c, 0x00ec, 0x0e94, 0x01bc, 0x3f44, 0x0004,
1935 0x3f88, 0x00b8, 0x0e8c, 0x01f8, 0x3f34, 0x0008,
1936 0x3f94, 0x0088, 0x0e80, 0x0234, 0x3f28, 0x0008,
1937 0x3fa0, 0x005c, 0x0e74, 0x026c, 0x3f18, 0x000c,
1938 0x3fac, 0x0030, 0x0e60, 0x02b0, 0x3f08, 0x000c,
1939 0x3fb8, 0x0004, 0x0e50, 0x02e8, 0x3efc, 0x0010,
1940 0x3fc4, 0x3fdc, 0x0e38, 0x0328, 0x3eec, 0x0014,
1941 0x3fd0, 0x3fb4, 0x0e20, 0x0368, 0x3ee0, 0x0014,
1942 0x3fd8, 0x3f90, 0x0e04, 0x03ac, 0x3ed0, 0x0018,
1943 0x3fe4, 0x3f6c, 0x0de8, 0x03e8, 0x3ec4, 0x001c,
1944 0x3fec, 0x3f4c, 0x0dc8, 0x042c, 0x3eb4, 0x0020,
1945 0x3ff4, 0x3f2c, 0x0da4, 0x0474, 0x3ea8, 0x0020,
1946 0x0000, 0x3f0c, 0x0d80, 0x04b8, 0x3e98, 0x0024,
1947 0x0008, 0x3ef0, 0x0d58, 0x04fc, 0x3e8c, 0x0028,
1948 0x000c, 0x3ed8, 0x0d30, 0x0540, 0x3e80, 0x002c,
1949 0x0014, 0x3ec0, 0x0d04, 0x0588, 0x3e74, 0x002c,
1950 0x001c, 0x3ea8, 0x0cd8, 0x05cc, 0x3e68, 0x0030,
1951 0x0020, 0x3e94, 0x0ca8, 0x0614, 0x3e5c, 0x0034,
1952 0x0028, 0x3e80, 0x0c78, 0x065c, 0x3e50, 0x0034,
1953 0x002c, 0x3e6c, 0x0c44, 0x06a4, 0x3e48, 0x0038,
1954 0x0030, 0x3e5c, 0x0c0c, 0x06f0, 0x3e3c, 0x003c,
1955 0x0034, 0x3e50, 0x0bd8, 0x0734, 0x3e34, 0x003c,
1956 0x0038, 0x3e44, 0x0ba0, 0x0778, 0x3e2c, 0x0040,
1957 0x003c, 0x3e38, 0x0b64, 0x07c4, 0x3e24, 0x0040,
1958 0x0040, 0x3e2c, 0x0b28, 0x0808, 0x3e20, 0x0044,
1959 0x0040, 0x3e24, 0x0aec, 0x0850, 0x3e1c, 0x0044,
1960 0x0044, 0x3e1c, 0x0aac, 0x0898, 0x3e18, 0x0044,
1961 0x0044, 0x3e18, 0x0a70, 0x08d8, 0x3e14, 0x0048,
1962 0x0044, 0x3e14, 0x0a2c, 0x0924, 0x3e10, 0x0048,
1963 0x0048, 0x3e10, 0x09ec, 0x0964, 0x3e10, 0x0048,
1964 0x0048, 0x3e10, 0x09a8, 0x09a8, 0x3e10, 0x0048,
1965 };
1966
1967 static const uint16_t easf_filter_6tap_64p_ratio_1_00_s1_12[198] = {
1968 0x0000, 0x0000, 0x1000, 0x0000, 0x0000, 0x0000,
1969 0x000c, 0x3fcc, 0x1000, 0x0034, 0x3ff4, 0x0000,
1970 0x0018, 0x3f9c, 0x0ff8, 0x0070, 0x3fe4, 0x0000,
1971 0x0024, 0x3f6c, 0x0ff0, 0x00ac, 0x3fd4, 0x0000,
1972 0x0030, 0x3f40, 0x0fe4, 0x00e8, 0x3fc4, 0x0000,
1973 0x0038, 0x3f14, 0x0fd4, 0x0128, 0x3fb4, 0x0004,
1974 0x0044, 0x3eec, 0x0fc0, 0x0168, 0x3fa4, 0x0004,
1975 0x004c, 0x3ec8, 0x0fac, 0x01a8, 0x3f94, 0x0004,
1976 0x0054, 0x3ea4, 0x0f90, 0x01ec, 0x3f84, 0x0008,
1977 0x005c, 0x3e84, 0x0f74, 0x0234, 0x3f70, 0x0008,
1978 0x0060, 0x3e64, 0x0f50, 0x0280, 0x3f60, 0x000c,
1979 0x0068, 0x3e48, 0x0f2c, 0x02c8, 0x3f4c, 0x0010,
1980 0x006c, 0x3e30, 0x0f04, 0x0318, 0x3f38, 0x0010,
1981 0x0070, 0x3e18, 0x0edc, 0x0364, 0x3f24, 0x0014,
1982 0x0074, 0x3e00, 0x0eac, 0x03b8, 0x3f10, 0x0018,
1983 0x0078, 0x3df0, 0x0e7c, 0x0404, 0x3efc, 0x001c,
1984 0x007c, 0x3de0, 0x0e48, 0x0454, 0x3ee8, 0x0020,
1985 0x007c, 0x3dd0, 0x0e14, 0x04ac, 0x3ed4, 0x0020,
1986 0x0080, 0x3dc4, 0x0dd8, 0x0500, 0x3ec0, 0x0024,
1987 0x0080, 0x3db8, 0x0d9c, 0x0554, 0x3eac, 0x002c,
1988 0x0080, 0x3db0, 0x0d5c, 0x05ac, 0x3e98, 0x0030,
1989 0x0080, 0x3da8, 0x0d1c, 0x0600, 0x3e88, 0x0034,
1990 0x0080, 0x3da4, 0x0cd8, 0x0658, 0x3e74, 0x0038,
1991 0x0080, 0x3da4, 0x0c94, 0x06ac, 0x3e60, 0x003c,
1992 0x007c, 0x3da0, 0x0c4c, 0x070c, 0x3e4c, 0x0040,
1993 0x007c, 0x3da4, 0x0c00, 0x0760, 0x3e3c, 0x0044,
1994 0x0078, 0x3da4, 0x0bb4, 0x07bc, 0x3e2c, 0x0048,
1995 0x0074, 0x3da8, 0x0b64, 0x0814, 0x3e1c, 0x0050,
1996 0x0074, 0x3db0, 0x0b14, 0x0868, 0x3e0c, 0x0054,
1997 0x0070, 0x3db8, 0x0ac4, 0x08c0, 0x3dfc, 0x0058,
1998 0x006c, 0x3dc0, 0x0a70, 0x091c, 0x3dec, 0x005c,
1999 0x0068, 0x3dc8, 0x0a1c, 0x0974, 0x3de0, 0x0060,
2000 0x0064, 0x3dd4, 0x09c8, 0x09c8, 0x3dd4, 0x0064,
2001 };
2002
2003 static struct scale_ratio_to_reg_value_lookup easf_v_bf3_mode_lookup[] = {
2004 {3, 10, 0x0000},
2005 {4, 10, 0x0000},
2006 {5, 10, 0x0000},
2007 {6, 10, 0x0000},
2008 {7, 10, 0x0000},
2009 {8, 10, 0x0000},
2010 {9, 10, 0x0000},
2011 {1, 1, 0x0000},
2012 {-1, -1, 0x0002},
2013 };
2014
2015 static struct scale_ratio_to_reg_value_lookup easf_h_bf3_mode_lookup[] = {
2016 {3, 10, 0x0000},
2017 {4, 10, 0x0000},
2018 {5, 10, 0x0000},
2019 {6, 10, 0x0000},
2020 {7, 10, 0x0000},
2021 {8, 10, 0x0000},
2022 {9, 10, 0x0000},
2023 {1, 1, 0x0000},
2024 {-1, -1, 0x0002},
2025 };
2026
2027 static struct scale_ratio_to_reg_value_lookup easf_reducer_gain6_6tap_lookup[] = {
2028 {3, 10, 0x4100},
2029 {4, 10, 0x4100},
2030 {5, 10, 0x4100},
2031 {6, 10, 0x4100},
2032 {7, 10, 0x4100},
2033 {8, 10, 0x4100},
2034 {9, 10, 0x4100},
2035 {1, 1, 0x4100},
2036 {-1, -1, 0x4100},
2037 };
2038
2039 static struct scale_ratio_to_reg_value_lookup easf_reducer_gain4_6tap_lookup[] = {
2040 {3, 10, 0x4000},
2041 {4, 10, 0x4000},
2042 {5, 10, 0x4000},
2043 {6, 10, 0x4000},
2044 {7, 10, 0x4000},
2045 {8, 10, 0x4000},
2046 {9, 10, 0x4000},
2047 {1, 1, 0x4000},
2048 {-1, -1, 0x4000},
2049 };
2050
2051 static struct scale_ratio_to_reg_value_lookup easf_gain_ring6_6tap_lookup[] = {
2052 {3, 10, 0x0000},
2053 {4, 10, 0x251F},
2054 {5, 10, 0x291F},
2055 {6, 10, 0xA51F},
2056 {7, 10, 0xA51F},
2057 {8, 10, 0xAA66},
2058 {9, 10, 0xA51F},
2059 {1, 1, 0xA640},
2060 {-1, -1, 0xA640},
2061 };
2062
2063 static struct scale_ratio_to_reg_value_lookup easf_gain_ring4_6tap_lookup[] = {
2064 {3, 10, 0x0000},
2065 {4, 10, 0x9600},
2066 {5, 10, 0xA460},
2067 {6, 10, 0xA8E0},
2068 {7, 10, 0xAC00},
2069 {8, 10, 0xAD20},
2070 {9, 10, 0xAFC0},
2071 {1, 1, 0xB058},
2072 {-1, -1, 0xB058},
2073 };
2074
2075 static struct scale_ratio_to_reg_value_lookup easf_reducer_gain6_4tap_lookup[] = {
2076 {3, 10, 0x4100},
2077 {4, 10, 0x4100},
2078 {5, 10, 0x4100},
2079 {6, 10, 0x4100},
2080 {7, 10, 0x4100},
2081 {8, 10, 0x4100},
2082 {9, 10, 0x4100},
2083 {1, 1, 0x4100},
2084 {-1, -1, 0x4100},
2085 };
2086
2087 static struct scale_ratio_to_reg_value_lookup easf_reducer_gain4_4tap_lookup[] = {
2088 {3, 10, 0x4000},
2089 {4, 10, 0x4000},
2090 {5, 10, 0x4000},
2091 {6, 10, 0x4000},
2092 {7, 10, 0x4000},
2093 {8, 10, 0x4000},
2094 {9, 10, 0x4000},
2095 {1, 1, 0x4000},
2096 {-1, -1, 0x4000},
2097 };
2098
2099 static struct scale_ratio_to_reg_value_lookup easf_gain_ring6_4tap_lookup[] = {
2100 {3, 10, 0x0000},
2101 {4, 10, 0x0000},
2102 {5, 10, 0x0000},
2103 {6, 10, 0x0000},
2104 {7, 10, 0x0000},
2105 {8, 10, 0x0000},
2106 {9, 10, 0x0000},
2107 {1, 1, 0x0000},
2108 {-1, -1, 0x0000},
2109 };
2110
2111 static struct scale_ratio_to_reg_value_lookup easf_gain_ring4_4tap_lookup[] = {
2112 {3, 10, 0x0000},
2113 {4, 10, 0x0000},
2114 {5, 10, 0x0000},
2115 {6, 10, 0x9900},
2116 {7, 10, 0xA100},
2117 {8, 10, 0xA8C0},
2118 {9, 10, 0xAB20},
2119 {1, 1, 0xAC00},
2120 {-1, -1, 0xAC00},
2121 };
2122
2123 static struct scale_ratio_to_reg_value_lookup easf_3tap_dntilt_uptilt_offset_lookup[] = {
2124 {3, 10, 0x0000},
2125 {4, 10, 0x0000},
2126 {5, 10, 0x0000},
2127 {6, 10, 0x0000},
2128 {7, 10, 0x0000},
2129 {8, 10, 0x4100},
2130 {9, 10, 0x9F00},
2131 {1, 1, 0xA4C0},
2132 {-1, -1, 0xA8D8},
2133 };
2134
2135 static struct scale_ratio_to_reg_value_lookup easf_3tap_uptilt_maxval_lookup[] = {
2136 {3, 10, 0x0000},
2137 {4, 10, 0x0000},
2138 {5, 10, 0x0000},
2139 {6, 10, 0x0000},
2140 {7, 10, 0x0000},
2141 {8, 10, 0x4000},
2142 {9, 10, 0x24FE},
2143 {1, 1, 0x2D64},
2144 {-1, -1, 0x3ADB},
2145 };
2146
2147 static struct scale_ratio_to_reg_value_lookup easf_3tap_dntilt_slope_lookup[] = {
2148 {3, 10, 0x3800},
2149 {4, 10, 0x3800},
2150 {5, 10, 0x3800},
2151 {6, 10, 0x3800},
2152 {7, 10, 0x3800},
2153 {8, 10, 0x3886},
2154 {9, 10, 0x3940},
2155 {1, 1, 0x3A4E},
2156 {-1, -1, 0x3B66},
2157 };
2158
2159 static struct scale_ratio_to_reg_value_lookup easf_3tap_uptilt1_slope_lookup[] = {
2160 {3, 10, 0x3800},
2161 {4, 10, 0x3800},
2162 {5, 10, 0x3800},
2163 {6, 10, 0x3800},
2164 {7, 10, 0x3800},
2165 {8, 10, 0x36F4},
2166 {9, 10, 0x359C},
2167 {1, 1, 0x3360},
2168 {-1, -1, 0x2F20},
2169 };
2170
2171 static struct scale_ratio_to_reg_value_lookup easf_3tap_uptilt2_slope_lookup[] = {
2172 {3, 10, 0x0000},
2173 {4, 10, 0x0000},
2174 {5, 10, 0x0000},
2175 {6, 10, 0x0000},
2176 {7, 10, 0x0000},
2177 {8, 10, 0x0000},
2178 {9, 10, 0x359C},
2179 {1, 1, 0x31F0},
2180 {-1, -1, 0x1F00},
2181 };
2182
2183 static struct scale_ratio_to_reg_value_lookup easf_3tap_uptilt2_offset_lookup[] = {
2184 {3, 10, 0x0000},
2185 {4, 10, 0x0000},
2186 {5, 10, 0x0000},
2187 {6, 10, 0x0000},
2188 {7, 10, 0x0000},
2189 {8, 10, 0x0000},
2190 {9, 10, 0x9F00},
2191 {1, 1, 0xA400},
2192 {-1, -1, 0x9E00},
2193 };
2194
spl_get_easf_filter_3tap_64p(struct spl_fixed31_32 ratio)2195 static const uint16_t *spl_get_easf_filter_3tap_64p(struct spl_fixed31_32 ratio)
2196 {
2197 if (ratio.value < spl_fixpt_from_fraction(3, 10).value)
2198 return easf_filter_3tap_64p_ratio_0_30_s1_12;
2199 else if (ratio.value < spl_fixpt_from_fraction(4, 10).value)
2200 return easf_filter_3tap_64p_ratio_0_40_s1_12;
2201 else if (ratio.value < spl_fixpt_from_fraction(5, 10).value)
2202 return easf_filter_3tap_64p_ratio_0_50_s1_12;
2203 else if (ratio.value < spl_fixpt_from_fraction(6, 10).value)
2204 return easf_filter_3tap_64p_ratio_0_60_s1_12;
2205 else if (ratio.value < spl_fixpt_from_fraction(7, 10).value)
2206 return easf_filter_3tap_64p_ratio_0_70_s1_12;
2207 else if (ratio.value < spl_fixpt_from_fraction(8, 10).value)
2208 return easf_filter_3tap_64p_ratio_0_80_s1_12;
2209 else if (ratio.value < spl_fixpt_from_fraction(9, 10).value)
2210 return easf_filter_3tap_64p_ratio_0_90_s1_12;
2211 else
2212 return easf_filter_3tap_64p_ratio_1_00_s1_12;
2213 }
2214
spl_get_easf_filter_4tap_64p(struct spl_fixed31_32 ratio)2215 static const uint16_t *spl_get_easf_filter_4tap_64p(struct spl_fixed31_32 ratio)
2216 {
2217 if (ratio.value < spl_fixpt_from_fraction(3, 10).value)
2218 return easf_filter_4tap_64p_ratio_0_30_s1_12;
2219 else if (ratio.value < spl_fixpt_from_fraction(4, 10).value)
2220 return easf_filter_4tap_64p_ratio_0_40_s1_12;
2221 else if (ratio.value < spl_fixpt_from_fraction(5, 10).value)
2222 return easf_filter_4tap_64p_ratio_0_50_s1_12;
2223 else if (ratio.value < spl_fixpt_from_fraction(6, 10).value)
2224 return easf_filter_4tap_64p_ratio_0_60_s1_12;
2225 else if (ratio.value < spl_fixpt_from_fraction(7, 10).value)
2226 return easf_filter_4tap_64p_ratio_0_70_s1_12;
2227 else if (ratio.value < spl_fixpt_from_fraction(8, 10).value)
2228 return easf_filter_4tap_64p_ratio_0_80_s1_12;
2229 else if (ratio.value < spl_fixpt_from_fraction(9, 10).value)
2230 return easf_filter_4tap_64p_ratio_0_90_s1_12;
2231 else
2232 return easf_filter_4tap_64p_ratio_1_00_s1_12;
2233 }
2234
spl_get_easf_filter_6tap_64p(struct spl_fixed31_32 ratio)2235 static const uint16_t *spl_get_easf_filter_6tap_64p(struct spl_fixed31_32 ratio)
2236 {
2237 if (ratio.value < spl_fixpt_from_fraction(3, 10).value)
2238 return easf_filter_6tap_64p_ratio_0_30_s1_12;
2239 else if (ratio.value < spl_fixpt_from_fraction(4, 10).value)
2240 return easf_filter_6tap_64p_ratio_0_40_s1_12;
2241 else if (ratio.value < spl_fixpt_from_fraction(5, 10).value)
2242 return easf_filter_6tap_64p_ratio_0_50_s1_12;
2243 else if (ratio.value < spl_fixpt_from_fraction(6, 10).value)
2244 return easf_filter_6tap_64p_ratio_0_60_s1_12;
2245 else if (ratio.value < spl_fixpt_from_fraction(7, 10).value)
2246 return easf_filter_6tap_64p_ratio_0_70_s1_12;
2247 else if (ratio.value < spl_fixpt_from_fraction(8, 10).value)
2248 return easf_filter_6tap_64p_ratio_0_80_s1_12;
2249 else if (ratio.value < spl_fixpt_from_fraction(9, 10).value)
2250 return easf_filter_6tap_64p_ratio_0_90_s1_12;
2251 else
2252 return easf_filter_6tap_64p_ratio_1_00_s1_12;
2253 }
2254
spl_dscl_get_easf_filter_coeffs_64p(int taps,struct spl_fixed31_32 ratio)2255 const uint16_t *spl_dscl_get_easf_filter_coeffs_64p(int taps, struct spl_fixed31_32 ratio)
2256 {
2257 if (taps == 6)
2258 return spl_get_easf_filter_6tap_64p(ratio);
2259 else if (taps == 4)
2260 return spl_get_easf_filter_4tap_64p(ratio);
2261 else if (taps == 3)
2262 return spl_get_easf_filter_3tap_64p(ratio);
2263 else {
2264 /* should never happen, bug */
2265 SPL_BREAK_TO_DEBUGGER();
2266 return NULL;
2267 }
2268 }
2269
spl_get_easf_filter_3tap_64p_s1_10(struct spl_fixed31_32 ratio)2270 static const uint16_t *spl_get_easf_filter_3tap_64p_s1_10(struct spl_fixed31_32 ratio)
2271 {
2272 if (ratio.value < spl_fixpt_from_fraction(3, 10).value)
2273 return easf_filter_3tap_64p_ratio_0_30;
2274 else if (ratio.value < spl_fixpt_from_fraction(4, 10).value)
2275 return easf_filter_3tap_64p_ratio_0_40;
2276 else if (ratio.value < spl_fixpt_from_fraction(5, 10).value)
2277 return easf_filter_3tap_64p_ratio_0_50;
2278 else if (ratio.value < spl_fixpt_from_fraction(6, 10).value)
2279 return easf_filter_3tap_64p_ratio_0_60;
2280 else if (ratio.value < spl_fixpt_from_fraction(7, 10).value)
2281 return easf_filter_3tap_64p_ratio_0_70;
2282 else if (ratio.value < spl_fixpt_from_fraction(8, 10).value)
2283 return easf_filter_3tap_64p_ratio_0_80;
2284 else if (ratio.value < spl_fixpt_from_fraction(9, 10).value)
2285 return easf_filter_3tap_64p_ratio_0_90;
2286 else
2287 return easf_filter_3tap_64p_ratio_1_00;
2288 }
2289
spl_get_easf_filter_4tap_64p_s1_10(struct spl_fixed31_32 ratio)2290 static const uint16_t *spl_get_easf_filter_4tap_64p_s1_10(struct spl_fixed31_32 ratio)
2291 {
2292 if (ratio.value < spl_fixpt_from_fraction(3, 10).value)
2293 return easf_filter_4tap_64p_ratio_0_30;
2294 else if (ratio.value < spl_fixpt_from_fraction(4, 10).value)
2295 return easf_filter_4tap_64p_ratio_0_40;
2296 else if (ratio.value < spl_fixpt_from_fraction(5, 10).value)
2297 return easf_filter_4tap_64p_ratio_0_50;
2298 else if (ratio.value < spl_fixpt_from_fraction(6, 10).value)
2299 return easf_filter_4tap_64p_ratio_0_60;
2300 else if (ratio.value < spl_fixpt_from_fraction(7, 10).value)
2301 return easf_filter_4tap_64p_ratio_0_70;
2302 else if (ratio.value < spl_fixpt_from_fraction(8, 10).value)
2303 return easf_filter_4tap_64p_ratio_0_80;
2304 else if (ratio.value < spl_fixpt_from_fraction(9, 10).value)
2305 return easf_filter_4tap_64p_ratio_0_90;
2306 else
2307 return easf_filter_4tap_64p_ratio_1_00;
2308 }
2309
spl_get_easf_filter_6tap_64p_s1_10(struct spl_fixed31_32 ratio)2310 static const uint16_t *spl_get_easf_filter_6tap_64p_s1_10(struct spl_fixed31_32 ratio)
2311 {
2312 if (ratio.value < spl_fixpt_from_fraction(3, 10).value)
2313 return easf_filter_6tap_64p_ratio_0_30;
2314 else if (ratio.value < spl_fixpt_from_fraction(4, 10).value)
2315 return easf_filter_6tap_64p_ratio_0_40;
2316 else if (ratio.value < spl_fixpt_from_fraction(5, 10).value)
2317 return easf_filter_6tap_64p_ratio_0_50;
2318 else if (ratio.value < spl_fixpt_from_fraction(6, 10).value)
2319 return easf_filter_6tap_64p_ratio_0_60;
2320 else if (ratio.value < spl_fixpt_from_fraction(7, 10).value)
2321 return easf_filter_6tap_64p_ratio_0_70;
2322 else if (ratio.value < spl_fixpt_from_fraction(8, 10).value)
2323 return easf_filter_6tap_64p_ratio_0_80;
2324 else if (ratio.value < spl_fixpt_from_fraction(9, 10).value)
2325 return easf_filter_6tap_64p_ratio_0_90;
2326 else
2327 return easf_filter_6tap_64p_ratio_1_00;
2328 }
2329
spl_dscl_get_easf_filter_coeffs_64p_s1_10(int taps,struct spl_fixed31_32 ratio)2330 const uint16_t *spl_dscl_get_easf_filter_coeffs_64p_s1_10(int taps, struct spl_fixed31_32 ratio)
2331 {
2332 if (taps == 6)
2333 return spl_get_easf_filter_6tap_64p_s1_10(ratio);
2334 else if (taps == 4)
2335 return spl_get_easf_filter_4tap_64p_s1_10(ratio);
2336 else if (taps == 3)
2337 return spl_get_easf_filter_3tap_64p_s1_10(ratio);
2338 else {
2339 /* should never happen, bug */
2340 SPL_BREAK_TO_DEBUGGER();
2341 return NULL;
2342 }
2343 }
2344
spl_set_filters_data(struct dscl_prog_data * dscl_prog_data,const struct spl_scaler_data * data,bool enable_easf_v,bool enable_easf_h)2345 void spl_set_filters_data(struct dscl_prog_data *dscl_prog_data,
2346 const struct spl_scaler_data *data, bool enable_easf_v,
2347 bool enable_easf_h)
2348 {
2349 /*
2350 * Old coefficients calculated scaling ratio = input / output
2351 * New coefficients are calculated based on = output / input
2352 */
2353 if (enable_easf_h) {
2354 dscl_prog_data->filter_h = spl_dscl_get_easf_filter_coeffs_64p(
2355 data->taps.h_taps, data->recip_ratios.horz);
2356
2357 dscl_prog_data->filter_h_c = spl_dscl_get_easf_filter_coeffs_64p(
2358 data->taps.h_taps_c, data->recip_ratios.horz_c);
2359 } else {
2360 dscl_prog_data->filter_h = spl_dscl_get_filter_coeffs_64p(
2361 data->taps.h_taps, data->ratios.horz);
2362
2363 dscl_prog_data->filter_h_c = spl_dscl_get_filter_coeffs_64p(
2364 data->taps.h_taps_c, data->ratios.horz_c);
2365 }
2366 if (enable_easf_v) {
2367 dscl_prog_data->filter_v = spl_dscl_get_easf_filter_coeffs_64p(
2368 data->taps.v_taps, data->recip_ratios.vert);
2369
2370 dscl_prog_data->filter_v_c = spl_dscl_get_easf_filter_coeffs_64p(
2371 data->taps.v_taps_c, data->recip_ratios.vert_c);
2372 } else {
2373 dscl_prog_data->filter_v = spl_dscl_get_filter_coeffs_64p(
2374 data->taps.v_taps, data->ratios.vert);
2375
2376 dscl_prog_data->filter_v_c = spl_dscl_get_filter_coeffs_64p(
2377 data->taps.v_taps_c, data->ratios.vert_c);
2378 }
2379 }
2380
spl_easf_get_scale_ratio_to_reg_value(struct spl_fixed31_32 ratio,struct scale_ratio_to_reg_value_lookup * lookup_table_base_ptr,unsigned int num_entries)2381 static uint32_t spl_easf_get_scale_ratio_to_reg_value(struct spl_fixed31_32 ratio,
2382 struct scale_ratio_to_reg_value_lookup *lookup_table_base_ptr,
2383 unsigned int num_entries)
2384 {
2385 unsigned int count = 0;
2386 uint32_t value = 0;
2387 struct scale_ratio_to_reg_value_lookup *lookup_table_index_ptr;
2388
2389 lookup_table_index_ptr = (lookup_table_base_ptr + num_entries - 1);
2390 value = lookup_table_index_ptr->reg_value;
2391
2392 while (count < num_entries) {
2393
2394 lookup_table_index_ptr = (lookup_table_base_ptr + count);
2395 if (lookup_table_index_ptr->numer < 0)
2396 break;
2397
2398 if (ratio.value < spl_fixpt_from_fraction(
2399 lookup_table_index_ptr->numer,
2400 lookup_table_index_ptr->denom).value) {
2401 value = lookup_table_index_ptr->reg_value;
2402 break;
2403 }
2404
2405 count++;
2406 }
2407 return value;
2408 }
spl_get_v_bf3_mode(struct spl_fixed31_32 ratio)2409 uint32_t spl_get_v_bf3_mode(struct spl_fixed31_32 ratio)
2410 {
2411 uint32_t value;
2412 unsigned int num_entries = sizeof(easf_v_bf3_mode_lookup) /
2413 sizeof(struct scale_ratio_to_reg_value_lookup);
2414 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
2415 easf_v_bf3_mode_lookup, num_entries);
2416 return value;
2417 }
spl_get_h_bf3_mode(struct spl_fixed31_32 ratio)2418 uint32_t spl_get_h_bf3_mode(struct spl_fixed31_32 ratio)
2419 {
2420 uint32_t value;
2421 unsigned int num_entries = sizeof(easf_h_bf3_mode_lookup) /
2422 sizeof(struct scale_ratio_to_reg_value_lookup);
2423 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
2424 easf_h_bf3_mode_lookup, num_entries);
2425 return value;
2426 }
spl_get_reducer_gain6(int taps,struct spl_fixed31_32 ratio)2427 uint32_t spl_get_reducer_gain6(int taps, struct spl_fixed31_32 ratio)
2428 {
2429 uint32_t value;
2430 unsigned int num_entries;
2431
2432 if (taps == 4) {
2433 num_entries = sizeof(easf_reducer_gain6_4tap_lookup) /
2434 sizeof(struct scale_ratio_to_reg_value_lookup);
2435 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
2436 easf_reducer_gain6_4tap_lookup, num_entries);
2437 } else if (taps == 6) {
2438 num_entries = sizeof(easf_reducer_gain6_6tap_lookup) /
2439 sizeof(struct scale_ratio_to_reg_value_lookup);
2440 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
2441 easf_reducer_gain6_6tap_lookup, num_entries);
2442 } else
2443 value = 0;
2444 return value;
2445 }
spl_get_reducer_gain4(int taps,struct spl_fixed31_32 ratio)2446 uint32_t spl_get_reducer_gain4(int taps, struct spl_fixed31_32 ratio)
2447 {
2448 uint32_t value;
2449 unsigned int num_entries;
2450
2451 if (taps == 4) {
2452 num_entries = sizeof(easf_reducer_gain4_4tap_lookup) /
2453 sizeof(struct scale_ratio_to_reg_value_lookup);
2454 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
2455 easf_reducer_gain4_4tap_lookup, num_entries);
2456 } else if (taps == 6) {
2457 num_entries = sizeof(easf_reducer_gain4_6tap_lookup) /
2458 sizeof(struct scale_ratio_to_reg_value_lookup);
2459 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
2460 easf_reducer_gain4_6tap_lookup, num_entries);
2461 } else
2462 value = 0;
2463 return value;
2464 }
spl_get_gainRing6(int taps,struct spl_fixed31_32 ratio)2465 uint32_t spl_get_gainRing6(int taps, struct spl_fixed31_32 ratio)
2466 {
2467 uint32_t value;
2468 unsigned int num_entries;
2469
2470 if (taps == 4) {
2471 num_entries = sizeof(easf_gain_ring6_4tap_lookup) /
2472 sizeof(struct scale_ratio_to_reg_value_lookup);
2473 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
2474 easf_gain_ring6_4tap_lookup, num_entries);
2475 } else if (taps == 6) {
2476 num_entries = sizeof(easf_gain_ring6_6tap_lookup) /
2477 sizeof(struct scale_ratio_to_reg_value_lookup);
2478 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
2479 easf_gain_ring6_6tap_lookup, num_entries);
2480 } else
2481 value = 0;
2482 return value;
2483 }
spl_get_gainRing4(int taps,struct spl_fixed31_32 ratio)2484 uint32_t spl_get_gainRing4(int taps, struct spl_fixed31_32 ratio)
2485 {
2486 uint32_t value;
2487 unsigned int num_entries;
2488
2489 if (taps == 4) {
2490 num_entries = sizeof(easf_gain_ring4_4tap_lookup) /
2491 sizeof(struct scale_ratio_to_reg_value_lookup);
2492 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
2493 easf_gain_ring4_4tap_lookup, num_entries);
2494 } else if (taps == 6) {
2495 num_entries = sizeof(easf_gain_ring4_6tap_lookup) /
2496 sizeof(struct scale_ratio_to_reg_value_lookup);
2497 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
2498 easf_gain_ring4_6tap_lookup, num_entries);
2499 } else
2500 value = 0;
2501 return value;
2502 }
spl_get_3tap_dntilt_uptilt_offset(int taps,struct spl_fixed31_32 ratio)2503 uint32_t spl_get_3tap_dntilt_uptilt_offset(int taps, struct spl_fixed31_32 ratio)
2504 {
2505 uint32_t value;
2506 unsigned int num_entries;
2507
2508 if (taps == 3) {
2509 num_entries = sizeof(easf_3tap_dntilt_uptilt_offset_lookup) /
2510 sizeof(struct scale_ratio_to_reg_value_lookup);
2511 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
2512 easf_3tap_dntilt_uptilt_offset_lookup, num_entries);
2513 } else
2514 value = 0;
2515 return value;
2516 }
spl_get_3tap_uptilt_maxval(int taps,struct spl_fixed31_32 ratio)2517 uint32_t spl_get_3tap_uptilt_maxval(int taps, struct spl_fixed31_32 ratio)
2518 {
2519 uint32_t value;
2520 unsigned int num_entries;
2521
2522 if (taps == 3) {
2523 num_entries = sizeof(easf_3tap_uptilt_maxval_lookup) /
2524 sizeof(struct scale_ratio_to_reg_value_lookup);
2525 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
2526 easf_3tap_uptilt_maxval_lookup, num_entries);
2527 } else
2528 value = 0;
2529 return value;
2530 }
spl_get_3tap_dntilt_slope(int taps,struct spl_fixed31_32 ratio)2531 uint32_t spl_get_3tap_dntilt_slope(int taps, struct spl_fixed31_32 ratio)
2532 {
2533 uint32_t value;
2534 unsigned int num_entries;
2535
2536 if (taps == 3) {
2537 num_entries = sizeof(easf_3tap_dntilt_slope_lookup) /
2538 sizeof(struct scale_ratio_to_reg_value_lookup);
2539 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
2540 easf_3tap_dntilt_slope_lookup, num_entries);
2541 } else
2542 value = 0;
2543 return value;
2544 }
spl_get_3tap_uptilt1_slope(int taps,struct spl_fixed31_32 ratio)2545 uint32_t spl_get_3tap_uptilt1_slope(int taps, struct spl_fixed31_32 ratio)
2546 {
2547 uint32_t value;
2548 unsigned int num_entries;
2549
2550 if (taps == 3) {
2551 num_entries = sizeof(easf_3tap_uptilt1_slope_lookup) /
2552 sizeof(struct scale_ratio_to_reg_value_lookup);
2553 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
2554 easf_3tap_uptilt1_slope_lookup, num_entries);
2555 } else
2556 value = 0;
2557 return value;
2558 }
spl_get_3tap_uptilt2_slope(int taps,struct spl_fixed31_32 ratio)2559 uint32_t spl_get_3tap_uptilt2_slope(int taps, struct spl_fixed31_32 ratio)
2560 {
2561 uint32_t value;
2562 unsigned int num_entries;
2563
2564 if (taps == 3) {
2565 num_entries = sizeof(easf_3tap_uptilt2_slope_lookup) /
2566 sizeof(struct scale_ratio_to_reg_value_lookup);
2567 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
2568 easf_3tap_uptilt2_slope_lookup, num_entries);
2569 } else
2570 value = 0;
2571 return value;
2572 }
spl_get_3tap_uptilt2_offset(int taps,struct spl_fixed31_32 ratio)2573 uint32_t spl_get_3tap_uptilt2_offset(int taps, struct spl_fixed31_32 ratio)
2574 {
2575 uint32_t value;
2576 unsigned int num_entries;
2577
2578 if (taps == 3) {
2579 num_entries = sizeof(easf_3tap_uptilt2_offset_lookup) /
2580 sizeof(struct scale_ratio_to_reg_value_lookup);
2581 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
2582 easf_3tap_uptilt2_offset_lookup, num_entries);
2583 } else
2584 value = 0;
2585 return value;
2586 }
2587