mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-05-30 21:37:43 +08:00
Corrected CoreAudio surround sound channel layouts
Fixes https://github.com/libsdl-org/SDL/issues/11709
This commit is contained in:
@@ -756,30 +756,39 @@ static bool PrepareAudioQueue(SDL_AudioDevice *device)
|
|||||||
SDL_zero(layout);
|
SDL_zero(layout);
|
||||||
switch (device->spec.channels) {
|
switch (device->spec.channels) {
|
||||||
case 1:
|
case 1:
|
||||||
|
// a standard mono stream
|
||||||
layout.mChannelLayoutTag = kAudioChannelLayoutTag_Mono;
|
layout.mChannelLayoutTag = kAudioChannelLayoutTag_Mono;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
|
// a standard stereo stream (L R) - implied playback
|
||||||
layout.mChannelLayoutTag = kAudioChannelLayoutTag_Stereo;
|
layout.mChannelLayoutTag = kAudioChannelLayoutTag_Stereo;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
|
// L R LFE
|
||||||
layout.mChannelLayoutTag = kAudioChannelLayoutTag_DVD_4;
|
layout.mChannelLayoutTag = kAudioChannelLayoutTag_DVD_4;
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
|
// front left, front right, back left, back right
|
||||||
layout.mChannelLayoutTag = kAudioChannelLayoutTag_Quadraphonic;
|
layout.mChannelLayoutTag = kAudioChannelLayoutTag_Quadraphonic;
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
layout.mChannelLayoutTag = kAudioChannelLayoutTag_MPEG_5_0_A;
|
// L R LFE Ls Rs
|
||||||
|
layout.mChannelLayoutTag = kAudioChannelLayoutTag_DVD_6;
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
layout.mChannelLayoutTag = kAudioChannelLayoutTag_MPEG_5_1_A;
|
// L R C LFE Ls Rs
|
||||||
|
layout.mChannelLayoutTag = kAudioChannelLayoutTag_DVD_12;
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
// FIXME: Need to move channel[4] (BC) to channel[6]
|
// L R C LFE Cs Ls Rs
|
||||||
layout.mChannelLayoutTag = kAudioChannelLayoutTag_MPEG_6_1_A;
|
layout.mChannelLayoutTag = kAudioChannelLayoutTag_WAVE_6_1;
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
layout.mChannelLayoutTag = kAudioChannelLayoutTag_MPEG_7_1_A;
|
// L R C LFE Rls Rrs Ls Rs
|
||||||
|
layout.mChannelLayoutTag = kAudioChannelLayoutTag_WAVE_7_1;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
return SDL_SetError("Unsupported audio channels");
|
||||||
}
|
}
|
||||||
if (layout.mChannelLayoutTag != 0) {
|
if (layout.mChannelLayoutTag != 0) {
|
||||||
result = AudioQueueSetProperty(device->hidden->audioQueue, kAudioQueueProperty_ChannelLayout, &layout, sizeof(layout));
|
result = AudioQueueSetProperty(device->hidden->audioQueue, kAudioQueueProperty_ChannelLayout, &layout, sizeof(layout));
|
||||||
|
|||||||
Reference in New Issue
Block a user