Question

Quelqu'un pourrait-il me expliquer comment OpenAL s'inscrit dans le schéma du son sur l'iPhone?

Il semble y avoir des API à différents niveaux pour le traitement du son. Ceux de niveau supérieur sont assez facile à comprendre.

Mais ma compréhension se embrouille vers le bas. Il est Core Audio, Audio Units, OpenAL.

Quel est le lien entre ces? Est-OpenAL le substrat, sur lequel repose Core Audio (qui contient, comme un de ses objets de niveau inférieur Audio Units)?

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

Était-ce utile?

La solution

Voici ce que j'ai compris:

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

Unités Ainsi audio forment la couche de base, et un certain cadre de bas niveau a été construit au-dessus de cela. Et l'ensemble caboodle est appelé Core Audio.

OpenAL est une API multi-plateformes - les créateurs tentent de refléter la portabilité des OpenGL. Quelques entreprises parrainent OpenAL, y compris Creative Labs et Apple!

Apple a fourni cette API, essentiellement comme une enveloppe mince sur Core Audio. Je devine que cela est de permettre aux développeurs de tirer plus facilement le code. Soyez averti, il est une implémentation incomplète, donc si vous voulez faire quelque chose OpenAL que Core Audio peut le faire, il le fera. Mais sinon, il ne sera pas.

Type de contre-intuitif - regardant juste à la source, il semble que OpenAL est niveau inférieur. Pas si!

Autres conseils

Core Audio couvre beaucoup de choses, telles que la lecture et l'écriture de divers formats de fichiers, la conversion entre encodages, tirant les cadres de cours d'eau, etc. Une grande partie de cette fonctionnalité est recueillie comme la « boîte à outils audio ». Core Audio offre également plusieurs API pour le traitement des flux de données audio, pour la lecture, la capture, ou les deux. Le niveau le plus bas est une AudioUnit, qui fonctionne avec non compressé (PCM) et audio a quelques trucs sympa pour appliquer des effets, mixage, etc. Queues audio, mis en œuvre au sommet Audio Units, sont beaucoup plus faciles parce qu'ils travaillent avec les formats compressés (non seulement PCM) et vous faire économiser de certains défis de filetage. OpenAL est également mis en œuvre au-dessus Audio Units; vous devez toujours utiliser PCM, mais au moins le filetage est pas effrayant. La différence est que, puisque ce n'est pas d'Apple, ses conventions de programmation sont totalement différents de Core Audio et le reste de l'iOS (le plus évident, il est une API push: si vous voulez diffuser avec OpenAL, vous qui appelez vos sources pour voir si elles ont épuisé leurs tampons et pousser de nouveaux;. en revanche, les unités audio et audio Queues sont basés sur traction, dans ce que vous obtenez un rappel lorsque de nouveaux échantillons sont nécessaires pour la lecture)

niveau supérieur, comme vous l'avez vu, est bien des choses comme Media Player et AV Foundation. Ce sont beaucoup plus facile si vous êtes juste lecture d'un fichier, mais probablement ne vont pas vous donner un accès assez profond si vous voulez faire une sorte d'effets, le traitement du signal, etc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top