audioconvert: Handle fallback channel mask for mono correctly
authorSebastian Dröge <sebastian@centricular.com>
Wed, 29 Jun 2016 16:14:51 +0000 (18:14 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Wed, 29 Jun 2016 16:14:51 +0000 (18:14 +0200)
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
gst/audioconvert/gstaudioconvert.c

index e605633..5ce2f5c 100644 (file)
@@ -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
  */
index 5859437..d320af4 100644 (file)
@@ -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);
   }