34 votes

IOS: Unités audio vs OpenAL vs Core Audio

Est-ce que quelqu'un pourrait m'expliquer comment OpenAL s'intègre dans le schéma du son sur l'iPhone?

Il semble y avoir des API à différents niveaux pour la gestion du son. Les plus élevées sont assez faciles à comprendre.

Mais ma compréhension devient floue vers le bas. Il y a Core Audio, Audio Units, OpenAL.

Quel est le lien entre ces éléments? OpenAL est-il le substrat sur lequel repose Core Audio (qui contient comme l'un de ses objets de bas niveau Audio Units)?

OpenAL ne semble pas être documenté par Xcode, mais je peux exécuter du code qui utilise ses fonctions.

36voto

P i Points 6466

C'est ce que j'ai compris :

Le substratum est Core Audio. Plus précisément, Audio Units.

Ainsi, les Audio Units forment la couche de base, et un framework de bas niveau a été construit au-dessus de cela. Et tout ce bazar est appelé Core Audio.

OpenAL est une API multiplateforme -- les créateurs cherchent à reproduire la portabilité d'OpenGL. Quelques entreprises parrainent OpenAL, dont Creative Labs et Apple !

Ainsi, Apple a fourni cette API, essentiellement comme une mince enveloppe au-dessus de Core Audio. Je suppose que c'est pour permettre aux développeurs de transférer facilement du code. Attention, c'est une implémentation incomplète, donc si vous voulez qu'OpenAL fasse quelque chose que Core Audio peut faire, il le fera. Mais sinon, non.

Un peu contre-intuitif -- juste en regardant le code source, on dirait qu'OpenAL est de plus bas niveau. Pas du tout !

35voto

invalidname Points 2336

Core Audio couvre beaucoup de choses, telles que la lecture et l'écriture de divers formats de fichiers, la conversion entre les encodages, l'extraction de trames de flux, etc. Une grande partie de cette fonctionnalité est regroupée sous le nom de "Audio Toolbox". Core Audio propose également plusieurs API pour le traitement des flux audio, pour la lecture, la capture, ou les deux. Le plus bas niveau est Audio Units, qui fonctionne avec de l'audio non compressé (PCM) et propose quelques fonctionnalités intéressantes pour l'application d'effets, le mixage, etc. Les Audio Queues, implémentés au-dessus des Audio Units, sont beaucoup plus faciles car ils fonctionnent avec des formats compressés (pas seulement le PCM) et vous épargnent certains problèmes liés aux threads. OpenAL est également implémenté au-dessus des Audio Units; vous devez toujours utiliser PCM, mais au moins les threads ne sont pas effrayants. La différence est que comme ce n'est pas d'Apple, les conventions de programmation sont totalement différentes de Core Audio et du reste d'iOS (le plus évident étant que c'est une API push : si vous souhaitez diffuser avec OpenAL, vous interrogez vos sources pour voir si elles ont épuisé leurs tampons et en injectez de nouveaux; en revanche, les Audio Queues et les Audio Units sont basés sur des appels, dans le sens où vous obtenez un rappel lorsque de nouveaux échantillons sont nécessaires pour la lecture).

De niveau supérieur, comme vous l'avez vu, il y a des choses sympas comme le Lecteur Multimédia et AV Foundation. Ils sont beaucoup plus faciles si vous ne faites que lire un fichier, mais probablement ne vous donneront pas un accès assez approfondi si vous souhaitez réaliser des effets, du traitement du signal, etc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X