Frage

Könnte jemand mir erklären, wie OpenAL paßt in mit dem Schema des Schalls auf dem iPhone?

Es scheint APIs auf verschiedenen Ebenen für den Umgang mit Ton zu sein. Die höheren Ebene diejenigen sind leicht genug, um zu verstehen.

Aber mein Verständnis wird trübe nach unten. Es ist Core Audio, Audio Units, OpenAL.

Was ist die Verbindung zwischen diesen? Ist openAL das Substrat, auf dem ruht Core Audio (die als eine ihrer untergeordneten Objekte enthält Audio Units)?

OpenAL scheint nicht von Xcode dokumentiert werden, doch kann ich Code ausführen, der seine Funktionen verwendet.

War es hilfreich?

Lösung

Das ist, was ich herausgefunden haben:

Das Substrat ist Core Audio. Insbesondere Audio Units.

So Audio Units bilden die Basisschicht, und einige Low-Level-Rahmen hat auf dieses gebaut. Und der ganze Kram ist Core Audio bezeichnet.

OpenAL ist ein Multi-Plattform-API - die Macher versuchen, die Übertragbarkeit von OpenGL zu spiegeln. Einige Firmen sponsern OpenAL, darunter Creative Labs und Apple!

So hat Apple diese API zur Verfügung gestellt, im Grunde als eine dünne Hülle über Core Audio. Ich vermute, dies ist, damit Entwickler Code leicht ziehen über. Seien Sie gewarnt, es eine unvollständige Umsetzung, also, wenn Sie OpenAL etwas tun wollen, dass Core Audio tun kann, wird es tun. Aber ansonsten wird es nicht.

Art eingängig - gerade an der Quelle suchen, es sieht aus, als ob OpenAL untere Ebene ist. Nicht so!

Andere Tipps

Core Audio deckt eine Menge Dinge, wie zum Beispiel das Lesen und Schreiben von verschiedenen Dateiformaten, Umwandlung zwischen Codierungen, ziehen Rahmen aus Bächen, usw. Ein großer Teil dieser Funktionalität wird als „Audio Toolbox“ gesammelt. Core Audio bietet auch mehrere APIs für Ströme von Audio-Verarbeitung, für die Wiedergabe, Aufnahme, oder beides. Die unterste Ebene ist Audio Units, die mit unkomprimierten (PCM) Audio funktioniert und hat einige nette Sachen Effekte für die Anwendung, Mischen, usw. Audio-Warteschlangen, oben auf Audio Units implementiert, viel einfacher sind, weil sie mit komprimierten Formaten arbeiten (und nicht nur PCM) und speichern Sie von einigen Threading Herausforderungen. OpenAL ist auch oben auf Audio Units implementiert; Sie haben noch zu verwenden PCM, aber zumindest das Einfädeln ist nicht beängstigend. Der Unterschied ist, dass, da es nicht von Apple ist, seine Programmierkonventionen sind völlig anders als von Core Audio und dem Rest von iOS (die meisten offensichtlich, es ist ein Push-API: Wenn Sie mit OpenAL streamen möchten, können Sie Ihre Quellen abfragen, um zu sehen, ob sie haben ihre Puffer und Push in neuen zu erschöpft,. dagegen Audio-Warteschlangen und Audio Units sind Pull-basiert, dass Sie einen Rückruf erhalten, wenn neue Proben für die Wiedergabe benötigt werden)

Höhere Ebene, wie Sie gesehen haben, ist nette Sachen wie Media Player und AV-Stiftung. Diese sind viel einfacher, wenn Sie nur eine Datei zu spielen, aber wahrscheinlich werden Sie nicht tief genug, um den Zugang zu geben, wenn Sie irgendeine Art von Effekten tun wollen, Signalverarbeitung, etc.

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