私は、iPod ハードウェアでのみ発生するように見える OpenAL に問題があります。奇妙なことに、問題なく動作していましたが、現在は動作していません。
私はオーディオセッションを設定しています:
[[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 ではまだ動作しません。