Pregunta

Tengo un problema con Openal que solo parece ocurrir con el hardware del iPod, y lo extraño es que estaba Funcionando bien, y ahora no lo es.

Estoy configurando la sesión de audio:

[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord error: nil];
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, 
sizeof(UInt32), &audioRouteOverride);

AudioSessionSetActive(YES);

E inicializando 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;

La salida es:

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.

Entonces, la función AlcmakeContextCurrent está devolviendo falso, y no estoy seguro de por qué. El audio no es realmente mi experiencia, y no puedo encontrar mucha información sobre esto, por lo que cualquier ayuda que puedan darme sería apreciada.

¡Gracias!

EDITAR: Encontré que si invierto el orden de inicialización, eso es si inicializo Openal y luego la audiossion, funciona ... aunque este es el orden en el que lo tenía antes y no estaba funcionando, así que algo divertido Definitivamente está sucediendo; Además, todavía no funciona con versiones más antiguas de iOS

¿Fue útil?

Solución

El orden inverso de la inicialización parece funcionar bien, Openal y luego audiosion

Otros consejos

Solo una suposición salvaje:

El iPod Touch de primera generación no tener un altavoz. Entonces, tal vez no pueda anular la ruta de audio a un altavoz inexistente.

Editar: Ah, y solo el último (4th Gen) iPod Touch tiene un micrófono incorporado. Todas las demás generaciones requieren que los auriculares (con micrófono) se conecten para grabar. Tal vez es por eso que dejó de funcionar de repente, los auriculares fueron eliminados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top