详细设计
音频格式要求
音频帧持续时间
蓝牙 LE 音频配置文件允许实现支持音频帧持续时间为 7.5 毫秒或 10 毫秒的音频流式处理。 Windows 要求 IHV 提供的编解码器支持这两个帧持续时间,以确保与蓝牙 LE 音频配件设备的互操作性,并与连接到系统的其他蓝牙 LE 设备保持质量共存。
信号处理模式定义
蓝牙 LE 音频支持各种流式处理格式,从而支持不同的用户场景。 BAP 和 TMAP 规范定义了认证必须强制支持的格式。 Windows 会应用 音频信号处理模式,将要使用的格式与系统正在执行的方案相关联。 支持蓝牙 LE 音频的音频驱动程序应指示对下表中的信号处理模式和格式的支持。 此外,蓝牙 LE 音频不支持原始信号处理模式,因此音频驱动程序不应为此模式播发任何受支持的格式。
呈现流音频信号处理模式
蓝牙 LE 音频要求为以下信号处理模式声明呈现音频格式:
默认 (AUDIO_SIGNALPROCESSINGMODE_DEFAULT)
此模式用于单向呈现场景,例如音乐播放、通知和视频游戏音频。
通信 (AUDIO_SIGNALPROCESSINGMODE_COMMUNICATIONS)
此模式用于双向场景,例如语音呼叫。
以下各表列出了每种用例的格式和信号处理模式。 音频格式按优先顺序从高到低排列。
连接到立体声设备或设备协调集时的系统声音、音乐播放和视频游戏音频
信号处理模式:默认
连接到协调集的单个成员(单个耳塞或助听器)时的系统声音、音乐播放和视频游戏音频
信号处理模式:默认
具有语音聊天的呈现语音录制器、VOIP 呼叫或视频游戏音频
信号处理模式:通信
捕获流音频信号处理模式
蓝牙 LE 音频要求为默认 (AUDIO_SIGNALPROCESSINGMODE_DEFAULT) 信号处理模式声明捕获音频格式。 支持的捕获格式列表如下表所示。
音频格式按优先顺序从高到低排列。
具有语音聊天的捕获语音录制器、VOIP 呼叫或视频游戏音频
信号处理模式:默认
接口
音频终结点模板绑定 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 音频终结点创建配置文件线路。