Commit ca30ae12 authored by Michael Niedermayer's avatar Michael Niedermayer

swr: add all in one rematrixing function ptr

Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent dfde3d49
...@@ -291,6 +291,8 @@ int swri_rematrix_init(SwrContext *s){ ...@@ -291,6 +291,8 @@ int swri_rematrix_init(SwrContext *s){
int nb_in = av_get_channel_layout_nb_channels(s->in_ch_layout); int nb_in = av_get_channel_layout_nb_channels(s->in_ch_layout);
int nb_out = av_get_channel_layout_nb_channels(s->out_ch_layout); int nb_out = av_get_channel_layout_nb_channels(s->out_ch_layout);
s->mix_any_f = NULL;
if (!s->rematrix_custom) { if (!s->rematrix_custom) {
int r = auto_matrix(s); int r = auto_matrix(s);
if (r) if (r)
...@@ -346,6 +348,11 @@ void swri_rematrix_free(SwrContext *s){ ...@@ -346,6 +348,11 @@ void swri_rematrix_free(SwrContext *s){
int swri_rematrix(SwrContext *s, AudioData *out, AudioData *in, int len, int mustcopy){ int swri_rematrix(SwrContext *s, AudioData *out, AudioData *in, int len, int mustcopy){
int out_i, in_i, i, j; int out_i, in_i, i, j;
if(s->mix_any_f) {
s->mix_any_f(out->ch, in->ch, s->native_matrix, len);
return 0;
}
av_assert0(out->ch_count == av_get_channel_layout_nb_channels(s->out_ch_layout)); av_assert0(out->ch_count == av_get_channel_layout_nb_channels(s->out_ch_layout));
av_assert0(in ->ch_count == av_get_channel_layout_nb_channels(s-> in_ch_layout)); av_assert0(in ->ch_count == av_get_channel_layout_nb_channels(s-> in_ch_layout));
......
...@@ -26,6 +26,8 @@ ...@@ -26,6 +26,8 @@
typedef void (mix_1_1_func_type)(void *out, const void *in, void *coeffp, int index, int len); typedef void (mix_1_1_func_type)(void *out, const void *in, void *coeffp, int index, int len);
typedef void (mix_2_1_func_type)(void *out, const void *in1, const void *in2, void *coeffp, int index1, int index2, int len); typedef void (mix_2_1_func_type)(void *out, const void *in1, const void *in2, void *coeffp, int index1, int index2, int len);
typedef void (mix_any_func_type)(void **out, const void **in1, void *coeffp, int len);
typedef struct AudioData{ typedef struct AudioData{
uint8_t *ch[SWR_CH_MAX]; ///< samples buffer per channel uint8_t *ch[SWR_CH_MAX]; ///< samples buffer per channel
uint8_t *data; ///< samples buffer uint8_t *data; ///< samples buffer
...@@ -98,6 +100,8 @@ struct SwrContext { ...@@ -98,6 +100,8 @@ struct SwrContext {
mix_1_1_func_type *mix_1_1_f; mix_1_1_func_type *mix_1_1_f;
mix_2_1_func_type *mix_2_1_f; mix_2_1_func_type *mix_2_1_f;
mix_any_func_type *mix_any_f;
/* TODO: callbacks for ASM optimizations */ /* TODO: callbacks for ASM optimizations */
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment