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