我在使用 OpenAL 时遇到了问题,这似乎只发生在 iPod 硬件上,奇怪的是它工作正常,但现在不是。
我正在设置音频会话:
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord error: nil];
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute,
sizeof(UInt32), &audioRouteOverride);
AudioSessionSetActive(YES);
并初始化 OpenAL:
device = alcOpenDevice(NULL);
if (!device) {
NSLog(@"Could not open default OpenAL device.");
return NO;
}
context = alcCreateContext(device, 0);
if (!context) {
NSLog(@"Failed to create OpenAL context for default device.");
return NO;
}
BOOL success = alcMakeContextCurrent(context); // fails here
if (!success) {
NSLog(@"Failed to set current OpenAL context.");
return NO;
输出是:
AudioStreamBasicDescription: 2 ch, 44100 Hz, 'lpcm' (0x00000C2C) 8.24-bit little-endian signed integer, deinterleaved
2010-10-27 10:51:09.261 FinchTestProject[239:307] Failed to set current OpenAL context.
所以 alcMakeContextCurrent 函数返回 false,我不知道为什么。音频不是我的专长,我找不到太多关于这方面的信息,所以你们能给我的任何帮助将不胜感激。
谢谢!
编辑:我发现如果我颠倒了初始化的顺序——也就是说,如果我初始化 OpenAL 然后是 AudioSession,它可以工作......虽然这是我之前的顺序并且它没有工作,所以很有趣肯定会继续;此外,它仍然不适用于旧版本的 iOS