Try to fix Linux audio for < 6 channels.
authorCarl Hetherington <cth@carlh.net>
Tue, 4 Dec 2018 17:30:27 +0000 (17:30 +0000)
committerCarl Hetherington <cth@carlh.net>
Tue, 4 Dec 2018 17:30:27 +0000 (17:30 +0000)
RtAudio.cpp

index 0e4fe4a91f0a9865291e3d28d7bd183090f504b2..019e8ace5e224d4085897dc5931258c59d10432a 100644 (file)
@@ -8644,13 +8644,26 @@ bool RtApiPulse::probeDeviceOpen( unsigned int device, StreamMode mode,
     pa_channel_map map;\r
     pa_channel_map_init(&map);\r
     /* XXX: need to check 7.1 */\r
-    map.channels = 6;\r
-    map.map[0] = PA_CHANNEL_POSITION_FRONT_LEFT;\r
-    map.map[1] = PA_CHANNEL_POSITION_FRONT_RIGHT;\r
-    map.map[2] = PA_CHANNEL_POSITION_FRONT_CENTER;\r
-    map.map[3] = PA_CHANNEL_POSITION_LFE;\r
-    map.map[4] = PA_CHANNEL_POSITION_REAR_LEFT;\r
-    map.map[5] = PA_CHANNEL_POSITION_REAR_RIGHT;\r
+    map.channels = channels;\r
+\r
+    if (channels > 0) {\r
+      map.map[0] = PA_CHANNEL_POSITION_FRONT_LEFT;\r
+    }\r
+    if (channels > 1) {\r
+      map.map[1] = PA_CHANNEL_POSITION_FRONT_RIGHT;\r
+    }\r
+    if (channels > 2) {\r
+      map.map[2] = PA_CHANNEL_POSITION_FRONT_CENTER;\r
+    }\r
+    if (channels > 3) {\r
+      map.map[3] = PA_CHANNEL_POSITION_LFE;\r
+    }\r
+    if (channels > 4) {\r
+      map.map[4] = PA_CHANNEL_POSITION_REAR_LEFT;\r
+    }\r
+    if (channels > 5) {\r
+      map.map[5] = PA_CHANNEL_POSITION_REAR_RIGHT;\r
+    }\r
 \r
     pah->s_play = pa_simple_new( NULL, streamName.c_str(), PA_STREAM_PLAYBACK, NULL, "Playback", &ss, &map, NULL, &error );\r
     if ( !pah->s_play ) {\r