|
|
|
@ -30,6 +30,29 @@ |
|
|
|
|
|
|
|
|
|
static const char *coeff_type_names[] = { "q8", "q15", "flt" }; |
|
|
|
|
|
|
|
|
|
struct AudioMix { |
|
|
|
|
AVAudioResampleContext *avr; |
|
|
|
|
enum AVSampleFormat fmt; |
|
|
|
|
enum AVMixCoeffType coeff_type; |
|
|
|
|
uint64_t in_layout; |
|
|
|
|
uint64_t out_layout; |
|
|
|
|
int in_channels; |
|
|
|
|
int out_channels; |
|
|
|
|
|
|
|
|
|
int ptr_align; |
|
|
|
|
int samples_align; |
|
|
|
|
int has_optimized_func; |
|
|
|
|
const char *func_descr; |
|
|
|
|
const char *func_descr_generic; |
|
|
|
|
mix_func *mix; |
|
|
|
|
mix_func *mix_generic; |
|
|
|
|
|
|
|
|
|
int16_t *matrix_q8[AVRESAMPLE_MAX_CHANNELS]; |
|
|
|
|
int32_t *matrix_q15[AVRESAMPLE_MAX_CHANNELS]; |
|
|
|
|
float *matrix_flt[AVRESAMPLE_MAX_CHANNELS]; |
|
|
|
|
void **matrix; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
void ff_audio_mix_set_func(AudioMix *am, enum AVSampleFormat fmt, |
|
|
|
|
enum AVMixCoeffType coeff_type, int in_channels, |
|
|
|
|
int out_channels, int ptr_align, int samples_align, |
|
|
|
|