Ich entwickle für das iPhone und versuche, einen ersten timeStamp zu bekommen, um meine audioQueues zu synchronisieren.Wie bekomme ich eine gültige mHostTime mit AudioQueues
Ich verwende AudioQueueDeviceGetCurrentTime
dafür. Gemäß der Dokumentation gibt diese Funktion eine gültige mHostTime zurück, ob die Queue/das Gerät läuft oder nicht. Aber wenn ich das versuche, bekomme ich eine kAudioHardwareNotRunningError
(1937010544) zurück. Alle Warteschlangen sind mit einer timeLine verknüpft und wurden vor dem Aufruf der Funktion initialisiert.
Wie kann ich eine gültige mHostTime abrufen, um meine AudioQueues zu synchronisieren (vor dem Ausführen der Warteschlangen)?
Mein Code:
AudioSessionInitialize(NULL, NULL, interruptionListenerCallback, self);
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,
sizeof(sessionCategory), &sessionCategory);
// initialize all queues
// ....
AudioSessionSetActive(true);
OSStatus result;
AudioTimestamp currentTime;
result = AudioQueueDeviceGetCurrentTime(audioQueueRef, ¤tTimeStamp);
if (!result)
{
// rest of code
}
Ich habe eine sehr detaillierte Antwort über Host-Time-Funktionen und Konvertierung in Antwort auf diese Frage geschrieben (nur für den Fall, dass Sie weitere Informationen wünschen). http://stackoverflow.com/questions/675626?tab=newest#tab-top – Mecki