X-Git-Url: https://main.carlh.net/gitweb/?p=rtaudio-cdist.git;a=blobdiff_plain;f=RtAudio.cpp;fp=RtAudio.cpp;h=64b15774c8642423fffb6492eac264469b930d60;hp=bea68a88f717280e09b97be3f684693084a6d47a;hb=32a37284e39de0b2709f533d24f2d5a819f34e7f;hpb=70450e856a3c1ed7caa76c07bd3d1f816bb0d4ba diff --git a/RtAudio.cpp b/RtAudio.cpp index bea68a8..64b1577 100644 --- a/RtAudio.cpp +++ b/RtAudio.cpp @@ -8974,7 +8974,38 @@ bool RtApiPulse::probeDeviceOpen( unsigned int device, StreamMode mode, } break; case OUTPUT: - pah->s_play = pa_simple_new( NULL, streamName.c_str(), PA_STREAM_PLAYBACK, NULL, "Playback", &ss, NULL, NULL, &error ); + /* XXX: hard-coded for DCP-o-matic */ + pa_channel_map map; + pa_channel_map_init(&map); + /* XXX: need to check 7.1 */ + map.channels = channels; + + if (channels > 0) { + map.map[0] = PA_CHANNEL_POSITION_FRONT_LEFT; + } + if (channels > 1) { + map.map[1] = PA_CHANNEL_POSITION_FRONT_RIGHT; + } + if (channels > 2) { + map.map[2] = PA_CHANNEL_POSITION_FRONT_CENTER; + } + if (channels > 3) { + map.map[3] = PA_CHANNEL_POSITION_LFE; + } + if (channels > 4) { + map.map[4] = PA_CHANNEL_POSITION_REAR_LEFT; + } + if (channels > 5) { + map.map[5] = PA_CHANNEL_POSITION_REAR_RIGHT; + } + if (channels > 6) { + map.map[6] = PA_CHANNEL_POSITION_SIDE_LEFT; + } + if (channels > 7) { + map.map[7] = PA_CHANNEL_POSITION_SIDE_RIGHT; + } + + pah->s_play = pa_simple_new( NULL, streamName.c_str(), PA_STREAM_PLAYBACK, NULL, "Playback", &ss, &map, NULL, &error ); if ( !pah->s_play ) { errorText_ = "RtApiPulse::probeDeviceOpen: error connecting output to PulseAudio server."; goto error;