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 uint16_t easf_filter_3tap_64p_ratio_0_30_s1_12[99];
1140 static uint16_t easf_filter_3tap_64p_ratio_0_40_s1_12[99];
1141 static uint16_t easf_filter_3tap_64p_ratio_0_50_s1_12[99];
1142 static uint16_t easf_filter_3tap_64p_ratio_0_60_s1_12[99];
1143 static uint16_t easf_filter_3tap_64p_ratio_0_70_s1_12[99];
1144 static uint16_t easf_filter_3tap_64p_ratio_0_80_s1_12[99];
1145 static uint16_t easf_filter_3tap_64p_ratio_0_90_s1_12[99];
1146 static uint16_t easf_filter_3tap_64p_ratio_1_00_s1_12[99];
1147 static uint16_t easf_filter_4tap_64p_ratio_0_30_s1_12[132];
1148 static uint16_t easf_filter_4tap_64p_ratio_0_40_s1_12[132];
1149 static uint16_t easf_filter_4tap_64p_ratio_0_50_s1_12[132];
1150 static uint16_t easf_filter_4tap_64p_ratio_0_60_s1_12[132];
1151 static uint16_t easf_filter_4tap_64p_ratio_0_70_s1_12[132];
1152 static uint16_t easf_filter_4tap_64p_ratio_0_80_s1_12[132];
1153 static uint16_t easf_filter_4tap_64p_ratio_0_90_s1_12[132];
1154 static uint16_t easf_filter_4tap_64p_ratio_1_00_s1_12[132];
1155 static uint16_t easf_filter_6tap_64p_ratio_0_30_s1_12[198];
1156 static uint16_t easf_filter_6tap_64p_ratio_0_40_s1_12[198];
1157 static uint16_t easf_filter_6tap_64p_ratio_0_50_s1_12[198];
1158 static uint16_t easf_filter_6tap_64p_ratio_0_60_s1_12[198];
1159 static uint16_t easf_filter_6tap_64p_ratio_0_70_s1_12[198];
1160 static uint16_t easf_filter_6tap_64p_ratio_0_80_s1_12[198];
1161 static uint16_t easf_filter_6tap_64p_ratio_0_90_s1_12[198];
1162 static uint16_t easf_filter_6tap_64p_ratio_1_00_s1_12[198];
1163
1164 struct scale_ratio_to_reg_value_lookup easf_v_bf3_mode_lookup[] = {
1165 {3, 10, 0x0000},
1166 {4, 10, 0x0000},
1167 {5, 10, 0x0000},
1168 {6, 10, 0x0000},
1169 {7, 10, 0x0000},
1170 {8, 10, 0x0000},
1171 {9, 10, 0x0000},
1172 {1, 1, 0x0000},
1173 {-1, -1, 0x0002},
1174 };
1175
1176 struct scale_ratio_to_reg_value_lookup easf_h_bf3_mode_lookup[] = {
1177 {3, 10, 0x0000},
1178 {4, 10, 0x0000},
1179 {5, 10, 0x0000},
1180 {6, 10, 0x0000},
1181 {7, 10, 0x0000},
1182 {8, 10, 0x0000},
1183 {9, 10, 0x0000},
1184 {1, 1, 0x0000},
1185 {-1, -1, 0x0002},
1186 };
1187
1188 struct scale_ratio_to_reg_value_lookup easf_reducer_gain6_6tap_lookup[] = {
1189 {3, 10, 0x4100},
1190 {4, 10, 0x4100},
1191 {5, 10, 0x4100},
1192 {6, 10, 0x4100},
1193 {7, 10, 0x4100},
1194 {8, 10, 0x4100},
1195 {9, 10, 0x4100},
1196 {1, 1, 0x4100},
1197 {-1, -1, 0x4100},
1198 };
1199
1200 struct scale_ratio_to_reg_value_lookup easf_reducer_gain4_6tap_lookup[] = {
1201 {3, 10, 0x4000},
1202 {4, 10, 0x4000},
1203 {5, 10, 0x4000},
1204 {6, 10, 0x4000},
1205 {7, 10, 0x4000},
1206 {8, 10, 0x4000},
1207 {9, 10, 0x4000},
1208 {1, 1, 0x4000},
1209 {-1, -1, 0x4000},
1210 };
1211
1212 struct scale_ratio_to_reg_value_lookup easf_gain_ring6_6tap_lookup[] = {
1213 {3, 10, 0x0000},
1214 {4, 10, 0x251F},
1215 {5, 10, 0x291F},
1216 {6, 10, 0xA51F},
1217 {7, 10, 0xA51F},
1218 {8, 10, 0xAA66},
1219 {9, 10, 0xA51F},
1220 {1, 1, 0xA640},
1221 {-1, -1, 0xA640},
1222 };
1223
1224 struct scale_ratio_to_reg_value_lookup easf_gain_ring4_6tap_lookup[] = {
1225 {3, 10, 0x0000},
1226 {4, 10, 0x9600},
1227 {5, 10, 0xA460},
1228 {6, 10, 0xA8E0},
1229 {7, 10, 0xAC00},
1230 {8, 10, 0xAD20},
1231 {9, 10, 0xAFC0},
1232 {1, 1, 0xB058},
1233 {-1, -1, 0xB058},
1234 };
1235
1236 struct scale_ratio_to_reg_value_lookup easf_reducer_gain6_4tap_lookup[] = {
1237 {3, 10, 0x4100},
1238 {4, 10, 0x4100},
1239 {5, 10, 0x4100},
1240 {6, 10, 0x4100},
1241 {7, 10, 0x4100},
1242 {8, 10, 0x4100},
1243 {9, 10, 0x4100},
1244 {1, 1, 0x4100},
1245 {-1, -1, 0x4100},
1246 };
1247
1248 struct scale_ratio_to_reg_value_lookup easf_reducer_gain4_4tap_lookup[] = {
1249 {3, 10, 0x4000},
1250 {4, 10, 0x4000},
1251 {5, 10, 0x4000},
1252 {6, 10, 0x4000},
1253 {7, 10, 0x4000},
1254 {8, 10, 0x4000},
1255 {9, 10, 0x4000},
1256 {1, 1, 0x4000},
1257 {-1, -1, 0x4000},
1258 };
1259
1260 struct scale_ratio_to_reg_value_lookup easf_gain_ring6_4tap_lookup[] = {
1261 {3, 10, 0x0000},
1262 {4, 10, 0x0000},
1263 {5, 10, 0x0000},
1264 {6, 10, 0x0000},
1265 {7, 10, 0x0000},
1266 {8, 10, 0x0000},
1267 {9, 10, 0x0000},
1268 {1, 1, 0x0000},
1269 {-1, -1, 0x0000},
1270 };
1271
1272 struct scale_ratio_to_reg_value_lookup easf_gain_ring4_4tap_lookup[] = {
1273 {3, 10, 0x0000},
1274 {4, 10, 0x0000},
1275 {5, 10, 0x0000},
1276 {6, 10, 0x9900},
1277 {7, 10, 0xA100},
1278 {8, 10, 0xA8C0},
1279 {9, 10, 0xAB20},
1280 {1, 1, 0xAC00},
1281 {-1, -1, 0xAC00},
1282 };
1283
1284 struct scale_ratio_to_reg_value_lookup easf_3tap_dntilt_uptilt_offset_lookup[] = {
1285 {3, 10, 0x0000},
1286 {4, 10, 0x0000},
1287 {5, 10, 0x0000},
1288 {6, 10, 0x0000},
1289 {7, 10, 0x0000},
1290 {8, 10, 0x4100},
1291 {9, 10, 0x9F00},
1292 {1, 1, 0xA4C0},
1293 {-1, -1, 0xA8D8},
1294 };
1295
1296 struct scale_ratio_to_reg_value_lookup easf_3tap_uptilt_maxval_lookup[] = {
1297 {3, 10, 0x0000},
1298 {4, 10, 0x0000},
1299 {5, 10, 0x0000},
1300 {6, 10, 0x0000},
1301 {7, 10, 0x0000},
1302 {8, 10, 0x4000},
1303 {9, 10, 0x24FE},
1304 {1, 1, 0x2D64},
1305 {-1, -1, 0x3ADB},
1306 };
1307
1308 struct scale_ratio_to_reg_value_lookup easf_3tap_dntilt_slope_lookup[] = {
1309 {3, 10, 0x3800},
1310 {4, 10, 0x3800},
1311 {5, 10, 0x3800},
1312 {6, 10, 0x3800},
1313 {7, 10, 0x3800},
1314 {8, 10, 0x3886},
1315 {9, 10, 0x3940},
1316 {1, 1, 0x3A4E},
1317 {-1, -1, 0x3B66},
1318 };
1319
1320 struct scale_ratio_to_reg_value_lookup easf_3tap_uptilt1_slope_lookup[] = {
1321 {3, 10, 0x3800},
1322 {4, 10, 0x3800},
1323 {5, 10, 0x3800},
1324 {6, 10, 0x3800},
1325 {7, 10, 0x3800},
1326 {8, 10, 0x36F4},
1327 {9, 10, 0x359C},
1328 {1, 1, 0x3360},
1329 {-1, -1, 0x2F20},
1330 };
1331
1332 struct scale_ratio_to_reg_value_lookup easf_3tap_uptilt2_slope_lookup[] = {
1333 {3, 10, 0x0000},
1334 {4, 10, 0x0000},
1335 {5, 10, 0x0000},
1336 {6, 10, 0x0000},
1337 {7, 10, 0x0000},
1338 {8, 10, 0x0000},
1339 {9, 10, 0x359C},
1340 {1, 1, 0x31F0},
1341 {-1, -1, 0x1F00},
1342 };
1343
1344 struct scale_ratio_to_reg_value_lookup easf_3tap_uptilt2_offset_lookup[] = {
1345 {3, 10, 0x0000},
1346 {4, 10, 0x0000},
1347 {5, 10, 0x0000},
1348 {6, 10, 0x0000},
1349 {7, 10, 0x0000},
1350 {8, 10, 0x0000},
1351 {9, 10, 0x9F00},
1352 {1, 1, 0xA400},
1353 {-1, -1, 0x9E00},
1354 };
1355
spl_init_easf_filter_coeffs(void)1356 void spl_init_easf_filter_coeffs(void)
1357 {
1358 convert_filter_s1_10_to_s1_12(easf_filter_3tap_64p_ratio_0_30,
1359 easf_filter_3tap_64p_ratio_0_30_s1_12, 3);
1360 convert_filter_s1_10_to_s1_12(easf_filter_3tap_64p_ratio_0_40,
1361 easf_filter_3tap_64p_ratio_0_40_s1_12, 3);
1362 convert_filter_s1_10_to_s1_12(easf_filter_3tap_64p_ratio_0_50,
1363 easf_filter_3tap_64p_ratio_0_50_s1_12, 3);
1364 convert_filter_s1_10_to_s1_12(easf_filter_3tap_64p_ratio_0_60,
1365 easf_filter_3tap_64p_ratio_0_60_s1_12, 3);
1366 convert_filter_s1_10_to_s1_12(easf_filter_3tap_64p_ratio_0_70,
1367 easf_filter_3tap_64p_ratio_0_70_s1_12, 3);
1368 convert_filter_s1_10_to_s1_12(easf_filter_3tap_64p_ratio_0_80,
1369 easf_filter_3tap_64p_ratio_0_80_s1_12, 3);
1370 convert_filter_s1_10_to_s1_12(easf_filter_3tap_64p_ratio_0_90,
1371 easf_filter_3tap_64p_ratio_0_90_s1_12, 3);
1372 convert_filter_s1_10_to_s1_12(easf_filter_3tap_64p_ratio_1_00,
1373 easf_filter_3tap_64p_ratio_1_00_s1_12, 3);
1374
1375 convert_filter_s1_10_to_s1_12(easf_filter_4tap_64p_ratio_0_30,
1376 easf_filter_4tap_64p_ratio_0_30_s1_12, 4);
1377 convert_filter_s1_10_to_s1_12(easf_filter_4tap_64p_ratio_0_40,
1378 easf_filter_4tap_64p_ratio_0_40_s1_12, 4);
1379 convert_filter_s1_10_to_s1_12(easf_filter_4tap_64p_ratio_0_50,
1380 easf_filter_4tap_64p_ratio_0_50_s1_12, 4);
1381 convert_filter_s1_10_to_s1_12(easf_filter_4tap_64p_ratio_0_60,
1382 easf_filter_4tap_64p_ratio_0_60_s1_12, 4);
1383 convert_filter_s1_10_to_s1_12(easf_filter_4tap_64p_ratio_0_70,
1384 easf_filter_4tap_64p_ratio_0_70_s1_12, 4);
1385 convert_filter_s1_10_to_s1_12(easf_filter_4tap_64p_ratio_0_80,
1386 easf_filter_4tap_64p_ratio_0_80_s1_12, 4);
1387 convert_filter_s1_10_to_s1_12(easf_filter_4tap_64p_ratio_0_90,
1388 easf_filter_4tap_64p_ratio_0_90_s1_12, 4);
1389 convert_filter_s1_10_to_s1_12(easf_filter_4tap_64p_ratio_1_00,
1390 easf_filter_4tap_64p_ratio_1_00_s1_12, 4);
1391
1392 convert_filter_s1_10_to_s1_12(easf_filter_6tap_64p_ratio_0_30,
1393 easf_filter_6tap_64p_ratio_0_30_s1_12, 6);
1394 convert_filter_s1_10_to_s1_12(easf_filter_6tap_64p_ratio_0_40,
1395 easf_filter_6tap_64p_ratio_0_40_s1_12, 6);
1396 convert_filter_s1_10_to_s1_12(easf_filter_6tap_64p_ratio_0_50,
1397 easf_filter_6tap_64p_ratio_0_50_s1_12, 6);
1398 convert_filter_s1_10_to_s1_12(easf_filter_6tap_64p_ratio_0_60,
1399 easf_filter_6tap_64p_ratio_0_60_s1_12, 6);
1400 convert_filter_s1_10_to_s1_12(easf_filter_6tap_64p_ratio_0_70,
1401 easf_filter_6tap_64p_ratio_0_70_s1_12, 6);
1402 convert_filter_s1_10_to_s1_12(easf_filter_6tap_64p_ratio_0_80,
1403 easf_filter_6tap_64p_ratio_0_80_s1_12, 6);
1404 convert_filter_s1_10_to_s1_12(easf_filter_6tap_64p_ratio_0_90,
1405 easf_filter_6tap_64p_ratio_0_90_s1_12, 6);
1406 convert_filter_s1_10_to_s1_12(easf_filter_6tap_64p_ratio_1_00,
1407 easf_filter_6tap_64p_ratio_1_00_s1_12, 6);
1408 }
1409
spl_get_easf_filter_3tap_64p(struct spl_fixed31_32 ratio)1410 uint16_t *spl_get_easf_filter_3tap_64p(struct spl_fixed31_32 ratio)
1411 {
1412 if (ratio.value < spl_fixpt_from_fraction(3, 10).value)
1413 return easf_filter_3tap_64p_ratio_0_30_s1_12;
1414 else if (ratio.value < spl_fixpt_from_fraction(4, 10).value)
1415 return easf_filter_3tap_64p_ratio_0_40_s1_12;
1416 else if (ratio.value < spl_fixpt_from_fraction(5, 10).value)
1417 return easf_filter_3tap_64p_ratio_0_50_s1_12;
1418 else if (ratio.value < spl_fixpt_from_fraction(6, 10).value)
1419 return easf_filter_3tap_64p_ratio_0_60_s1_12;
1420 else if (ratio.value < spl_fixpt_from_fraction(7, 10).value)
1421 return easf_filter_3tap_64p_ratio_0_70_s1_12;
1422 else if (ratio.value < spl_fixpt_from_fraction(8, 10).value)
1423 return easf_filter_3tap_64p_ratio_0_80_s1_12;
1424 else if (ratio.value < spl_fixpt_from_fraction(9, 10).value)
1425 return easf_filter_3tap_64p_ratio_0_90_s1_12;
1426 else
1427 return easf_filter_3tap_64p_ratio_1_00_s1_12;
1428 }
1429
spl_get_easf_filter_4tap_64p(struct spl_fixed31_32 ratio)1430 uint16_t *spl_get_easf_filter_4tap_64p(struct spl_fixed31_32 ratio)
1431 {
1432 if (ratio.value < spl_fixpt_from_fraction(3, 10).value)
1433 return easf_filter_4tap_64p_ratio_0_30_s1_12;
1434 else if (ratio.value < spl_fixpt_from_fraction(4, 10).value)
1435 return easf_filter_4tap_64p_ratio_0_40_s1_12;
1436 else if (ratio.value < spl_fixpt_from_fraction(5, 10).value)
1437 return easf_filter_4tap_64p_ratio_0_50_s1_12;
1438 else if (ratio.value < spl_fixpt_from_fraction(6, 10).value)
1439 return easf_filter_4tap_64p_ratio_0_60_s1_12;
1440 else if (ratio.value < spl_fixpt_from_fraction(7, 10).value)
1441 return easf_filter_4tap_64p_ratio_0_70_s1_12;
1442 else if (ratio.value < spl_fixpt_from_fraction(8, 10).value)
1443 return easf_filter_4tap_64p_ratio_0_80_s1_12;
1444 else if (ratio.value < spl_fixpt_from_fraction(9, 10).value)
1445 return easf_filter_4tap_64p_ratio_0_90_s1_12;
1446 else
1447 return easf_filter_4tap_64p_ratio_1_00_s1_12;
1448 }
1449
spl_get_easf_filter_6tap_64p(struct spl_fixed31_32 ratio)1450 uint16_t *spl_get_easf_filter_6tap_64p(struct spl_fixed31_32 ratio)
1451 {
1452 if (ratio.value < spl_fixpt_from_fraction(3, 10).value)
1453 return easf_filter_6tap_64p_ratio_0_30_s1_12;
1454 else if (ratio.value < spl_fixpt_from_fraction(4, 10).value)
1455 return easf_filter_6tap_64p_ratio_0_40_s1_12;
1456 else if (ratio.value < spl_fixpt_from_fraction(5, 10).value)
1457 return easf_filter_6tap_64p_ratio_0_50_s1_12;
1458 else if (ratio.value < spl_fixpt_from_fraction(6, 10).value)
1459 return easf_filter_6tap_64p_ratio_0_60_s1_12;
1460 else if (ratio.value < spl_fixpt_from_fraction(7, 10).value)
1461 return easf_filter_6tap_64p_ratio_0_70_s1_12;
1462 else if (ratio.value < spl_fixpt_from_fraction(8, 10).value)
1463 return easf_filter_6tap_64p_ratio_0_80_s1_12;
1464 else if (ratio.value < spl_fixpt_from_fraction(9, 10).value)
1465 return easf_filter_6tap_64p_ratio_0_90_s1_12;
1466 else
1467 return easf_filter_6tap_64p_ratio_1_00_s1_12;
1468 }
1469
spl_dscl_get_easf_filter_coeffs_64p(int taps,struct spl_fixed31_32 ratio)1470 uint16_t *spl_dscl_get_easf_filter_coeffs_64p(int taps, struct spl_fixed31_32 ratio)
1471 {
1472 if (taps == 6)
1473 return spl_get_easf_filter_6tap_64p(ratio);
1474 else if (taps == 4)
1475 return spl_get_easf_filter_4tap_64p(ratio);
1476 else if (taps == 3)
1477 return spl_get_easf_filter_3tap_64p(ratio);
1478 else {
1479 /* should never happen, bug */
1480 SPL_BREAK_TO_DEBUGGER();
1481 return NULL;
1482 }
1483 }
1484
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)1485 void spl_set_filters_data(struct dscl_prog_data *dscl_prog_data,
1486 const struct spl_scaler_data *data, bool enable_easf_v,
1487 bool enable_easf_h)
1488 {
1489 /*
1490 * Old coefficients calculated scaling ratio = input / output
1491 * New coefficients are calculated based on = output / input
1492 */
1493 if (enable_easf_h) {
1494 dscl_prog_data->filter_h = spl_dscl_get_easf_filter_coeffs_64p(
1495 data->taps.h_taps, data->recip_ratios.horz);
1496
1497 dscl_prog_data->filter_h_c = spl_dscl_get_easf_filter_coeffs_64p(
1498 data->taps.h_taps_c, data->recip_ratios.horz_c);
1499 } else {
1500 dscl_prog_data->filter_h = spl_dscl_get_filter_coeffs_64p(
1501 data->taps.h_taps, data->ratios.horz);
1502
1503 dscl_prog_data->filter_h_c = spl_dscl_get_filter_coeffs_64p(
1504 data->taps.h_taps_c, data->ratios.horz_c);
1505 }
1506 if (enable_easf_v) {
1507 dscl_prog_data->filter_v = spl_dscl_get_easf_filter_coeffs_64p(
1508 data->taps.v_taps, data->recip_ratios.vert);
1509
1510 dscl_prog_data->filter_v_c = spl_dscl_get_easf_filter_coeffs_64p(
1511 data->taps.v_taps_c, data->recip_ratios.vert_c);
1512 } else {
1513 dscl_prog_data->filter_v = spl_dscl_get_filter_coeffs_64p(
1514 data->taps.v_taps, data->ratios.vert);
1515
1516 dscl_prog_data->filter_v_c = spl_dscl_get_filter_coeffs_64p(
1517 data->taps.v_taps_c, data->ratios.vert_c);
1518 }
1519 }
1520
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)1521 static uint32_t spl_easf_get_scale_ratio_to_reg_value(struct spl_fixed31_32 ratio,
1522 struct scale_ratio_to_reg_value_lookup *lookup_table_base_ptr,
1523 unsigned int num_entries)
1524 {
1525 unsigned int count = 0;
1526 uint32_t value = 0;
1527 struct scale_ratio_to_reg_value_lookup *lookup_table_index_ptr;
1528
1529 lookup_table_index_ptr = (lookup_table_base_ptr + num_entries - 1);
1530 value = lookup_table_index_ptr->reg_value;
1531
1532 while (count < num_entries) {
1533
1534 lookup_table_index_ptr = (lookup_table_base_ptr + count);
1535 if (lookup_table_index_ptr->numer < 0)
1536 break;
1537
1538 if (ratio.value < spl_fixpt_from_fraction(
1539 lookup_table_index_ptr->numer,
1540 lookup_table_index_ptr->denom).value) {
1541 value = lookup_table_index_ptr->reg_value;
1542 break;
1543 }
1544
1545 count++;
1546 }
1547 return value;
1548 }
spl_get_v_bf3_mode(struct spl_fixed31_32 ratio)1549 uint32_t spl_get_v_bf3_mode(struct spl_fixed31_32 ratio)
1550 {
1551 uint32_t value;
1552 unsigned int num_entries = sizeof(easf_v_bf3_mode_lookup) /
1553 sizeof(struct scale_ratio_to_reg_value_lookup);
1554 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1555 easf_v_bf3_mode_lookup, num_entries);
1556 return value;
1557 }
spl_get_h_bf3_mode(struct spl_fixed31_32 ratio)1558 uint32_t spl_get_h_bf3_mode(struct spl_fixed31_32 ratio)
1559 {
1560 uint32_t value;
1561 unsigned int num_entries = sizeof(easf_h_bf3_mode_lookup) /
1562 sizeof(struct scale_ratio_to_reg_value_lookup);
1563 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1564 easf_h_bf3_mode_lookup, num_entries);
1565 return value;
1566 }
spl_get_reducer_gain6(int taps,struct spl_fixed31_32 ratio)1567 uint32_t spl_get_reducer_gain6(int taps, struct spl_fixed31_32 ratio)
1568 {
1569 uint32_t value;
1570 unsigned int num_entries;
1571
1572 if (taps == 4) {
1573 num_entries = sizeof(easf_reducer_gain6_4tap_lookup) /
1574 sizeof(struct scale_ratio_to_reg_value_lookup);
1575 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1576 easf_reducer_gain6_4tap_lookup, num_entries);
1577 } else if (taps == 6) {
1578 num_entries = sizeof(easf_reducer_gain6_6tap_lookup) /
1579 sizeof(struct scale_ratio_to_reg_value_lookup);
1580 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1581 easf_reducer_gain6_6tap_lookup, num_entries);
1582 } else
1583 value = 0;
1584 return value;
1585 }
spl_get_reducer_gain4(int taps,struct spl_fixed31_32 ratio)1586 uint32_t spl_get_reducer_gain4(int taps, struct spl_fixed31_32 ratio)
1587 {
1588 uint32_t value;
1589 unsigned int num_entries;
1590
1591 if (taps == 4) {
1592 num_entries = sizeof(easf_reducer_gain4_4tap_lookup) /
1593 sizeof(struct scale_ratio_to_reg_value_lookup);
1594 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1595 easf_reducer_gain4_4tap_lookup, num_entries);
1596 } else if (taps == 6) {
1597 num_entries = sizeof(easf_reducer_gain4_6tap_lookup) /
1598 sizeof(struct scale_ratio_to_reg_value_lookup);
1599 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1600 easf_reducer_gain4_6tap_lookup, num_entries);
1601 } else
1602 value = 0;
1603 return value;
1604 }
spl_get_gainRing6(int taps,struct spl_fixed31_32 ratio)1605 uint32_t spl_get_gainRing6(int taps, struct spl_fixed31_32 ratio)
1606 {
1607 uint32_t value;
1608 unsigned int num_entries;
1609
1610 if (taps == 4) {
1611 num_entries = sizeof(easf_gain_ring6_4tap_lookup) /
1612 sizeof(struct scale_ratio_to_reg_value_lookup);
1613 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1614 easf_gain_ring6_4tap_lookup, num_entries);
1615 } else if (taps == 6) {
1616 num_entries = sizeof(easf_gain_ring6_6tap_lookup) /
1617 sizeof(struct scale_ratio_to_reg_value_lookup);
1618 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1619 easf_gain_ring6_6tap_lookup, num_entries);
1620 } else
1621 value = 0;
1622 return value;
1623 }
spl_get_gainRing4(int taps,struct spl_fixed31_32 ratio)1624 uint32_t spl_get_gainRing4(int taps, struct spl_fixed31_32 ratio)
1625 {
1626 uint32_t value;
1627 unsigned int num_entries;
1628
1629 if (taps == 4) {
1630 num_entries = sizeof(easf_gain_ring4_4tap_lookup) /
1631 sizeof(struct scale_ratio_to_reg_value_lookup);
1632 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1633 easf_gain_ring4_4tap_lookup, num_entries);
1634 } else if (taps == 6) {
1635 num_entries = sizeof(easf_gain_ring4_6tap_lookup) /
1636 sizeof(struct scale_ratio_to_reg_value_lookup);
1637 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1638 easf_gain_ring4_6tap_lookup, num_entries);
1639 } else
1640 value = 0;
1641 return value;
1642 }
spl_get_3tap_dntilt_uptilt_offset(int taps,struct spl_fixed31_32 ratio)1643 uint32_t spl_get_3tap_dntilt_uptilt_offset(int taps, struct spl_fixed31_32 ratio)
1644 {
1645 uint32_t value;
1646 unsigned int num_entries;
1647
1648 if (taps == 3) {
1649 num_entries = sizeof(easf_3tap_dntilt_uptilt_offset_lookup) /
1650 sizeof(struct scale_ratio_to_reg_value_lookup);
1651 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1652 easf_3tap_dntilt_uptilt_offset_lookup, num_entries);
1653 } else
1654 value = 0;
1655 return value;
1656 }
spl_get_3tap_uptilt_maxval(int taps,struct spl_fixed31_32 ratio)1657 uint32_t spl_get_3tap_uptilt_maxval(int taps, struct spl_fixed31_32 ratio)
1658 {
1659 uint32_t value;
1660 unsigned int num_entries;
1661
1662 if (taps == 3) {
1663 num_entries = sizeof(easf_3tap_uptilt_maxval_lookup) /
1664 sizeof(struct scale_ratio_to_reg_value_lookup);
1665 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1666 easf_3tap_uptilt_maxval_lookup, num_entries);
1667 } else
1668 value = 0;
1669 return value;
1670 }
spl_get_3tap_dntilt_slope(int taps,struct spl_fixed31_32 ratio)1671 uint32_t spl_get_3tap_dntilt_slope(int taps, struct spl_fixed31_32 ratio)
1672 {
1673 uint32_t value;
1674 unsigned int num_entries;
1675
1676 if (taps == 3) {
1677 num_entries = sizeof(easf_3tap_dntilt_slope_lookup) /
1678 sizeof(struct scale_ratio_to_reg_value_lookup);
1679 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1680 easf_3tap_dntilt_slope_lookup, num_entries);
1681 } else
1682 value = 0;
1683 return value;
1684 }
spl_get_3tap_uptilt1_slope(int taps,struct spl_fixed31_32 ratio)1685 uint32_t spl_get_3tap_uptilt1_slope(int taps, struct spl_fixed31_32 ratio)
1686 {
1687 uint32_t value;
1688 unsigned int num_entries;
1689
1690 if (taps == 3) {
1691 num_entries = sizeof(easf_3tap_uptilt1_slope_lookup) /
1692 sizeof(struct scale_ratio_to_reg_value_lookup);
1693 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1694 easf_3tap_uptilt1_slope_lookup, num_entries);
1695 } else
1696 value = 0;
1697 return value;
1698 }
spl_get_3tap_uptilt2_slope(int taps,struct spl_fixed31_32 ratio)1699 uint32_t spl_get_3tap_uptilt2_slope(int taps, struct spl_fixed31_32 ratio)
1700 {
1701 uint32_t value;
1702 unsigned int num_entries;
1703
1704 if (taps == 3) {
1705 num_entries = sizeof(easf_3tap_uptilt2_slope_lookup) /
1706 sizeof(struct scale_ratio_to_reg_value_lookup);
1707 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1708 easf_3tap_uptilt2_slope_lookup, num_entries);
1709 } else
1710 value = 0;
1711 return value;
1712 }
spl_get_3tap_uptilt2_offset(int taps,struct spl_fixed31_32 ratio)1713 uint32_t spl_get_3tap_uptilt2_offset(int taps, struct spl_fixed31_32 ratio)
1714 {
1715 uint32_t value;
1716 unsigned int num_entries;
1717
1718 if (taps == 3) {
1719 num_entries = sizeof(easf_3tap_uptilt2_offset_lookup) /
1720 sizeof(struct scale_ratio_to_reg_value_lookup);
1721 value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1722 easf_3tap_uptilt2_offset_lookup, num_entries);
1723 } else
1724 value = 0;
1725 return value;
1726 }
1727