870920 Menu

AudioIODeviceType详解

抽象基类,代表音频驱动的具体类型,比如:DirectSound、ASIO、CoreAudio等等。可使用AudioDeviceManager::createAudioDeviceTypes()获取本机可用的所有音频驱动的类型。还可直接创建基于某个驱动类型的AudioIODevice,或者创建本机所有可用的音频驱动类型所对应的AudioIODevice音频设备。这么说起来太绕,直接上代码:

AudioDeviceManager类有多个成员函数可获取本类的对象,或者设置当前所用的驱动类型。比如:
 getCurrentDeviceTypeObject () 获取当前正在使用中的AudioIODeviceType
 setCurrentAudioDeviceType () 设置当前所使用的AudioIODeviceType
 getAvailableDeviceTypes () 返回当前设备所支持的所有AudioIODeviceType
 createAudioDeviceTypes () 获取本机所有可用的AudioIODeviceType

AudioIODeviceType类有多个静态函数,可直接创建适合于本机的某种特定的驱动类型(返回值为本类的指针),如果本机不支持,则返回空指针。这些静态函数为:
 createAudioIODeviceType_CoreAudio () 创建一个适合于本机的CoreAudio驱动类型
 createAudioIODeviceType_iOSAudio () 创建一个适合于本机的IOS驱动类型
 createAudioIODeviceType_WASAPI () 创建一个适合于本机的WASAPI驱动类型
 createAudioIODeviceType_DirectSound () 创建适合于本机的DirectSound驱动类型
 createAudioIODeviceType_ASIO () 创建一个适合于本机的ASIO驱动类型
 createAudioIODeviceType_ALSA () 创建一个适合于本机的ALSA驱动类型
 createAudioIODeviceType_JACK () 创建一个适合于本机的JACK驱动类型
 createAudioIODeviceType_Android () 创建一个适合于本机的Android驱动类型
 createAudioIODeviceType_OpenSLES () 创建适合于本机的安卓OpenSLES驱动类型

AudioIODeviceType的成员函数大多为纯虚函数,类库内部的派生类已做了实现,不必关心这些派生类和其实现细节,直接用之即可。
 getTypeName () 返回此对象所代表的驱动类型的名称
 scanForDevices () 刷新对象缓存,获取设备列表或创建对应设备之前必须先调用此
 getDeviceNames () 返回可以使用本类型的所有可用设备的名称
 getDefaultDeviceIndex () 返回支持本类型的默认设备的索引
 getIndexOfDevice () 返回本类型所持有的某个设备的索引
 hasSeparateInputsAndOutputs() 检测设备的输入/输出是否可作为两个不同的设备
 createDevice () 创建支持此类型的AudioIODevice
 addListener () 绑定捕获器, 本类添加或移除音频设备时进行回调
 removeListener () 移除先前绑定的捕获器

AudioIODeviceType::Listener:
AudioIoDeviceType的嵌套类AudioIODeviceType::Listener专用于捕获并处理AudioIODeviceType添加或移除某个音频设备时所产生的消息(当前音频设备发生改变时,AudioIODeviceType可产生消息),其用于捕获并处理消息的纯虚函数为:
 audioDeviceListChanged() 当前驱动类型所持有的音频设备发生变化时自动调用此函数