蓝牙音乐之A2DP音频流

蓝牙音乐之A2DP音频流

蓝牙音乐之A2DP音频流_第1张图片

A2DP音频流的建立已经在《蓝牙音乐之A2DP》中做了简单分享,本篇我们主要来说说音频流中两个重要的过程:开始、暂停

由于音频流表示一种单向媒体数据,那么音频流两端的设备就显式地承担起 SRCSNK 的角色,而设备具体的角色则取决于上层应用程序和应用场景。生活中最常见的 SRC 设备必然是手机了,SNK 设备则是各种各样的蓝牙耳机、音箱等。

A2DP协议是基于AVDTP协议的上层协议,A2DP的动作最终都是通过AVDTP实现的,而AVDTP协议中关于过程的角色可以简单分为两方:INT(过程发起者)、ACP(过程应答者)

蓝牙音乐开始和暂停就涉及到AVDTP中如下两个过程:

AVDTP_START:开始蓝牙A2DP音频流传输,这个过程有两个用途

  1. 音频流建立打开时,该信号被用来启动音频流
  2. 当音频流被暂停时,该信号用于重新启动音频流

AVDTP_SUSPEND:暂停蓝牙A2DP音频流传输

接下来分别对这两个过程从消息交互和状态切换等方面加以分析。

一、AVDTP_START
音频流建立完成(AVDTP_OPEN)后,启动音频流的过程触发流启动,从而SRC和SNK两端可以交换媒体(报告、恢复)数据包,该过程可以由参与音频流连接的任何设备启动。

SRC开始音频流,音频流两端的消息交互为: 蓝牙音乐之A2DP音频流_第2张图片
两者的状态机切换如下: 蓝牙音乐之A2DP音频流_第3张图片
SNK开始音频流,两端的消息交互则为: 蓝牙音乐之A2DP音频流_第4张图片
双方的状态机切换为: 蓝牙音乐之A2DP音频流_第5张图片

从以上两种情况下可以看出,作为ACP,只有在应答接受该开始过程后,状态机才切换到STREAMING,而作为INT过程发起者,SRC和SNK的状态切换时机是有差异的。

二、AVDTP_SUSPEND
音频流开启后使用该信号可以暂停音频流的传输,SRC或SNK都可以启动该过程。过程交互如下:
蓝牙音乐之A2DP音频流_第6张图片
状态机切换见下图:
蓝牙音乐之A2DP音频流_第7张图片

通过AVDTP的信令通道成功开始音频流后,SRC端就可以通过AVDTP的数据通道将蓝牙音乐音频数据源源不断的发送到SNK端,SRC和SNK两端对蓝牙音乐音频数据按照 AVDTP_SET_CONFIGURATION 过程中设置的编码方式进行编码、解码操作。大致的传输框图如下:
蓝牙音乐之A2DP音频流_第8张图片

A2DP音频流的开启、暂停过程及音频数据传输的协议分享到这里就结束了,感兴趣的同学欢迎私信留言一起讨论,共同学习,一起进步!

更多互联互通技术,欢迎关注微信公众号:Connectivity
蓝牙音乐之A2DP音频流_第9张图片

你可能感兴趣的:(Bluetooth)