我遇到了 OpenAL 问题,似乎只发生在 iPod 硬件上,奇怪的是它was工作正常,但现在不行了。
我正在设置音频会话:
[[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,我不知道为什么。音频并不是我的专长,我找不到太多这方面的信息,所以你们能给我的任何帮助将不胜感激。
Thanks!
编辑:我发现如果我颠倒初始化的顺序 - 也就是说,如果我初始化 OpenAL 然后初始化 AudioSession,它就可以工作......虽然这是我之前的顺序并且它不起作用,所以有些有趣肯定正在发生;此外,它仍然不适用于旧版本的 iOS