xref: /aosp_15_r20/external/libopus/src/mapping_matrix.c (revision a58d3d2adb790c104798cd88c8a3aff4fa8b82cc)
1*a58d3d2aSXin Li /* Copyright (c) 2017 Google Inc.
2*a58d3d2aSXin Li    Written by Andrew Allen */
3*a58d3d2aSXin Li /*
4*a58d3d2aSXin Li    Redistribution and use in source and binary forms, with or without
5*a58d3d2aSXin Li    modification, are permitted provided that the following conditions
6*a58d3d2aSXin Li    are met:
7*a58d3d2aSXin Li 
8*a58d3d2aSXin Li    - Redistributions of source code must retain the above copyright
9*a58d3d2aSXin Li    notice, this list of conditions and the following disclaimer.
10*a58d3d2aSXin Li 
11*a58d3d2aSXin Li    - Redistributions in binary form must reproduce the above copyright
12*a58d3d2aSXin Li    notice, this list of conditions and the following disclaimer in the
13*a58d3d2aSXin Li    documentation and/or other materials provided with the distribution.
14*a58d3d2aSXin Li 
15*a58d3d2aSXin Li    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16*a58d3d2aSXin Li    ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17*a58d3d2aSXin Li    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
18*a58d3d2aSXin Li    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
19*a58d3d2aSXin Li    OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20*a58d3d2aSXin Li    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21*a58d3d2aSXin Li    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22*a58d3d2aSXin Li    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23*a58d3d2aSXin Li    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
24*a58d3d2aSXin Li    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25*a58d3d2aSXin Li    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*a58d3d2aSXin Li */
27*a58d3d2aSXin Li 
28*a58d3d2aSXin Li #ifdef HAVE_CONFIG_H
29*a58d3d2aSXin Li #include "config.h"
30*a58d3d2aSXin Li #endif
31*a58d3d2aSXin Li 
32*a58d3d2aSXin Li #include "arch.h"
33*a58d3d2aSXin Li #include "float_cast.h"
34*a58d3d2aSXin Li #include "opus_private.h"
35*a58d3d2aSXin Li #include "opus_defines.h"
36*a58d3d2aSXin Li #include "mapping_matrix.h"
37*a58d3d2aSXin Li 
38*a58d3d2aSXin Li #define MATRIX_INDEX(nb_rows, row, col) (nb_rows * col + row)
39*a58d3d2aSXin Li 
mapping_matrix_get_size(int rows,int cols)40*a58d3d2aSXin Li opus_int32 mapping_matrix_get_size(int rows, int cols)
41*a58d3d2aSXin Li {
42*a58d3d2aSXin Li   opus_int32 size;
43*a58d3d2aSXin Li 
44*a58d3d2aSXin Li   /* Mapping Matrix must only support up to 255 channels in or out.
45*a58d3d2aSXin Li    * Additionally, the total cell count must be <= 65004 octets in order
46*a58d3d2aSXin Li    * for the matrix to be stored in an OGG header.
47*a58d3d2aSXin Li    */
48*a58d3d2aSXin Li   if (rows > 255 || cols > 255)
49*a58d3d2aSXin Li       return 0;
50*a58d3d2aSXin Li   size = rows * (opus_int32)cols * sizeof(opus_int16);
51*a58d3d2aSXin Li   if (size > 65004)
52*a58d3d2aSXin Li     return 0;
53*a58d3d2aSXin Li 
54*a58d3d2aSXin Li   return align(sizeof(MappingMatrix)) + align(size);
55*a58d3d2aSXin Li }
56*a58d3d2aSXin Li 
mapping_matrix_get_data(const MappingMatrix * matrix)57*a58d3d2aSXin Li opus_int16 *mapping_matrix_get_data(const MappingMatrix *matrix)
58*a58d3d2aSXin Li {
59*a58d3d2aSXin Li   /* void* cast avoids clang -Wcast-align warning */
60*a58d3d2aSXin Li   return (opus_int16*)(void*)((char*)matrix + align(sizeof(MappingMatrix)));
61*a58d3d2aSXin Li }
62*a58d3d2aSXin Li 
mapping_matrix_init(MappingMatrix * const matrix,int rows,int cols,int gain,const opus_int16 * data,opus_int32 data_size)63*a58d3d2aSXin Li void mapping_matrix_init(MappingMatrix * const matrix,
64*a58d3d2aSXin Li   int rows, int cols, int gain, const opus_int16 *data, opus_int32 data_size)
65*a58d3d2aSXin Li {
66*a58d3d2aSXin Li   int i;
67*a58d3d2aSXin Li   opus_int16 *ptr;
68*a58d3d2aSXin Li 
69*a58d3d2aSXin Li #if !defined(ENABLE_ASSERTIONS)
70*a58d3d2aSXin Li   (void)data_size;
71*a58d3d2aSXin Li #endif
72*a58d3d2aSXin Li   celt_assert(align(data_size) == align(rows * cols * sizeof(opus_int16)));
73*a58d3d2aSXin Li 
74*a58d3d2aSXin Li   matrix->rows = rows;
75*a58d3d2aSXin Li   matrix->cols = cols;
76*a58d3d2aSXin Li   matrix->gain = gain;
77*a58d3d2aSXin Li   ptr = mapping_matrix_get_data(matrix);
78*a58d3d2aSXin Li   for (i = 0; i < rows * cols; i++)
79*a58d3d2aSXin Li   {
80*a58d3d2aSXin Li      ptr[i] = data[i];
81*a58d3d2aSXin Li   }
82*a58d3d2aSXin Li }
83*a58d3d2aSXin Li 
84*a58d3d2aSXin Li #ifndef DISABLE_FLOAT_API
mapping_matrix_multiply_channel_in_float(const MappingMatrix * matrix,const float * input,int input_rows,opus_val16 * output,int output_row,int output_rows,int frame_size)85*a58d3d2aSXin Li void mapping_matrix_multiply_channel_in_float(
86*a58d3d2aSXin Li     const MappingMatrix *matrix,
87*a58d3d2aSXin Li     const float *input,
88*a58d3d2aSXin Li     int input_rows,
89*a58d3d2aSXin Li     opus_val16 *output,
90*a58d3d2aSXin Li     int output_row,
91*a58d3d2aSXin Li     int output_rows,
92*a58d3d2aSXin Li     int frame_size)
93*a58d3d2aSXin Li {
94*a58d3d2aSXin Li   /* Matrix data is ordered col-wise. */
95*a58d3d2aSXin Li   opus_int16* matrix_data;
96*a58d3d2aSXin Li   int i, col;
97*a58d3d2aSXin Li 
98*a58d3d2aSXin Li   celt_assert(input_rows <= matrix->cols && output_rows <= matrix->rows);
99*a58d3d2aSXin Li 
100*a58d3d2aSXin Li   matrix_data = mapping_matrix_get_data(matrix);
101*a58d3d2aSXin Li 
102*a58d3d2aSXin Li   for (i = 0; i < frame_size; i++)
103*a58d3d2aSXin Li   {
104*a58d3d2aSXin Li     float tmp = 0;
105*a58d3d2aSXin Li     for (col = 0; col < input_rows; col++)
106*a58d3d2aSXin Li     {
107*a58d3d2aSXin Li       tmp +=
108*a58d3d2aSXin Li         matrix_data[MATRIX_INDEX(matrix->rows, output_row, col)] *
109*a58d3d2aSXin Li         input[MATRIX_INDEX(input_rows, col, i)];
110*a58d3d2aSXin Li     }
111*a58d3d2aSXin Li #if defined(FIXED_POINT)
112*a58d3d2aSXin Li     output[output_rows * i] = FLOAT2INT16((1/32768.f)*tmp);
113*a58d3d2aSXin Li #else
114*a58d3d2aSXin Li     output[output_rows * i] = (1/32768.f)*tmp;
115*a58d3d2aSXin Li #endif
116*a58d3d2aSXin Li   }
117*a58d3d2aSXin Li }
118*a58d3d2aSXin Li 
mapping_matrix_multiply_channel_out_float(const MappingMatrix * matrix,const opus_val16 * input,int input_row,int input_rows,float * output,int output_rows,int frame_size)119*a58d3d2aSXin Li void mapping_matrix_multiply_channel_out_float(
120*a58d3d2aSXin Li     const MappingMatrix *matrix,
121*a58d3d2aSXin Li     const opus_val16 *input,
122*a58d3d2aSXin Li     int input_row,
123*a58d3d2aSXin Li     int input_rows,
124*a58d3d2aSXin Li     float *output,
125*a58d3d2aSXin Li     int output_rows,
126*a58d3d2aSXin Li     int frame_size
127*a58d3d2aSXin Li )
128*a58d3d2aSXin Li {
129*a58d3d2aSXin Li   /* Matrix data is ordered col-wise. */
130*a58d3d2aSXin Li   opus_int16* matrix_data;
131*a58d3d2aSXin Li   int i, row;
132*a58d3d2aSXin Li   float input_sample;
133*a58d3d2aSXin Li 
134*a58d3d2aSXin Li   celt_assert(input_rows <= matrix->cols && output_rows <= matrix->rows);
135*a58d3d2aSXin Li 
136*a58d3d2aSXin Li   matrix_data = mapping_matrix_get_data(matrix);
137*a58d3d2aSXin Li 
138*a58d3d2aSXin Li   for (i = 0; i < frame_size; i++)
139*a58d3d2aSXin Li   {
140*a58d3d2aSXin Li #if defined(FIXED_POINT)
141*a58d3d2aSXin Li     input_sample = (1/32768.f)*input[input_rows * i];
142*a58d3d2aSXin Li #else
143*a58d3d2aSXin Li     input_sample = input[input_rows * i];
144*a58d3d2aSXin Li #endif
145*a58d3d2aSXin Li     for (row = 0; row < output_rows; row++)
146*a58d3d2aSXin Li     {
147*a58d3d2aSXin Li       float tmp =
148*a58d3d2aSXin Li         (1/32768.f)*matrix_data[MATRIX_INDEX(matrix->rows, row, input_row)] *
149*a58d3d2aSXin Li         input_sample;
150*a58d3d2aSXin Li       output[MATRIX_INDEX(output_rows, row, i)] += tmp;
151*a58d3d2aSXin Li     }
152*a58d3d2aSXin Li   }
153*a58d3d2aSXin Li }
154*a58d3d2aSXin Li #endif /* DISABLE_FLOAT_API */
155*a58d3d2aSXin Li 
mapping_matrix_multiply_channel_in_short(const MappingMatrix * matrix,const opus_int16 * input,int input_rows,opus_val16 * output,int output_row,int output_rows,int frame_size)156*a58d3d2aSXin Li void mapping_matrix_multiply_channel_in_short(
157*a58d3d2aSXin Li     const MappingMatrix *matrix,
158*a58d3d2aSXin Li     const opus_int16 *input,
159*a58d3d2aSXin Li     int input_rows,
160*a58d3d2aSXin Li     opus_val16 *output,
161*a58d3d2aSXin Li     int output_row,
162*a58d3d2aSXin Li     int output_rows,
163*a58d3d2aSXin Li     int frame_size)
164*a58d3d2aSXin Li {
165*a58d3d2aSXin Li   /* Matrix data is ordered col-wise. */
166*a58d3d2aSXin Li   opus_int16* matrix_data;
167*a58d3d2aSXin Li   int i, col;
168*a58d3d2aSXin Li 
169*a58d3d2aSXin Li   celt_assert(input_rows <= matrix->cols && output_rows <= matrix->rows);
170*a58d3d2aSXin Li 
171*a58d3d2aSXin Li   matrix_data = mapping_matrix_get_data(matrix);
172*a58d3d2aSXin Li 
173*a58d3d2aSXin Li   for (i = 0; i < frame_size; i++)
174*a58d3d2aSXin Li   {
175*a58d3d2aSXin Li     opus_val32 tmp = 0;
176*a58d3d2aSXin Li     for (col = 0; col < input_rows; col++)
177*a58d3d2aSXin Li     {
178*a58d3d2aSXin Li #if defined(FIXED_POINT)
179*a58d3d2aSXin Li       tmp +=
180*a58d3d2aSXin Li         ((opus_int32)matrix_data[MATRIX_INDEX(matrix->rows, output_row, col)] *
181*a58d3d2aSXin Li         (opus_int32)input[MATRIX_INDEX(input_rows, col, i)]) >> 8;
182*a58d3d2aSXin Li #else
183*a58d3d2aSXin Li       tmp +=
184*a58d3d2aSXin Li         matrix_data[MATRIX_INDEX(matrix->rows, output_row, col)] *
185*a58d3d2aSXin Li         input[MATRIX_INDEX(input_rows, col, i)];
186*a58d3d2aSXin Li #endif
187*a58d3d2aSXin Li     }
188*a58d3d2aSXin Li #if defined(FIXED_POINT)
189*a58d3d2aSXin Li     output[output_rows * i] = (opus_int16)((tmp + 64) >> 7);
190*a58d3d2aSXin Li #else
191*a58d3d2aSXin Li     output[output_rows * i] = (1/(32768.f*32768.f))*tmp;
192*a58d3d2aSXin Li #endif
193*a58d3d2aSXin Li   }
194*a58d3d2aSXin Li }
195*a58d3d2aSXin Li 
mapping_matrix_multiply_channel_out_short(const MappingMatrix * matrix,const opus_val16 * input,int input_row,int input_rows,opus_int16 * output,int output_rows,int frame_size)196*a58d3d2aSXin Li void mapping_matrix_multiply_channel_out_short(
197*a58d3d2aSXin Li     const MappingMatrix *matrix,
198*a58d3d2aSXin Li     const opus_val16 *input,
199*a58d3d2aSXin Li     int input_row,
200*a58d3d2aSXin Li     int input_rows,
201*a58d3d2aSXin Li     opus_int16 *output,
202*a58d3d2aSXin Li     int output_rows,
203*a58d3d2aSXin Li     int frame_size)
204*a58d3d2aSXin Li {
205*a58d3d2aSXin Li   /* Matrix data is ordered col-wise. */
206*a58d3d2aSXin Li   opus_int16* matrix_data;
207*a58d3d2aSXin Li   int i, row;
208*a58d3d2aSXin Li   opus_int32 input_sample;
209*a58d3d2aSXin Li 
210*a58d3d2aSXin Li   celt_assert(input_rows <= matrix->cols && output_rows <= matrix->rows);
211*a58d3d2aSXin Li 
212*a58d3d2aSXin Li   matrix_data = mapping_matrix_get_data(matrix);
213*a58d3d2aSXin Li 
214*a58d3d2aSXin Li   for (i = 0; i < frame_size; i++)
215*a58d3d2aSXin Li   {
216*a58d3d2aSXin Li #if defined(FIXED_POINT)
217*a58d3d2aSXin Li     input_sample = (opus_int32)input[input_rows * i];
218*a58d3d2aSXin Li #else
219*a58d3d2aSXin Li     input_sample = (opus_int32)FLOAT2INT16(input[input_rows * i]);
220*a58d3d2aSXin Li #endif
221*a58d3d2aSXin Li     for (row = 0; row < output_rows; row++)
222*a58d3d2aSXin Li     {
223*a58d3d2aSXin Li       opus_int32 tmp =
224*a58d3d2aSXin Li         (opus_int32)matrix_data[MATRIX_INDEX(matrix->rows, row, input_row)] *
225*a58d3d2aSXin Li         input_sample;
226*a58d3d2aSXin Li       output[MATRIX_INDEX(output_rows, row, i)] += (tmp + 16384) >> 15;
227*a58d3d2aSXin Li     }
228*a58d3d2aSXin Li   }
229*a58d3d2aSXin Li }
230*a58d3d2aSXin Li 
231*a58d3d2aSXin Li const MappingMatrix mapping_matrix_foa_mixing = { 6, 6, 0 };
232*a58d3d2aSXin Li const opus_int16 mapping_matrix_foa_mixing_data[36] = {
233*a58d3d2aSXin Li      16384,      0, -16384,  23170,      0,      0,  16384,  23170,
234*a58d3d2aSXin Li      16384,      0,      0,      0,  16384,      0, -16384, -23170,
235*a58d3d2aSXin Li          0,      0,  16384, -23170,  16384,      0,      0,      0,
236*a58d3d2aSXin Li          0,      0,      0,      0,  32767,      0,      0,      0,
237*a58d3d2aSXin Li          0,      0,      0,  32767
238*a58d3d2aSXin Li };
239*a58d3d2aSXin Li 
240*a58d3d2aSXin Li const MappingMatrix mapping_matrix_soa_mixing = { 11, 11, 0 };
241*a58d3d2aSXin Li const opus_int16 mapping_matrix_soa_mixing_data[121] = {
242*a58d3d2aSXin Li      10923,   7723,  13377, -13377,  11585,   9459,   7723, -16384,
243*a58d3d2aSXin Li      -6689,      0,      0,  10923,   7723,  13377,  13377, -11585,
244*a58d3d2aSXin Li       9459,   7723,  16384,  -6689,      0,      0,  10923, -15447,
245*a58d3d2aSXin Li      13377,      0,      0, -18919,   7723,      0,  13377,      0,
246*a58d3d2aSXin Li          0,  10923,   7723, -13377, -13377,  11585,  -9459,   7723,
247*a58d3d2aSXin Li      16384,  -6689,      0,      0,  10923,  -7723,      0,  13377,
248*a58d3d2aSXin Li     -16384,      0, -15447,      0,   9459,      0,      0,  10923,
249*a58d3d2aSXin Li      -7723,      0, -13377,  16384,      0, -15447,      0,   9459,
250*a58d3d2aSXin Li          0,      0,  10923,  15447,      0,      0,      0,      0,
251*a58d3d2aSXin Li     -15447,      0, -18919,      0,      0,  10923,   7723, -13377,
252*a58d3d2aSXin Li      13377, -11585,  -9459,   7723, -16384,  -6689,      0,      0,
253*a58d3d2aSXin Li      10923, -15447, -13377,      0,      0,  18919,   7723,      0,
254*a58d3d2aSXin Li      13377,      0,      0,      0,      0,      0,      0,      0,
255*a58d3d2aSXin Li          0,      0,      0,      0,  32767,      0,      0,      0,
256*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
257*a58d3d2aSXin Li      32767
258*a58d3d2aSXin Li };
259*a58d3d2aSXin Li 
260*a58d3d2aSXin Li const MappingMatrix mapping_matrix_toa_mixing = { 18, 18, 0 };
261*a58d3d2aSXin Li const opus_int16 mapping_matrix_toa_mixing_data[324] = {
262*a58d3d2aSXin Li       8208,      0,   -881,  14369,      0,      0,  -8192,  -4163,
263*a58d3d2aSXin Li      13218,      0,      0,      0,  11095,  -8836,  -6218,  14833,
264*a58d3d2aSXin Li          0,      0,   8208, -10161,    881,  10161, -13218,  -2944,
265*a58d3d2aSXin Li      -8192,   2944,      0, -10488,  -6218,   6248, -11095,  -6248,
266*a58d3d2aSXin Li          0, -10488,      0,      0,   8208,  10161,    881, -10161,
267*a58d3d2aSXin Li     -13218,   2944,  -8192,  -2944,      0,  10488,  -6218,  -6248,
268*a58d3d2aSXin Li     -11095,   6248,      0,  10488,      0,      0,   8176,   5566,
269*a58d3d2aSXin Li     -11552,   5566,   9681, -11205,   8192, -11205,      0,   4920,
270*a58d3d2aSXin Li     -15158,   9756,  -3334,   9756,      0,  -4920,      0,      0,
271*a58d3d2aSXin Li       8176,   7871,  11552,      0,      0,  15846,   8192,      0,
272*a58d3d2aSXin Li      -9681,  -6958,      0,  13797,   3334,      0, -15158,      0,
273*a58d3d2aSXin Li          0,      0,   8176,      0,  11552,   7871,      0,      0,
274*a58d3d2aSXin Li       8192,  15846,   9681,      0,      0,      0,   3334,  13797,
275*a58d3d2aSXin Li      15158,   6958,      0,      0,   8176,   5566, -11552,  -5566,
276*a58d3d2aSXin Li      -9681, -11205,   8192,  11205,      0,   4920,  15158,   9756,
277*a58d3d2aSXin Li      -3334,  -9756,      0,   4920,      0,      0,   8208,  14369,
278*a58d3d2aSXin Li       -881,      0,      0,  -4163,  -8192,      0, -13218, -14833,
279*a58d3d2aSXin Li          0,  -8836,  11095,      0,   6218,      0,      0,      0,
280*a58d3d2aSXin Li       8208,  10161,    881,  10161,  13218,   2944,  -8192,   2944,
281*a58d3d2aSXin Li          0,  10488,   6218,  -6248, -11095,  -6248,      0, -10488,
282*a58d3d2aSXin Li          0,      0,   8208, -14369,   -881,      0,      0,   4163,
283*a58d3d2aSXin Li      -8192,      0, -13218,  14833,      0,   8836,  11095,      0,
284*a58d3d2aSXin Li       6218,      0,      0,      0,   8208,      0,   -881, -14369,
285*a58d3d2aSXin Li          0,      0,  -8192,   4163,  13218,      0,      0,      0,
286*a58d3d2aSXin Li      11095,   8836,  -6218, -14833,      0,      0,   8176,  -5566,
287*a58d3d2aSXin Li     -11552,   5566,  -9681,  11205,   8192, -11205,      0,  -4920,
288*a58d3d2aSXin Li      15158,  -9756,  -3334,   9756,      0,  -4920,      0,      0,
289*a58d3d2aSXin Li       8176,      0,  11552,  -7871,      0,      0,   8192, -15846,
290*a58d3d2aSXin Li       9681,      0,      0,      0,   3334, -13797,  15158,  -6958,
291*a58d3d2aSXin Li          0,      0,   8176,  -7871,  11552,      0,      0, -15846,
292*a58d3d2aSXin Li       8192,      0,  -9681,   6958,      0, -13797,   3334,      0,
293*a58d3d2aSXin Li     -15158,      0,      0,      0,   8176,  -5566, -11552,  -5566,
294*a58d3d2aSXin Li       9681,  11205,   8192,  11205,      0,  -4920, -15158,  -9756,
295*a58d3d2aSXin Li      -3334,  -9756,      0,   4920,      0,      0,   8208, -10161,
296*a58d3d2aSXin Li        881, -10161,  13218,  -2944,  -8192,  -2944,      0, -10488,
297*a58d3d2aSXin Li       6218,   6248, -11095,   6248,      0,  10488,      0,      0,
298*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
299*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
300*a58d3d2aSXin Li      32767,      0,      0,      0,      0,      0,      0,      0,
301*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
302*a58d3d2aSXin Li          0,      0,      0,  32767
303*a58d3d2aSXin Li };
304*a58d3d2aSXin Li 
305*a58d3d2aSXin Li const MappingMatrix mapping_matrix_fourthoa_mixing = { 27, 27, 0 };
306*a58d3d2aSXin Li const opus_int16 mapping_matrix_fourthoa_mixing_data[729] = {
307*a58d3d2aSXin Li       9243,      0,  16010,      0,      0,      0,  20669,      0,
308*a58d3d2aSXin Li          0,      0,      0,      0,  24456,      0,      0,      0,
309*a58d3d2aSXin Li          0,      0,      0,      0,  27731,      0,      0,      0,
310*a58d3d2aSXin Li          0,      0,      0,   9243,      0,  10884,  11741,      0,
311*a58d3d2aSXin Li          0,   3995,  17849,   9626,      0,      0,      0,  -5727,
312*a58d3d2aSXin Li      14399,  17315,   7625,      0,      0,      0,      0, -11747,
313*a58d3d2aSXin Li       2574,  18637,  15552,   5930,      0,      0,   9243, -14302,
314*a58d3d2aSXin Li      -2682,  -6677,  13337,   5357,  -9464,   2501, -11170,   4770,
315*a58d3d2aSXin Li      -5911,  11501,   5858,   5369,   4951,  17901, -19071,  -2397,
316*a58d3d2aSXin Li      -9281,  -9198,   7576,  -4294,   7773,  -8997,  -3399,      0,
317*a58d3d2aSXin Li          0,   9243,   9940,  11991,  -3705,  -5144,  16647,   7057,
318*a58d3d2aSXin Li      -6206,  -5941,  -2698, -10194,  16781,  -1788,  -6256, -11772,
319*a58d3d2aSXin Li       4935,   3912,  -6062, -13039,   9446,  -9758,  -3521, -15058,
320*a58d3d2aSXin Li      11089,    565,      0,      0,   9243, -15376,   3720,   2461,
321*a58d3d2aSXin Li      -5285,  -7989,  -8660,   1278, -16087,  15811,  -3249,  10500,
322*a58d3d2aSXin Li      -7757,  -1680,  -9890,  -8153,  10884,  11022,   2847,  12828,
323*a58d3d2aSXin Li       5137,  -2053,   8666,  -5684,  14776,      0,      0,   9243,
324*a58d3d2aSXin Li     -10577,  10304,  -6186,   9139, -15222,   2507,  -8902,  -5140,
325*a58d3d2aSXin Li       -145,  15562, -10596,  -7311,  -6197,  -8753,   8667,  -6014,
326*a58d3d2aSXin Li       -281,  15033,    938, -11859,    548,  -8456,  16735,  -3654,
327*a58d3d2aSXin Li          0,      0,   9243,   8974,   4839, -12343, -15472,   6066,
328*a58d3d2aSXin Li      -7501,  -8343,   5015,  15920, -12374,  -4559,  -9400,   6271,
329*a58d3d2aSXin Li       4011,   5191,  -9932,  14438,   4828,  -8768,   1909,  12059,
330*a58d3d2aSXin Li      -1565,   4707, -13711,      0,      0,   9243,  15799,   2085,
331*a58d3d2aSXin Li      -1534,  -3386,   4602,  -9808,   -447, -17267, -18054,  -1167,
332*a58d3d2aSXin Li     -13525,  -4644,   1313,  -5951,   5397,   7485,  -7056,   2584,
333*a58d3d2aSXin Li      -8120,   8669,    788,  13177,   2109,  18349,      0,      0,
334*a58d3d2aSXin Li       9243,  12371, -10036,   1597,   2760, -17341,   1848,  -2239,
335*a58d3d2aSXin Li     -10509,  -8474,  -4577,  11164,   7935,   1441,  17430,  -3436,
336*a58d3d2aSXin Li      -3713,  15936,   4184,   2647, -11730,    341, -15934,   6462,
337*a58d3d2aSXin Li       6581,      0,      0,   9243,  -8963,   2184,  13084, -16381,
338*a58d3d2aSXin Li      -2734,  -9757,   3991,   6345, -18297,  -5912,   7604,  -4849,
339*a58d3d2aSXin Li     -11100,   2290,  -4304, -13305,  -7488,  12338,   4805,   8505,
340*a58d3d2aSXin Li      -7014,  -4779,  -1761, -14597,      0,      0,   9243,   1301,
341*a58d3d2aSXin Li     -15498,   3799,    690,  -2816,  18718,  -8223,    889,    255,
342*a58d3d2aSXin Li      -1768,   4485, -19951,  13097,  -2278,    167,     78,   -740,
343*a58d3d2aSXin Li       3324,  -6139,  19488, -17925,   4283,   -486,     20,      0,
344*a58d3d2aSXin Li          0,   9243, -13470,  -6719,   5452, -10257,  12641,  -4873,
345*a58d3d2aSXin Li      -5116, -10595,   5856,  11389,   1502,  10876,   -608,  11765,
346*a58d3d2aSXin Li     -13218,  13911,  -7373,  -2070, -13679,  -4154,   5536,  -2138,
347*a58d3d2aSXin Li      16643,    451,      0,      0,   9243,   2455,  -3679, -15387,
348*a58d3d2aSXin Li      -5277,  -1261,  -8697,   7906,  16112,   8147,   3208,  -1690,
349*a58d3d2aSXin Li       7687,  10593,  -9796, -15852, -10884,  -5616,   2881,   2032,
350*a58d3d2aSXin Li       5246, -12735,  -8796,  10928,  14833,      0,      0,   9243,
351*a58d3d2aSXin Li      -6849,   2775, -14202,  13586,  -2655,  -9402,  -5505,  10809,
352*a58d3d2aSXin Li     -18013,   6231,   5444,  -6041,  11288,   4958,  -4078,  18799,
353*a58d3d2aSXin Li      -9368,  -9291,   4535,   7383,   9405,  -7391,  -2121,  -4336,
354*a58d3d2aSXin Li          0,      0,   9243,   6423,  -9040,  11548,  10359,  -8109,
355*a58d3d2aSXin Li       -450, -14580,   6431,  10857, -15475,   3569,   9707,   6416,
356*a58d3d2aSXin Li      -9607,    521,   8528, -18391,  11049,   3815, -10423,   6860,
357*a58d3d2aSXin Li       6860,   -883,  -4221,      0,      0,   9243,  11932,  -5968,
358*a58d3d2aSXin Li      -8850, -14749,  -9946,  -6026,   7377,  -4472,   5206,  14547,
359*a58d3d2aSXin Li      -3406,  10508,   2526,   4411,  14543,   8444,  -5822,    347,
360*a58d3d2aSXin Li      12347,  -1709,  -9158,    105, -16265, -12642,      0,      0,
361*a58d3d2aSXin Li       9243,  13044,   -150,   9282,  16910,   -274, -10332,   -194,
362*a58d3d2aSXin Li      -5864,   5428,   -420, -12196,    344,  -8679,    145, -18554,
363*a58d3d2aSXin Li     -12695,   -152, -14635,    503,  10389,    358,   5076,    522,
364*a58d3d2aSXin Li     -16100,      0,      0,   9243,  -8374, -13590,  -1221,   1428,
365*a58d3d2aSXin Li      15896,  12005,   2318,  -4793,   2590,  -3209, -20390,  -6256,
366*a58d3d2aSXin Li      -2974,  10766,   1202,   -876,  -6597,   5004,  19896,  -1541,
367*a58d3d2aSXin Li       2902, -16788,  -3062,   1340,      0,      0,   9243,   9879,
368*a58d3d2aSXin Li      10267,   7300,  10073,  14167,   2416,  10469,  -3094,   2899,
369*a58d3d2aSXin Li      17092,   9762,  -7400,   7214,  -5250,  -8238,  -3989,   5578,
370*a58d3d2aSXin Li      16392,  -1050, -11848,   -776,  -5034, -15850,  -5882,      0,
371*a58d3d2aSXin Li          0,   9243,  -4974,  -9068,  12221,  -8490,   6299,   -388,
372*a58d3d2aSXin Li     -15478,   8702,  -9920,  12723,  -2810,   9668,   6905, -13040,
373*a58d3d2aSXin Li       4325,  -9456,  16856,  -9159,  -2909, -10476,   7149,   9387,
374*a58d3d2aSXin Li      -7350,    233,      0,      0,   9243,   3627, -13823,  -7218,
375*a58d3d2aSXin Li      -3656,  -7002,  12776,  13935,   2719,   2446,   8352,   9252,
376*a58d3d2aSXin Li      -7676, -18413,  -6212,   -429,  -1272,  -6335, -13356,  -9510,
377*a58d3d2aSXin Li        295,  18926,   9934,   1112,   -382,      0,      0,   9243,
378*a58d3d2aSXin Li      -6383,  -9343, -11326,  10097,   8329,    223,  14780,   6114,
379*a58d3d2aSXin Li     -10348, -15590,  -4195,   9257,  -7445,  -9439,   -323,   7902,
380*a58d3d2aSXin Li      18117,  12101,  -3142, -10944,  -5577,   7327,    566,  -4133,
381*a58d3d2aSXin Li          0,      0,   9243,   2626,    865,  15769,   5783,    317,
382*a58d3d2aSXin Li     -10244,   1905,  16884,   9144,    826,  -2420,  -1972, -14536,
383*a58d3d2aSXin Li       2413,  16939,  12500,   1482,  -4906,   -578,  10096,  -3476,
384*a58d3d2aSXin Li     -14323,   2745,  16105,      0,      0,   9243,  -8975,  12086,
385*a58d3d2aSXin Li       5450,  -6832, -15149,   7333,   9200,  -3550,   -362, -13645,
386*a58d3d2aSXin Li     -15525,  -1391,   9428,  -7091,  -5442,   3105,   -820, -17685,
387*a58d3d2aSXin Li      -9175,  -9462,   5572,  -9191, -12325,  -2180,      0,      0,
388*a58d3d2aSXin Li       9243,   -114,  11576, -11058,    177,   -185,   5875, -17880,
389*a58d3d2aSXin Li       8539,   -198,    339,   -173,  -3411, -16698,  16336,  -6369,
390*a58d3d2aSXin Li        193,   -430,    408,    -75, -10806,  -7225,  19670, -13817,
391*a58d3d2aSXin Li       4665,      0,      0,      0,      0,      0,      0,      0,
392*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
393*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
394*a58d3d2aSXin Li          0,      0,      0,      0,  32767,      0,      0,      0,
395*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
396*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
397*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
398*a58d3d2aSXin Li      32767
399*a58d3d2aSXin Li };
400*a58d3d2aSXin Li 
401*a58d3d2aSXin Li const MappingMatrix mapping_matrix_fifthoa_mixing = { 38, 38, 0 };
402*a58d3d2aSXin Li const opus_int16 mapping_matrix_fifthoa_mixing_data[1444] = {
403*a58d3d2aSXin Li       9243,      0,  16010,      0,      0,      0,  20669,      0,
404*a58d3d2aSXin Li          0,      0,      0,      0,  24456,      0,      0,      0,
405*a58d3d2aSXin Li          0,      0,      0,      0,  27731,      0,      0,      0,
406*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,  30657,      0,
407*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,   9243,      0,
408*a58d3d2aSXin Li      -7023,  14387,      0,      0,  -4369, -14112,  14455,      0,
409*a58d3d2aSXin Li          0,      0,  10931,   -510, -16777,  14031,      0,      0,
410*a58d3d2aSXin Li          0,      0,  -5118,  14286,   4343, -18465,  13374,      0,
411*a58d3d2aSXin Li          0,      0,      0,      0,  -6494, -12221,  11761,   8513,
412*a58d3d2aSXin Li     -19458,  12605,      0,      0,   9243, -14128,   5093,   5547,
413*a58d3d2aSXin Li     -10946, -10050,  -7197,   3945, -11790,   7142,  -9213,   6529,
414*a58d3d2aSXin Li      -9701,  -2563,  -9923, -14846,  16521,   6816,   2764,  14103,
415*a58d3d2aSXin Li       1118,  -5537,   2977, -14168,   1228,   4866,  17430,   -528,
416*a58d3d2aSXin Li      10639,   2641,  10437,  -1037,  11460,   1098,   1296,  15737,
417*a58d3d2aSXin Li          0,      0,   9243,   1128, -14775,   6062,    955,  -2329,
418*a58d3d2aSXin Li      16069, -12511,   2477,    579,  -2333,   3440, -14197,  18478,
419*a58d3d2aSXin Li      -6050,    940,    303,  -1604,   4106,  -4223,   9829, -22688,
420*a58d3d2aSXin Li      10647,  -2604,    334,    145,   -927,   3203,  -6017,   4507,
421*a58d3d2aSXin Li      -3812,  24212, -15600,   5198,  -1023,    110,      0,      0,
422*a58d3d2aSXin Li       9243,   1158,  12997,   9277,   1501,   2103,  10097,  16840,
423*a58d3d2aSXin Li       5916,   1402,   3225,   2488,   2929,  19916,  12706,   3585,
424*a58d3d2aSXin Li       1137,   3415,   4698,   2078,  -5442,  16634,  18511,   8731,
425*a58d3d2aSXin Li       2095,    850,   3061,   5733,   5225,    960, -11728,   7689,
426*a58d3d2aSXin Li      20588,  14659,   5642,   1187,      0,      0,   9243,  -4663,
427*a58d3d2aSXin Li      -3081, -15003,   9771,   2007,  -9185,   6457,  14199, -14357,
428*a58d3d2aSXin Li      -4976,   3554,   6625,  11434,  -7231, -11297,  17760,   8291,
429*a58d3d2aSXin Li      -6267,  -3368,   6712, -10837,  -9107,   6524,   6793, -19531,
430*a58d3d2aSXin Li     -11338,   7934,   7335,  -2205,  -9215,  -7094,  10659,   6243,
431*a58d3d2aSXin Li      -4337,  -1250,      0,      0,   9243, -13515,   7679,  -3831,
432*a58d3d2aSXin Li       7232, -14496,  -3201,  -4109, -11731,   8828,   9178,  -1901,
433*a58d3d2aSXin Li     -10848,   -539, -14888,   9626, -10860,  12703,   3824,  12334,
434*a58d3d2aSXin Li      -7104,   3496,  -6203,  13852,   5461,  -2109, -17277,   7837,
435*a58d3d2aSXin Li      -4714,  13901,   4097,   3940,   7647,   8546,   8688, -10986,
436*a58d3d2aSXin Li          0,      0,   9243,   8113,  -9860,   9657,  10943, -11174,
437*a58d3d2aSXin Li       1426, -13300,   1915,   8178, -17833,   6805,   8309,   8100,
438*a58d3d2aSXin Li      -3121,  -4742,   2683, -15111,  15688,   2358, -11590,   2807,
439*a58d3d2aSXin Li       2746,   8762,  -7430,  -2251,  -5481,  16370,  -4081,  -9694,
440*a58d3d2aSXin Li       5872, -11539,   -714,  -9492,  15177,  -6126,      0,      0,
441*a58d3d2aSXin Li       9243,   9933,  -9215,  -8528, -11831, -12785,    -62,  10976,
442*a58d3d2aSXin Li      -1811,   5593,  18018,   6100,   9455,  -5237,   2758,   8971,
443*a58d3d2aSXin Li       2743,  -9659, -13517,   5330, -10737,  -4576,  -2069, -15491,
444*a58d3d2aSXin Li      -8749,  -7226,  -5237,   9191,   -181, -12277,   2815,  10540,
445*a58d3d2aSXin Li        -27,  14741,  16703,   3103,      0,      0,   9243, -10067,
446*a58d3d2aSXin Li      -8881,  -8723,  12265,  12487,   -793,  10821,  -1762,  -6021,
447*a58d3d2aSXin Li     -18002,  -5072,   9912,  -4395,   2587,   9368,  -2767,  10021,
448*a58d3d2aSXin Li      12259,  -6468, -10113,  -5605,  -1761, -15590,  -9430,   7800,
449*a58d3d2aSXin Li       5092,  -8835,   2293,  12314,   1222,  10671,   -329,  13745,
450*a58d3d2aSXin Li      17349,   3563,      0,      0,   9243,  -6485,  12991,  -6743,
451*a58d3d2aSXin Li       6108, -11768,  10080, -12236,    238,  -2883,  13115, -13907,
452*a58d3d2aSXin Li       2900, -14460,    511,   2564,    186,  -7019,  19094, -11597,
453*a58d3d2aSXin Li      -5472, -12058,    744,   6243,  -2384,    930,    501, -11778,
454*a58d3d2aSXin Li      21214,  -5330, -11746,  -5542,    827,  10475,  -6418,   1132,
455*a58d3d2aSXin Li          0,      0,   9243,   3862,   5238, -14627,  -7891,   2826,
456*a58d3d2aSXin Li      -7015, -10701,  13900,  11410,  -6831,  -1679,  -9861,   6359,
457*a58d3d2aSXin Li      12032, -11660, -14041,  11199,   1713,  -3895,    657,  14749,
458*a58d3d2aSXin Li      -3017, -11445,   8380,  15575, -15236,   -346,   7690,   -923,
459*a58d3d2aSXin Li      10317,   3498, -13545,    354,   9093,  -4476,      0,      0,
460*a58d3d2aSXin Li       9243,  -8417,  13183,   3418,  -4018, -15498,  10685,   6294,
461*a58d3d2aSXin Li      -4132,   1419,  -8755, -18818,   3926,   7642,  -9001,  -3235,
462*a58d3d2aSXin Li       2125,   3506, -13037, -16570,  -4337,   6729, -13404,  -7991,
463*a58d3d2aSXin Li         59,    443,   5804,   6005, -15011,  -9060, -11044,   3679,
464*a58d3d2aSXin Li     -15434, -13685,    161,   1185,      0,      0,   9243,  -5288,
465*a58d3d2aSXin Li       6773, -13508,   9977,  -5002,  -4784, -12780,  10790, -12942,
466*a58d3d2aSXin Li      11168,    519, -10890,   1326,  12078,  -6274,  13780, -16427,
467*a58d3d2aSXin Li       2186,   5352,  -4328,  13671,   2364,  -7963,   1080, -12568,
468*a58d3d2aSXin Li      19336,  -6557,  -8574,   4084,   7277,  10433,  -9273,  -3178,
469*a58d3d2aSXin Li       1516,   3817,      0,      0,   9243,   9660,   7817,  10093,
470*a58d3d2aSXin Li      13619,  10548,  -2942,  11021,    597,   9663,  17594,   1736,
471*a58d3d2aSXin Li     -10794,   1814,    771,  -8469,   1041,  14155,   7891,  -8597,
472*a58d3d2aSXin Li      -7498,  -8982,    346, -12407, -11848,  -6809,   1686,   9181,
473*a58d3d2aSXin Li      -8306, -10247,   3538, -10706,   -364,  -8047, -19188,  -8493,
474*a58d3d2aSXin Li          0,      0,   9243,  -7163,  -1020,  14282, -14289,   1021,
475*a58d3d2aSXin Li     -10208,  -2036,  10660, -18919,   2410,   6564,   2323, -13088,
476*a58d3d2aSXin Li      -1798,   3365, -19498,   3619,  12022,  -1858,   9978,   3705,
477*a58d3d2aSXin Li      -8969,   -643,  -5794, -15523,   4123,  15113,  -3949,  -6265,
478*a58d3d2aSXin Li      -3596,  12490,   2946,  -2688,   1225, -14570,      0,      0,
479*a58d3d2aSXin Li       9243, -12187,    772, -10354,  17623,  -1314, -10262,  -1117,
480*a58d3d2aSXin Li      -2885,  -9937,   2249,  11267,  -1763,   9572,   -368,  16506,
481*a58d3d2aSXin Li      -6510,  -1438, -15014,   2402,  10157,   2041,   2458,   2389,
482*a58d3d2aSXin Li     -19346,  19860,  -1041,   8067,  -3704, -10931,   2743,  -9286,
483*a58d3d2aSXin Li        606, -13399,  -3095,   7924,      0,      0,   9243,  15545,
484*a58d3d2aSXin Li      -2367,  -3011,  -6538,  -5139,  -9657,    995, -16242, -15706,
485*a58d3d2aSXin Li       2557, -12952,   5226,   2508,   6353,  10156,  13593,   6966,
486*a58d3d2aSXin Li       4795,   8960,   8183,  -1735,  11914,  -4504,  14149,  11727,
487*a58d3d2aSXin Li      -6665,  10460,  -3962,  10145,  -7648,  -1965,  -9845,  -6764,
488*a58d3d2aSXin Li      -6938, -16633,      0,      0,   9243,   3098,  12983,  -8841,
489*a58d3d2aSXin Li      -3826,   5618,  10053, -16031,   4787,   3283,  -8209,   6632,
490*a58d3d2aSXin Li       2856, -18922,  10272,  -2055,  -2344,   7987, -11939,   5516,
491*a58d3d2aSXin Li      -5520, -15739,  14940,  -5001,    530,   1465,  -6306,  13388,
492*a58d3d2aSXin Li     -13243,   2513, -11772,  -7170,  16572,  -8384,   1426,    168,
493*a58d3d2aSXin Li          0,      0,   9243, -15767,  -2008,  -1916,   4220,   4422,
494*a58d3d2aSXin Li      -9846,    537, -17105,  17650,  -1400,  13589,   4481,   1651,
495*a58d3d2aSXin Li       5677,   6701,  -9241,  -6642,  -3252,  -7827,   8792,   -951,
496*a58d3d2aSXin Li      13182,  -2522,  17586, -17005,   3845, -12562,   2213, -11472,
497*a58d3d2aSXin Li      -6688,  -1394,  -8970,  -4769,  -7316, -11753,      0,      0,
498*a58d3d2aSXin Li       9243, -13344,  -3829,   7975, -14863,   7136,  -8561,  -4265,
499*a58d3d2aSXin Li      -7992,   -801,   9405,   8912,   7937,  -5326,   5057, -17681,
500*a58d3d2aSXin Li      15207,    575,   7717, -11360,   4847,   6789,   4150,  12686,
501*a58d3d2aSXin Li     -10050,  16730, -12063,    322, -12920,  -3313, -10267,   1980,
502*a58d3d2aSXin Li      -6948,   7112,   7972,   8042,      0,      0,   9243,   7791,
503*a58d3d2aSXin Li      -1021,  13949,  15180,  -1111, -10208,  -1989,   9348,  19199,
504*a58d3d2aSXin Li      -2561,  -7140,   2323, -12782,  -1577,    817,  18164,  -3673,
505*a58d3d2aSXin Li     -12771,   2022,   9978,   3620,  -7865,   -156,  -9155,  11924,
506*a58d3d2aSXin Li      -3842, -15336,   4196,   6814,  -3596,  12199,   2583,   -652,
507*a58d3d2aSXin Li       1936, -17637,      0,      0,   9243,  -4810, -15144,  -1958,
508*a58d3d2aSXin Li       1315,  10175,  17406,   4142,  -1348,    263,  -3292, -15632,
509*a58d3d2aSXin Li     -17046,  -6363,   3374,    605,   -227,   -748,   5997,  20334,
510*a58d3d2aSXin Li      14481,   8277,  -6146,  -1717,      5,     27,    712,   1542,
511*a58d3d2aSXin Li      -9197, -23572, -10163,  -9595,   9425,   3539,    -17,    -72,
512*a58d3d2aSXin Li          0,      0,   9243,  -7366,   8261,  11568, -11901,  -8499,
513*a58d3d2aSXin Li      -2079,  13347,   5556, -12049, -16247,  -2282, -10529,   3584,
514*a58d3d2aSXin Li       7585,  -1577,  -8464, -18652,  -8902,   5913,  -8688,  -9287,
515*a58d3d2aSXin Li       4156,  -2442,  -7089,  -2993, -14485, -13949,   5422,   8459,
516*a58d3d2aSXin Li       1638, -13285,  -2531,  -1826, -12132,  -9456,      0,      0,
517*a58d3d2aSXin Li       9243,  11716,    698, -10889, -17818,   1143, -10275,  -1062,
518*a58d3d2aSXin Li      -1305,  12057,  -2057, -10855,  -1595,  10088,   -150,  15043,
519*a58d3d2aSXin Li       2978,   1578,  15225,  -2090,  10201,   1943,   1115,   1969,
520*a58d3d2aSXin Li     -20211, -17636,    430,  -9826,   3391,  10572,   2485,  -9826,
521*a58d3d2aSXin Li        248, -12259,  -2924,  12131,      0,      0,   9243,   4361,
522*a58d3d2aSXin Li      -4594, -14703,  -8956,  -2798,  -7781,   9434,  13769,  12936,
523*a58d3d2aSXin Li       6800,  -2400,   9082,   8091, -10453, -11023, -15786, -11136,
524*a58d3d2aSXin Li       3285,   4153,   2658, -14002,  -5051,   9489,   7000,  17206,
525*a58d3d2aSXin Li      15024,  -2777,  -8491,    -42, -10626,    141,  13053,   2366,
526*a58d3d2aSXin Li      -6662,  -2231,      0,      0,   9243,   -752, -11933, -10646,
527*a58d3d2aSXin Li       1119,   1254,   6890,  17745,   7875,  -1203,  -2207,  -1251,
528*a58d3d2aSXin Li       2024, -17706, -15532,  -5600,   1128,   2691,   2800,    683,
529*a58d3d2aSXin Li      -9927,   9661,  19706,  12522,   3889,   -978,  -2789,  -3992,
530*a58d3d2aSXin Li      -2440,    206,  12695,   2921, -17173, -18575,  -9616,  -2657,
531*a58d3d2aSXin Li          0,      0,   9243,   4791, -15001,  -2887,  -1931, -10037,
532*a58d3d2aSXin Li      16885,   6048,  -1020,     46,   4789,  15191, -15922,  -9154,
533*a58d3d2aSXin Li       2530,    823,    252,   -130,  -8608, -19335,  12613,  11651,
534*a58d3d2aSXin Li      -4549,  -2314,   -172,   -101,   -784,    265,  12975,  21741,
535*a58d3d2aSXin Li      -7551, -13101,   6856,   4710,    535,    -46,      0,      0,
536*a58d3d2aSXin Li       9243, -12153, -10395,    754,  -1281,  17644,   2735,  -1095,
537*a58d3d2aSXin Li     -10274,   8359,   2200, -12593,   7083,    782,  17650,  -1573,
538*a58d3d2aSXin Li       1685, -16282,  -2164,   -530, -11878,     32, -17359,   3065,
539*a58d3d2aSXin Li       6651,  -5212,  -3628,  19365,    965,  13180,   8243,   -818,
540*a58d3d2aSXin Li       7746,  -3645, -14323,   1670,      0,      0,   9243,  -6961,
541*a58d3d2aSXin Li     -11198,   9081,  -8829,  10887,   4833, -14202,   2374,  -6524,
542*a58d3d2aSXin Li      16339,  -9417,   4737,  12284,  -4394,  -2691,  -2683,  13690,
543*a58d3d2aSXin Li     -18539,   2830, -11438,  -3692,   4985,   5648,  -4628,    514,
544*a58d3d2aSXin Li       6225, -18409,  12672,   5311,  11170,  -6928,  -3407,  -7595,
545*a58d3d2aSXin Li      10737,  -3977,      0,      0,   9243,  12099, -10405,   1294,
546*a58d3d2aSXin Li       2187, -17582,   2760,  -1880, -10105,  -8058,  -3760,  12583,
547*a58d3d2aSXin Li       7058,   1346,  17376,  -2667,  -2829,  15710,   3705,    468,
548*a58d3d2aSXin Li     -11880,     50, -17123,   5201,   6230,   4698,   6098, -18716,
549*a58d3d2aSXin Li      -1665, -13088,   8285,  -1400,   7696,  -6196, -13429,   2770,
550*a58d3d2aSXin Li          0,      0,   9243,   8602,  13392,   1722,   2070,  16090,
551*a58d3d2aSXin Li      11359,   3222,  -4960,  -2638,   4581,  20106,   5099,   4026,
552*a58d3d2aSXin Li     -10978,  -1778,  -1314,  -6620,   6988,  18701,  -2965,   3745,
553*a58d3d2aSXin Li     -16745,  -4461,   1300,    584,  -3646, -11588,   8350,  11847,
554*a58d3d2aSXin Li     -10050,   2372, -20010,  -7809,   3608,    887,      0,      0,
555*a58d3d2aSXin Li       9243,  14252,  -1958,   7026,  13986,  -3899,  -9870,  -1922,
556*a58d3d2aSXin Li     -10736,  -3693,  -4527, -12333,   4376,  -6080,   3475, -18537,
557*a58d3d2aSXin Li     -19222,   1355, -10843,   6913,   8869,   3408,   8323,   6804,
558*a58d3d2aSXin Li      -5141, -13648,   7800,   2649,   7171,  10505,  -6548,   5179,
559*a58d3d2aSXin Li      -5505,  13299,   2086,  15579,      0,      0,   9243,  11323,
560*a58d3d2aSXin Li       9021,  -6835, -10810,  14267,   -489,  -8613,  -5689,    639,
561*a58d3d2aSXin Li     -16117,   6224,  -9731,  -3757,  -8482,  10882,   7873,   1080,
562*a58d3d2aSXin Li     -11447,  -6791, -10388,   4099,  -6025,  18396,  -5407,  -7536,
563*a58d3d2aSXin Li      14714,    984,   1267, -13940,  -1889,   8416,    666,  16762,
564*a58d3d2aSXin Li     -10106,  -3418,      0,      0,   9243,    871,   4833,  15238,
565*a58d3d2aSXin Li       1855,    588,  -7508,  10287,  16162,   2857,   1481,   -443,
566*a58d3d2aSXin Li      -9392,  -7758,  12910,  16506,   3837,   2588,   -581,   -851,
567*a58d3d2aSXin Li       1928, -14879,  -5066,  14950,  16498,   4773,   3842,   -425,
568*a58d3d2aSXin Li      -1785,    -82,  10578,  -1435, -15554,  -2459,  16520,  16250,
569*a58d3d2aSXin Li          0,      0,   9243,  14762,   5967,   1673,   3450,  12303,
570*a58d3d2aSXin Li      -6027,   1394, -15022, -14571,   3402,  -4217, -10507,   -478,
571*a58d3d2aSXin Li     -14813,  -5131,  -6634, -16293,    -82, -15276,  -1705,  -1731,
572*a58d3d2aSXin Li        358,  -5738,  13681,  12503,  -8200,  -3023,  -3290,  -7384,
573*a58d3d2aSXin Li       9272,   -837,  14328,  -1064,  16913,   7915,      0,      0,
574*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
575*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
576*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
577*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
578*a58d3d2aSXin Li          0,      0,      0,      0,  32767,      0,      0,      0,
579*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
580*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
581*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
582*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
583*a58d3d2aSXin Li          0,      0,      0,  32767
584*a58d3d2aSXin Li };
585*a58d3d2aSXin Li 
586*a58d3d2aSXin Li const MappingMatrix mapping_matrix_foa_demixing = { 6, 6, 0 };
587*a58d3d2aSXin Li const opus_int16 mapping_matrix_foa_demixing_data[36] = {
588*a58d3d2aSXin Li      16384,  16384,  16384,  16384,      0,      0,      0,  23170,
589*a58d3d2aSXin Li          0, -23170,      0,      0, -16384,  16384, -16384,  16384,
590*a58d3d2aSXin Li          0,      0,  23170,      0, -23170,      0,      0,      0,
591*a58d3d2aSXin Li          0,      0,      0,      0,  32767,      0,      0,      0,
592*a58d3d2aSXin Li          0,      0,      0,  32767
593*a58d3d2aSXin Li };
594*a58d3d2aSXin Li 
595*a58d3d2aSXin Li const MappingMatrix mapping_matrix_soa_demixing = { 11, 11, 3050 };
596*a58d3d2aSXin Li const opus_int16 mapping_matrix_soa_demixing_data[121] = {
597*a58d3d2aSXin Li       2771,   2771,   2771,   2771,   2771,   2771,   2771,   2771,
598*a58d3d2aSXin Li       2771,      0,      0,  10033,  10033, -20066,  10033,  14189,
599*a58d3d2aSXin Li      14189, -28378,  10033, -20066,      0,      0,   3393,   3393,
600*a58d3d2aSXin Li       3393,  -3393,      0,      0,      0,  -3393,  -3393,      0,
601*a58d3d2aSXin Li          0, -17378,  17378,      0, -17378, -24576,  24576,      0,
602*a58d3d2aSXin Li      17378,      0,      0,      0, -14189,  14189,      0, -14189,
603*a58d3d2aSXin Li     -28378,  28378,      0,  14189,      0,      0,      0,   2399,
604*a58d3d2aSXin Li       2399,  -4799,  -2399,      0,      0,      0,  -2399,   4799,
605*a58d3d2aSXin Li          0,      0,   1959,   1959,   1959,   1959,  -3918,  -3918,
606*a58d3d2aSXin Li      -3918,   1959,   1959,      0,      0,  -4156,   4156,      0,
607*a58d3d2aSXin Li       4156,      0,      0,      0,  -4156,      0,      0,      0,
608*a58d3d2aSXin Li       8192,   8192, -16384,   8192,  16384,  16384, -32768,   8192,
609*a58d3d2aSXin Li     -16384,      0,      0,      0,      0,      0,      0,      0,
610*a58d3d2aSXin Li          0,      0,      0,      0,   8312,      0,      0,      0,
611*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
612*a58d3d2aSXin Li       8312
613*a58d3d2aSXin Li };
614*a58d3d2aSXin Li 
615*a58d3d2aSXin Li const MappingMatrix mapping_matrix_toa_demixing = { 18, 18, 0 };
616*a58d3d2aSXin Li const opus_int16 mapping_matrix_toa_demixing_data[324] = {
617*a58d3d2aSXin Li       8192,   8192,   8192,   8192,   8192,   8192,   8192,   8192,
618*a58d3d2aSXin Li       8192,   8192,   8192,   8192,   8192,   8192,   8192,   8192,
619*a58d3d2aSXin Li          0,      0,      0,  -9779,   9779,   6263,   8857,      0,
620*a58d3d2aSXin Li       6263,  13829,   9779, -13829,      0,  -6263,      0,  -8857,
621*a58d3d2aSXin Li      -6263,  -9779,      0,      0,  -3413,   3413,   3413, -11359,
622*a58d3d2aSXin Li      11359,  11359, -11359,  -3413,   3413,  -3413,  -3413, -11359,
623*a58d3d2aSXin Li      11359,  11359, -11359,   3413,      0,      0,  13829,   9779,
624*a58d3d2aSXin Li      -9779,   6263,      0,   8857,  -6263,      0,   9779,      0,
625*a58d3d2aSXin Li     -13829,   6263,  -8857,      0,  -6263,  -9779,      0,      0,
626*a58d3d2aSXin Li          0, -15617, -15617,   6406,      0,      0,  -6406,      0,
627*a58d3d2aSXin Li      15617,      0,      0,  -6406,      0,      0,   6406,  15617,
628*a58d3d2aSXin Li          0,      0,      0,  -5003,   5003, -10664,  15081,      0,
629*a58d3d2aSXin Li     -10664,  -7075,   5003,   7075,      0,  10664,      0, -15081,
630*a58d3d2aSXin Li      10664,  -5003,      0,      0,  -8176,  -8176,  -8176,   8208,
631*a58d3d2aSXin Li       8208,   8208,   8208,  -8176,  -8176,  -8176,  -8176,   8208,
632*a58d3d2aSXin Li       8208,   8208,   8208,  -8176,      0,      0,  -7075,   5003,
633*a58d3d2aSXin Li      -5003, -10664,      0,  15081,  10664,      0,   5003,      0,
634*a58d3d2aSXin Li       7075, -10664, -15081,      0,  10664,  -5003,      0,      0,
635*a58d3d2aSXin Li      15617,      0,      0,      0,  -6406,   6406,      0, -15617,
636*a58d3d2aSXin Li          0, -15617,  15617,      0,   6406,  -6406,      0,      0,
637*a58d3d2aSXin Li          0,      0,      0, -11393,  11393,   2993,  -4233,      0,
638*a58d3d2aSXin Li       2993, -16112,  11393,  16112,      0,  -2993,      0,   4233,
639*a58d3d2aSXin Li      -2993, -11393,      0,      0,      0,  -9974,  -9974, -13617,
640*a58d3d2aSXin Li          0,      0,  13617,      0,   9974,      0,      0,  13617,
641*a58d3d2aSXin Li          0,      0, -13617,   9974,      0,      0,      0,   5579,
642*a58d3d2aSXin Li      -5579,  10185,  14403,      0,  10185,  -7890,  -5579,   7890,
643*a58d3d2aSXin Li          0, -10185,      0, -14403, -10185,   5579,      0,      0,
644*a58d3d2aSXin Li      11826, -11826, -11826,   -901,    901,    901,   -901,  11826,
645*a58d3d2aSXin Li     -11826,  11826,  11826,   -901,    901,    901,   -901, -11826,
646*a58d3d2aSXin Li          0,      0,  -7890,  -5579,   5579,  10185,      0,  14403,
647*a58d3d2aSXin Li     -10185,      0,  -5579,      0,   7890,  10185, -14403,      0,
648*a58d3d2aSXin Li     -10185,   5579,      0,      0,  -9974,      0,      0,      0,
649*a58d3d2aSXin Li     -13617,  13617,      0,   9974,      0,   9974,  -9974,      0,
650*a58d3d2aSXin Li      13617, -13617,      0,      0,      0,      0,  16112, -11393,
651*a58d3d2aSXin Li      11393,  -2993,      0,   4233,   2993,      0, -11393,      0,
652*a58d3d2aSXin Li     -16112,  -2993,  -4233,      0,   2993,  11393,      0,      0,
653*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
654*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
655*a58d3d2aSXin Li      32767,      0,      0,      0,      0,      0,      0,      0,
656*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
657*a58d3d2aSXin Li          0,      0,      0,  32767
658*a58d3d2aSXin Li };
659*a58d3d2aSXin Li 
660*a58d3d2aSXin Li const MappingMatrix mapping_matrix_fourthoa_demixing = { 27, 27, 0 };
661*a58d3d2aSXin Li const opus_int16 mapping_matrix_fourthoa_demixing_data[729] = {
662*a58d3d2aSXin Li       4870,   4484,   4870,   4347,   4440,   4726,   4683,   4821,
663*a58d3d2aSXin Li       4883,   4842,   4603,   4484,   4683,   4698,   4234,   4368,
664*a58d3d2aSXin Li       4603,   4783,   4783,   4820,   4821,   4347,   4820,   4440,
665*a58d3d2aSXin Li       4698,      0,      0,    101,     84,  -7818,   4640,  -7178,
666*a58d3d2aSXin Li      -5492,   4629,   8384,   6547,  -4966,    617,  -6345,   1061,
667*a58d3d2aSXin Li      -3241,   2939,   5549,   6390,  -4434,   4994,  -2610,   1993,
668*a58d3d2aSXin Li      -2873,   1547,  -4356,   -164,      0,      0,   8797,   5074,
669*a58d3d2aSXin Li      -1553,   5383,   1906,   5297,   2722,   1158,  -5226,   1311,
670*a58d3d2aSXin Li      -7760,  -3327,  -1940,   1586,  -4093,  -2951,   -214,  -6873,
671*a58d3d2aSXin Li       5450,  -4875,  -7193,  -4438,    558,   5593,   5607,      0,
672*a58d3d2aSXin Li          0,    -26,   5761,  -3723,  -1460,   1195,  -3065,  -6357,
673*a58d3d2aSXin Li      -1175,    608,   6965,   2310,   2759,  -8023,  -7138,   5162,
674*a58d3d2aSXin Li      -3624,   5006,   -809,   3592,   6209,  -4159,  -4968,   8150,
675*a58d3d2aSXin Li       2513,  -5702,      0,      0,    301,    109,   7161,  -2462,
676*a58d3d2aSXin Li      -2443,   5044,  -7125,  -2256,   1967,  -9107,    259,  -4928,
677*a58d3d2aSXin Li      -2592,   6514,   4111,  -7236,   8695,    635,   5009,  -4025,
678*a58d3d2aSXin Li      -1937,   4794,   3420,  -3507,   -400,      0,      0,   -134,
679*a58d3d2aSXin Li         85,   2771,   7842,  -3649,  -8225,   2866,   2586,  -9200,
680*a58d3d2aSXin Li      -1945,  -1563,   6155,   -720,  -1061,  -3494,  -4513,   -487,
681*a58d3d2aSXin Li       8389,   7317,   3348,  -3721,   3806,    371,  -6896,     70,
682*a58d3d2aSXin Li          0,      0,  10919,   2072,  -4867,   3472,  -4429,   1721,
683*a58d3d2aSXin Li      -4066,  -5193,   1032,  -5253,   9501,  -2017,  -3971,  -5261,
684*a58d3d2aSXin Li       -306,  -2737,  -5137,   5713,   1237,     -8,   6387,    364,
685*a58d3d2aSXin Li      -5423,   3364,   2888,      0,      0,    -48,   8946,   1048,
686*a58d3d2aSXin Li      -2691,    602,  -4332,  -4302,   -514,  -1730,   2459,  -4328,
687*a58d3d2aSXin Li      -2156,   3335,  -2748,  -6029,   4023,    155,    897,   5268,
688*a58d3d2aSXin Li      -8380,   7625,   7395,    508,   3945,  -8951,      0,      0,
689*a58d3d2aSXin Li         39,   4151,  -5965,  -3398,  -7006,  -3534,   2697,  -8989,
690*a58d3d2aSXin Li      -5237,   2913,     46,  -5540,   8196,   5766,   2711,  -2520,
691*a58d3d2aSXin Li      -3043,  -2146,   -948,   4965,   1806,   2472,   8988,  -1266,
692*a58d3d2aSXin Li       4840,      0,      0,   -407,   -189,   2179,  -1627,   6516,
693*a58d3d2aSXin Li        259,   7196,  -9449,  -4905,  -9766,    561,   4021,   3371,
694*a58d3d2aSXin Li      -8650,   5032,   3329,   2534,    641,   2224,  -5747,   1047,
695*a58d3d2aSXin Li      -4074,   5252,    -24,    674,      0,      0,    664,    237,
696*a58d3d2aSXin Li      -2837,  -4072,  -1205,   8252,  -5875,  -1670,  -2743,  -3984,
697*a58d3d2aSXin Li        381,   5059,   1765,   2666,  -8295,   7403,   1154,  -2086,
698*a58d3d2aSXin Li       7622,   7105,   3677,  -6943,   1050,  -6632,   -694,      0,
699*a58d3d2aSXin Li          0,    382,   -133,   5699,   7650,   5154,  -5713,  -1645,
700*a58d3d2aSXin Li      -6902,   6181,   4450,   1151,    410,   -993,   3829,   2444,
701*a58d3d2aSXin Li      -2405,  -6618,  -9514,   5366,  -1896,   5844,  -2886,  -1524,
702*a58d3d2aSXin Li      -7321,  -1007,      0,      0,  12767,  -2530,   3183,  -1409,
703*a58d3d2aSXin Li      -4015,  -2894,  -5155,  -1710,   3841,  -2107, -10274,   5119,
704*a58d3d2aSXin Li       3979,  -4010,   5550,   4822,   -746,  -2507,  -3080,   4289,
705*a58d3d2aSXin Li      -3675,   4333,  -1416,  -1230,  -1122,      0,      0,     17,
706*a58d3d2aSXin Li       8048,   2398,  -2167,    -73,  -3606,   3125,    398,    731,
707*a58d3d2aSXin Li      -5973,   5705,  -1032,   4679,   7305,   3134,   1301,  -3858,
708*a58d3d2aSXin Li        -89,   2938,   4359,  -9155,  -4805,  -8407,   3673,  -8645,
709*a58d3d2aSXin Li          0,      0,    187,   7355,   3145,  -6719,  -4432,  -5939,
710*a58d3d2aSXin Li       2541,  -2810,   9723,    778,  -1105,   5687,  -4174,   2534,
711*a58d3d2aSXin Li      -4461,   1017,   -244,   5481,  -1655,  -6765,  -3350,  -4894,
712*a58d3d2aSXin Li       1592,  -2318,   8827,      0,      0,    196,   3588,   9631,
713*a58d3d2aSXin Li       3063,  -4564,   6043,   2683,   2595,  -2488,  -2186,    173,
714*a58d3d2aSXin Li      -6059,  -8270,  -2386,    409,   7441,  -8608,    376,  -4364,
715*a58d3d2aSXin Li       2321,   -280,     97,   8331,  -3022,  -4721,      0,      0,
716*a58d3d2aSXin Li        117,   -748, -10833,   1533,   4200,  -2875,   -997,   -109,
717*a58d3d2aSXin Li      -3661,  -6119,   4454,   8808,  -9189,   8294,   1521,   7265,
718*a58d3d2aSXin Li      -2348,  -5094,   -948,  -5400,  -3193,   8914,   5763,   1716,
719*a58d3d2aSXin Li      -1070,      0,      0,   2497,    399,  -5201,  -2038,   7843,
720*a58d3d2aSXin Li       -376,   7567,  -5073,   7616,  -5537,   2086,  -3453,  -5544,
721*a58d3d2aSXin Li        -56, -11648,  -1314,   3546,  -3432,   -117,   8694,  -4245,
722*a58d3d2aSXin Li       9621,   3098,  -2582,  -2351,      0,      0,   4386,  -3104,
723*a58d3d2aSXin Li      -3132, -10512,    566,   5217,   5128,   4967,   1348,   7035,
724*a58d3d2aSXin Li      -1470,     91,   -125,  -3548,   8244,  -3029, -10033,   2186,
725*a58d3d2aSXin Li       9745,  -6440,  -2074,   3638,  -1477,  -7045,   -562,      0,
726*a58d3d2aSXin Li          0,   2154,   8116,  -6102,   6570,  12998,   -712,  -4126,
727*a58d3d2aSXin Li      -4996,     30,   1571,  -6393, -12794,    425,   5036,   1190,
728*a58d3d2aSXin Li       5763,   5653,  12933,  -6671,   5197,  -2964,  -3316,  -6354,
729*a58d3d2aSXin Li     -10554,  -2652,      0,      0,  12618,  -3737,     93,  -5901,
730*a58d3d2aSXin Li       4262,  -3364,   4444,   3103,  -2767,   3403,   4925,  -2584,
731*a58d3d2aSXin Li       -989,   4977,  -3714,  -1965,   3076,    326,  -2946,  -2568,
732*a58d3d2aSXin Li       1026,  -2980,   3362,  -6132,  -5966,      0,      0,   6001,
733*a58d3d2aSXin Li         48,  -1979,  -7275,   3476,  -2096,  10591,   3793,   2629,
734*a58d3d2aSXin Li       -447, -14747,  -3689,  -5525,   8358,   6883,  -9703,  -4556,
735*a58d3d2aSXin Li       7471,   2965,   4056,  13221,  -7327,  -3073,  -2353,  -6720,
736*a58d3d2aSXin Li          0,      0,    621,  11034,    -44,  -2828,   5978,  -1850,
737*a58d3d2aSXin Li      -1772,   3894,  -7471,  -1397,    945,  -2028,  -2928,  -2240,
738*a58d3d2aSXin Li       3172,   2222,   4544,  -4243,  -5645,   3745,   2573,   3511,
739*a58d3d2aSXin Li      -8206,  -7286,   5700,      0,      0,    321,  10818,  -4982,
740*a58d3d2aSXin Li       7813,   -749,   9907,   1360,  -1443,    568,  -1103,   2305,
741*a58d3d2aSXin Li       6045,   2270,  -1063,  -1920,  -3073,   5893,  -3476, -11346,
742*a58d3d2aSXin Li      -1657,   -588,   2957,  -2287,  -8527,  -8041,      0,      0,
743*a58d3d2aSXin Li        119,   -268,   2372,  -3040,   4979,  -3789,  -5630,  10619,
744*a58d3d2aSXin Li       5900,  -5109,  -4585,  -3862,  10467,  -3527,   -385, -10034,
745*a58d3d2aSXin Li      -9991,   4860,    984,   2362,   2311,  -6804,   6324,    433,
746*a58d3d2aSXin Li       5291,      0,      0,      0,      0,      0,      0,      0,
747*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
748*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
749*a58d3d2aSXin Li          0,      0,      0,      0,  32767,      0,      0,      0,
750*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
751*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
752*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
753*a58d3d2aSXin Li      32767
754*a58d3d2aSXin Li };
755*a58d3d2aSXin Li 
756*a58d3d2aSXin Li const MappingMatrix mapping_matrix_fifthoa_demixing = { 38, 38, 0 };
757*a58d3d2aSXin Li const opus_int16 mapping_matrix_fifthoa_demixing_data[1444] = {
758*a58d3d2aSXin Li       3188,   3247,   3268,   3368,   3368,   3138,   3268,   3099,
759*a58d3d2aSXin Li       3211,   3368,   3099,   3247,   3211,   3368,   3368,   3368,
760*a58d3d2aSXin Li       3149,   3268,   3247,   3211,   3099,   3188,   3138,   3149,
761*a58d3d2aSXin Li       3099,   3188,   3368,   3149,   3188,   3247,   3268,   3138,
762*a58d3d2aSXin Li       3211,   3368,   3138,   3149,      0,      0,    118,    -47,
763*a58d3d2aSXin Li      -5011,    282,    333,  -1497,  -4584,   2908,   3388,  -3647,
764*a58d3d2aSXin Li      -2493,   1139,  -2882,  -1719,   3604,  -2543,  -4328,   5443,
765*a58d3d2aSXin Li       1286,  -5498,  -4583,   2510,  -1743,  -2556,   4168,   1446,
766*a58d3d2aSXin Li       -290,   1812,  -4074,  -2377,   4152,   2847,   4991,   3980,
767*a58d3d2aSXin Li        393,   5072,      0,      0,   5489,  -2235,   1507,  -5326,
768*a58d3d2aSXin Li       4609,  -1096,   2926,  -3427,  -3301,  -3078,   4226,   1730,
769*a58d3d2aSXin Li       4627,   2561,   2966,   -592,    143,   -677,   4617,   -755,
770*a58d3d2aSXin Li       -956,   -433,  -5138,   3037,    157,  -1394,  -4498,  -4984,
771*a58d3d2aSXin Li      -3661,  -4112,  -3756,   4628,   -570,   3356,   1605,   1803,
772*a58d3d2aSXin Li          0,      0,   -162,   5162,   2132,   2392,   3556,  -5141,
773*a58d3d2aSXin Li      -1536,   2975,  -3001,  -3350,  -2231,  -5230,   1294,  -4965,
774*a58d3d2aSXin Li       3494,   5230,  -3292,  -1359,  -2945,   -773,   2670,   4867,
775*a58d3d2aSXin Li       -660,   3720,  -3415,  -5112,  -3700,  -1211,    407,   3013,
776*a58d3d2aSXin Li        763,    591,   2481,  -2657,   5210,    784,      0,      0,
777*a58d3d2aSXin Li       -156,    338,  -4246,    510,    462,   3296,   2846,   3333,
778*a58d3d2aSXin Li      -4292,   4574,   1940,  -2986,  -1275,   3701,   5022,  -5250,
779*a58d3d2aSXin Li       5780,  -2676,  -1180,   1516,  -4852,   4877,    342,  -3923,
780*a58d3d2aSXin Li      -5703,  -2920,    379,   -657,   -361,  -3346,   1044,    795,
781*a58d3d2aSXin Li       5257,  -4004,    698,   1115,      0,      0,     47,   -140,
782*a58d3d2aSXin Li      -3292,  -1097,    652,    855,  -5260,  -3691,  -4470,   4521,
783*a58d3d2aSXin Li      -3863,   1093,  -5552,  -2016,   3831,    334,   -456,  -1532,
784*a58d3d2aSXin Li       2068,   1788,   2054,   -295,   3668,  -2820,    328,   -994,
785*a58d3d2aSXin Li        295,  -3301,   5770,   4282,  -6353,   5632,  -1371,   5005,
786*a58d3d2aSXin Li        238,   4041,      0,      0,   6764,  -1659,  -2730,   5726,
787*a58d3d2aSXin Li       3715,  -3216,   -933,    531,    -52,   -345,   3022,  -2818,
788*a58d3d2aSXin Li       4005,  -1617,  -1189,  -3748,  -3403,  -3592,   4040,  -3553,
789*a58d3d2aSXin Li      -2806,  -3444,   6023,   -711,  -3298,  -2503,   2548,   5564,
790*a58d3d2aSXin Li        940,   1848,   1207,   4010,  -3488,   -358,  -2511,  -1966,
791*a58d3d2aSXin Li          0,      0,    -64,  -5039,   1403,  -4455,   6240,   2189,
792*a58d3d2aSXin Li      -1716,  -4348,   4183,   3951,  -4042,  -3606,   2399,  -4563,
793*a58d3d2aSXin Li       4050,   -612,   -395,    348,  -5791,    391,  -1440,   -735,
794*a58d3d2aSXin Li       1398,   4359,   -518,   2969,   6556,   1951,   -518,  -4993,
795*a58d3d2aSXin Li       -925,    998,   -569,  -2934,   3460,    420,      0,      0,
796*a58d3d2aSXin Li         16,   5482,  -4122,    770,   2082,   5020,  -3961,    485,
797*a58d3d2aSXin Li       -584,   -793,      3,   5222,  -1416,   3673,     78,   3549,
798*a58d3d2aSXin Li       -937,  -5723,   1673,  -6162,  -2540,   3082,   -355,   1838,
799*a58d3d2aSXin Li       -615,   4601,   2832,   -359,  -3346,    668,  -3393,  -1583,
800*a58d3d2aSXin Li      -3774,  -2206,   5754,  -4961,      0,      0,   -328,    299,
801*a58d3d2aSXin Li       2470,    317,    525,  -4494,   2805,   2617,   2383,  -2363,
802*a58d3d2aSXin Li      -1037,   4085,    895,  -4622,   3218,  -6607,  -3381,  -5933,
803*a58d3d2aSXin Li       1397,   6394,   -446,   5694,     14,  -4510,   4329,   3690,
804*a58d3d2aSXin Li       -334,      0,   2932,  -2478,  -2944,   -577,   -599,   -230,
805*a58d3d2aSXin Li       1553,  -4736,      0,      0,   -324,    142,  -3252,   -867,
806*a58d3d2aSXin Li       1111,  -1882,   3378,  -6055,   6502,  -6840,   4280,  -2694,
807*a58d3d2aSXin Li      -2876,   4190,   6454,    655,   1061,    626,  -2669,   -798,
808*a58d3d2aSXin Li       3192,   -985,   -898,  -5482,   -548,   2315,   -558,   1302,
809*a58d3d2aSXin Li        900,   5747,  -1325,   1599,  -1384,  -5749,    624,   1110,
810*a58d3d2aSXin Li          0,      0,    321,    312,   2188,   1322,    237,    708,
811*a58d3d2aSXin Li       -304,   2463,   1500,  -1094,  -5112,  -1010,  -6799,    646,
812*a58d3d2aSXin Li        992,   1969,   3423,  -3996,   2628,   4451,   3432,  -2833,
813*a58d3d2aSXin Li      -6101,   -330,  -3768,     -3,   -707,   5961,  -4037,  -3736,
814*a58d3d2aSXin Li       4080,   7254,  -4113,   2151,     54,  -2150,      0,      0,
815*a58d3d2aSXin Li       7735,   4064,  -3884,  -5240,    577,   2229,  -3947,   2914,
816*a58d3d2aSXin Li       3555,   4011,    774,  -3519,   1985,  -3701,  -3824,    330,
817*a58d3d2aSXin Li       -905,   2085,   1155,   2176,   3006,    340,  -5533,  -3264,
818*a58d3d2aSXin Li       -902,   3114,    344,  -5060,   1524,   1805,   1926,   2350,
819*a58d3d2aSXin Li       1905,  -3203,  -2762,  -4162,      0,      0,    193,   -151,
820*a58d3d2aSXin Li      -1434,   6289,   7354,   4234,    169,   2868,  -1977,  -1375,
821*a58d3d2aSXin Li      -4987,   2345,   2742,    599,    939,  -4837,   2688,    991,
822*a58d3d2aSXin Li      -6907,    716,  -1542,  -4346,  -1833,   1493,   3134,   2903,
823*a58d3d2aSXin Li      -7019,  -2835,     93,   4395,    621,    870,  -2357,   -975,
824*a58d3d2aSXin Li      -2933,   -127,      0,      0,   -616,  -5968,  -3479,  -1651,
825*a58d3d2aSXin Li       4932,  -2445,  -5512,  -1451,    691,    739,    479,   4227,
826*a58d3d2aSXin Li      -2886,   3853,      8,   -501,    188,   1990,   3842,   2270,
827*a58d3d2aSXin Li       1662,   -174,   1290,   2456,     67,  -3267,  -5535,    483,
828*a58d3d2aSXin Li       5721,  -1642,   6501,  -3432,   1184,  -3246,   4101,  -4880,
829*a58d3d2aSXin Li          0,      0,   -465,   5264,  -4812,    682,   1683,  -4539,
830*a58d3d2aSXin Li       2916,  -1985,   2899,   3324,   1060,  -4398,   -745,  -2137,
831*a58d3d2aSXin Li      -3827,   1044,   6225,   3609,   -532,   1980,  -6001,    564,
832*a58d3d2aSXin Li       -209,  -1299,   5336,  -3605,  -1484,     37,     19,  -1295,
833*a58d3d2aSXin Li       -665,   -385,  -6773,   3651,   6153,  -1291,      0,      0,
834*a58d3d2aSXin Li        193,   -415,   5166,   -110,    626,   6743,  -2860,   1425,
835*a58d3d2aSXin Li       1101,  -1341,     80,  -4533,    249,   4231,   -119,  -6009,
836*a58d3d2aSXin Li      -2970,   5170,   -822,  -2610,   4527,   5948,    182,  -2589,
837*a58d3d2aSXin Li        837,  -5471,    371,    -43,    373,   -665,  -1233,   -626,
838*a58d3d2aSXin Li      -7353,   2606,   1339,  -1398,      0,      0,   -533,    147,
839*a58d3d2aSXin Li       2075,   -672,   1043,   3503,   4402,  -4971,  -3287,   3731,
840*a58d3d2aSXin Li      -2606,   3817,   1972,  -5603,   5114,   1185,  -1318,   1906,
841*a58d3d2aSXin Li       3018,  -1999,    343,  -1943,    207,  -6744,    913,  -4060,
842*a58d3d2aSXin Li        645,   -349,  -5667,   4766,   5575,  -1733,   1116,    160,
843*a58d3d2aSXin Li       1534,  -5690,      0,      0,   -137,    -36,   1556,   1325,
844*a58d3d2aSXin Li       1553,  -2230,   1188,   5296,  -5104,   4673,   6295,    498,
845*a58d3d2aSXin Li      -4723,    933,   2994,   4067,  -4700,   1758,  -4116,  -1252,
846*a58d3d2aSXin Li       2444,  -4092,   1653,  -2802,   5069,   1133,    790,  -2355,
847*a58d3d2aSXin Li       -934,  -6304,   1642,   2045,  -4259,  -3873,   -213,    215,
848*a58d3d2aSXin Li          0,      0,   -364,    423,   4888,  -1316,    118,   -950,
849*a58d3d2aSXin Li       4027,    114,   2961,  -3136,  -3012,   -883,  -6192,   1340,
850*a58d3d2aSXin Li      -3210,  -1193,   1376,   3128,   1596,  -2994,  -3194,    533,
851*a58d3d2aSXin Li       8502,   2487,  -1485,   1032,    301,  -8007,   -577,    887,
852*a58d3d2aSXin Li        297,   7778,   3121,  -1901,    -94,  -6401,      0,      0,
853*a58d3d2aSXin Li       9260,  -1845,    668,   2787,  -2255,   2699,  -2512,  -3737,
854*a58d3d2aSXin Li      -3675,  -3601,  -1803,    210,  -1701,  -1442,  -2700,   3457,
855*a58d3d2aSXin Li       2868,   2079,  -2113,   3178,   1277,   3578,   5240,  -2482,
856*a58d3d2aSXin Li       3324,   1020,  -4027,   3835,  -3758,  -3633,  -3170,  -1310,
857*a58d3d2aSXin Li       2509,  -3110,    713,    174,      0,      0,   -399,   4969,
858*a58d3d2aSXin Li      -2321,  -7744,   6494,  -3776,   1478,    758,  -1794,  -2233,
859*a58d3d2aSXin Li      -4059,   4932,   2770,   4761,  -3475,   1243,    829,   -651,
860*a58d3d2aSXin Li      -5358,   -436,   2381,   1360,   2561,  -3118,    858,  -4366,
861*a58d3d2aSXin Li       3933,   3646,    -43,  -1310,    -16,    924,   1197,   1415,
862*a58d3d2aSXin Li      -5036,   -376,      0,      0,    100,   1410,   1290,   3199,
863*a58d3d2aSXin Li       7091,  -3638,  -2641,   1118,     45,   -441,    794,   -974,
864*a58d3d2aSXin Li      -5033,    889,    438,  -3102,    895,   3555,   4672,   4795,
865*a58d3d2aSXin Li       1129,  -2408,  -2153,   1742,    159,  -2040,   7578,  -2006,
866*a58d3d2aSXin Li      -5737,   1986,  -5568,  -6413,   2428,  -1387,  -2441,    667,
867*a58d3d2aSXin Li          0,      0,    -37,  -6031,  -4434,   -904,   3290,   1806,
868*a58d3d2aSXin Li       4736,   2516,  -5905,  -5927,   1754,  -4300,  -2468,  -2203,
869*a58d3d2aSXin Li      -4836,   -672,   1444,  -1591,  -1631,  -1789,   4311,   -153,
870*a58d3d2aSXin Li       -688,  -1222,   1058,   3139,   4659,   -353,   1543,   1838,
871*a58d3d2aSXin Li       2180,  -1448,   2432,   6277,   5304,  -1692,      0,      0,
872*a58d3d2aSXin Li       -280,   4506,    807,   -477,    823,   3550,   1427,  -1856,
873*a58d3d2aSXin Li      -3003,  -3501,  -1203,   2679,    933,    778,  -4954,  -1977,
874*a58d3d2aSXin Li      -7458,   4687,    435,   7045,  -4053,  -3130,    257,  -3917,
875*a58d3d2aSXin Li      -6165,   1889,    927,    235,   1889,  -1097,   1985,    630,
876*a58d3d2aSXin Li      -2172,  -2130,   7080,   4810,      0,      0,   -300,    496,
877*a58d3d2aSXin Li       2808,    279,    667,  -7179,  -2661,   -526,  -2832,   1751,
878*a58d3d2aSXin Li       2849,   4829,   -906,  -4151,  -1124,  -3062,   8166,   5361,
879*a58d3d2aSXin Li      -1656,  -6017,   3265,   2551,   -864,   -432,  -6966,   6295,
880*a58d3d2aSXin Li       -168,    901,    442,   -582,    269,    236,  -3574,    799,
881*a58d3d2aSXin Li        472,    565,      0,      0,    805,  -2466,   6208,  -4592,
882*a58d3d2aSXin Li       -170,  -6701,  -5610,   3678,  -4242,   4561,   -724,  -5534,
883*a58d3d2aSXin Li       2415,   7354,   2761,   2699,   -349,   3822,  -2372,   1756,
884*a58d3d2aSXin Li      -5523,  -3445,   -588,  -5749,  -3986,   9804,  -3871,   5375,
885*a58d3d2aSXin Li      -2308,   5504,  -2766,  -1651,   1472,   6832,   2705,  -5104,
886*a58d3d2aSXin Li          0,      0,   -700,  -1179,   4402,    400,   1383,    939,
887*a58d3d2aSXin Li      -1342,   6013,   2577,  -3472,    472,   2883,   1450,  -3917,
888*a58d3d2aSXin Li       2849,   5084,   4990,   5392,    342,  -4925,  -3329,  -5372,
889*a58d3d2aSXin Li      -2674,  -6035,  -5072,   -836,    179,   2506,   7987,  -3647,
890*a58d3d2aSXin Li      -8202,  -1437,   1891,   2400,   1607,  -3611,      0,      0,
891*a58d3d2aSXin Li      -4706,  -4003,   9928,   -379,   5557,   3738,  -8789,    685,
892*a58d3d2aSXin Li       1937,  -5157,  13388,   7995,  -4119,  -9909,  -5079,   4804,
893*a58d3d2aSXin Li       5586,    774,  -5430,    299,  -9943,   3264,  -3690,  -3901,
894*a58d3d2aSXin Li      -1133,  -6199,   3182,   1544,   5467,   3686,  -2639,   4068,
895*a58d3d2aSXin Li       1163,   -185,  -1299,   -506,      0,      0,    843,   1005,
896*a58d3d2aSXin Li      -1059,    467,  -1279,  -2259,   6057,  -1694,  -5885,   5342,
897*a58d3d2aSXin Li      -5160,  -3748,  -1382,   4420,   -697,  -2000,  -3808,   3100,
898*a58d3d2aSXin Li       2685,  -4073,    531,    318,  -7822,   2414,   2901,   3399,
899*a58d3d2aSXin Li      -1340,   8449,   3685,    463,  -3341,   2423,   2304,  -2723,
900*a58d3d2aSXin Li         84,  -2622,      0,      0,  12088,   -265,   2562,   -435,
901*a58d3d2aSXin Li      -4348,  -2426,   3538,   1552,   1279,    883,  -4166,   2634,
902*a58d3d2aSXin Li      -6130,   2994,   3729,  -1570,   -601,  -1753,  -5124,  -2788,
903*a58d3d2aSXin Li      -2096,  -1920,  -2649,   2793,  -1079,  -1952,   2983,  -1530,
904*a58d3d2aSXin Li       2499,   1769,   1492,  -6757,  -2108,   2841,   1466,   2597,
905*a58d3d2aSXin Li          0,      0,  -3830,  -4093,   2448,  12720,   7737,   -665,
906*a58d3d2aSXin Li       -832,  -9257,   2971,  -2400,    791,   1873,   1072,   -587,
907*a58d3d2aSXin Li      -7440,   8055,   1531,  -4736,    616,  -1782,  -2982,   9663,
908*a58d3d2aSXin Li      -5057,  -5926,   1610,  -4489,   7033,  -8658,   6010,  -5673,
909*a58d3d2aSXin Li       5648,    812,   -271,  -1802,  -4500,   4392,      0,      0,
910*a58d3d2aSXin Li       -888,   -327,   3373,  -1084,   7959,   2430,   1898,  -2360,
911*a58d3d2aSXin Li      -1820,  -1377,  -1090,  -4436,  -3422,  -1106,  -3230,   3876,
912*a58d3d2aSXin Li        -41,  -5128,   6375,  -1848,  -3824,   5844,    617,  -1957,
913*a58d3d2aSXin Li       4232,   1345,  -1439,    -83,   3046,   -214,   5458,  -5566,
914*a58d3d2aSXin Li      -4387,  -3738,  -5740,   8657,      0,      0,   6978,   6239,
915*a58d3d2aSXin Li      -3686,   -981,  -2854,     78,   5859,   -357,   4618,   7391,
916*a58d3d2aSXin Li       -138,    971,  -5799,   2135,   4478,  -7004,  -5949,   1668,
917*a58d3d2aSXin Li      -6933,  -1163,   7010,  -5624,   2990,   6192,  -8075,   3567,
918*a58d3d2aSXin Li      -8308,   2236,  -5098,  -2120,  -4355,  -4238,   4955,  10230,
919*a58d3d2aSXin Li        692,  -5606,      0,      0,  -1348,  -7069,    -12,  -4927,
920*a58d3d2aSXin Li       1211,    651,   1360,   7744,   3404,   5069,  -2438,   -105,
921*a58d3d2aSXin Li       2332,   1494,  -4686,   1336,  -3628,   -881,   2474,   1736,
922*a58d3d2aSXin Li        -26,   -257,   2135,  -4452,    446,   -641,  -4704,   2605,
923*a58d3d2aSXin Li      -6436,   6662,  -4939,    990,  -1100,  -3782,   5028,   4753,
924*a58d3d2aSXin Li          0,      0,  -2875,   6410,   3518,   3950,   1271,    869,
925*a58d3d2aSXin Li      -2842,  -5837,   1532,  -2899,   1140,   -597,   1712,  -1988,
926*a58d3d2aSXin Li      -4819,  -4783,   4773,  -8796,   2240,  -4596,   3565,  -4853,
927*a58d3d2aSXin Li       -556,  -3974,   7366,  -4370,   3113,  -3548,   3552,  -5450,
928*a58d3d2aSXin Li       3869,   2514,   6736,  -4570,   6074,   3151,      0,      0,
929*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
930*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
931*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
932*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
933*a58d3d2aSXin Li          0,      0,      0,      0,  32767,      0,      0,      0,
934*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
935*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
936*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
937*a58d3d2aSXin Li          0,      0,      0,      0,      0,      0,      0,      0,
938*a58d3d2aSXin Li          0,      0,      0,  32767
939*a58d3d2aSXin Li };
940