iOS版:音频单元VS VS的OpenAL音频核心
-
26-09-2019 - |
题
可能有人在有声的iPhone上的架构向我解释如何OpenAL的配合?
有似乎是在不同级别处理声音API。上级的有足够容易理解。
但我的理解变得浑浊朝下方。有核心音频,音频单元,OpenAL的。
什么是这些之间的连接?是OpenAL的所述基质,在其上搁置核心音频(其含有作为其下级对象音频单元中的一个)?
的OpenAL似乎没有由Xcode中被记录,然而,我可以运行使用它的功能的代码。
解决方案
这是我想通了:
在底层是核心音频。具体地,音频单元。
所以音频单元形成基层,和一些低层次的框架已建成在此之上。和整个堆被称为核心音频。
OpenAL的是一个多API - 创作者试图镜像的OpenGL的便携性。一些公司正在赞助的OpenAL,包括创新公司和苹果!
因此,苹果已提供此API,基本上为薄的包装过核心音频。我猜测这是为了让开发人员轻松地拉过来的代码。被警告,这是一个不完整的实现,所以如果你想要的OpenAL做一些核心音频可以做,它会做到这一点。但否则它不会。
违反直觉的种类 - 只是在源,它看起来好象是OpenAL的较低水平。并非如此!
其他提示
核心音频涵盖了很多的东西,如读出和写入各种文件格式,编码之间转换,拉帧出流等大部分这种功能是收集作为“音频工具箱”。核心音频还提供多种API用于处理音频流,进行播放,捕捉,或两者兼而有之。最低一级为音频单元,与未压缩的(PCM)音频作品,并有一些不错的东西的应用效果,混合等音频序列,顶上音频单元实现,因为它们具有压缩格式的工作都轻松了很多(不只是PCM),并为您节省一些线程挑战。 OpenAL的也顶上音频单元实现;你还必须使用PCM,但至少线程是不可怕的。不同的是,因为它不是来自苹果,它的编程惯例是从核心音频和iOS的其余部分完全不同的(最明显的是,这是一个推送API:如果你想与OpenAL的流式传输,您轮询你的源代码,看看他们是否已经耗尽了他们的缓冲器和推入新的;相比之下,音频序列和音频单元是拉动为主,
这是你得到一个回调时,需要回放的新样本)等级越高,你所看到的,是像媒体播放器和AV基金会不错的东西。这是一个容易得多,如果你只是播放文件,但可能不会给你足够深的访问,如果你想要做的某种效果,信号处理等。