Проблема инициализации OpenAL, только iPod (?) - PullRequest
2 голосов
/ 17 ноября 2010

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

2 голосов
/ 11 января 2011

Обратный порядок инициализации работает нормально, OpenAL, затем AudioSession

0 голосов
/ 18 ноября 2010

Просто дикое предположение:

iPod touch 1-го поколения не имеет динамика. Поэтому, возможно, вы не сможете переопределить аудио-маршрут к несуществующему динамику.

Редактировать : О, и только в самом последнем (4-м поколении) iPod touch встроен микрофон. Для записи всех остальных поколений необходимо подключить наушники (с микрофоном). Может быть, поэтому он внезапно перестал работать, наушники были сняты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...