У меня проблема с 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.