xref: /aosp_15_r20/external/libopus/dnn/adaconvtest.c (revision a58d3d2adb790c104798cd88c8a3aff4fa8b82cc)
1*a58d3d2aSXin Li #include "lace_data.h"
2*a58d3d2aSXin Li #include "nolace_data.h"
3*a58d3d2aSXin Li #include "osce.h"
4*a58d3d2aSXin Li #include "nndsp.h"
5*a58d3d2aSXin Li 
6*a58d3d2aSXin Li 
7*a58d3d2aSXin Li #include <stdlib.h>
8*a58d3d2aSXin Li #include <stdio.h>
9*a58d3d2aSXin Li #include <math.h>
10*a58d3d2aSXin Li 
11*a58d3d2aSXin Li 
12*a58d3d2aSXin Li extern const WeightArray lacelayers_arrays[];
13*a58d3d2aSXin Li extern const WeightArray nolacelayers_arrays[];
14*a58d3d2aSXin Li 
adaconv_compare(const char * prefix,int num_frames,AdaConvState * hAdaConv,LinearLayer * kernel_layer,LinearLayer * gain_layer,int feature_dim,int frame_size,int overlap_size,int in_channels,int out_channels,int kernel_size,int left_padding,float filter_gain_a,float filter_gain_b,float shape_gain)15*a58d3d2aSXin Li void adaconv_compare(
16*a58d3d2aSXin Li     const char * prefix,
17*a58d3d2aSXin Li     int num_frames,
18*a58d3d2aSXin Li     AdaConvState* hAdaConv,
19*a58d3d2aSXin Li     LinearLayer *kernel_layer,
20*a58d3d2aSXin Li     LinearLayer *gain_layer,
21*a58d3d2aSXin Li     int feature_dim,
22*a58d3d2aSXin Li     int frame_size,
23*a58d3d2aSXin Li     int overlap_size,
24*a58d3d2aSXin Li     int in_channels,
25*a58d3d2aSXin Li     int out_channels,
26*a58d3d2aSXin Li     int kernel_size,
27*a58d3d2aSXin Li     int left_padding,
28*a58d3d2aSXin Li     float filter_gain_a,
29*a58d3d2aSXin Li     float filter_gain_b,
30*a58d3d2aSXin Li     float shape_gain
31*a58d3d2aSXin Li )
32*a58d3d2aSXin Li {
33*a58d3d2aSXin Li     char feature_file[256];
34*a58d3d2aSXin Li     char x_in_file[256];
35*a58d3d2aSXin Li     char x_out_file[256];
36*a58d3d2aSXin Li     char message[512];
37*a58d3d2aSXin Li     int i_frame, i_sample;
38*a58d3d2aSXin Li     float mse;
39*a58d3d2aSXin Li     float features[512];
40*a58d3d2aSXin Li     float x_in[512];
41*a58d3d2aSXin Li     float x_out_ref[512];
42*a58d3d2aSXin Li     float x_out[512];
43*a58d3d2aSXin Li     float window[40];
44*a58d3d2aSXin Li 
45*a58d3d2aSXin Li     init_adaconv_state(hAdaConv);
46*a58d3d2aSXin Li     compute_overlap_window(window, 40);
47*a58d3d2aSXin Li 
48*a58d3d2aSXin Li     FILE *f_features, *f_x_in, *f_x_out;
49*a58d3d2aSXin Li 
50*a58d3d2aSXin Li     strcpy(feature_file, prefix);
51*a58d3d2aSXin Li     strcat(feature_file, "_features.f32");
52*a58d3d2aSXin Li     f_features = fopen(feature_file, "r");
53*a58d3d2aSXin Li     if (f_features == NULL)
54*a58d3d2aSXin Li     {
55*a58d3d2aSXin Li         sprintf(message, "could not open file %s", feature_file);
56*a58d3d2aSXin Li         perror(message);
57*a58d3d2aSXin Li         exit(1);
58*a58d3d2aSXin Li     }
59*a58d3d2aSXin Li 
60*a58d3d2aSXin Li     strcpy(x_in_file, prefix);
61*a58d3d2aSXin Li     strcat(x_in_file, "_x_in.f32");
62*a58d3d2aSXin Li     f_x_in = fopen(x_in_file, "r");
63*a58d3d2aSXin Li     if (f_x_in == NULL)
64*a58d3d2aSXin Li     {
65*a58d3d2aSXin Li         sprintf(message, "could not open file %s", x_in_file);
66*a58d3d2aSXin Li         perror(message);
67*a58d3d2aSXin Li         exit(1);
68*a58d3d2aSXin Li     }
69*a58d3d2aSXin Li 
70*a58d3d2aSXin Li     strcpy(x_out_file, prefix);
71*a58d3d2aSXin Li     strcat(x_out_file, "_x_out.f32");
72*a58d3d2aSXin Li     f_x_out = fopen(x_out_file, "r");
73*a58d3d2aSXin Li     if (f_x_out == NULL)
74*a58d3d2aSXin Li     {
75*a58d3d2aSXin Li         sprintf(message, "could not open file %s", x_out_file);
76*a58d3d2aSXin Li         perror(message);
77*a58d3d2aSXin Li         exit(1);
78*a58d3d2aSXin Li     }
79*a58d3d2aSXin Li 
80*a58d3d2aSXin Li     for (i_frame = 0; i_frame < num_frames; i_frame ++)
81*a58d3d2aSXin Li     {
82*a58d3d2aSXin Li         if (fread(features, sizeof(float), feature_dim, f_features) != feature_dim)
83*a58d3d2aSXin Li         {
84*a58d3d2aSXin Li             fprintf(stderr, "could not read frame %d from %s\n", i_frame, feature_file);
85*a58d3d2aSXin Li             exit(1);
86*a58d3d2aSXin Li         }
87*a58d3d2aSXin Li 
88*a58d3d2aSXin Li         if (fread(x_in, sizeof(float), frame_size * in_channels, f_x_in) != frame_size * in_channels)
89*a58d3d2aSXin Li         {
90*a58d3d2aSXin Li             fprintf(stderr, "could not read frame %d from %s\n", i_frame, x_in_file);
91*a58d3d2aSXin Li             exit(1);
92*a58d3d2aSXin Li         }
93*a58d3d2aSXin Li 
94*a58d3d2aSXin Li         if (fread(x_out_ref, sizeof(float), frame_size * out_channels, f_x_out) != frame_size * out_channels)
95*a58d3d2aSXin Li         {
96*a58d3d2aSXin Li             fprintf(stderr, "could not read frame %d from %s\n", i_frame, x_out_file);
97*a58d3d2aSXin Li             exit(1);
98*a58d3d2aSXin Li         }
99*a58d3d2aSXin Li 
100*a58d3d2aSXin Li         adaconv_process_frame(hAdaConv, x_out, x_in, features, kernel_layer, gain_layer, feature_dim,
101*a58d3d2aSXin Li             frame_size, overlap_size, in_channels, out_channels, kernel_size, left_padding,
102*a58d3d2aSXin Li             filter_gain_a, filter_gain_b, shape_gain, window, 0);
103*a58d3d2aSXin Li 
104*a58d3d2aSXin Li         mse = 0;
105*a58d3d2aSXin Li         for (i_sample = 0; i_sample < frame_size * out_channels; i_sample ++)
106*a58d3d2aSXin Li         {
107*a58d3d2aSXin Li             mse += pow(x_out_ref[i_sample] - x_out[i_sample], 2);
108*a58d3d2aSXin Li         }
109*a58d3d2aSXin Li         mse = sqrt(mse / (frame_size * out_channels));
110*a58d3d2aSXin Li         printf("rmse[%d] %f\n", i_frame, mse);
111*a58d3d2aSXin Li 
112*a58d3d2aSXin Li     }
113*a58d3d2aSXin Li }
114*a58d3d2aSXin Li 
115*a58d3d2aSXin Li 
adacomb_compare(const char * prefix,int num_frames,AdaCombState * hAdaComb,LinearLayer * kernel_layer,LinearLayer * gain_layer,LinearLayer * global_gain_layer,int feature_dim,int frame_size,int overlap_size,int kernel_size,int left_padding,float filter_gain_a,float filter_gain_b,float log_gain_limit)116*a58d3d2aSXin Li void adacomb_compare(
117*a58d3d2aSXin Li     const char * prefix,
118*a58d3d2aSXin Li     int num_frames,
119*a58d3d2aSXin Li     AdaCombState* hAdaComb,
120*a58d3d2aSXin Li     LinearLayer *kernel_layer,
121*a58d3d2aSXin Li     LinearLayer *gain_layer,
122*a58d3d2aSXin Li     LinearLayer *global_gain_layer,
123*a58d3d2aSXin Li     int feature_dim,
124*a58d3d2aSXin Li     int frame_size,
125*a58d3d2aSXin Li     int overlap_size,
126*a58d3d2aSXin Li     int kernel_size,
127*a58d3d2aSXin Li     int left_padding,
128*a58d3d2aSXin Li     float filter_gain_a,
129*a58d3d2aSXin Li     float filter_gain_b,
130*a58d3d2aSXin Li     float log_gain_limit
131*a58d3d2aSXin Li )
132*a58d3d2aSXin Li {
133*a58d3d2aSXin Li     char feature_file[256];
134*a58d3d2aSXin Li     char x_in_file[256];
135*a58d3d2aSXin Li     char p_in_file[256];
136*a58d3d2aSXin Li     char x_out_file[256];
137*a58d3d2aSXin Li     char message[512];
138*a58d3d2aSXin Li     int i_frame, i_sample;
139*a58d3d2aSXin Li     float mse;
140*a58d3d2aSXin Li     float features[512];
141*a58d3d2aSXin Li     float x_in[512];
142*a58d3d2aSXin Li     float x_out_ref[512];
143*a58d3d2aSXin Li     float x_out[512];
144*a58d3d2aSXin Li     int pitch_lag;
145*a58d3d2aSXin Li     float window[40];
146*a58d3d2aSXin Li 
147*a58d3d2aSXin Li     init_adacomb_state(hAdaComb);
148*a58d3d2aSXin Li     compute_overlap_window(window, 40);
149*a58d3d2aSXin Li 
150*a58d3d2aSXin Li     FILE *f_features, *f_x_in, *f_p_in, *f_x_out;
151*a58d3d2aSXin Li 
152*a58d3d2aSXin Li     strcpy(feature_file, prefix);
153*a58d3d2aSXin Li     strcat(feature_file, "_features.f32");
154*a58d3d2aSXin Li     f_features = fopen(feature_file, "r");
155*a58d3d2aSXin Li     if (f_features == NULL)
156*a58d3d2aSXin Li     {
157*a58d3d2aSXin Li         sprintf(message, "could not open file %s", feature_file);
158*a58d3d2aSXin Li         perror(message);
159*a58d3d2aSXin Li         exit(1);
160*a58d3d2aSXin Li     }
161*a58d3d2aSXin Li 
162*a58d3d2aSXin Li     strcpy(x_in_file, prefix);
163*a58d3d2aSXin Li     strcat(x_in_file, "_x_in.f32");
164*a58d3d2aSXin Li     f_x_in = fopen(x_in_file, "r");
165*a58d3d2aSXin Li     if (f_x_in == NULL)
166*a58d3d2aSXin Li     {
167*a58d3d2aSXin Li         sprintf(message, "could not open file %s", x_in_file);
168*a58d3d2aSXin Li         perror(message);
169*a58d3d2aSXin Li         exit(1);
170*a58d3d2aSXin Li     }
171*a58d3d2aSXin Li 
172*a58d3d2aSXin Li     strcpy(p_in_file, prefix);
173*a58d3d2aSXin Li     strcat(p_in_file, "_p_in.s32");
174*a58d3d2aSXin Li     f_p_in = fopen(p_in_file, "r");
175*a58d3d2aSXin Li     if (f_p_in == NULL)
176*a58d3d2aSXin Li     {
177*a58d3d2aSXin Li         sprintf(message, "could not open file %s", p_in_file);
178*a58d3d2aSXin Li         perror(message);
179*a58d3d2aSXin Li         exit(1);
180*a58d3d2aSXin Li     }
181*a58d3d2aSXin Li 
182*a58d3d2aSXin Li     strcpy(x_out_file, prefix);
183*a58d3d2aSXin Li     strcat(x_out_file, "_x_out.f32");
184*a58d3d2aSXin Li     f_x_out = fopen(x_out_file, "r");
185*a58d3d2aSXin Li     if (f_x_out == NULL)
186*a58d3d2aSXin Li     {
187*a58d3d2aSXin Li         sprintf(message, "could not open file %s", x_out_file);
188*a58d3d2aSXin Li         perror(message);
189*a58d3d2aSXin Li         exit(1);
190*a58d3d2aSXin Li     }
191*a58d3d2aSXin Li 
192*a58d3d2aSXin Li     for (i_frame = 0; i_frame < num_frames; i_frame ++)
193*a58d3d2aSXin Li     {
194*a58d3d2aSXin Li         if (fread(features, sizeof(float), feature_dim, f_features) != feature_dim)
195*a58d3d2aSXin Li         {
196*a58d3d2aSXin Li             fprintf(stderr, "could not read frame %d from %s\n", i_frame, feature_file);
197*a58d3d2aSXin Li             exit(1);
198*a58d3d2aSXin Li         }
199*a58d3d2aSXin Li 
200*a58d3d2aSXin Li         if (fread(x_in, sizeof(float), frame_size, f_x_in) != frame_size)
201*a58d3d2aSXin Li         {
202*a58d3d2aSXin Li             fprintf(stderr, "could not read frame %d from %s\n", i_frame, x_in_file);
203*a58d3d2aSXin Li             exit(1);
204*a58d3d2aSXin Li         }
205*a58d3d2aSXin Li 
206*a58d3d2aSXin Li         if (fread(&pitch_lag, sizeof(int), 1, f_p_in) != 1)
207*a58d3d2aSXin Li         {
208*a58d3d2aSXin Li             fprintf(stderr, "could not read frame %d from %s\n", i_frame, p_in_file);
209*a58d3d2aSXin Li             exit(1);
210*a58d3d2aSXin Li         }
211*a58d3d2aSXin Li 
212*a58d3d2aSXin Li         if (fread(x_out_ref, sizeof(float), frame_size, f_x_out) != frame_size)
213*a58d3d2aSXin Li         {
214*a58d3d2aSXin Li             fprintf(stderr, "could not read frame %d from %s\n", i_frame, x_out_file);
215*a58d3d2aSXin Li             exit(1);
216*a58d3d2aSXin Li         }
217*a58d3d2aSXin Li 
218*a58d3d2aSXin Li         adacomb_process_frame(hAdaComb, x_out, x_in, features, kernel_layer, gain_layer, global_gain_layer,
219*a58d3d2aSXin Li             pitch_lag, feature_dim, frame_size, overlap_size, kernel_size, left_padding, filter_gain_a, filter_gain_b, log_gain_limit, window, 0);
220*a58d3d2aSXin Li 
221*a58d3d2aSXin Li 
222*a58d3d2aSXin Li         mse = 0;
223*a58d3d2aSXin Li         for (i_sample = 0; i_sample < frame_size; i_sample ++)
224*a58d3d2aSXin Li         {
225*a58d3d2aSXin Li             mse += pow(x_out_ref[i_sample] - x_out[i_sample], 2);
226*a58d3d2aSXin Li         }
227*a58d3d2aSXin Li         mse = sqrt(mse / (frame_size));
228*a58d3d2aSXin Li         printf("rmse[%d] %f\n", i_frame, mse);
229*a58d3d2aSXin Li 
230*a58d3d2aSXin Li     }
231*a58d3d2aSXin Li }
232*a58d3d2aSXin Li 
adashape_compare(const char * prefix,int num_frames,AdaShapeState * hAdaShape,LinearLayer * alpha1,LinearLayer * alpha2,int feature_dim,int frame_size,int avg_pool_k)233*a58d3d2aSXin Li void adashape_compare(
234*a58d3d2aSXin Li     const char * prefix,
235*a58d3d2aSXin Li     int num_frames,
236*a58d3d2aSXin Li     AdaShapeState* hAdaShape,
237*a58d3d2aSXin Li     LinearLayer *alpha1,
238*a58d3d2aSXin Li     LinearLayer *alpha2,
239*a58d3d2aSXin Li     int feature_dim,
240*a58d3d2aSXin Li     int frame_size,
241*a58d3d2aSXin Li     int avg_pool_k
242*a58d3d2aSXin Li )
243*a58d3d2aSXin Li {
244*a58d3d2aSXin Li     char feature_file[256];
245*a58d3d2aSXin Li     char x_in_file[256];
246*a58d3d2aSXin Li     char x_out_file[256];
247*a58d3d2aSXin Li     char message[512];
248*a58d3d2aSXin Li     int i_frame, i_sample;
249*a58d3d2aSXin Li     float mse;
250*a58d3d2aSXin Li     float features[512];
251*a58d3d2aSXin Li     float x_in[512];
252*a58d3d2aSXin Li     float x_out_ref[512];
253*a58d3d2aSXin Li     float x_out[512];
254*a58d3d2aSXin Li 
255*a58d3d2aSXin Li     init_adashape_state(hAdaShape);
256*a58d3d2aSXin Li 
257*a58d3d2aSXin Li     FILE *f_features, *f_x_in, *f_x_out;
258*a58d3d2aSXin Li 
259*a58d3d2aSXin Li     strcpy(feature_file, prefix);
260*a58d3d2aSXin Li     strcat(feature_file, "_features.f32");
261*a58d3d2aSXin Li     f_features = fopen(feature_file, "r");
262*a58d3d2aSXin Li     if (f_features == NULL)
263*a58d3d2aSXin Li     {
264*a58d3d2aSXin Li         sprintf(message, "could not open file %s", feature_file);
265*a58d3d2aSXin Li         perror(message);
266*a58d3d2aSXin Li         exit(1);
267*a58d3d2aSXin Li     }
268*a58d3d2aSXin Li 
269*a58d3d2aSXin Li     strcpy(x_in_file, prefix);
270*a58d3d2aSXin Li     strcat(x_in_file, "_x_in.f32");
271*a58d3d2aSXin Li     f_x_in = fopen(x_in_file, "r");
272*a58d3d2aSXin Li     if (f_x_in == NULL)
273*a58d3d2aSXin Li     {
274*a58d3d2aSXin Li         sprintf(message, "could not open file %s", x_in_file);
275*a58d3d2aSXin Li         perror(message);
276*a58d3d2aSXin Li         exit(1);
277*a58d3d2aSXin Li     }
278*a58d3d2aSXin Li 
279*a58d3d2aSXin Li     strcpy(x_out_file, prefix);
280*a58d3d2aSXin Li     strcat(x_out_file, "_x_out.f32");
281*a58d3d2aSXin Li     f_x_out = fopen(x_out_file, "r");
282*a58d3d2aSXin Li     if (f_x_out == NULL)
283*a58d3d2aSXin Li     {
284*a58d3d2aSXin Li         sprintf(message, "could not open file %s", x_out_file);
285*a58d3d2aSXin Li         perror(message);
286*a58d3d2aSXin Li         exit(1);
287*a58d3d2aSXin Li     }
288*a58d3d2aSXin Li 
289*a58d3d2aSXin Li     for (i_frame = 0; i_frame < num_frames; i_frame ++)
290*a58d3d2aSXin Li     {
291*a58d3d2aSXin Li         if (fread(features, sizeof(float), feature_dim, f_features) != feature_dim)
292*a58d3d2aSXin Li         {
293*a58d3d2aSXin Li             fprintf(stderr, "could not read frame %d from %s\n", i_frame, feature_file);
294*a58d3d2aSXin Li             exit(1);
295*a58d3d2aSXin Li         }
296*a58d3d2aSXin Li 
297*a58d3d2aSXin Li         if (fread(x_in, sizeof(float), frame_size, f_x_in) != frame_size)
298*a58d3d2aSXin Li         {
299*a58d3d2aSXin Li             fprintf(stderr, "could not read frame %d from %s\n", i_frame, x_in_file);
300*a58d3d2aSXin Li             exit(1);
301*a58d3d2aSXin Li         }
302*a58d3d2aSXin Li 
303*a58d3d2aSXin Li         if (fread(x_out_ref, sizeof(float), frame_size, f_x_out) != frame_size)
304*a58d3d2aSXin Li         {
305*a58d3d2aSXin Li             fprintf(stderr, "could not read frame %d from %s\n", i_frame, x_out_file);
306*a58d3d2aSXin Li             exit(1);
307*a58d3d2aSXin Li         }
308*a58d3d2aSXin Li 
309*a58d3d2aSXin Li         adashape_process_frame(hAdaShape, x_out, x_in, features, alpha1, alpha2, feature_dim,
310*a58d3d2aSXin Li             frame_size, avg_pool_k, 0);
311*a58d3d2aSXin Li 
312*a58d3d2aSXin Li         mse = 0;
313*a58d3d2aSXin Li         for (i_sample = 0; i_sample < frame_size; i_sample ++)
314*a58d3d2aSXin Li         {
315*a58d3d2aSXin Li             mse += pow(x_out_ref[i_sample] - x_out[i_sample], 2);
316*a58d3d2aSXin Li         }
317*a58d3d2aSXin Li         mse = sqrt(mse / (frame_size));
318*a58d3d2aSXin Li         printf("rmse[%d] %f\n", i_frame, mse);
319*a58d3d2aSXin Li 
320*a58d3d2aSXin Li     }
321*a58d3d2aSXin Li }
322*a58d3d2aSXin Li 
323*a58d3d2aSXin Li 
main()324*a58d3d2aSXin Li int main()
325*a58d3d2aSXin Li {
326*a58d3d2aSXin Li     LACELayers hLACE;
327*a58d3d2aSXin Li     NOLACELayers hNoLACE;
328*a58d3d2aSXin Li 
329*a58d3d2aSXin Li     AdaConvState hAdaConv;
330*a58d3d2aSXin Li     AdaCombState hAdaComb;
331*a58d3d2aSXin Li     AdaShapeState hAdaShape;
332*a58d3d2aSXin Li 
333*a58d3d2aSXin Li     init_adaconv_state(&hAdaConv);
334*a58d3d2aSXin Li 
335*a58d3d2aSXin Li     init_lacelayers(&hLACE, lacelayers_arrays);
336*a58d3d2aSXin Li     init_nolacelayers(&hNoLACE, nolacelayers_arrays);
337*a58d3d2aSXin Li 
338*a58d3d2aSXin Li     printf("\ntesting lace.af1 (1 in, 1 out)...\n");
339*a58d3d2aSXin Li     adaconv_compare(
340*a58d3d2aSXin Li         "testvectors/lace_af1",
341*a58d3d2aSXin Li         5,
342*a58d3d2aSXin Li         &hAdaConv,
343*a58d3d2aSXin Li         &hLACE.lace_af1_kernel,
344*a58d3d2aSXin Li         &hLACE.lace_af1_gain,
345*a58d3d2aSXin Li         LACE_AF1_FEATURE_DIM,
346*a58d3d2aSXin Li         LACE_AF1_FRAME_SIZE,
347*a58d3d2aSXin Li         LACE_AF1_OVERLAP_SIZE,
348*a58d3d2aSXin Li         LACE_AF1_IN_CHANNELS,
349*a58d3d2aSXin Li         LACE_AF1_OUT_CHANNELS,
350*a58d3d2aSXin Li         LACE_AF1_KERNEL_SIZE,
351*a58d3d2aSXin Li         LACE_AF1_LEFT_PADDING,
352*a58d3d2aSXin Li         LACE_AF1_FILTER_GAIN_A,
353*a58d3d2aSXin Li         LACE_AF1_FILTER_GAIN_B,
354*a58d3d2aSXin Li         LACE_AF1_SHAPE_GAIN
355*a58d3d2aSXin Li     );
356*a58d3d2aSXin Li 
357*a58d3d2aSXin Li 
358*a58d3d2aSXin Li     printf("\ntesting nolace.af1 (1 in, 2 out)...\n");
359*a58d3d2aSXin Li     adaconv_compare(
360*a58d3d2aSXin Li         "testvectors/nolace_af1",
361*a58d3d2aSXin Li         5,
362*a58d3d2aSXin Li         &hAdaConv,
363*a58d3d2aSXin Li         &hNoLACE.nolace_af1_kernel,
364*a58d3d2aSXin Li         &hNoLACE.nolace_af1_gain,
365*a58d3d2aSXin Li         NOLACE_AF1_FEATURE_DIM,
366*a58d3d2aSXin Li         NOLACE_AF1_FRAME_SIZE,
367*a58d3d2aSXin Li         NOLACE_AF1_OVERLAP_SIZE,
368*a58d3d2aSXin Li         NOLACE_AF1_IN_CHANNELS,
369*a58d3d2aSXin Li         NOLACE_AF1_OUT_CHANNELS,
370*a58d3d2aSXin Li         NOLACE_AF1_KERNEL_SIZE,
371*a58d3d2aSXin Li         NOLACE_AF1_LEFT_PADDING,
372*a58d3d2aSXin Li         NOLACE_AF1_FILTER_GAIN_A,
373*a58d3d2aSXin Li         NOLACE_AF1_FILTER_GAIN_B,
374*a58d3d2aSXin Li         NOLACE_AF1_SHAPE_GAIN
375*a58d3d2aSXin Li     );
376*a58d3d2aSXin Li 
377*a58d3d2aSXin Li 
378*a58d3d2aSXin Li     printf("testing nolace.af4 (2 in, 1 out)...\n");
379*a58d3d2aSXin Li     adaconv_compare(
380*a58d3d2aSXin Li         "testvectors/nolace_af4",
381*a58d3d2aSXin Li         5,
382*a58d3d2aSXin Li         &hAdaConv,
383*a58d3d2aSXin Li         &hNoLACE.nolace_af4_kernel,
384*a58d3d2aSXin Li         &hNoLACE.nolace_af4_gain,
385*a58d3d2aSXin Li         NOLACE_AF4_FEATURE_DIM,
386*a58d3d2aSXin Li         NOLACE_AF4_FRAME_SIZE,
387*a58d3d2aSXin Li         NOLACE_AF4_OVERLAP_SIZE,
388*a58d3d2aSXin Li         NOLACE_AF4_IN_CHANNELS,
389*a58d3d2aSXin Li         NOLACE_AF4_OUT_CHANNELS,
390*a58d3d2aSXin Li         NOLACE_AF4_KERNEL_SIZE,
391*a58d3d2aSXin Li         NOLACE_AF4_LEFT_PADDING,
392*a58d3d2aSXin Li         NOLACE_AF4_FILTER_GAIN_A,
393*a58d3d2aSXin Li         NOLACE_AF4_FILTER_GAIN_B,
394*a58d3d2aSXin Li         NOLACE_AF4_SHAPE_GAIN
395*a58d3d2aSXin Li     );
396*a58d3d2aSXin Li 
397*a58d3d2aSXin Li     printf("\ntesting nolace.af2 (2 in, 2 out)...\n");
398*a58d3d2aSXin Li     adaconv_compare(
399*a58d3d2aSXin Li         "testvectors/nolace_af2",
400*a58d3d2aSXin Li         5,
401*a58d3d2aSXin Li         &hAdaConv,
402*a58d3d2aSXin Li         &hNoLACE.nolace_af2_kernel,
403*a58d3d2aSXin Li         &hNoLACE.nolace_af2_gain,
404*a58d3d2aSXin Li         NOLACE_AF2_FEATURE_DIM,
405*a58d3d2aSXin Li         NOLACE_AF2_FRAME_SIZE,
406*a58d3d2aSXin Li         NOLACE_AF2_OVERLAP_SIZE,
407*a58d3d2aSXin Li         NOLACE_AF2_IN_CHANNELS,
408*a58d3d2aSXin Li         NOLACE_AF2_OUT_CHANNELS,
409*a58d3d2aSXin Li         NOLACE_AF2_KERNEL_SIZE,
410*a58d3d2aSXin Li         NOLACE_AF2_LEFT_PADDING,
411*a58d3d2aSXin Li         NOLACE_AF2_FILTER_GAIN_A,
412*a58d3d2aSXin Li         NOLACE_AF2_FILTER_GAIN_B,
413*a58d3d2aSXin Li         NOLACE_AF2_SHAPE_GAIN
414*a58d3d2aSXin Li     );
415*a58d3d2aSXin Li 
416*a58d3d2aSXin Li     printf("\ntesting lace.cf1...\n");
417*a58d3d2aSXin Li     adacomb_compare(
418*a58d3d2aSXin Li         "testvectors/lace_cf1",
419*a58d3d2aSXin Li         5,
420*a58d3d2aSXin Li         &hAdaComb,
421*a58d3d2aSXin Li         &hLACE.lace_cf1_kernel,
422*a58d3d2aSXin Li         &hLACE.lace_cf1_gain,
423*a58d3d2aSXin Li         &hLACE.lace_cf1_global_gain,
424*a58d3d2aSXin Li         LACE_CF1_FEATURE_DIM,
425*a58d3d2aSXin Li         LACE_CF1_FRAME_SIZE,
426*a58d3d2aSXin Li         LACE_CF1_OVERLAP_SIZE,
427*a58d3d2aSXin Li         LACE_CF1_KERNEL_SIZE,
428*a58d3d2aSXin Li         LACE_CF1_LEFT_PADDING,
429*a58d3d2aSXin Li         LACE_CF1_FILTER_GAIN_A,
430*a58d3d2aSXin Li         LACE_CF1_FILTER_GAIN_B,
431*a58d3d2aSXin Li         LACE_CF1_LOG_GAIN_LIMIT
432*a58d3d2aSXin Li     );
433*a58d3d2aSXin Li 
434*a58d3d2aSXin Li     printf("\ntesting nolace.tdshape1...\n");
435*a58d3d2aSXin Li     adashape_compare(
436*a58d3d2aSXin Li         "testvectors/nolace_tdshape1",
437*a58d3d2aSXin Li         5,
438*a58d3d2aSXin Li         &hAdaShape,
439*a58d3d2aSXin Li         &hNoLACE.nolace_tdshape1_alpha1,
440*a58d3d2aSXin Li         &hNoLACE.nolace_tdshape1_alpha2,
441*a58d3d2aSXin Li         NOLACE_TDSHAPE1_FEATURE_DIM,
442*a58d3d2aSXin Li         NOLACE_TDSHAPE1_FRAME_SIZE,
443*a58d3d2aSXin Li         NOLACE_TDSHAPE1_AVG_POOL_K
444*a58d3d2aSXin Li     );
445*a58d3d2aSXin Li 
446*a58d3d2aSXin Li     return 0;
447*a58d3d2aSXin Li }
448*a58d3d2aSXin Li 
449*a58d3d2aSXin Li /* gcc -DVAR_ARRAYS -DENABLE_OSCE  -I ../include -I ../silk -I . -I ../celt adaconvtest.c nndsp.c lace_data.c nolace_data.c nnet.c nnet_default.c ../celt/pitch.c ../celt/celt_lpc.c parse_lpcnet_weights.c -lm -o adaconvtest */