Commit 8b710ea5 authored by Marcin Gorzel's avatar Marcin Gorzel Committed by Michael Niedermayer

swresample: Use channel count in rematrix initialization

Rematrixing supports up to 64 channels. However, there is only a limited number of channel layouts defined. Since the in/out channel count is currently obtained from the channel layout, for undefined layouts (e.g. for 9, 10, 11 channels etc.) the rematrixing fails.

This patch changes rematrix init methods to use in (used) and out channel count directly instead of computing it from channel layout.
Signed-off-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
parent d01d46ad
...@@ -384,8 +384,8 @@ av_cold static int auto_matrix(SwrContext *s) ...@@ -384,8 +384,8 @@ av_cold static int auto_matrix(SwrContext *s)
av_cold int swri_rematrix_init(SwrContext *s){ av_cold int swri_rematrix_init(SwrContext *s){
int i, j; int i, j;
int nb_in = av_get_channel_layout_nb_channels(s->in_ch_layout); int nb_in = s->used_ch_count;
int nb_out = av_get_channel_layout_nb_channels(s->out_ch_layout); int nb_out = s->out.ch_count;
s->mix_any_f = NULL; s->mix_any_f = NULL;
......
...@@ -33,8 +33,8 @@ D(int16, sse2) ...@@ -33,8 +33,8 @@ D(int16, sse2)
av_cold int swri_rematrix_init_x86(struct SwrContext *s){ av_cold int swri_rematrix_init_x86(struct SwrContext *s){
#if HAVE_X86ASM #if HAVE_X86ASM
int mm_flags = av_get_cpu_flags(); int mm_flags = av_get_cpu_flags();
int nb_in = av_get_channel_layout_nb_channels(s->in_ch_layout); int nb_in = s->used_ch_count;
int nb_out = av_get_channel_layout_nb_channels(s->out_ch_layout); int nb_out = s->out.ch_count;
int num = nb_in * nb_out; int num = nb_in * nb_out;
int i,j; int i,j;
......
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