webrtc音频模块介绍(一) ADM

ops/2024/11/23 19:39:23/

不同操作系统管理音频设备及提供的音频接口方式各不同,ADM用于屏蔽音频设备管理及接口的差异,抽象统一接口。它的全称是Adio Device Module。

设备管理模块(ADM)

类结构图

首先它肯定是个接口类,不同平台的实现都继承于它,实现具体的接口。如下为整个ADM体系的类结构图。

AudioDeviceWindowCoreAudiDeviceMac就分属windows和mac下的实现,linux下的实现为AudioDeviceLinuxALSA

ADM的接口分为三大类:

  1. 音频设备管理:检索音频设备,初始化音频设备,指定使用的音频设备。
  2. 音频回放。
  3. 音频采集。

在整个音频模块中,它属于最底层,将上层的处理后的音频数据给到音频设备进行回放或采集音频给到上层处理。

创建时机

全局只有一个ADM对象,由所有的pc(peerconnection)对象所共享。

相关堆栈

创建ADM的具体代码可以看看webrtc_voice_engine.cc文件中的void WebRtcVoiceEngine::Init()方法。

windows下的实现

windows下的实现具有代表性,也方便调试。后面回放,采集的流程都以windows下的实现来分析。

对应的实现类是AudioDeviceWindowCore,类图如下:

作为windows下的具体实现,它直接管理Windows提供的音频COM对象。

以I开头的都是属于windows下的音频设备相关的接口。

  • IMMDevice代表一个音频设备。
  • IMMDeviceCollection音频设备集。
  • IMMDeviceEnumerator用于枚举音频设备。
  • IMMEndpoint代表一个音频终端设备。

以上为ADM基本架构图及它主要功能的介绍。


http://www.ppmy.cn/ops/136122.html

相关文章

LeetCode 每日一题 2024/11/18-2024/11/24

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 11/18 661. 图片平滑器11/19 3243. 新增道路查询后的最短距离 I11/20 3244. 新增道路查询后的最短距离 II11/21 3248. 矩阵中的蛇11/22 3233. 统计不是特殊数字的数字数量1…

开源宝藏:Smart-Admin 重复提交防护的 AOP 切面实现详解

首先,说下重复提交问题,基本上解决方案,核心都是根据URL、参数、token等,有一个唯一值检验是否重复提交。 而下面这个是根据用户id,唯一值进行判定,使用两种缓存方式,redis和caffeine&#xff…

工厂方法模式

工厂方法模式详解 定义 工厂方法模式(Factory Method Pattern)是一种创建型设计模式,定义一个创建对象的接口,但让子类决定要实例化的具体类。通过这种方式,工厂方法模式将对象的实例化推迟到子类。 特点 解耦性&a…

鸿蒙安全控件之粘贴控件简介

粘贴控件是一种特殊的系统安全控件,它允许应用在用户的授权下无提示地读取剪贴板数据。 在应用集成粘贴控件后,用户点击该控件,应用读取剪贴板数据时不会弹窗提示。可以用于任何应用需要读取剪贴板的场景,避免弹窗提示对用户造成…

通过奖励引导树搜索增强大模型(LLM)的推理能力,原理介绍与代码实现

大家好,我是微学AI,今天给大家介绍一下通过奖励引导树搜索增强大模型LLM的推理能力,原理介绍与代码实现。本文主要探讨了如何通过奖励引导树搜索来增强大型语言模型(LLM)的推理能力。首先,文章详细介绍了奖…

【人工智能】Python与Scikit-learn的模型选择与调参:用GridSearchCV和RandomizedSearchCV提升模型性能

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在机器学习建模过程中,模型的表现往往取决于参数的选择与优化。Scikit-learn提供了便捷的工具GridSearchCV和RandomizedSearchCV,帮助我们在参数空间中搜索最佳组合以提升模型表现。本文将从理论和实践两个角度…

新160个crackme - 100-E-crackme

运行分析 需根据机器码,填写正确注册码 PE分析 C程序,32位,无壳 静态分析&动态调试 ida无法搜到字符串,使用暂停法找关键函数 首先启动ida动态调试,点击注册来到错误弹窗 点击Debugger -> Pause process 发现断…

【AI系统】GPU 架构与 CUDA 关系

GPU 架构与 CUDA 关系 本文会讲解英伟达 GPU 硬件的基础概念,其次会讲解 CUDA(Compute Unified Device Architecture)并行计算平台和编程模型,详细讲解 CUDA 线程层次结构,最后将讲解 GPU 的算力是如何计算的&#xf…