蓝牙音乐之A2DP

蓝牙音乐之A2DP

在这里插入图片描述

本篇文章简单聊聊蓝牙音乐涉及到的A2DP协议,大家平常使用蓝牙耳机听音乐就是通过该协议实现的,此协议有时也被称为媒体音频协议。通过手机蓝牙设置中已连接的设备可以查看具体连接的哪些协议,那其中的媒体音频那一项就对应于本期所要分享的A2DP协议。

A2DP:Advanced Audio Distribution Profile,高级音频分发协议的简写,在这里大家需要区分开高级音频和蓝牙音频,蓝牙音频一般指传输于蓝牙SCO链路上的音频,也就是蓝牙电话;而高级音频指的传输于蓝牙ACL链路上的高质量音频,即为蓝牙音乐的媒体音频,别再傻傻分不清蓝牙音频和高级音频了哦。

一个完整的蓝牙音乐不但包含A2DP音频流,还包含AVRCP控制流,AVRCP后续再给大家分享,本期就重点聊聊蓝牙音乐音频流这点事。

A2DP协议本质上是一个应用层协议,它也是基于其他协议起作用的,详细的协议依赖关系见下图:
在这里插入图片描述

A2DP协议核心概况:在蓝牙核心协议的基础上,通过上层A2DP协议将两个蓝牙设备连接到同一个piconet(微微网)中,实现蓝牙音乐音频流的传输功能。

具体的协议模型如下:
在这里插入图片描述

协议规定了两种角色 SRC + SNK

  • SRC:Source,数字音频流的源,负责将源数据发送到SNK端
  • SNK:Sink,数字音频流的接收器,负责接收SRC发过来的源数据

这两种角色的扮演者在生活中很是常见,手机蓝牙作为生活中使用最多的设备,不言而喻其主要作为SRC存在,那对应的蓝牙耳机、音箱等设备就作为SNK的角色存在,具体的音频流如下图所示:
在这里插入图片描述

音频流从SRC到SNK中间经历的步骤很多,比如MP3、PCM、编码、加密(可选)、数据封装、传输、数据解析、解密(可选)、解码、PCM等等步骤:
在这里插入图片描述

音频流传输过程中涉及到的最重要步骤就是编解码,出于对数据的保护,在设备间传输音频数据时需要按照一定的格式将数据编码,编码后的数据到达接收方再按照相同的编码格式进行解码,将音频数据解析成PCM播放。

蓝牙音频传输在当今市面上有如下几种常见的编码方式可供选择:
在这里插入图片描述

A2DP协议最早规定的基础编码方式也是强制性的编码方式为SBC,AAC是由多家公司共同开发,苹果设备中对AAC有着广泛的支持,aptX类的编码方式的专利权属于高通,而LDAC则是索尼大法在2015年推出的无线音频编码技术,LDAC也是众多无线音频编码方式中最为接近无损编码的方式。以上五种编码方式传输的蓝牙音乐音质从低到高排列为:
SBC < AAC < aptX < aptX-HD < LDAC

其实华为在2018年发布P20手机时也推出过一种无线音频编码方式HWA(HiRes Wireless Audio),也被称为LHDC,这是继高通的aptX-HD和索尼的LDAC之后业界公认的第三种蓝牙高音质编码方式。但是华为内部在综合考量下已经暂停了对HWA(LHDC)的支持,毕竟aptX-HD和LDAC相较于HWA支持更广(用户选择aptX-HD或LDAC,他不香嘛)

从上述的协议模型中可以看出A2DP协议中最关键的就是AVDTP层,在协议中连接起应用层和蓝牙核心协议层之间的交互,接下来就重点分析下AVDTP的相关交互知识点。

A2DP连接过程中涉及到多个AVDTP交互过程,我们已经知道由于蓝牙音乐音频流的单向流动性从而决定了SRC和SNK这两种角色,而AVDTP的交互过程中也涉及到两种角色:INT + ACP,简单理解就是过程的发起者为INT,该过程的接收应答者则是ACP。由于A2DP连接的两个设备在连接之初由于其功能已经被应用层定义好,所以SRC、SNK的角色已被确定,而INT、ACP却是根据过程的启动而定,因此某一个蓝牙设备可能是INT也可能是ACP。

AVDTP:全程为 AUDIO/VIDEO DISTRIBUTION TRANSPORT PROTOCOL,该协议定义了A/V流协商、建立和传输的过程,还指定了在这些设备之间交换的消息格式,以便在A/V分布应用程序中传输它们的音视频流。

AVDTP定义了如下这些交互过程:
在这里插入图片描述

也定义了如下状态,方便AVDTP的过程交互:
在这里插入图片描述

这些状态在交互过程的切换图为:
在这里插入图片描述

完整的A2DP连接包含如下几个AVDTP过程:DISCOVER、GET_CAPABILITIES、SET_CONFIGURATION、OPEN。

  • DISCOVER:发现对端设备内支持的流端点(编码方式编号)
  • GET_CAPABILITIES:获取所定义的流端点(SEP)的基本功能信息
  • SET_CONFIGURATION:设置本次连接的配置(基于双方支持的编码方式,选取最优的编码方式)
  • OPEN:成功配置后,建立A2DP连接打开音频流

以上过程全部完成就建立起了AVDTP的信令通道,AVDTP随后也会建立起数据通道。

  • 信令通道:控制蓝牙音乐音频流的建立、打开、关闭、暂停等操作
  • 数据通道:传输蓝牙音乐数据

A2DP在建立音频流前如果远端设备的AVDTP版本未知,则设备还需发起SDP服务查询以在远端设备上获得其支持的AVDTP版本。

完整的HCI交互流程见如下截图:
在这里插入图片描述

本篇我们就简单分享了A2DP协议的建立以及AVDTP协议的相关了解。对此感觉的同学可以参考这两篇蓝牙官方文档《A2DP_v1.3.2.pdf》、《AVDTP_SPEC_V13.pdf》。

感兴趣的小伙伴欢迎私信留言一起讨论,共同学习,一起进步。

更多互联互通技术,欢迎关注微信公众号:Connectivity
在这里插入图片描述

### GNSS 中多普勒、伪距和载波相位的概念及应用 #### 1. 多普勒效应及其在GNSS中的意义 在卫星导航系统中,载波多普勒指的是由于相对运动引起的接收到的载波频率的变化。这种变化能够反映用户相对于卫星的速度。具体而言,当用户设备与卫星之间存在相对运动时,接收端检测到的载波频率会发生偏移,该现象被称为载波多普勒效应[^1]。 #### 2. 伪距定义及其重要性 伪距是指从地面站到空间飞行器之间的几何路径长度加上各种误差成分的结果。它本质上是通过测量信号传输时间并乘以光速来估算的距离值。然而,实际操作过程中,这个数值包含了多种因素造成的偏差,比如大气延迟、钟差等。尽管如此,在没有其他更精准数据的情况下,伪距仍然是确定位置的关键参数之一。 #### 3. 载波相位测量的特点 相比于基于C/A码或P(Y)码测定的粗略距离——即所谓的“伪距”,载波相位提供了更为精细的位置信息。这是因为载波波长远小于扩频码周期,从而使得其对应的测距精度更高。不过,使用这种方法面临的主要挑战在于如何解决整周模糊度问题,也就是不知道确切有多少完整的波长存在于两地间。一旦解决了这个问题,就能显著提高定位准确性[^2]。 #### 4. 组合技术:相位平滑伪距的应用 为了克服单一方法存在的局限性,工程师们开发出了结合两者优点的技术方案—相位平滑伪距。这项技术充分利用了载波相位较高的分辨率以及伪距易于获取的优势,经过适当处理后可以获得更加可靠且准确的位置估计。特别是对于动态环境下的快速收敛和平稳跟踪具有重要意义[^3]。 ```python def phase_smoothed_pseudorange(pseudo_range, carrier_phase): """ 计算相位平滑伪距 参数: pseudo_range (float): 初始伪距测量值 carrier_phase (float): 同步时间段内的累积载波相位变化 返回: float: 平滑后的伪距 """ smoothed_value = pseudo_range + carrier_phase / wavelength return smoothed_value ```
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值