Проблема инициализации 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 встроен микрофон. Для записи всех остальных поколений необходимо подключить наушники (с микрофоном). Может быть, поэтому он внезапно перестал работать, наушники были сняты.

Другие вопросы по тегам