coreaudio: convert MPEG channel layout to WAVE channel layout
This commit is contained in:
parent
81e57147f8
commit
4dd585fb62
1 changed files with 20 additions and 6 deletions
|
@ -769,10 +769,17 @@ static bool PrepareAudioQueue(SDL_AudioDevice *device)
|
||||||
// L R C LFE Cs Ls Rs
|
// L R C LFE Cs Ls Rs
|
||||||
layout.mChannelLayoutTag = kAudioChannelLayoutTag_WAVE_6_1;
|
layout.mChannelLayoutTag = kAudioChannelLayoutTag_WAVE_6_1;
|
||||||
} else {
|
} else {
|
||||||
// FIXME: We need to manually swizzle channels into a supported layout
|
|
||||||
// L R C LFE Ls Rs Cs
|
// L R C LFE Ls Rs Cs
|
||||||
//layout.mChannelLayoutTag = kAudioChannelLayoutTag_MPEG_6_1_A;
|
layout.mChannelLayoutTag = kAudioChannelLayoutTag_MPEG_6_1_A;
|
||||||
return SDL_SetError("Unsupported audio channels");
|
|
||||||
|
// Convert from SDL channel layout to kAudioChannelLayoutTag_MPEG_6_1_A
|
||||||
|
static const int swizzle_map[7] = {
|
||||||
|
0, 1, 2, 3, 6, 4, 5
|
||||||
|
};
|
||||||
|
device->chmap = SDL_ChannelMapDup(swizzle_map, SDL_arraysize(swizzle_map));
|
||||||
|
if (!device->chmap) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
|
@ -780,10 +787,17 @@ static bool PrepareAudioQueue(SDL_AudioDevice *device)
|
||||||
// L R C LFE Rls Rrs Ls Rs
|
// L R C LFE Rls Rrs Ls Rs
|
||||||
layout.mChannelLayoutTag = kAudioChannelLayoutTag_WAVE_7_1;
|
layout.mChannelLayoutTag = kAudioChannelLayoutTag_WAVE_7_1;
|
||||||
} else {
|
} else {
|
||||||
// FIXME: We need to manually swizzle channels into a supported layout
|
|
||||||
// L R C LFE Ls Rs Rls Rrs
|
// L R C LFE Ls Rs Rls Rrs
|
||||||
//layout.mChannelLayoutTag = kAudioChannelLayoutTag_MPEG_7_1_C;
|
layout.mChannelLayoutTag = kAudioChannelLayoutTag_MPEG_7_1_C;
|
||||||
return SDL_SetError("Unsupported audio channels");
|
|
||||||
|
// Convert from SDL channel layout to kAudioChannelLayoutTag_MPEG_7_1_C
|
||||||
|
static const int swizzle_map[8] = {
|
||||||
|
0, 1, 2, 3, 6, 7, 4, 5
|
||||||
|
};
|
||||||
|
device->chmap = SDL_ChannelMapDup(swizzle_map, SDL_arraysize(swizzle_map));
|
||||||
|
if (!device->chmap) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue