Ich benutze AUGraph, die mehrere (10, zum Beispiel) Player, Mixer und Ausgang enthält. Wenn ich Spieler mit einer Verzögerung von etwa 0,2 Sekunden einschalte - es ist in Ordnung, sie alle spielen, aber wenn ich sie gleichzeitig einschalte, spielen nur 3-4 Spieler.Synchrones Abspielen mehrerer Player in AUGraph
Es ist in Ordnung, alle Spieler spielen, aber mit Verzögerung:
for(int i=0; i<10; i++){
[players[i] play];
usleep(200000);
}
Es ist nicht in Ordnung, nur 2-3 Spieler spielen, aber synchron:
for(int i=0; i<10; i++){
[players[i] play];
}
In [player play]
Methode:
AudioTimeStamp startTime;
memset (&startTime, 0, sizeof(startTime));
startTime.mFlags = kAudioTimeStampSampleTimeValid;
startTime.mSampleTime = -1;
AudioUnitSetProperty(audioUnit,
kAudioUnitProperty_ScheduleStartTimeStamp,
kAudioUnitScope_Global,
0,
&startTime,
sizeof(startTime));
AudioUnitSetProperty
gibt noErr zurück.
Es scheint, dass es einen Konflikt in AudioUnitSetProperty mit mehreren Threads gibt, die ich nicht kontrollieren kann.
Irgendwelche Ideen?