audioringbuffer: Use new function to get a channel reordering map
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Sat, 24 Dec 2011 09:54:20 +0000 (10:54 +0100)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 5 Jan 2012 09:34:24 +0000 (10:34 +0100)
gst-libs/gst/audio/gstaudioringbuffer.c

index bb433add14876880c7ad29cf2867d01cab96043b..54fc5e44e1336ee9123a6020ab19c1a7547cb6c5 100644 (file)
@@ -1883,7 +1883,7 @@ gst_audio_ring_buffer_set_channel_positions (GstAudioRingBuffer * buf,
 {
   const GstAudioChannelPosition *to;
   gint channels;
-  gint i, j;
+  gint i;
 
   g_return_if_fail (GST_IS_AUDIO_RING_BUFFER (buf));
   g_return_if_fail (buf->acquired);
@@ -1895,25 +1895,9 @@ gst_audio_ring_buffer_set_channel_positions (GstAudioRingBuffer * buf,
   if (memcmp (position, to, channels * sizeof (to[0])) == 0)
     return;
 
-  /* Build reorder map and check compatibility */
-  for (i = 0; i < channels; i++) {
-    g_return_if_fail (position[i] == GST_AUDIO_CHANNEL_POSITION_NONE
-        || to[i] == GST_AUDIO_CHANNEL_POSITION_NONE);
-    g_return_if_fail (position[i] == GST_AUDIO_CHANNEL_POSITION_INVALID
-        || to[i] == GST_AUDIO_CHANNEL_POSITION_INVALID);
-    g_return_if_fail (position[i] == GST_AUDIO_CHANNEL_POSITION_MONO
-        || to[i] == GST_AUDIO_CHANNEL_POSITION_MONO);
-
-    for (j = 0; j < channels; j++) {
-      if (position[i] == to[j]) {
-        buf->channel_reorder_map[i] = j;
-        break;
-      }
-    }
-
-    /* Not all channels present in both */
-    g_return_if_fail (j == channels);
-  }
+  if (!gst_audio_get_channel_reorder_map (channels, position, to,
+          buf->channel_reorder_map))
+    g_return_if_reached ();
 
   for (i = 0; i < channels; i++) {
     if (buf->channel_reorder_map[i] != i) {