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   
   63     return (!layout || (layout & (layout - 1)));
 
   88                             double center_mix_level, 
double surround_mix_level,
 
   89                             double lfe_mix_level, 
int normalize,
 
   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))
 
  136         if (out_layout & AV_CH_FRONT_CENTER) {
 
  140             if (in_layout & AV_CH_FRONT_CENTER)
 
  156                 if (unaccounted & (AV_CH_BACK_LEFT | AV_CH_SIDE_LEFT)) {
 
  167         } 
else if (out_layout & AV_CH_FRONT_CENTER) {
 
  174         if (out_layout & AV_CH_BACK_CENTER) {
 
  180             if (in_layout & AV_CH_SIDE_LEFT) {
 
  202         } 
else if (out_layout & AV_CH_FRONT_CENTER) {
 
  210         if (out_layout & AV_CH_BACK_LEFT) {
 
  213             if (in_layout & AV_CH_BACK_LEFT) {
 
  220         } 
else if (out_layout & AV_CH_BACK_CENTER) {
 
  238         } 
else if (out_layout & AV_CH_FRONT_CENTER) {
 
  249         } 
else if (out_layout & AV_CH_FRONT_CENTER) {
 
  257         if (out_layout & AV_CH_FRONT_CENTER) {
 
  268     for (out_i = i = 0; out_i < out_channels && i < 64; i++) {
 
  270         for (out_j = j = 0; out_j < in_channels && j < 64; j++) {
 
  271             matrix_out[out_i * stride + out_j] = matrix[i][j];
 
  272             sum += fabs(matrix[i][j]);
 
  273             if (in_layout & (1ULL << j))
 
  276         maxcoef = 
FFMAX(maxcoef, sum);
 
  277         if (out_layout & (1ULL << i))
 
  282     if (normalize && maxcoef > 1.0) {
 
  283         for (i = 0; i < out_channels; i++)
 
  284             for (j = 0; j < in_channels; j++)
 
  285                 matrix_out[i * stride + j] /= maxcoef;