Android在5.0系统中引入了AudioPatch概念,用于表示音频中端到端的连接关系。
相关文件:
Java:aosp/frameworks/base/media/java/android/media
c++:aosp/frameworks/av/services/audiopolicy aosp/frameworks/av/services/audioflinger
在Java中存在一个单独的AudioPatch.java文件,但在C++中,AudioPatch并不作为一个单独的文件存在。
从目前看到的代码推测,这个概念主要用于连接source与sink。这里的source,既可以是实实在在的音频输入设备,如MIC,也可以是底层中混音后的音频流;这里的sink则表示输出设备,如扬声器、耳机等。
引入这个概念以后,对音频来讲,显然抽象程度更高,更容易理解宏观上的概念,如插拔耳机时,只要更换连接就可以,但更不易理解实现的细节,如音频数据在插拔耳机时如何运送到新设备上。
另外,虽然存在Java层的AudioPatch.java文件,但是并没有作为SDK开放给开发者使用,估计还是因为这个概念相对来说还是太底层。