Bluetooth Profile Specification之1.1 A2DP 之Audio Codec(音频编解码器)-SBC

Bluetooth Profile Specification之1.1 A2DP 之Audio Codec(音频编解码器)-SBC

前言

本节主要包括SBC的一些信息。


1.Codecs的 支持

下表显示了此配置文件中支持的强制性和可选编解码器。


Bluetooth Profile Specification之1.1 A2DP 之Audio Codec(音频编解码器)-SBC1.1 强制性编解码器

A2DP要求使用低复杂度的子带编解码器(SBC),以确保互操作性。当设备为SRC时,设备应实现SBC编码器,当设备为SNK时,设备应实现SBC解码器。本文档中的所有其他编解码器都称为非强制性编解码器。


1.2 可选编解码器

该设备还可支持可选的编解码器,以最大化其可用性。当SRC和SNK都支持相同的可选编解码器时,可以使用该编解码器来代替强制性编解码器。

1.3 供应商特定的A2DP编解码器

该设备可能支持其他编解码器,作为供应商特定的A2DP编解码器。供应商特定的A2DP编解码器(以下简称供应商)的用户将需要定义参数和其他必要的信息在A2DP中使用编解码器。该配置文件没有指定供应商特定的A2DP编解码器的任何内容,但规定有以下要求:


  • 建议编解码器应在正式互操作性(IOP)测试会议中成功测试: (1)成功测试编解码器意味着至少两个源和两个接收槽实现应向BARB提供证据,表明建议编解码器已成功实(2)正式IOP测试计划应在正式的IOP测试会议之前提交并由BARB批准.
  • 任何适用于拟议编解码器的许可证应以公平合理的条款提供,并以非歧视的方式获得。如果需要,建议编解码器的规范应向所有计划实施该编解码器的公司提供拟议编解码器的要求。
  • 如果供应商特定的A2DP编解码器升级到可选的,它将只列在蓝牙分配编号中,而不列在这个或未来的配置文件版本中。


1.4 编解码器的互操作性要求

当SRC希望发送SNK不支持编解码器格式的音频数据时,应将数据转换为SBC。因此,当SRC支持非强制性编解码器时,它将适用以下要求。


  • 仅对SNK不支持其格式的任何SRC输入需要转换到SBC。


例如,当SRC接受非强制编解码器格式的预编码音频数据时,SRC应拥有该非强制编解码器的解码器以及用于转码的SBC编码器。


2.SBC

在此配置文件中必须支持SBC。SBC规范是蓝牙规范的一部分。


2.1 SBC编解码器的信息

Bluetooth Profile Specification之1.1 A2DP 之Audio Codec(音频编解码器)-SBC


注:在AVDTP的“获取所有能力响应”中,可以在每个字段中定义/设置一个或多个位。另一方面,在AVDTP的设置配置命令和重新配置命令中,每个字段只能定义/设置一位。


采样率


对于SNK中的解码器,采样必须使用44.1 kHz和48 kHz的频率来支持。SRC中的编码器应至少支持至少有一个采样频率为44.1 kHz和48 kHz。

Bluetooth Profile Specification之1.1 A2DP 之Audio Codec(音频编解码器)-SBC


通道模式


下表显示了SBC信道模式字段的值。对于SNK中的解码器,应提供所有功能得到支持。SRC中的编码器应支持至少一个单通道和一个双通道,立体声和联合立体声模式。


Bluetooth Profile Specification之1.1 A2DP 之Audio Codec(音频编解码器)-SBC


块长度


下表显示了SBC的块长度字段值。SRC中的编码器和SRC中的解码器SNK应支持所有参数。


Bluetooth Profile Specification之1.1 A2DP 之Audio Codec(音频编解码器)-SBC


子带


下表为SBC的子带数字段的值。对于SNK中的解码器,应支持所有功能。SRC中的编码器应至少支持至少8个子带情况。


Bluetooth Profile Specification之1.1 A2DP 之Audio Codec(音频编解码器)-SBC


分配方法


下表显示了SBC的分配方法字段的值。对于SNK中的解码器,应支持所有功能。SRC中的编码器应至少支持响度法。


Bluetooth Profile Specification之1.1 A2DP 之Audio Codec(音频编解码器)-SBC


最小/最大位池值


设备使用最小/最大位池值字段设置SBC位池参数的范围由8位UiMsbf(无符号整数,最高有效位在前)表示,范围从2到250。进退两难AVDTP中的所有功能过程,最小/最大位池值字段包含允许的在流配置或流重新配置中,ACP中位池值的可变范围过程在AVDTP中,字段包含INT期望的位池值的可变范围发送/接收。


利用比特池值和其他编解码器参数(采样频率、信道模式、块长度和子频带数),计算音频流的比特率和帧长。


确定比特率的编解码器信息包含在SBC帧头中,并重复发送到与音频数据流相关联的SNK。SRC能够通过更改位池参数来动态更改比特率,而无需暂停。其他参数可以在GAVDP中定义的更改参数过程中进行更改。


SNK的解码器应支持2作为下表中的最小比特池值和高质量比特池值作为最大比特池值。


SNK设备可能支持比下表中的高质量值更大的位池,但应该需要证明可接受地呈现结果媒体的能力。


对于SRC的编码器,它需要支持至少一个可能的位池值。但是,建议编码器支持下表中所示的以下设置。

Bluetooth Profile Specification之1.1 A2DP 之Audio Codec(音频编解码器)-SBC



请再次注意,此表中显示的帧长度根据位池值是可变的。为了最有效地使用L2CAP中的传输,可以在构造介质有效载荷时调整帧长度。


SNK的解码器应支持所有导致不超过最大比特率的可能比特池值。该配置文件将单声道的可用最大比特率限制为320kb/s,对双通道模式限制为512kb/s。


2.2 媒体有效载荷格式

图4.2中所示的SBC的媒体有效负载由SBC规范中定义的SBC特定报头和SBC帧组成。


如果传输通道配置的MTU大小大于或等于SBC帧大小+[媒体有效负载头大小、内容保护头大小(如果选择内容保护)、媒体包头大小]的和,则媒体有效负载应包含完整SBC帧的总数(参见图4.2所示的格式(a))。


如果不是这样,并且如果没有选择AVDTP的复用服务,则SBC帧应跨多个媒体有效负载进行分段(见图4.2所示的格式(b))。除最后一个外,所有碎片数据包应具有相同的总数据包大小。媒体有效负载总是以一个8位头开始,该头放在SBC数据之前。如果选择了AVDTP的多路复用服务,那么建议不要跨多个媒体有效负载分割SBC帧,因为如果有必要,AVDTP将跨多个L2CAP数据包分割媒体有效负载。



图4.2:SBC的媒体有效负载格式

图4.3显示了SBC的媒体有效负载报头格式。

Bluetooth Profile Specification之1.1 A2DP 之Audio Codec(音频编解码器)-SBC


图4.3:SBC的媒体有效负载的报头格式

Bluetooth Profile Specification之1.1 A2DP 之Audio Codec(音频编解码器)-SBC

  • F位-如果SBC帧碎片,设置为1,否则设置为0。
  • S位-对于分段SBC帧的起始数据包,设置为1,否则设置为0。
  • L位-对于碎片化SBC帧的最后一个数据包设置为1,否则设置为0
  • RFA-预留给未来的添加。具有此名称的位点应设置为零。接收者应忽略这些位元。
  • 帧数(4位)—如果F位设置为0,则该字段表示该数据包中包含的帧数。如果F位设置为1,则该字段表示剩余片段的数量,包括当前片段。因此,最后一个计数器值应为1。例如,如果有三个片段,则计数器的后续片段的值分别为3、2和1。该字段用4位UiMsbf表示。


总结

本小结主要介绍了Audio Codec SBC的信息和有效载荷格式


上一篇:嵌入式端音频开发(Unisound篇)之 7.1 蜂鸟M离线语音芯片简介


下一篇:我的Go+语言初体验——我的第一个Go+代码