870920 Menu

AudioIODevice详解

AudioIODevice是一个抽象基类,代表某个具体的音频驱动(音频设备),可视之为最终实现音频播放的声卡输出端口和用于录音的声卡输入端口 。通常不直接使用本类,而是用AudioDeviceManager类来管理和设置当前可用的本类对象,或者使用AudioIODeviceType类来创建本类对象。

实际编程中很少直接使用以上这些底层基类。通常,使用AudioIODeviceCallback和AudioDeviceManager这两个类即可完成所需。AudioDeviceManager可返回当前正使用的AudioIODevice(指针),并可获取、设置当前所用或本机所有可用的AudioIODeviceType。基于此,熟悉AudioIODevice的成员函数还是很有必要的(大部分都是纯虚函数,类库内部的派生类已做了实现)。

AudioIODevice的成员函数
 getName () 返回设备名称
 getTypeName () 返回此设备的类型(比如:ASIO、DirectSound等等)
 getOutputChannelNames () 返回此设备所有可用的输出通道的名称
 getInputChannelNames () 返回此设备所有可用的输入通道的名称
 getNumSampleRates () 返回此设备所支持的采样率的个数
 getSampleRate () 返回此设备所支持的某个采样率
 getNumBufferSizesAvailable () 返回可用的缓冲区的数量
 getBufferSizeSamples () 返回某个缓冲区的大小(采样数)
 getDefaultBufferSize () 返回默认的缓冲区的大小(采样数)
 open () 尝试打开设备
 close () 如果设备已经打开, 则关闭并释放其内存
 isOpen () 如果设备处于打开状态,则返回true。
 start () 启动设备,不断回调AudioIODeviceCallback对象
 stop () 设备停止
 isPlaying () 如果此设备已经启动,则返回true
 getLastError () 如果出现错误, 则返回该错误的文本描述
 getCurrentBufferSizeSamples () 返回此设备当前使用的缓冲大小
 getCurrentSampleRate () 返回此设备当前使用的采样率
 getCurrentBitDepth () 返回此设备当前的位率(采样精度)
 getActiveOutputChannels () 返回一个掩码,表示当前可用且已经启用的输出通道
 getActiveInputChannels () 返回一个掩码,表示当前可用且已经启用的输入通道
 getOutputLatencyInSamples () 返回此设备的输出延迟
 getInputLatencyInSamples () 返回此设备的输入延迟
 hasControlPanel () 检测此设备是否自带控制面板(可视化的设置面板)
 showControlPanel () 如果此设备有控制面板,则显示之