windows蓝牙驱动开发-BLE音频(二)

server/2025/1/19 7:07:13/

详细设计

音频格式要求

音频帧持续时间

蓝牙 LE 音频配置文件允许实现支持音频帧持续时间为 7.5 毫秒或 10 毫秒的音频流式处理。 Windows 要求 IHV 提供的编解码器支持这两个帧持续时间,以确保与蓝牙 LE 音频配件设备的互操作性,并与连接到系统的其他蓝牙 LE 设备保持质量共存。

信号处理模式定义

蓝牙 LE 音频支持各种流式处理格式,从而支持不同的用户场景。 BAP 和 TMAP 规范定义了认证必须强制支持的格式。 Windows 会应用 音频信号处理模式,将要使用的格式与系统正在执行的方案相关联。 支持蓝牙 LE 音频的音频驱动程序应指示对下表中的信号处理模式和格式的支持。 此外,蓝牙 LE 音频不支持原始信号处理模式,因此音频驱动程序不应为此模式播发任何受支持的格式。

呈现流音频信号处理模式

蓝牙 LE 音频要求为以下信号处理模式声明呈现音频格式:

默认 (AUDIO_SIGNALPROCESSINGMODE_DEFAULT)
此模式用于单向呈现场景,例如音乐播放、通知和视频游戏音频。
通信 (AUDIO_SIGNALPROCESSINGMODE_COMMUNICATIONS)
此模式用于双向场景,例如语音呼叫。

以下各表列出了每种用例的格式和信号处理模式。 音频格式按优先顺序从高到低排列。

连接到立体声设备或设备协调集时的系统声音、音乐播放和视频游戏音频

信号处理模式:默认

0cdbcfd242d44cbaa06d1858a99bba75.png

连接到协调集的单个成员(单个耳塞或助听器)时的系统声音、音乐播放和视频游戏音频

信号处理模式:默认

da165be306ae4882bdf680bb511cae4d.png

具有语音聊天的呈现语音录制器、VOIP 呼叫或视频游戏音频

信号处理模式:通信

0dfca96aebf74320ba3214c584afeb36.png

捕获流音频信号处理模式

蓝牙 LE 音频要求为默认 (AUDIO_SIGNALPROCESSINGMODE_DEFAULT) 信号处理模式声明捕获音频格式。 支持的捕获格式列表如下表所示。

音频格式按优先顺序从高到低排列。

具有语音聊天的捕获语音录制器、VOIP 呼叫或视频游戏音频

信号处理模式:默认

e54a0f7ddd7d445fac5220f5f28dcae9.png

接口

音频终结点模板绑定 ID

音频驱动程序的 ACX 线路工厂使用此 ID 来了解何时创建了配对蓝牙设备的 ACX 线路。

以下组件 ID 用于创建蓝牙 LE 音频线路:

// {5C52FDB5-722A-4AB7-A342-70163B7E9B5C}
DEFINE_GUID(GUID_BLUETOOTH_LEAUDIO_RENDER_COMPONENT_ID,
0x5c52fdb5, 0x722a, 0x4ab7, 0xa3, 0x42, 0x70, 0x16, 0x3b, 0x7e, 0x9b, 0x5c);// {1DFF2EE3-AE89-441C-BDE3-24F885C55DF8}
DEFINE_GUID(GUID_BLUETOOTH_LEAUDIO_CAPTURE_COMPONENT_ID,
0x1dff2ee3, 0xae89, 0x441c, 0xbd, 0xe3, 0x24, 0xf8, 0x85, 0xc5, 0x5d, 0xf8);

蓝牙 LE 音频支持接口

音频驱动程序堆栈使用该接口来指示它可用于流式处理蓝牙 LE 音频。 Windows 蓝牙音频服务级别会监视此接口,并等到发布后再启用蓝牙 LE 音频支持。

以下接口 ID 用于发布蓝牙 LE 音频支持接口:

// {BA02FA1B-0FD0-4A0F-A748-4FAE2E2D2F67}
DEFINE_GUID(GUID_BLUETOOTH_LEAUDIO_SUPPORT_INTERFACE, 
0xba02fa1b, 0x0fd0, 0x4a0f, 0xa7, 0x48, 0x4f, 0xae, 0x2e, 0x2d, 0x2f, 0x67);

音量和静音

如果流式处理驱动程序需要音频引擎,IHV ACX 流式处理线路应仅包含音量和静音元素。 使用音频引擎时,必须设置配置标志,如下所示:

ACX_AUDIOENGINE_CONFIG audioEngineCfg;
ACX_AUDIOENGINE_CONFIG_INIT(&audioEngineCfg);
…audioEngineCfg.Flags |= AcxAudioEngineConfigVolumeSecondary; // Use this control only if endpoint doesn't have one.audioEngineCfg.MuteElement = muteElement;audioEngineCfg.Flags |= AcxAudioEngineConfigMuteSecondary; // Use this control only if endpoint doesn't have one.audioEngineCfg.PeakMeterElement = peakmeterElement;audioEngineCfg.Flags |= AcxAudioEngineConfigPeakMeterSecondary; // Use this control only if endpoint doesn't have one.

只有这样,蓝牙 LE 音频终结点才能使用蓝牙 SIG 定义的音量和麦克风控制配置文件更改单播音频终结点的音量和静音。

如果远程蓝牙 LE 音频设备不支持音量或麦克风控制服务,或者为广播音频创建了终结点,则音频引擎中的音量和静音元素应充当回退来处理来自音频系统的更改请求。 Windows 音频系统会处理对音量和静音的更改。 如果没有音频引擎,则要么远程设备不支持音量或麦克风服务,要么音频终结点用于广播音频。

蓝牙 LE 和经典音频共存

Windows 应确保只有经典音频或 LE 音频适用于支持这两种技术的配对蓝牙音频设备。 如果 LE 音频处于活动状态,则禁用远程设备的 A2DP 和 HFP 的边带 DDI,并为 LE 音频终结点创建配置文件线路。 如果经典音频处于活动状态,则启用远程设备的 A2DP 和 HFP 的边带 DDI,并且不会为 LE 音频终结点创建配置文件线路。

 


http://www.ppmy.cn/server/159564.html

相关文章

【Rust的2种线程锁 阻塞 vs 挂起】

async_std::sync::Mutex 和 std::sync::Mutex 之间的主要区别在于它们如何处理线程阻塞和异步编程模型。以下是两者的关键差异: 标准库的 Mutex (std::sync::Mutex) 同步阻塞:当一个线程尝试获取 std::sync::Mutex 的锁时,如果锁已经被其他线…

数字化时代,传统代理模式的变革之路

在数字化飞速发展的今天,线上线下融合(O2O)成了商业领域的大趋势。这股潮流,正猛烈冲击着传统代理模式,给它带来了新的改变。 咱们先看看线上线下融合现在啥情况。线上渠道那是越来越多,企业纷纷在电商平台…

一文读懂单片机的串口

目录 串口通信的基本概念 串口通信的关键参数 单片机串口的硬件连接 单片机串口的工作原理 数据发送过程 数据接收过程 单片机串口的编程实现 以51单片机为例 硬件连接 初始化串口 发送数据 接收数据 串口中断服务函数 代码示例 单片机串口的应用实例 单片机与…

第十二章:算法与程序设计

文章目录: 一:基本概念 1.算法与程序 1.1 算法 1.2 程序 2.编译预处理 3.面向对象技术 4.程序设计方法 5.SOP标志作业流程 6.工具 6.1 自然语言 6.2 流程图 6.3 N/S图 6.4 伪代码 6.5 计算机语言 二:程序设计 基础 1.常数 …

百度热力图数据原理,处理及论文应用9

目录 0、数据简介0、示例数据1、百度热力图数据日期如何选择1.1、其他实验数据的时间1.2、看日历1.3、看天气 2、百度热力图几天够研究?部分文章统计3、数据原理3.1.1 ** 这个比较重要,后面还会再次出现。核密度的值怎么理解?**3.1.2 Csv->…

Asp.Net Core 8.0 使用 Serilog 按日志级别写入日志文件的两种方式

1、所需的Nuget包 本文项目的版本是.NET 8.0,如果使用其它版本安装适配版本即可。 Serilog.AspNetCore(8.0.2) Serilog.Sinks.File(5.0.0) Serilog.Expressions(5.0.0) 2、两种配置方式 2.1 代码形式(Program.cs) 在Program.cs文件中&am…

C++/C语言判断重复数组(zznu)⭐

问题描述 如果一个数组中不包含重复的元素&#xff0c;那么我们称这个数组是独ONE无TWO的数组。给定一个数组&#xff0c;请你判断这个数组是否是独ONE无TWO的。 输入 首先输入一个正整数n表示数组的长度&#xff08;0<n<100&#xff09;。 接下来输入n个整数&#xff08…

vue前端搭建企业级项目

一、技术选型和项目研讨会 PnpmVite Vue3 JavaScript Vue Router Ant Design Vue ESLint Stylelint Prettier pnpm 包管理工具 Vite 下一代前端开发与构建工具 快速 轻量级 按需编译 热更新 Vue3 市场主流的开发框架 Composition API JavaScript 前端3剑客之一&am…