35 #define FRONT_CENTER 2
36 #define LOW_FREQUENCY 3
39 #define FRONT_LEFT_OF_CENTER 6
40 #define FRONT_RIGHT_OF_CENTER 7
45 #define TOP_FRONT_LEFT 12
46 #define TOP_FRONT_CENTER 13
47 #define TOP_FRONT_RIGHT 14
48 #define TOP_BACK_LEFT 15
49 #define TOP_BACK_CENTER 16
50 #define TOP_BACK_RIGHT 17
51 #define STEREO_LEFT 29
52 #define STEREO_RIGHT 30
55 #define SURROUND_DIRECT_LEFT 33
56 #define SURROUND_DIRECT_RIGHT 34
57 #define LOW_FREQUENCY_2 35
59 #define SQRT3_2 1.22474487139158904909
88 double center_mix_level,
double surround_mix_level,
90 double *matrix_out,
int stride,
93 int i, j, out_i, out_j;
94 double matrix[64][64] = {{0}};
97 int in_channels, out_channels;
103 unaccounted = in_layout & ~out_layout;
108 memset(matrix_out, 0, out_channels *
stride *
sizeof(*matrix_out));
121 for (
i = 0;
i < 64;
i++) {
122 if (in_layout & out_layout & (1ULL <<
i))
273 for (out_i =
i = 0; out_i < out_channels &&
i < 64;
i++) {
275 for (out_j = j = 0; out_j < in_channels && j < 64; j++) {
276 matrix_out[out_i *
stride + out_j] = matrix[
i][j];
277 sum += fabs(matrix[
i][j]);
278 if (in_layout & (1ULL << j))
281 maxcoef =
FFMAX(maxcoef, sum);
282 if (out_layout & (1ULL <<
i))
288 for (
i = 0;
i < out_channels;
i++)
289 for (j = 0; j < in_channels; j++)
290 matrix_out[
i *
stride + j] /= maxcoef;