Hack pulseaudio channel map for 5.1 DCPs to see if it fixes multi-channel playback...
authorCarl Hetherington <cth@carlh.net>
Sun, 25 Nov 2018 23:39:59 +0000 (23:39 +0000)
committerCarl Hetherington <cth@carlh.net>
Sun, 25 Nov 2018 23:39:59 +0000 (23:39 +0000)
RtAudio.cpp

index f2bc5d140f8b3fe4a4b5859e58fa30a71c597d1a..0e4fe4a91f0a9865291e3d28d7bd183090f504b2 100644 (file)
@@ -8633,7 +8633,6 @@ bool RtApiPulse::probeDeviceOpen( unsigned int device, StreamMode mode,
     pa_buffer_attr buffer_attr;\r
     buffer_attr.fragsize = bufferBytes;\r
     buffer_attr.maxlength = -1;\r
-\r
     pah->s_rec = pa_simple_new( NULL, streamName.c_str(), PA_STREAM_RECORD, NULL, "Record", &ss, NULL, &buffer_attr, &error );\r
     if ( !pah->s_rec ) {\r
       errorText_ = "RtApiPulse::probeDeviceOpen: error connecting input to PulseAudio server.";\r
@@ -8641,7 +8640,19 @@ bool RtApiPulse::probeDeviceOpen( unsigned int device, StreamMode mode,
     }\r
     break;\r
   case OUTPUT:\r
-    pah->s_play = pa_simple_new( NULL, streamName.c_str(), PA_STREAM_PLAYBACK, NULL, "Playback", &ss, NULL, NULL, &error );\r
+    /* XXX: hard-coded for DCP-o-matic */\r
+    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
+\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
       errorText_ = "RtApiPulse::probeDeviceOpen: error connecting output to PulseAudio server.";\r
       goto error;\r