From 5de9d5809b7b843424740dfdbb12dae238e21fef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 29 Jun 2016 18:14:51 +0200 Subject: [PATCH] audioconvert: Handle fallback channel mask for mono correctly It's 0 and no mask should be set for mono at all. https://bugzilla.gnome.org/show_bug.cgi?id=757472 --- gst-libs/gst/audio/audio-channels.c | 2 +- gst/audioconvert/gstaudioconvert.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gst-libs/gst/audio/audio-channels.c b/gst-libs/gst/audio/audio-channels.c index e60563319d..5ce2f5c747 100644 --- a/gst-libs/gst/audio/audio-channels.c +++ b/gst-libs/gst/audio/audio-channels.c @@ -524,7 +524,7 @@ static const guint64 default_masks[] = { * called as a last resort when the specific channel map is unknown. * * Returns: a fallback channel-mask for @channels or 0 when there is no - * mask. + * mask and mono. * * Since: 1.8 */ diff --git a/gst/audioconvert/gstaudioconvert.c b/gst/audioconvert/gstaudioconvert.c index 58594378c8..d320af480d 100644 --- a/gst/audioconvert/gstaudioconvert.c +++ b/gst/audioconvert/gstaudioconvert.c @@ -575,12 +575,12 @@ gst_audio_convert_fixate_channels (GstBaseTransform * base, GstStructure * ins, * one reason or another, so just pick a default layout (we could be smarter * and try to add/remove channels from the input layout, or pick a default * layout based on LFE-presence in input layout, but let's save that for - * another day) */ - if (out_chans > 0 + * another day). For mono, no mask is required and the fallback mask is 0 */ + if (out_chans > 1 && (out_mask = gst_audio_channel_get_fallback_mask (out_chans))) { GST_DEBUG_OBJECT (base, "using default channel layout as fallback"); gst_structure_set (outs, "channel-mask", GST_TYPE_BITMASK, out_mask, NULL); - } else { + } else if (out_chans > 1) { GST_ERROR_OBJECT (base, "Have no default layout for %d channels", out_chans); }