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,通用模块,主要提供通用的函数与定义。


   

       


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值