make channel naming somewhat RFC2551 compliant
authorLennart Poettering <lennart@poettering.net>
Thu, 16 Feb 2006 22:34:52 +0000 (22:34 +0000)
committerLennart Poettering <lennart@poettering.net>
Thu, 16 Feb 2006 22:34:52 +0000 (22:34 +0000)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@491 fefdeb5f-60dc-0310-8127-8f9354f1896f

src/polyp/channelmap.c
src/polyp/channelmap.h

index 7bfd21e..bb47deb 100644 (file)
@@ -71,34 +71,46 @@ pa_channel_map* pa_channel_map_init_auto(pa_channel_map *m, unsigned channels) {
     pa_channel_map_init(m);
 
     m->channels = channels;
+
+    /* This is somewhat compatible with RFC3551 */
     
     switch (channels) {
         case 1:
             m->map[0] = PA_CHANNEL_POSITION_MONO;
             return m;
 
-        case 8:
-            m->map[6] = PA_CHANNEL_POSITION_SIDE_LEFT;
-            m->map[7] = PA_CHANNEL_POSITION_SIDE_RIGHT;
-            /* Fall through */
-            
         case 6:
+            m->map[0] = PA_CHANNEL_POSITION_FRONT_LEFT;
+            m->map[1] = PA_CHANNEL_POSITION_SIDE_LEFT;
+            m->map[2] = PA_CHANNEL_POSITION_FRONT_CENTER;
+            m->map[3] = PA_CHANNEL_POSITION_FRONT_RIGHT;
+            m->map[4] = PA_CHANNEL_POSITION_SIDE_RIGHT;
             m->map[5] = PA_CHANNEL_POSITION_LFE;
-            /* Fall through */
+            return m;
             
         case 5:
-            m->map[4] = PA_CHANNEL_POSITION_FRONT_CENTER;
-            /* Fall through */
-            
-        case 4:
-            m->map[2] = PA_CHANNEL_POSITION_REAR_LEFT;
-            m->map[3] = PA_CHANNEL_POSITION_REAR_RIGHT;
+            m->map[2] = PA_CHANNEL_POSITION_FRONT_CENTER;
+            m->map[3] = PA_CHANNEL_POSITION_REAR_LEFT;
+            m->map[4] = PA_CHANNEL_POSITION_REAR_RIGHT;
             /* Fall through */
             
         case 2:
             m->map[0] = PA_CHANNEL_POSITION_FRONT_LEFT;
             m->map[1] = PA_CHANNEL_POSITION_FRONT_RIGHT;
             return m;
+
+        case 3:
+            m->map[0] = PA_CHANNEL_POSITION_LEFT;
+            m->map[1] = PA_CHANNEL_POSITION_RIGHT;
+            m->map[2] = PA_CHANNEL_POSITION_CENTER;
+            return m;
+
+        case 4:
+            m->map[0] = PA_CHANNEL_POSITION_LEFT;
+            m->map[1] = PA_CHANNEL_POSITION_CENTER;
+            m->map[2] = PA_CHANNEL_POSITION_RIGHT;
+            m->map[3] = PA_CHANNEL_POSITION_LFE;
+            return m;
             
         default:
             return NULL;
index 0b9f6e2..7c48b76 100644 (file)
@@ -36,10 +36,11 @@ typedef enum {
 
     PA_CHANNEL_POSITION_LEFT,
     PA_CHANNEL_POSITION_RIGHT,
-
-    PA_CHANNEL_POSITION_FRONT_CENTER,
+    PA_CHANNEL_POSITION_CENTER,
+    
     PA_CHANNEL_POSITION_FRONT_LEFT = PA_CHANNEL_POSITION_LEFT,
     PA_CHANNEL_POSITION_FRONT_RIGHT = PA_CHANNEL_POSITION_RIGHT,
+    PA_CHANNEL_POSITION_FRONT_CENTER = PA_CHANNEL_POSITION_CENTER,
 
     PA_CHANNEL_POSITION_REAR_CENTER,
     PA_CHANNEL_POSITION_REAR_LEFT,