概述
audio_device模块的目录结构如下:
1,include 文件夹是该工程的库包含导出文件;
2,android、ios、linux、mac、win文件夹分别对应于相应设备已经操作系统,该部分主要完成音频的录音和播放处理,部分设备也会进行混音处理; 下面以windows系统为例做主要的介绍:
2.1, audio_device_core_win(.cc/h)和audio_device_wave_win(.cc/h),这两个模块的功能相同,都主要用于设备的控制管理,如果设备的选择、开始录音、停止录音、开始播放、停止播放、麦克风静音等相关操作的实现;
不同的是audio_device_core_win直接通过com接口操作音频系统底层;而audio_device_wave_win是直接调用现成的SDK操作音频。 如果windows操作系统支持直接操作音频系统底层将会调用audio_device_core_win模块,否则调用audio_device_wave_win模块。如下面代码:
if (AudioDeviceWindowsCore::CoreAudioIsSupported())
{
// create *Windows Core Audio* implementation
ptrAudioDevice = new AudioDeviceWindowsCore(Id());
WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "Windows Core Audio APIs will be utilized");
}
else
{
// create *Windows Wave Audio* implementation
ptrAudioDevice = new AudioDeviceWindowsWave(Id());
if (ptrAudioDevice != NULL)
{
// Core Audio was not supported => revert to Windows Wave instead
_platformAudioLayer = kWindowsWaveAudio;
// modify the state set at construction
WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, "Windows Core Audio is *not* supported => Wave APIs will be utilized instead");
}
}
2.2,audio_device_utility_win(.cc/h),公用方法的文件,只有简单的几个函数,可以不太深究;
2.3,audio_mixer_manager_win(.cc/h),该模块主要用于数据的管理操作,以及音频的混音播放处理。
3,dummy文件夹,是模拟设备的调用处理,里面没有什么实际源码;
4,上图能看到的“.cc”和“.h”是该模块的业务处理核心。
4.1,audio_device_buffer,音频的数据处理,捕获的音频的回调数据,需要播放的音频处理业务。
4.2,audio_device_config,配置处理,使用默认的即可。
4.3,audio_device_generic,通用模块,也就是该模块消除了设备的无关性,每个设备模块都会继承该模块, windows操作继承该模块的为 audio_device_core_win和audio_device_wave_win。
4.4,audio_device_impl,接口模块,外部使用的接口模块;
4.5,audio_device_utility,通用模块,主要提供通用的函数与定义。
最后
以上就是奋斗天空为你收集整理的webrtc音频引擎模块之 audio_device介绍的全部内容,希望文章能够帮你解决webrtc音频引擎模块之 audio_device介绍所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复