Проблема инициализации OpenAL, только iPod (?)
У меня проблема с 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
2 ответа
Обратный порядок инициализации, кажется, работает нормально, OpenAL, затем AudioSession
Просто дикая догадка
IPod touch 1-го поколения не имеет динамика. Поэтому, возможно, вы не сможете переопределить аудио-маршрут к несуществующему динамику.
Редактировать: Да, и только в последний (4-го поколения) iPod touch встроен микрофон. Для записи всех остальных поколений необходимо подключить наушники (с микрофоном). Может быть, поэтому он внезапно перестал работать, наушники были сняты.