#include <stdint.h>#include "libavutil/common.h"#include "libavutil/libm.h"#include "libavutil/samplefmt.h"#include "avresample.h"#include "internal.h"#include "audio_data.h"#include "audio_mix.h"Go to the source code of this file.
Defines | |
| #define | FRONT_LEFT 0 | 
| #define | FRONT_RIGHT 1 | 
| #define | FRONT_CENTER 2 | 
| #define | LOW_FREQUENCY 3 | 
| #define | BACK_LEFT 4 | 
| #define | BACK_RIGHT 5 | 
| #define | FRONT_LEFT_OF_CENTER 6 | 
| #define | FRONT_RIGHT_OF_CENTER 7 | 
| #define | BACK_CENTER 8 | 
| #define | SIDE_LEFT 9 | 
| #define | SIDE_RIGHT 10 | 
| #define | TOP_CENTER 11 | 
| #define | TOP_FRONT_LEFT 12 | 
| #define | TOP_FRONT_CENTER 13 | 
| #define | TOP_FRONT_RIGHT 14 | 
| #define | TOP_BACK_LEFT 15 | 
| #define | TOP_BACK_CENTER 16 | 
| #define | TOP_BACK_RIGHT 17 | 
| #define | STEREO_LEFT 29 | 
| #define | STEREO_RIGHT 30 | 
| #define | WIDE_LEFT 31 | 
| #define | WIDE_RIGHT 32 | 
| #define | SURROUND_DIRECT_LEFT 33 | 
| #define | SURROUND_DIRECT_RIGHT 34 | 
| #define | LOW_FREQUENCY_2 35 | 
| #define | SQRT3_2 1.22474487139158904909 | 
| #define | CONVERT_MATRIX(type, expr) | 
Functions | |
| static av_always_inline int | even (uint64_t layout) | 
| static int | sane_layout (uint64_t layout) | 
| 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) | 
| Generate a channel mixing matrix.   | |
| int | avresample_get_matrix (AVAudioResampleContext *avr, double *matrix, int stride) | 
| Get the current channel mixing matrix.   | |
| int | avresample_set_matrix (AVAudioResampleContext *avr, const double *matrix, int stride) | 
| Set channel mixing matrix.   | |
| #define BACK_CENTER 8 | 
Definition at line 41 of file audio_mix_matrix.c.
Referenced by auto_matrix(), and avresample_build_matrix().
| #define BACK_LEFT 4 | 
Definition at line 37 of file audio_mix_matrix.c.
Referenced by auto_matrix(), and avresample_build_matrix().
| #define BACK_RIGHT 5 | 
Definition at line 38 of file audio_mix_matrix.c.
Referenced by auto_matrix(), and avresample_build_matrix().
| #define CONVERT_MATRIX | ( | type, | |||
| expr | ) | 
Value:
avr->am->matrix_## type[0] = av_mallocz(out_channels * in_channels * \ sizeof(*avr->am->matrix_## type[0])); \ if (!avr->am->matrix_## type[0]) \ return AVERROR(ENOMEM); \ for (o = 0; o < out_channels; o++) { \ if (o > 0) \ avr->am->matrix_## type[o] = avr->am->matrix_## type[o - 1] + \ in_channels; \ for (i = 0; i < in_channels; i++) { \ double v = matrix[o * stride + i]; \ avr->am->matrix_## type[o][i] = expr; \ } \ } \ avr->am->matrix = (void **)avr->am->matrix_## type;
Referenced by avresample_set_matrix().
| #define FRONT_CENTER 2 | 
Definition at line 35 of file audio_mix_matrix.c.
Referenced by auto_matrix(), and avresample_build_matrix().
| #define FRONT_LEFT 0 | 
Definition at line 33 of file audio_mix_matrix.c.
Referenced by auto_matrix(), and avresample_build_matrix().
| #define FRONT_LEFT_OF_CENTER 6 | 
Definition at line 39 of file audio_mix_matrix.c.
Referenced by auto_matrix(), and avresample_build_matrix().
| #define FRONT_RIGHT 1 | 
Definition at line 34 of file audio_mix_matrix.c.
Referenced by auto_matrix(), and avresample_build_matrix().
| #define FRONT_RIGHT_OF_CENTER 7 | 
Definition at line 40 of file audio_mix_matrix.c.
Referenced by auto_matrix(), and avresample_build_matrix().
| #define LOW_FREQUENCY 3 | 
Definition at line 36 of file audio_mix_matrix.c.
Referenced by auto_matrix(), and avresample_build_matrix().
| #define LOW_FREQUENCY_2 35 | 
Definition at line 57 of file audio_mix_matrix.c.
| #define SIDE_LEFT 9 | 
Definition at line 42 of file audio_mix_matrix.c.
Referenced by auto_matrix(), and avresample_build_matrix().
| #define SIDE_RIGHT 10 | 
Definition at line 43 of file audio_mix_matrix.c.
Referenced by auto_matrix(), and avresample_build_matrix().
| #define SQRT3_2 1.22474487139158904909 | 
Definition at line 59 of file audio_mix_matrix.c.
Referenced by auto_matrix(), and avresample_build_matrix().
| #define STEREO_LEFT 29 | 
Definition at line 51 of file audio_mix_matrix.c.
| #define STEREO_RIGHT 30 | 
Definition at line 52 of file audio_mix_matrix.c.
| #define SURROUND_DIRECT_LEFT 33 | 
Definition at line 55 of file audio_mix_matrix.c.
| #define SURROUND_DIRECT_RIGHT 34 | 
Definition at line 56 of file audio_mix_matrix.c.
| #define TOP_BACK_CENTER 16 | 
Definition at line 49 of file audio_mix_matrix.c.
| #define TOP_BACK_LEFT 15 | 
Definition at line 48 of file audio_mix_matrix.c.
| #define TOP_BACK_RIGHT 17 | 
Definition at line 50 of file audio_mix_matrix.c.
| #define TOP_CENTER 11 | 
Definition at line 44 of file audio_mix_matrix.c.
| #define TOP_FRONT_CENTER 13 | 
Definition at line 46 of file audio_mix_matrix.c.
| #define TOP_FRONT_LEFT 12 | 
Definition at line 45 of file audio_mix_matrix.c.
| #define TOP_FRONT_RIGHT 14 | 
Definition at line 47 of file audio_mix_matrix.c.
| #define WIDE_LEFT 31 | 
Definition at line 53 of file audio_mix_matrix.c.
| #define WIDE_RIGHT 32 | 
Definition at line 54 of file audio_mix_matrix.c.
| 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, | |||
| int | stride, | |||
| enum AVMatrixEncoding | matrix_encoding | |||
| ) | 
Generate a channel mixing matrix.
This function is the one used internally by libavresample for building the default mixing matrix. It is made public just as a utility function for building custom matrices.
| in_layout | input channel layout | |
| out_layout | output channel layout | |
| center_mix_level | mix level for the center channel | |
| surround_mix_level | mix level for the surround channel(s) | |
| lfe_mix_level | mix level for the low-frequency effects channel | |
| normalize | if 1, coefficients will be normalized to prevent overflow. if 0, coefficients will not be normalized. | |
| [out] | matrix | mixing coefficients; matrix[i + stride * o] is the weight of input channel i in output channel o. | 
| stride | distance between adjacent input channels in the matrix array | |
| matrix_encoding | matrixed stereo downmix mode (e.g. dplii) | 
Definition at line 87 of file audio_mix_matrix.c.
Referenced by ff_audio_mix_init().
| int avresample_get_matrix | ( | AVAudioResampleContext * | avr, | |
| double * | matrix, | |||
| int | stride | |||
| ) | 
Get the current channel mixing matrix.
| avr | audio resample context | |
| matrix | mixing coefficients; matrix[i + stride * o] is the weight of input channel i in output channel o. | |
| stride | distance between adjacent input channels in the matrix array | 
Definition at line 291 of file audio_mix_matrix.c.
Referenced by avresample_set_compensation().
| int avresample_set_matrix | ( | AVAudioResampleContext * | avr, | |
| const double * | matrix, | |||
| int | stride | |||
| ) | 
Set channel mixing matrix.
Allows for setting a custom mixing matrix, overriding the default matrix generated internally during avresample_open(). This function can be called anytime on an allocated context, either before or after calling avresample_open(). avresample_convert() always uses the current matrix. Calling avresample_close() on the context will clear the current matrix.
| avr | audio resample context | |
| matrix | mixing coefficients; matrix[i + stride * o] is the weight of input channel i in output channel o. | |
| stride | distance between adjacent input channels in the matrix array | 
Definition at line 341 of file audio_mix_matrix.c.
Referenced by avresample_set_compensation(), and ff_audio_mix_init().
Definition at line 66 of file audio_mix_matrix.c.
Referenced by auto_matrix(), and avresample_build_matrix().
 1.5.8