Frage

Ich habe ein Problem mit Openal, das nur bei iPod -Hardware zu sehen scheint, und das Seltsame ist, dass es war Gut arbeiten, und jetzt ist es nicht.

Ich richte die Audiositzung ein:

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

AudioSessionSetActive(YES);

Und Openal initialisieren:

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;

Die Ausgabe ist:

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.

Die AlcMakeContextCurrent -Funktion gibt also falsch zurück und ich bin mir nicht sicher, warum. Audio ist nicht wirklich mein Fachwissen, und ich kann nicht viele Informationen dazu finden. Daher wird jeder Hilfe, das ihr mir geben kann, geschätzt.

Vielen Dank!

Bearbeiten: Ich habe festgestellt, wenn ich die Reihenfolge der Initialisierung umgekehrt habe- das heißt, wenn ich Openal initialisiere und dann die Audiosession, funktioniert es ... obwohl dies die Reihenfolge ist, in der ich es zuvor hatte und es nicht funktioniert, also etwas Lustiges ist definitiv weiter; Außerdem funktioniert es immer noch nicht mit älteren Versionen von iOS

War es hilfreich?

Lösung

Die umgekehrte Reihenfolge der Initialisierung scheint in Ordnung zu funktionieren, openal, dann Audiosession

Andere Tipps

Nur eine wilde Vermutung:

Der iPod touch der 1. Generation nicht haben Ein Sprecher. Vielleicht können Sie die Audioroute möglicherweise nicht zu einem nicht existierenden Sprecher überschreiben.

Bearbeiten: Oh, und nur der neueste (4. Generation) iPod Touch hat ein integriertes Mikrofon. Alle anderen Generationen erfordern, dass die Kopfhörer (mit Mikrofon) zum Aufnehmen angeschlossen werden. Vielleicht hat es deshalb plötzlich aufgehört zu arbeiten, die Kopfhörer wurden entfernt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top