高级音频分配配置文件规范(A2DP)

摘要

该配置文件定义了支持高质量音频分发所需的Bluetooth®设备的要求。这些要求以终端用户服务的方式表达,并定义了音频分发使用模式中蓝牙设备之间的互操作性所需的功能和过程。

1 介绍

1.1 适用范围

高级音频分发配置文件(A2DP)定义了在ACL信道上实现单声道或立体声高品质音频内容分发的协议和过程。因此,术语“高级音频”应与“蓝牙音频”区分开来,其指示蓝牙基带规范第12章中定义的SCO信道上的窄带语音分发过程[1]。

典型的用例是将音乐内容从立体声音乐播放器流式传输到耳机或扬声器。音频数据以适当的格式被压缩,以有效地利用有限的带宽。环绕声分发不包括在此配置文件的范围内。

A2DP专注于音频流,而视频分发配置文件(VDP)则指定视频流。支持这两个配置文件,使我们能够分发伴随高品质音频的视频内容。 VDP中描述了视频和音频流的使用情况。

另请注意,A2DP不包括遥控功能。设备可以通过实现A2DP和控制配置文件来支持远程控制功能,例如在音频/视频远程控制配置文件[2]的使用场景中所描绘的。

可以增强核心规范所要求的QoS功能,以便在连接建立期间建立容量分发(capacity allocation)规则,以确保最小时间分发有保证的服务类型。当多个配置文件在微微网中运行时,这将提供可预测的结果。然而,这些目前未被规划在将来的版本中。

1.2 配置文件依赖

在图1.1中,描述了配置文件的结构和依赖关系。如果通过隐式或明确地引用另一个配置文件,则该配置文件将依赖于另一个配置文件。如图所示配置文件的相关性。配置文件直接和间接地依赖于其中包含的配置文件。

如图1.1所示,A2DP依赖于通用访问配置文件(GAP)以及通用音频/视频分发配置文件(GAVDP)[3],该配置文件定义了设置音频/视频流所需的步骤。 A2DP定义了特定于音频流的参数和过程。除非另有明确说明,GAP和GAVDP中定义的术语,用户界面和过程适用于此配置文件。

图1.1:配置文件依赖关系

1.3 符号和约定

1.3.1要求状态符号

在本文档中使用以下符号:

  • “M” 用于强制支持(用于配置文件中使用的功能)。

  • "O" 用于可选支持(用于可在配置文件中使用的功能)。

  • “C” 用于条件支持(用于在支持某种其他功能的情况下使用的功能)。

  • “X” 用于排除(用于可能由本机支持的功能,但不得在配置文件中使用)。

  • “N/A” 不适用(在给定的上下文中不可能使用此功能)。

一些排除功能,是根据相关蓝牙规范的功能,是强制性的。这些是可能会降低此配置文件设备运行的功能。因此,在单元作为该配置文件中的单元运行时,这些功能将永远不会被激活。

1.3.2定义

1.3.2.1 RFA

保留将来添加。具有此名称的位应设置为零。接收器将忽略这些位。

1.3.2.2 RFD

留作将来定义。这些位值组合或位值在当前规范中是不允许的,但可以在将来的版本中使用。接收机应检查不使用不支持的比特值组合。

1.4 蓝牙A2DP配置文件更改历史记录

1.4.1 从1.2变为1.3

1.4.1.1 一般更改

  • 来自A2DP 1.2的非A2DP编解码器现在称为供应商特定的A2DP编解码器

  • 纳入通过的变更以纠正各种勘误。相关勘误为879,938,2903,3043及3631。

1.4.1.2 新功能

  • 与来自音频/视频分发传输协议1.3的延迟报告功能的互操作性,以增强A/V同步

  • 与通用访问配置文件模式的互操作性,核心规范2.1 + EDR中定义的安全和空闲模式过程

  • 以符合标准的方式说明使用可选A2DP编解码器的标准,并将供应商特定的A2DP编解码器提升为可选的A2DP编解码器

2 配置文件概述

2.1 Profile Stacks

图2.1显示了此配置文件中使用的协议和实体。

图2.1:协议模型

基带[1],LMP [5],L2CAP [6]和SDP [7]是Bluetooth Core规范中定义的蓝牙协议。 AVDTP [4]由用于协商流参数的信令实体和处理流本身的传输实体组成。

图2.1所示的应用层是设备定义应用服务和传输服务参数的实体。该实体还将音频流数据适配成定义的分组格式,反之亦然。

对于图2.1中的阴影协议/实体,GAVDP适用,除非在该配置文件明确说明偏差的情况下。

2.2 配置和角色

为实现此配置文件的设备定义了以下角色:

源(SRC) - 当SRC作为传送到微微网的SNK的数字音频流的源时,设备是SRC。

Sink(SNK) - 当设备作为从同一微微网上的SRC传送的数字音频流的接收器时,设备是SNK。

图2.2中描述了该配置文件的角色的配置示例。

图2.2:配置示例

2.3 用户要求和场景

此配置文件涵盖以下场景:

  • 设置/控制/处理从SRC到SNK的音频数据流。

以下限制适用于此配置文件:

  • 该配置文件不支持同步的点对多点分发。

由于射频信号处理,数据缓冲和流数据的编码/解码,SRC和SNK之间存在一定的延迟。抵制这种延迟的后果取决于实施。

此配置文件中设置了以下要求:

  • 音频数据速率应该足够小于蓝牙链路上的可用比特率。这是为了允许重传方案来减少丢包的影响。

  • 该配置文件不排除任何内容保护方法。

2.4 简介基础

除了以下要求之外,配置文件基本原理与GAVDP中定义的相同。

内容保护在应用层提供,不是蓝牙链路级安全协议的功能。

2.5 一致性

当声明符合此配置文件要求时,所有表明强制性的功能应以指定的方式(过程强制性)得到支持。这也适用于指示支持的可选和条件功能。蓝牙认证计划的一部分,所有强制性,可选性和有条件的功能,对于哪些支持的指示,都需要进行验证。

3 应用层

本节介绍符合A2DP的设备的功能要求。

表3.1显示了该配置文件的功能要求。

表3.1:应用层特性

表3.2将每个功能映射到该功能使用的过程,并显示该过程是可选的,强制的还是有条件的。过程在参考部分中描述。

表3.2:应用层功能到过程映射

3.1 音频流设置

如果远程设备的AVDTP版本未知,则设备应执行SDP查询以在远程设备上获取AVDTP版本。这将在执行GAVDP_ConnectionEstablishment过程之前执行。这是必需的,因为音频流设置过程中的一些命令取决于AVDTP版本。

当设备希望开始流式传输音频内容时,设备首先需要建立流媒体连接。信令过程和典型信令流分别在GAVDP [3]的4.1节和附录A中说明。在这种设置过程中,设备选择最合适的音频流参数。配置了两种服务:一个是应用服务能力(application service capability),另一个是传输服务能力(transport service capability)。 (有关详细信息,请参阅AVDTP [4]中的第4.4节。)该配置文件指定了这些信令过程所需的特定于音频的参数。 GAVDP [3]的第14章和本规范的第13章描述了会话信令(session signaling)的执行情况。

A2DP的应用服务能力包括音频编解码能力和内容保护能力。音频编解码器互操作性要求和编解码器参数(如模式,采样频率和比特率)的详细信息在第4章中描述。内容保护功能在附录A中作为信息描述。

传输服务能力由AVDTP提供,以便更智能地处理流分组。这些服务的适当配置增加了通道吞吐量。可用的服务列在第5.1.2节中。

3.2 音频流

一旦建立流式连接,并且执行GAVDP中的开始流(Start Streaming)过程,则SRC和SNK都处于STREAMING状态,其中SRC(SNK)准备发送(接收)音频流。 (见GAVDP [3]中的4.1节。)SRC使用发送音频流过程将音频数据发送到SNK,SNK又使用接收音频流过程接收音频数据。这些过程和创建的数据包格式的框图如图3.1所示。在第4章中还规定了AVDTP头和媒体有效载荷格式中的音频特定参数。

再次注意,设备应处于STREAMING状态以发送/接收音频流。如果SRC/SNK希望发送/接收音频流,而状态仍处于OPEN状态,SRC/SNK将启动GAVDP中定义的开始流(Start Streaming)过程。

3.2.1 发送音频流

在发送音频流(Send Audio Stream)过程中,如果需要,SRC将在信令会话(signaling session)中将数据编码为选定的格式。然后,SRC的应用层应将编码的数据调整为定义的媒体有效载荷格式。编码音频数据的帧适应第4章定义的有效载荷格式。

当内容保护被使用时,内容保护报头可以在加密的音频内容之前。这是内容保护方法的依赖。

然后,流数据应通过AVDTP第2章暴露的接口(接口4)传递给AVDTP实体。流数据应使用AVDTP [4]第5.4节中定义的所选传输服务在传输信道上发送出去。

3.2.2 接收音频流

SNK的AVDTP实体应使用所选择的传输服务从传输信道接收流数据,并通过AVDTP第2章暴露的接口将其传递给应用层[4]。

当内容保护方法处于活动状态时,SNK的应用层将按照内容保护方法的描述处理检索到的AVDTP有效载荷。通常,该处理需要相关加密内容的内容保护报头分析和解密。

如果适用,音频数据帧应根据选择的编码格式进行解码。

图3.1:音频流过程和分组格式框图

4 音频编解码器互操作性要求

4.1 概述

本章定义了音频编解码器特定的必要信息。在4.2节中,对该配置文件版本中使用的编解码器及其要求进行了详细描述。蓝牙分发号码(Bluetooth Assigned Numbers)[8]中描述了A2DP版本1.0后引入的编解码器的附加信息。

剩余部分为每个编解码器提供参考以及以下信息:

  • 音频编解码器功能(Audio codec capabilities)定义了流式传输设置中信令过程所需的能力字段及其参数。 GAVDP中的相关过程是连接建立(Connection Establishment)和变更参数(Change Parameters)过程。

  • 媒体包头要求(Media packet header requirements)定义媒体包头中的编解码器特定参数,它将被添加到AVDTP实体中的媒体有效载荷。 (见图3.1)

  • 媒体有效载荷格式(Media payload format)定义了AVDTP数据包中的编解码器特定有效载荷格式,它将在3.2节中的音频流过程中使用。另见图3.1。

4.2 编解码器的支持

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

表4.1:支持的编解码器

以下编解码器被视为供应商特定的A2DP编解码器:

  • 不在表4.1或蓝牙分发号码[8]上的编解码器。

  • 强制或可选编解码器以不符合的方式使用。

使用供应商特定A2DP编解码器的要求在4.2.3和4.7节中定义。

4.2.1 强制编解码器

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

4.2.2 可选编解码器

设备还可以支持可选编解码器,以最大限度地提高其可用性。当SRC和SNK都支持相同的可选编解码器时,可以使用该编解码器而不是强制编解码器。此配置文件支持的可选编解码器列在表4.1中,另外在蓝牙分发号码[8]中定义。为了保持互操作性,应适用第4.2.4节的要求。

对于蓝牙分发号码[8]中列出的所有可选编解码器,但本规范未描述,该列表包含有关如何获取有关编解码器特定信息元素(Codec Specific Information Element),媒体包头要求(Media Packet Header Requirement)和所有其他编解码器特定的信息。

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

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

  • 为保持互操作性,应适用第4.2.4节的要求。

  • 供应商特定的A2DP编解码器可以升级为可选,当第4.2.2节中的可选编解码器要求以及以下两者都满足时:

  • 所提出的编解码器应在正式互操作性(IOP)测试会话中成功测试

  • 成功测试编解码器意味着至少两个源和两个接收器实现应向BARB提供所建议的编解码器已经成功实现的证据

  • 正式IOP测试计划应在正式IOP测试会议之前提交并由BARB批准

  • 适用于建议的编解码器的任何许可证应以公平合理的条件提供,并以非歧视的方式访问。所建议的编解码器的规格应适用于所有计划实施编解码器的公司,如果需要,在NDA下

  • 如果供应商特定的A2DP编解码器升级为可选,它将仅在蓝牙分发号码[8]中列出,而不在本或未来的配置文件版本中。

4.2.4 编解码器互操作性要求

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

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

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

4.2.5 音频编解码器类型字段值

有关此配置文件中可用的音频编解码器类型,请参阅蓝牙分发号码[8]。 AVDTP的第8.19.5节定义了音频编解码功能的消息格式[4]。

以下部分定义蓝牙链接上的音频流媒体所需的音频编解码器参数和格式。

4.3 SBC

4.3.1 参考

SBC必须在此配置文件中支持。SBC规范是蓝牙规范的一部分。编解码器规范附在该配置文件的12(附录B)中。

4.3.2 编解码器特定信息元素

图4.1显示了信令过程中使用的SBC编解码器特定信息元素(Codec Specific Information Elements)。如需参考,参见AVDTP的第8.19.5节[4]。以下部分定义了字段值及其要求。每个值的含义在附录B的SBC规范中定义。如果数据包包含不正确的设置,则错误代码将按第5.1.3节的规定进行返回。

图4.1:SBC的编解码器特定信息元素

注意:在AVDTP的获取所有能力响应(Get All Capabilities Response)中,可以在每个字段中定义/设置一个或多个位。另一方面,在AVDTP的设置配置命令(Set Configuration Command)和重配置命令(Reconfigure Command)中,每个字段中只能定义/设置一个位。

4.3.2.1 采样频率

表4.2给出了SBC采样频率字段的值。对于SNK中的解码器,44.1kHz和48kHz的采样频率是必须支持的。 SRC中的编码器应支持44.1kHz和48kHz的采样频率中的至少一个。

表4.2:SBC采样频率

4.3.2.2 通道模式

表4.3显示SBC通道模式字段的值。对于SNK中的解码器,应支持所有功能。 SRC中的编码器至少应支持MONO和DUAL CHANNEL,STEREO和JOINT STEREO模式之一。

表4.3:SBC通道模式

4.3.2.3 块长度

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

表4.4:SBC的块长度

4.3.2.4 子带

表4.5显示了SBC的子带数(Number of Subbands)字段的值。对于SNK中的解码器,应支持所有功能。 SRC中的编码器应支持至少8个子带的情况。

表4.5:SBC子带数

4.3.2.5 分配方法

表4.6显示SBC的分配方法(Allocation Method)字段的值。对于SNK中的解码器,应支持所有功能。 SRC中的编码器至少应支持LOUDNESS方法。

表4.6:SBC的分配方法

4.3.2.6 最小/最大位值

设备使用由8位UiMsbf(无符号整数,最高有效位优先)表示的Minimum / Maximum Bitpool Value字段设置SBC位池参数(bitpool parameters)的范围,范围从2到250。在AVDTP中的“获取所有功能(Get All Capabilities)”过程中,Minimum / Maximum Bitpool Value字段包含ACP中位值的允许可变范围,而在AVDTP中的流配置(Stream Configuration)或流重配置(Stream Reconfigure)过程中,字段包含INT期望发送/接收的位值的可变范围。使用位值和其他编解码器参数(采样频率,信道模式,块长度和子带数),音频流的比特率和帧长度计算如第12.9节所示。

  • 如果Minimum/Maximum Bitpool Value字段包含相同的数字,则bitpool应该固定值。

确定比特率的编解码信息包含在SBC帧头中,并重复发送到与音频数据流相关联的SNK。 SRC能够通过在不中止的情况下更改位池参数来动态地改变比特率。在GAVDP中定义的更改参数(Change Parameters)过程中可以更改其他参数。

SNK的解码器将支持2作为表4.7中的Minimum Bitpool Value和High Quality Bitpool Value,作为Maximum Bitpool Value的最小值。

SNK设备可以支持大于表4.7中的高质量值(High Quality Value)的比特池,但是需要证明可接受地呈现所得到的媒体的能力。

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

表4.7:SRC设备中推荐的SBC参数集

再次注意,该表中显示的帧长度根据bitpool而变化。为了最有效地利用L2CAP中的传输,可以在构建媒体有效载荷时调整帧长度。要使用SBC帧创建媒体有效载荷格式,请参见第4.3.4节。

4.3.3 媒体包头要求

4.3.3.1 时间戳(TS)

创建TS所需的时钟频率应设置为编码音频数据的采样率。

如果媒体有效载荷由多个SBC帧组成,则媒体分组报头的TS表示第一SBC帧的TS。以下SBC帧的TS应使用采样率和每个通道每帧采样数来计算。

当SBC帧被分段成多个媒体分组时,构成分片SBC帧的所有分组将使用相同的TS。

4.3.3.2 有效载荷类型(PT)

应选择RTP动态范围内的有效载荷类型(参见[22],第3节)。

4.3.3.3 标记(M)位

应设置为零。

4.3.3.4 扩展名(X)位

不使用,应设为零。

4.3.4 媒体有效载荷格式

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

如果传输信道的配置MTU大小(configured MTU size)大于或等于SBC帧大小 + [媒体有效载荷报头大小,内容保护报头大小(如果选择内容保护),媒体分组报头大小]之和,则媒体有效载荷应包含一整套完整的SBC帧(见图4.2所示的格式(a))。

如果不是这样,并且如果没有选择AVDTP的复用服务,则SBC帧将在多个媒体有效载荷之间分段(见图4.2中的格式(b))。除最后一个之外的所有碎片包将具有相同的总数据包大小。媒体有效载荷始终以8位头部开头,放置在SBC数据之前。如果选择AVDTP的复用业务,则建议不要在多个媒体有效载荷之间分段SBC帧,因为如果需要,AVDTP会将多个L2CAP数据包的媒体有效载荷分段。

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

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

图4.3:SBC媒体有效载荷报头格式
  • F位 - 如果SBC帧被分段,则设置为1,否则设置为0。

  • S位 - 对于分段SBC帧的起始数据包,设置为1,否则设置为0。

  • L位 - 对于分段SBC帧的最后一个分组,设置为1,否则设置为0

  • RFA - 见定义第1.3.2.1节。

  • 帧数(4位) - 如果F位设置为0,则此字段指示此数据包中包含的帧数。如果F位设置为1,则该字段指示剩余片段的数量,包括当前片段。因此,最后一个计数器值应为1。例如,如果有三个片段,那么对于后续片段,计数器的值为3,2和1。该字段由4位UiMsbf表示。

4.4 MPEG-1,2音频

4.4.1 参考

对于MPEG-1音频,请参阅[12]。对于MPEG-2音频,请参阅[13]。

4.4.2 编解码器特定信息元素

图4.4显示了在信令过程中使用的MPEG-1,2音频的编解码器特定信息元素。参考8.19.5 AVDTP [4]。以下部分定义了字段值及其要求。每个值的含义在[12]和[13]中定义。每个字段值中的支持列显示了支持该编解码器时要满足的要求。如果数据包包含不正确的设置,则错误代码应按第5.1.3节的规定进行返回。

图4.4:MPEG-1,2音频的编解码器特定信息元素

注意:在获取AVDTP的所有能力响应(Get All Capabilities Response)中,可以在每个字段中定义/设置一个或多个值。另一方面,在AVDTP的设置配置命令(Set Configuration Command)和重配置命令(Reconfigure Command)中,每个字段中只能定义/设置一个值。

4.4.2.1 层(Layer)

表4.8显示了MPEG-1,2 Audio中定义的层(Layer)的值。 SRC和SNK应支持层I(mp1),层II(mp2)和层III(mp3)中的至少一个。

表4.8:MPEG-1,2音频层

4.4.2.2 CRC保护

支持CRC保护在SNK中是强制性的,在SRC中是可选的。

表4.9:MPEG-1,2音频的CRC保护分发

4.4.2.3 通道模式

MPEG-1,2音频通道模式字段的值如表4.10所示。对于SNK中的解码器,应支持所有功能。 SRC中的编码器应支持MONO,DUAL CHANNEL,STEREO和JOINT STEREO模式中的至少一种。

表4.10:MPEG-1,2音频的通道模式

4.4.2.4 媒体有效载荷格式(MPF)

MPF(Media Payload Format)字段表示支持MPEG-1,2 Audio的媒体有效载荷格式。在第4.4.4节中强制要强制MPF-1。如果也支持4.4.4节中的MPF-2,或MPF-2被配置为传输的媒体有效载荷格式,MPF字段被设置为1。否则设置为0。

4.4.2.5 采样频率

MPEG-1,2音频采样频率字段的值如表4.11所示。对于SNK中的解码器,44.1kHz和48kHz的采样频率是必须支持的。 SRC中的编码器应支持44.1kHz和48kHz的采样频率中的至少一个。对于SNK和SRC,其他采样频率都是可选的。

表4.11:MPEG-1,2音频采样频率

4.4.2.6 VBR

在此配置文件中,支持MPEG-1,2音频的VBR(可变比特率)对于SNK中的解码器是必需的,SRC中的编码器是可选的。第一层和第二层不要求这个参数,但大多数实际的设备通常支持它。

表4.12:支持MPEG-1,2音频的VBR

4.4.2.7 比特率指数

MPEG-1,2音频比特率索引字段的值如表4.13所示。索引值表示参考规范中定义的实际比特率值。对于SNK中的解码器,除了索引值“0000”之外,所有功能都应被支持。SRC中的编码器应支持在SNK中必须支持的至少一个索引值。

注意,MPEG-1 Layer II(mp2)在总比特率和信道模式的允许组合中有限制(对于MPEG-1,参见[12]中的第2.4.2.3节)。这种限制推翻了表4.13所示的比特率指数的支持。

表4.13:MPEG-1,2音频的比特率索引1

表4.13:MPEG-1,2音频的比特率索引2

当设置VBR时,​​应忽略比特率索引字段。

4.4.2.8 RFA

见定义1.3.2.1节

4.4.3 媒体包头要求

MPEG-1,2音频的媒体包头要求包含在第4.4.4节中引用的媒体有效载荷格式的规范中。

4.4.4 媒体有效载荷格式

MPEG-1,2音频使用[14]和[15]中定义的有效载荷格式。该配置文件要求支持MPF-1中的格式。 MPF-2为MPEG-1,2音频层III提供了更多的错误鲁棒性。另见第4.4.2.4节。对于MPF-1,请参阅[14]。对于MPF-2,请参阅[15]。

4.5 MPEG-2,4 AAC

4.5.1 参考

对于MPEG-2 AAC,请参阅[16]。对于MPEG-4 AAC,请参考[17]。

4.5.2 编解码器特定信息元素

图4.5显示了信令过程中使用的MPEG-2,4 AAC的编解码器特定信息元素。如需参考,参见AVDTP的第8.19.5节[4]。以下部分定义了字段值及其要求。每个字段值中的支持列显示了支持该编解码器时要满足的要求。如果数据包包含不正确的设置,则错误代码应按第5.1.3节的规定进行返回。

图4.5:MPEG-2,4 AAC的编解码器特定信息元素

注意:在获取AVDTP的所有能力响应(Get All Capabilities Response)中,可以在每个字段中定义/设置一个或多个值。另一方面,在AVDTP的设置配置命令(Set Configuration Command)和重配置命令(Reconfigure Command)中,每个字段中只能定义/设置一个值。

4.5.2.1 对象类型

表4.14显示了MPEG-2,4 AAC的对象类型字段的值。 SRC和SNK应支持MPEG-2 AAC LC,其他值是可选的。

表4.14:MPEG-2,4 AAC的对象类型

4.5.2.2 采样频率

MPEG-2,4 AAC的采样频率字段的值如表4.15所示。对于SNK中的解码器,44.1kHz和48kHz的采样频率是必须支持的。 SRC中的编码器应支持44.1kHz和48kHz的采样频率中的至少一个。其他采样频率对于SNK和SRC都是可选的。

表4.15:MPEG-2,4 AAC的采样频率域

4.5.2.3 通道

表4.16显示了MPEG-2,4 AAC的Channels字段的值。 SNK应支持两个通道,而SRC应至少支持一个通道。

表4.16:MPEG-2,4 AAC的通道字段

4.5.2.4 比特率

在可变比特率流的情况下,在恒定速率流或最大峰值比特率(每帧测量)的情况下,为比特率指定比特率字段。值为0表示比特率未知。该字段表示为23位UiMsbf,如下图所述。

图4.6:MPEG-2,4 AAC比特率字段的位顺序

4.5.2.5 VBR

支持VBR(可变比特率)对于SNK中的解码器是必需的,SRC中的编码器是可选的。

表4.17​​:对MPEG-2,4 AAC的VBR支持

4.5.2.6 RFA

见第1.3.2.1节的定义。

4.5.3 媒体包头要求

MPEG-2,4 AAC的媒体包头要求包含在第4.5.4节中引用的媒体有效载荷格式的规范中。

4.5.4 媒体有效载荷格式

MPEG-2,4 AAC使用[18]中定义的媒体有效载荷格式。该规范仅限于MPEG-4音频的有效载荷格式;在使用MPEG-2 AAC LC时,通过修改编解码器信息并将其转换为MPEG-4 LATM格式,音频流将被转换为SRC中的MPEG-4 AAC LC,然后再进入媒体有效载荷格式。如果需要,SNK应将流重新转换为MPEG-2 AAC LC。有关详细信息,请参见[16]和[17]。

  • 当SNK中支持MPEG-4 AAC LC时,可以原样解码数据。

4.6 ATRAC系列

4.6.1 参考

ATRAC系列是索尼公司拥有的专有编解码器。许可用户获取此编解码器的规格。有关许可证的详细信息,请通过以下电子邮件地址与Sony Corporation联系:bt-atrac3@jp.sony.com

4.6.2 编解码器特定信息元素

图4.7显示了信令过程中使用的ATRAC系列的编解码器特定信息元素。如需参考,参见AVDTP的第8.19.5节[4]。以下部分定义了字段值及其要求。每个字段值中的支持列显示了支持该编解码器时要满足的要求。如果分组包含不正确的设置,错误代码将按照第5.1.3节的规定进行返回。

图4.7:ATRAC系列的编解码器特定信息元素

注意:在获取AVDTP的所有能力响应(Get All Capabilities Response)中,可以在每个字段中定义/设置一个或多个值。另一方面,在AVDTP的设置配置命令(Set Configuration Command)和重配置命令(Reconfigure Command)中,每个字段中只能定义/设置一个值。

4.6.2.1 版本

表4.18显示了ATRAC系列版本字段的值。版本字段包含一个特定版本的ATRAC系列。因此,如果该设备支持ATRAC和ATRAC3,应使用两个不同的流端点。

表4.18:ATRAC系列版本

4.6.2.2 通道模式

表4.19显示了ATRAC系列的通道模式字段的值。 SRC和SNK应至少支持一个值。

表4.19:ATRAC系列的通道模式1
表4.19:ATRAC系列的通道模式2

4.6.2.3 Fs(采样频率)

表4.20显示了ATRAC系列的采样频率字段的值。 SRC和SNK应至少支持一个值。

表4.20:ATRAC系列的采样频率

4.6.2.4 VBR

对于SRC和SNK,支持ATRAC系列的VBR(可变比特率)是可选的。

请注意,当支持VBR时,4.6.2.5中的比特率索引字段将被忽略,因为设备可以采用第4.6.2.6节中描述的最大SUL值下的任何位速率。当不应用VBR时,比特率索引字段明确指示支持的比特率,而最大SUL字段将被忽略。

表4.21:对ATRAC系列的VBR支持

4.6.2.5 比特率指数

表4.22显示了ATRAC系列的比特率索引字段的值。索引值表示参考规范中定义的实际比特率值。 SRC和SNK应至少支持一个值。

表4.22:ATRAC系列的比特率指数1
表4.22:ATRAC系列的比特率指数2

4.6.2.6 最大SUL

声音单元长度(Sound Unit Length,SUL)是确定音频流的比特率的参数之一。具有16位UiMsbf的最大SUL字段包含SNK中解码器支持的SUL的最大值(以字节表示)。 SRC应发送SUL等于或小于SNK中解码器的最大SUL的音频流数据。在SRC启动的AVDTP的所有能力过程中,SNK发起的AVDTP流配置过程中,SNK中的最大SUL值应通知SRC。

4.6.2.7 RFA

见定义1.3.2.1节。

4.6.3 媒体包头要求

4.6.3.1 时间戳(TS)

创建TS所需的时钟频率应设置为编码音频数据的采样率。

如果媒体有效载荷由ATRAC系列的多个编解码帧组成,则媒体分组报头的TS表示第一编解码器帧的TS。以下编解码帧的TS应使用采样率和每个通道每帧采样数来计算。

4.6.3.2 有效载荷类型(PT)

应选择RTP动态范围内的有效载荷类型(参见[22],第3节)。

4.6.3.3 标记(M)位

应设置为零。

4.6.3.4 扩展(X)位

不使用,应设为零。

4.6.4 媒体有效载荷格式

许可用户获取ATRAC系列的媒体有效载荷格式说明。见第4.6.1节。

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

4.7.1 参考

供应商的定义和处理特定A2DP编解码器在第4.2.3。

4.7 编解码器特定信息元素

图4.8显示了信令过程中使用的供应商特定A2DP编解码器的编解码器特定信息元素。参考,参见AVDTP的第8.19.5节[4]。如果数据包包含不正确的设置,则错误代码应按第5.1.3节的规定进行返回。

图4.8:供应商特定A2DP编解码器的编解码器特定信息元素

4.7.2.1 供应商ID

应使用32位供应商ID。 32位供应商ID的低16位应包含蓝牙分发号码[8]中定义的有效的非保留16位公司ID。32位供应商ID的高16位应设置为零。供应商ID的LSB应以八位字节0的形式放置。

4.7.2.2 供应商特定编解码器ID

图4.8中的供应商特定编解码器ID字段包含由供应商管理的16位编解码器ID。

4.7.2.3 供应商具体值

图4.8中的“供应商特定值”字段包含供应商明确定义的值。详细信息超出了此配置文件的范围。

4.7.3 媒体包头要求

媒体包头要求由卖方定义。

4.7.4 媒体有效载荷格式

媒体有效载荷格式由卖方定义。

5 GAVDP互操作性要求

此配置文件要求符合通用A/V分发配置文件(GAVDP)[3]。以下文本连同相关的子条款除了GAVDP中定义的要求外,还定义了关于此配置文件的要求。

注意:对于INT/ACP描述了GAVDP中描述的要求。对于SRC,必须支持INT和ACP。对于SNK,必须支持ACP,支持INT是可选的。见表5.2。

表5.1:GAVDP角色

5.1 AVDTP互操作性要求

5.1.1 信令过程

流媒体和延迟报告过程有不同的要求。在流式传输可能由SRC或SNK发起时,延迟报告始终从SNK发送到SRC。

5.1.1.1 流媒体角色

在A2DP中,SRC和SNK的可选功能必须能够建立流式连接,开始流式传输和释放流式连接。 SRC可以承担INT和ACP的作用,而SNK设备可以承担ACP的作用,并且可以可选地承担INT的作用。因此,SRC必须支持ACP角色,以便可以在SRC设备和SNK设备的任意组合之间操纵信令过程。

表5.2:GAVDP中的角色

5.1.1.2 延迟报告角色

延迟报告从SNK发送到SRC,因此SNK始终为INT,SRC始终为ACP。SNK设备中的INT角色对于延迟报告是强制性的,而SRC设备中的ACP角色是可选的。

表5.3:GAVDP中延迟报告的作用

5.1.2 传输服务

表5.4显示了对该配置文件的AVDTP传输能力的支持。在此配置文件基本服务是必需的支持。

表5.4:AVDTP传输能力

5.1.3 错误代码

如果编解码器特定信息元素包括不正确的设置,则错误代码如下所示。除了GAVDP [3]中指定的错误代码外,表5.5列出了应用过程使用的其他错误代码,如果在接收到的命令中发现适用的错误。

表5.5:错误代码1
表5.5:错误代码2
表5.5:错误代码3
表5.5:错误代码4

5.2 L2CAP互操作性要求

对于L2CAP层,除了以下要求外,不适用于GAVDP中规定的要求。

5.2.1 最大传输设备

此配置文件的L2CAP实现的最小MTU值为335字节。

  • DH5数据包大小等于339字节,包括4字节的L2CAP头。

5.3 SDP互操作性要求

该配置文件分别定义了SRC和SNK的以下服务记录。指定给“值”列中使用的助记符的代码以及指定给属性标识符的代码(如果在AttrID列中没有具体提到)可以在蓝牙分发号码[8]中找到。

图5.2:Sink的服务记录1
图5.2:Sink的服务记录2
图5.2:Sink的服务记录1
图5.2:Sink的服务记录2

5.4 链路管理器互操作性要求

对于LMP层,不适用GAVDP中规定的要求。

5.5 链路控制器互操作性要求

对于链路控制器层,应适用GAVDP中规定的要求。此外,SNK和SRC中都应支持以下数据包:DH3,DM3,DH5和DM5。

注意:对于INT/ACP描述了GAVDP中描述的要求。对于SRC,必须支持INT和ACP。对于SNK,必须支持ACP,它是可选的,以支持INT。

表5.6显示了此配置文件中链路控制器过程的支持状态。

表5.6:LC功能1
表5.6:LC功能2

5.5.1 设备类

设备类别字段应设置如下:

  1. 必须在服务类字段中设置SNK的 Rendering 位和SRC的 Capturing位。

  2. 建议将"Audio/Video"设置为SNK和SRC的主设备类。

  3. 选择蓝牙分发号码[8]中定义的适当的次设备类。

6 通用访问配置文件互操作性要求

A2DP要求符合通用访问配置文件。本节定义了通用访问配置文件中定义的功能的支持要求。

6.1 模式

表6.1显示了此配置文件中模式的支持状态。

表6.1:模式
  • C1 如果支持有限的可发现模式,则不可发现模式是强制性的,否则是可选的。

  • C2 应支持有限的可发现模式或一般可发现模式。

6.2 安全方面

通用访问配置文件中所述的要求没有变化。

6.3 空闲模式过程

表6.2显示了此配置文件中空闲模式过程的支持状态。

表6.2:支持的空闲模式过程

7 测试

A2DP需要互操作性测试。测试策略的细节在[9]中有描述。测试的功能在[10]中定义。

8 参考文献

  • [1] Bluetooth Core Specification, Version 1.2 or Later, Baseband

  • [2] Audio/Video Remote Control Profile version 1.0 or Later

  • [3] Generic Audio/Video Distribution Profile version 1.0 or Later

  • [4] Specification of the Bluetooth System, Profiles, version 1.0 or Later, Audio/Video Distribution Transport Protocol

  • [5] Bluetooth Core Specification, version 1.2 or Later, LMP

  • [6] Bluetooth Core Specification, version 1.2 or Later, L2CAP

  • [7] Bluetooth Core Specification, version 1.2 or Later, SDP

  • [8] Bluetooth Assigned Numbers, http://www.bluetooth.org/assigned-numbers.htm

  • [9] Bluetooth Test Suite Structure (TSS) and Test Procedures (TP) for Advanced Audio Distribution Profile version 1.0 or Later,

  • [10] Advanced Audio Distribution Profile ICS proforma version 1.0 or Later

  • [11] F. de Bont, M. Groenewegen and W. Oomen, “A High Quality Audio-Coding System at 128 kb/s”, 98th AES Convention, Febr. 25 – 28, 1995.

  • [12] ISO/IEC 11172-3:1993: Information technology – Coding of moving pictures and associated audio for digital storage media at up to about 1.5 Mbit/s - Part 3: Audio.

  • [13] ISO/IEC 13818-3:1998: Information technology – Generic coding of moving pictures and audio – Part 3: Audio

  • [14] IETF RFC 2250: "RTP Payload Format for MPEG1/MPEG2 Video", http://www.ietf.org/

  • [15] IETF RFC 3119: "A More Loss-Tolerant RTP Payload Format for MP3 Audio", http://www.ietf.org/

  • [16] ISO/IEC 13818-7:1997: Information technology – Generic coding of moving pictures and associated information – Part 7: Advanced Audio Coding

  • [17] ISO/IEC 14496-3:2001: Information technology – Coding of audio-visual objects – Part 3: Audio

  • [18] IETF RFC 3016: "RTP Payload Format for MPEG-4 Audio/Visual streams", http://www.ietf.org/

  • [19] Conformance Test Bitstreams and Reference Implementation of SBC, http://www.bluetooth.org

  • [20] Rec. ITU-R BS.1116-1, "METHODS FOR THE SUBJECTIVE ASSESSMENT OF SMALL IMPAIRMENTS IN AUDIO SYSTEMS INCLUDING MULTICHANNEL SOUND SYSTEMS", 1994-1997

  • [21] Rec. ITU-R BS.1387-1, "METHOD FOR OBJECTIVE MEASUREMENTS OF PERCEIVED AUDIO QUALITY", 2001

  • [22] IETF RFC 3551: "RTP Profile for Audio and Video Conferences with Minimal Control", http://www.ietf.org/

11 附录A(信息):具有内容保护的音频流

该配置文件没有指定特定的内容保护方法,而只是提供对各种内容保护方法的支持。具体来说,AVDTP通过“获取所有功能(Get All Capabilities)和流配置(Stream Configuration)”过程提供对特定内容保护方法的识别和协商。

AVDTP中的安全控制过程提供了激活的内容保护方法的交换。

12 附录B:SBC技术规范

12.1 介绍

本附录介绍了低复杂度子带编码技术规范(SBC)。 SBC是专为蓝牙AV应用而设计的音频编码系统,以中等比特率获得高质量的音频,并具有较低的计算复杂度。SBC使用4或8个子带,自适应比特分配算法和简单的自适应块PCM量化器。SBC音频编码系统基于早期的系统,在[11]中提出。针对Win32平台,[19]提供SBC编解码器的编码器和解码器的参考可执行文件。有关更多信息,请参见[9]中的第9.4.3节。请注意,SBC的源代码没有作为说明书的一部分提供。

12.2 词汇表

表12.1:术语表

12.3 符号和缩写

12.3.1 算术操作符

表12.2:算术操作符

12.3.2 逻辑操作符

表12.3:逻辑操作符

12.3.3 关系操作符

表12.4:关系操作符

12.3.4 比特操作符

表12.5:比特操作符

12.3.5 赋值操作符

表12.6:赋值操作符

12.3.6 助记符

定义了以下助记符来描述编码比特流中使用的不同数据类型。

表12.7:助记符

12.3.7 常数

表12.8:常数

12.3.8 范围

表12.9:范围

12.3.9 数字符号

表12.10:数字符号

12.4 语法

表12.11:audio_frame的语法
表12.12:frame_header的语法
表12.13:scale_factors的语法
表12.14:audio_samples的语法
表12.15:填充语法

12.5 语义

12.5.1 Frame_header

表12.16:sampling_frequency
表12.17:blocks
表12.18:channel_mode
表12.19:allocation_method
表12.20:subbands
  • 位池(bitpool) - 这是一个8位整数,用于指示用于对流进行编码的位分配池的大小。对于MONO和DUAL_CHANNEL通道模式,位池字段的值不得超过16 * nrof_subbands,STEREO和JOINT_STEREO通道模式的值不得超过32 * nrof_subband。

  • crc_check - 该8位奇偶校验字用于编码流内的错误检测。

  • RFA - 见第1.3.2.1节的定义。

  • join[sb] - 用于指示在子带sb中是否使用联合立体声的一位。如果子带已经以联合立体声编码,则等于1,如果子带已经以立体声编码,则等于0。join[nrof_subbands-1]总是等于0。

12.5.2 scale_factors

  • scale_factor[ch][sb] - 包含子带sb中信道ch的采样的比例因子的四位应相乘。

12.5.3 audio_samples

  • audio_samples[blk][ch][sb] - 这些位表示子频带sb的通道ch中的块blk的音频采样。

12.5.4 填充

padding_bit - 用于将audio_frame的长度填充到整数字节的值%0的位。

12.6 解码过程

在图12.1中,示出了解码器的操作。在比例因子的基础上,计算比特分发。对于MONO和DUAL_CHANNEL,每个通道独立地计算位分发(见第12.6.3.1节)。对于STEREO和JOINT_STEREO通道模式,组合两个通道的分发计算(见第12.6.3.2节)。然后针对每个子带导出量化级数,计算子带样本,最后通过多相合成滤波器生成PCM输出。本节将进一步描述此过程。

图12.1:解码器图

12.6.1 帧头

frame_header包含已编码比特流的配置。

12.6.1.1 CRC校验

为了检测传输错误,执行CRC校验。包括frame_header的所有位,除了syncword和crc_check,加上scale_factors的所有位。所使用的误差检测方法是具有生成多项式的 CRC-8。

CRC方法在图12.2给出的CRC校验图中描述。移位寄存器的初始状态为$0F。CRC校验中包含的所有位都输入到图中所示的电路。每个位输入后,移位寄存器移位一位。在最后一次移位操作之后,输出bn-1…b0构成要与流中的CRC校验字进行比较的字。如果这些单词不相同,则在已经应用CRC校验的字段中发生了传输错误。为了避免恼人的失真,推荐使用隐藏技术,例如静音实际帧或重复前一帧。

图12.2:CRC校验图。附加块代表独特或门。

12.6.2 比例因子

通道ch和子带sb的实际缩放因子根据以下公式计算:

12.6.3 位分发

12.6.3.1 单通道和双通道位分发

对于这两个通道模式,每个通道独立地计算位分发,并从比例因子得到。

在第一步中,每个通道独立地根据以下伪代码从比例因子中导出比特值。表offset8和offset8在第12.8节中。

然后搜索最大比特数索引。

接下来,一个迭代过程会发现有多少位位适合于位池。

因此,比特位如此分配直到到达最后的比特分片。

从第一通道的子带0开始分发剩余的位。

12.6.3.2 立体声和Joint_Stereo位分发

对于这两个通道模式,两个通道的位分发计算相结合,并从两个通道的比例因子中得出。

12.6.4 子带样本的重建

12.6.5 联合处理

对于JOINT_STEREO信道模式,以联合立体声模式发送的子带应按照以下方式计算:

12.6.6 合成过滤器

针对每个通道分别计算解码输出的合成。对于解码子带采样的每个块,应用合成滤波器来计算nrof_subbands连续音频采样。合成过滤器是根据以下的多相过滤器组:

其中M = nrof_subbands和L = 10*nrof_subbands。 M = 4和M = 8的原型滤波器(hp)在12.8节中。该合成滤波器组具有与[12]中使用的相同的结构。

更多细节参见[12]中的2.4.3.2.2节“合成子带滤波器”。如第12.6.4节“子带样本的重建”和第12.6.5节“联合处理”中计算的sb_sample[blk][ch][sb]值是合成滤波器的输入。合成滤波器的输出是解码的音频输出样本。

详细的过滤器框图如图12.3所示。

图12.3:合成滤波器的流程图

12.7 编码过程

在图12.4中,示出了编码器的操作。通过多相分析滤波器将输入PCM分成子带信号。对于每个子带,计算比例因子。在比例因子的基础上,比特分发,从那里,为每个子带导出级别。然后对子带样本进行缩放和量化,最后生成比特流。本节将进一步描述此过程。

图12.4:编码器图

12.7.1 分析过滤器

对每个通道分别计算输入PCM的分析。对于nrof_subbands连续PCM采样的每个块,应用分析滤波器来计算nrof_subbands子带样本。分析滤波器是根据以下的多相滤波器组:

其中M = nrof_subbands和L = 10*nrof_subbands。 M = 4和M = 8的原型滤波器都在12.8节。该分析滤波器组具有与[12]中使用的结构相同的结构。

详细的过滤器框图可以在图12.5中找到。

图12.5:分析过滤器的流程图

12.7.2 比例因子

对于每个子带,通过获取每个子带中的最大绝对值的下一较高比例因子值来计算比例因子。比例因子值在第12.6.2节中定义。

12.7.3联合立体声通道模式操作

对于JOINT_STEREO通道模式操作,应用稍微不同的过程。从L和R子带信号中导出和和差分子带信号,并计算这些和和差分子带信号的比例因子。可以使用简单的标准来确定L和R子带信号是传输还是和差和差分子带信号,例如,如果比例的和

L和R的因子大于和和差信号的比例因子的总和,子带使用联合编码进行编码。

12.7.4 位分发

编码器和解码器的位分发是完全相同的,并在第12.6.3节中描述。

12.7.5 量化

使用以下公式对子带样本进行归一化和量化。

12.8 表

在比特分发过程中使用LOUDNESS比特分配方法的情况下,使用接下来的两个表。

表12.21:四个子带的偏移表
表12.22:八个子带的偏移表

对于分析和合成滤波,滤波器系数在接下来的两个表中定义。这些表应以行方式读取。

表12.23:四个子带的滤波系数
表12.24:八个子带的滤波器系数1
表12.24:八个子带的滤波器系数2

12.9 比特率和帧长度的计算

使用以下公式计算比特率(bit_rate):

其中fs,nrof_subbands和nrof_blocks分别表示采样频率,子带数和块数。比特率以kb/s表示,因为fs以kHz表示。帧长度(frame_length)以字节表示为:

对于MONO和DUAL_CHANNEL通道模式,以及

用于STEREO和JOINT_ STEREO通道模式。

这里,nrof_channels和bitpool分别表示通道数和位池值。当使用联合立体声时,join = 1,否则为0.有关参考,请参见第12.5节。

13 附录C(信息):信令流

本节包含AVDTP中定义的用于音频流设置的典型信令过程的示例。本节仅供参考。有关详细信息,请参阅GAVDP [3]和AVDTP [4]。在这个例子中,SRC被假定为INT,而SNK为ACP。

13.1 音频流设置

两个设备的初始状态为<IDLE>。

SRC启动Stream Endpoint(SEP)发现过程。此过程用于返回每个流终端的媒体类型和SEID。 SRC找到音频流流终端。

然后,启动“获取所有功能”过程以收集SNK的服务功能。有两种服务能力;一个是应用服务能力,另一个是传输服务能力。 A2DP的应用服务能力包括音频编解码能力和内容保护能力。关于运输服务能力,参见AVDTP第4节[4]。

基于收集的SEP信息和服务能力,SRC确定SNK和SRC本身最合适的音频流参数(编解码器,内容保护和传输服务)。然后,SRC请求SNK使用流配置过程配置SNK的音频参数。 SRC还配置自身的音频参数。

然后,根据流建立过程中的定义建立L2CAP信道。最后,两个设备的状态都设置为<OPEN>。

图13.1:音频流设置

13.2 音频流

SRC通过用户启动的操作或内部事件启动开始流过程。两种设备的状态都从<OPEN>更改为<STREAMING>。此过程完成后,音频流即被启动。

图13.2:音频流

14 附录D:编解码器实现的要求

本节定义了制造商在设备中实现编解码器时要满足的要求。

14.1 解码器实现

14.1.1 SBC解码器

[D1]它可以解码SBC比特流语法。
[D2]其输出应至少满足SBC测试规范中对于配置,VBR,最大比特率,特殊测试和典型比特流定义的14比特标准。

14.1.2 可选编解码器解码器

[D3]其解码器的输出应满足为符合参考而定义的标准。

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

蓝牙不强加任何要求。

14.2 编码器实现

14.2.1 SBC编码器

[E1]其输出符合SBC比特流语法。

[E2]主观质量(通过标准化方式或通过客观测试方法测量,参见[20]和[21])应等同于参考编码器。

14.2.2 可选编解码器

[E3]其输出应符合相应的比特流语法。

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

蓝牙不强加任何要求。

15 附录E:首字母缩写词

首字母缩写词
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容