From 268ed5dd6ffbea7ca9e7fe5c0f09ca2de7306f5a Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 6 Nov 2015 16:42:35 +0100 Subject: channelmix: don't limit channelpositions Don't set a limit on the channel positions, just like the metadata. --- gst/audioconvert/gstchannelmix.c | 13 +++++++------ gst/audioconvert/gstchannelmix.h | 4 ++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/gst/audioconvert/gstchannelmix.c b/gst/audioconvert/gstchannelmix.c index de3ceea85..639de1538 100644 --- a/gst/audioconvert/gstchannelmix.c +++ b/gst/audioconvert/gstchannelmix.c @@ -785,16 +785,16 @@ GstAudioChannelMix * gst_audio_channel_mix_new (GstAudioChannelMixFlags flags, GstAudioFormat format, gint in_channels, - GstAudioChannelPosition in_position[64], - gint out_channels, GstAudioChannelPosition out_position[64]) + GstAudioChannelPosition * in_position, + gint out_channels, GstAudioChannelPosition * out_position) { GstAudioChannelMix *mix; gint i; g_return_val_if_fail (format == GST_AUDIO_FORMAT_S32 || format == GST_AUDIO_FORMAT_F64, NULL); - g_return_val_if_fail (in_channels > 0, NULL); - g_return_val_if_fail (out_channels > 0, NULL); + g_return_val_if_fail (in_channels > 0 && in_channels < 64, NULL); + g_return_val_if_fail (out_channels > 0 && out_channels < 64, NULL); mix = g_slice_new0 (GstAudioChannelMix); mix->flags = flags; @@ -802,10 +802,11 @@ gst_audio_channel_mix_new (GstAudioChannelMixFlags flags, mix->in_channels = in_channels; mix->out_channels = out_channels; - for (i = 0; i < 64; i++) { + for (i = 0; i < in_channels; i++) mix->in_position[i] = in_position[i]; + for (i = 0; i < out_channels; i++) mix->out_position[i] = out_position[i]; - } + gst_audio_channel_mix_setup_matrix (mix); switch (mix->format) { diff --git a/gst/audioconvert/gstchannelmix.h b/gst/audioconvert/gstchannelmix.h index cbd0ddc6c..fd969171e 100644 --- a/gst/audioconvert/gstchannelmix.h +++ b/gst/audioconvert/gstchannelmix.h @@ -47,9 +47,9 @@ typedef enum { GstAudioChannelMix * gst_audio_channel_mix_new (GstAudioChannelMixFlags flags, GstAudioFormat format, gint in_channels, - GstAudioChannelPosition in_position[64], + GstAudioChannelPosition *in_position, gint out_channels, - GstAudioChannelPosition out_position[64]); + GstAudioChannelPosition *out_position); void gst_audio_channel_mix_free (GstAudioChannelMix *mix); /* -- cgit v1.2.3