我是靠谱客的博主 奋斗天空,最近开发中收集的这篇文章主要介绍webrtc音频引擎模块之 audio_device介绍,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 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介绍所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部