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;
#define FRONT_LEFT_OF_CENTER
static int sane_layout(uint64_t layout)
static av_always_inline int even(uint64_t layout)
#define FRONT_RIGHT_OF_CENTER
common internal and external API header
static __device__ float fabs(float a)
#define AV_CH_LAYOUT_STEREO_DOWNMIX
#define AV_CH_LAYOUT_SURROUND
#define AV_CH_LAYOUT_STEREO
int av_get_channel_layout_nb_channels(uint64_t channel_layout)
Return the number of channels in the channel layout.
@ AV_MATRIX_ENCODING_DOLBY
@ AV_MATRIX_ENCODING_DPLII
#define AV_CH_SURROUND_DIRECT_RIGHT
#define AV_CH_TOP_FRONT_LEFT
#define AV_CH_FRONT_RIGHT
#define AV_CH_FRONT_RIGHT_OF_CENTER
#define AV_CH_BACK_CENTER
#define AV_CH_FRONT_LEFT_OF_CENTER
#define AV_CH_FRONT_CENTER
#define AV_CH_TOP_BACK_RIGHT
#define AV_CH_TOP_BACK_LEFT
#define AV_CH_LOW_FREQUENCY
#define AV_CH_STEREO_RIGHT
See AV_CH_STEREO_LEFT.
#define AV_CH_TOP_FRONT_RIGHT
#define AV_CH_STEREO_LEFT
Stereo downmix.
#define AV_CH_SURROUND_DIRECT_LEFT
int avresample_build_matrix(uint64_t in_layout, uint64_t out_layout, double center_mix_level, double surround_mix_level, double lfe_mix_level, int normalize, double *matrix_out, int stride, enum AVMatrixEncoding matrix_encoding)
#define AVRESAMPLE_MAX_CHANNELS
#define AVERROR_PATCHWELCOME
Not yet implemented in FFmpeg, patches welcome.
common internal API header
Replacements for frequently missing libm functions.