iOS: аудиоустройства против OpenAL против Core Audio - PullRequest
33 голосов
/ 25 октября 2010

Может ли кто-нибудь объяснить мне, как OpenAL вписывается в схему звука на iPhone?

Кажется, существуют API на разных уровнях для обработки звука.Более высокие уровни достаточно просты для понимания.

Но мое понимание становится неясным в самом низу.Есть Core Audio, Audio Units, OpenAL.

Какая связь между ними?Является ли openAL субстратом, на который опирается Core Audio (который содержит в качестве одного из своих объектов аудиоустройств более низкого уровня)?

Кажется, что OpenAL не документирован Xcode, но я могу запустить код, который использует егофункции.

Ответы [ 2 ]

36 голосов
/ 26 октября 2010

Вот что я понял:

Субстратом является Core Audio. В частности, аудиоустройства.

Итак, аудиоустройства образуют базовый слой, и поверх этого был построен некоторый низкоуровневый фреймворк. И весь кабачок называется Core Audio.

OpenAL - многоплатформенный API - создатели пытаются отразить переносимость OpenGL. Несколько компаний спонсируют OpenAL, включая Creative Labs и Apple!

Итак, Apple предоставила этот API, в основном, в качестве тонкой оболочки над Core Audio. Я предполагаю, что это позволяет разработчикам легко обрабатывать код. Имейте в виду, что это неполная реализация, поэтому, если вы хотите, чтобы OpenAL делал то, что может делать Core Audio, он это сделает. Но в противном случае это не так.

Вроде нелогично - просто глядя на источник, похоже, что OpenAL - более низкий уровень. Не так!

35 голосов
/ 18 апреля 2011

Core Audio охватывает множество вещей, таких как чтение и запись различных форматов файлов, конвертирование между кодировками, извлечение кадров из потоков и т. Д. Большая часть этой функциональности собрана как «Audio Toolbox».Core Audio также предлагает несколько API для обработки потоков аудио, для воспроизведения, захвата или обоих.Самый низкий уровень - Аудиоустройства, которые работают с несжатым звуком (PCM) и имеют некоторые полезные вещи для применения эффектов, микширования и т. Д. Аудио-очереди, реализованные поверх Аудиоустройств, намного проще, потому что они работают со сжатыми форматами (не толькоPCM) и избавит вас от проблем с многопоточностью.OpenAL также реализован поверх аудиоустройств;Вы все еще должны использовать PCM, но, по крайней мере, многопоточность не страшна.Разница заключается в том, что, поскольку он не от Apple, его соглашения о программировании полностью отличаются от Core Audio и остальной части iOS (наиболее очевидно, это push-API: если вы хотите транслировать с помощью OpenAL, вы опрашиваете свои источники, чтобы убедиться, что ониисчерпали свои буферы и вставили новые, напротив, аудио-очереди и аудиоустройства основаны на извлечении, так как вы получаете обратный вызов, когда для воспроизведения необходимы новые сэмплы).

Более высокий уровень, так как вывидно, это такие приятные вещи, как Media Player и AV Foundation.Это намного проще, если вы просто воспроизводите файл, но, вероятно, не предоставит вам достаточно глубокий доступ, если вы хотите выполнить какие-то эффекты, обработать сигнал и т. Д.

...