audioconvert: Fix channel-mask handling
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Wed, 4 Jan 2012 09:26:33 +0000 (10:26 +0100)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 5 Jan 2012 09:34:25 +0000 (10:34 +0100)
gst/audioconvert/gstaudioconvert.c

index f23e3ab..a96bf05 100644 (file)
@@ -469,9 +469,11 @@ gst_audio_convert_fixate_channels (GstBaseTransform * base, GstStructure * ins,
     /* channels == 1 => MONO */
     if (out_chans == 2) {
       out_mask =
-          GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT |
-          GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT;
+          GST_AUDIO_CHANNEL_POSITION_MASK (FRONT_LEFT) |
+          GST_AUDIO_CHANNEL_POSITION_MASK (FRONT_RIGHT);
       has_out_mask = TRUE;
+      gst_structure_set (outs, "channel-mask", GST_TYPE_BITMASK, out_mask,
+          NULL);
     }
   }
 
@@ -483,8 +485,8 @@ gst_audio_convert_fixate_channels (GstBaseTransform * base, GstStructure * ins,
     /* channels == 1 => MONO */
     if (in_chans == 2) {
       in_mask =
-          GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT |
-          GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT;
+          GST_AUDIO_CHANNEL_POSITION_MASK (FRONT_LEFT) |
+          GST_AUDIO_CHANNEL_POSITION_MASK (FRONT_RIGHT);
       has_in_mask = TRUE;
     } else if (in_chans > 2)
       g_warning ("%s: Upstream caps contain no channel mask",
@@ -571,7 +573,7 @@ gst_audio_convert_fixate_channels (GstBaseTransform * base, GstStructure * ins,
 
     out_mask = 0;
     for (i = 0; i < out_chans; i++)
-      out_mask |= default_positions[out_chans - 1][i];
+      out_mask |= G_GUINT64_CONSTANT (1) << default_positions[out_chans - 1][i];
 
     gst_structure_set (outs, "channel-mask", GST_TYPE_BITMASK, out_mask, NULL);
   } else {