iOS: unidades de audio vs OpenAL vs Core Audio

¿Podría alguien explicarme cómo encaja OpenAL con el esquema de sonido en el iPhone?

Parece que hay API en diferentes niveles para manejar el sonido. Los de mayor nivel son fáciles de entender.

Pero mi comprensión se vuelve turbia hacia el background. Hay Core Audio, Audio Units, OpenAL.

¿Cuál es la connection entre estos? Es openAL el sustrato, sobre el cual descansa Core Audio (que contiene como una de sus unidades de Audio de objects de nivel inferior)?

OpenAL no parece estar documentado por Xcode, pero puedo ejecutar código que use sus funciones.

Esto es lo que he descubierto:

El substrato es Core Audio. Específicamente, unidades de audio.

Por lo tanto, las unidades de audio forman la capa base, y algunos frameworks de bajo nivel se han construido encima de esto. Y todo el caboodle se llama Core Audio.

OpenAL es una API multiplataforma: los creadores intentan reflejar la portabilidad de OpenGL. ¡Algunas compañías están patrocinando OpenAL, incluidos Creative Labs y Apple!

Entonces, Apple ha proporcionado esta API, básicamente como un envoltorio delgado sobre Core Audio. Estoy adivinando que esto es para permitir a los desarrolladores a tirar el código fácilmente. Tenga en count que es una implementación incompleta, por lo que si desea que OpenAL haga algo que Core Audio puede hacer, lo hará. Pero de lo contrario no lo hará.

Tipo de contraintuitivo: solo mirando la fuente, parece que OpenAL es un nivel más bajo. ¡No tan!

Core Audio cubre muchas cosas, como leer y escribir varios formattings de file, convertir entre codificaciones, extraer frameworks de secuencias, etc. Gran parte de esta funcionalidad se recostack como "Caja de herramientas de audio". Core Audio también ofrece múltiples API para procesar secuencias de audio, para reproducirlas, capturarlas o ambas. El nivel más bajo es unidades de audio, que funciona con audio sin compression (PCM) y tiene algunas cosas agradables para aplicar efectos, mezclar, etc. Las queues de audio, implementadas en unidades de audio, son mucho más fáciles porque funcionan con formattings comprimidos (no solo PCM) y lo salva de algunos desafíos de subprocesss. OpenAL también se implementa en unidades de audio; todavía tiene que usar PCM, pero al less el subprocesamiento no es aterrador. La diferencia es que, dado que no es de Apple, sus convenciones de progtwigción son totalmente diferentes de Core Audio y el rest de iOS (lo más obvio es que es una API de inserción: si desea transmitir con OpenAL, sondea sus fonts para ver si tienen agotaron sus búferes y presionaron otros nuevos, por el contrario, las queues de audio y las unidades de audio se basan en tiradas, ya que obtienes una callback cuando se necesitan nuevas muestras para la reproducción).

El nivel más alto, como has visto, es cosas agradables como Media Player y AV Foundation. Estos son mucho más fáciles si solo estás reproduciendo un file, pero probablemente no te darán acceso suficientemente profundo si quieres hacer algún tipo de efectos, procesamiento de señales, etc.