Ich entwickle VOIP-Anwendung auf OSX und iOS und wird AudioQueue für Audio-Flow verwenden, was wissen wollen ist, unterstützt AudioQueue standardmäßig akustische Echounterdrückung oder müssen wir die Unterstützung für sie,
Wenn wir implementieren müssen, glaube ich, einige Open-Source-Bibliothek wie Speex umgesetzt werden muss gibt es kein Beispiel verfügbar zeigt Integration von Audioqueue mit Speex oder jede andere BibliothekAEC (Echo Cancellation Support) in OSX mit AudioQueue
Antwort
Soweit ich finden kann , müssen Sie Audio Units verwenden, um auf die Echokompensation des Systems zuzugreifen. Sie tun das, indem Sie kAudioUnitSubType_VoiceProcessingIO
anstelle von kAudioUnitSubType_RemoteIO
verwenden.
Sie möchten wahrscheinlich Audio Units trotzdem verwenden, um Ihre Latenz zu kontrollieren.
Sie können eine Render-Callback-Funktion verwenden, um Daten aus einer Audio-Warteschlange abzurufen und an Ihre E/A-Einheit zu senden. Verwenden Sie für ausgehende Nachrichten .
danke David, aber ich bin auf OSX nicht in iOS wird es funktionieren? – Amitg2k12
Die Voice Processing IO-Einheit ist ab 10.7 verfügbar: https://developer.apple.com/library/mac/#documentation/AudioUnit/Reference/AUComponentServicesReference/Reference/reference.html#//apple_ref/doc/uid/ TP40007291 –
Ich bin auf dem neuesten OSX Sdk und stellen Sie die VoiceProcessingIO, aber immer noch kommt Echo, irgendwelche Lösungen – Amitg2k12
Dank David und This post habe ich folgende Änderungen realisiert für Echo Cancellation auf iOS erforderlich sind:
desc.componentSubType = kAudioUnitSubType_VoiceProcessingIO
Diese Hardware-Echounterdrückung nach apple documentation ermöglichen. Sie müssen jedoch immer noch bestimmte Flags für die AudioStream-Beschreibung verwenden:
audioFormat.mFormatFlags = kAudioFormatFlagsCanonical;
Konnten Sie Ihr Problem lösen? Ich habe die gleiche Frage. – Vincenzo