Bluetooth 解码用于a2dp的MPEG 2,4 AAC-LC LATM比特流

Bluetooth 解码用于a2dp的MPEG 2,4 AAC-LC LATM比特流,bluetooth,aac,mpeg-4,a2dp,Bluetooth,Aac,Mpeg 4,A2dp,我正在尝试解码我从苹果IPhone收到的用于蓝牙A2DP模式的比特流 根据苹果公司的说法,这种结构应该是 我的示例比特流是 36 00 47 00|80 60 00 01 00 06 3c ab 00 00 00 | 47 fc 00 00 b0 90 80 03 00 20 20 66 00 01 98 00 0d e1 20 00 00 00 00 00 00 00 00 00 00 1c 前四个字节是L2CAP,接下来的12个字节是AVDTP。但我无法解码其余的字节。请帮忙 我见过定义音

我正在尝试解码我从苹果IPhone收到的用于蓝牙A2DP模式的比特流

根据苹果公司的说法,这种结构应该是

我的示例比特流是

36 00 47 00|80 60 00 01 00 06 3c ab 00 00 00 | 47 fc 00 00 b0 90 80 03 00 20 20 66 00 01 98 00 0d e1 20 00 00 00 00 00 00 00 00 00 00 1c

前四个字节是L2CAP,接下来的12个字节是AVDTP。但我无法解码其余的字节。请帮忙

我见过定义音频复用的ISO 14496-3,但我仍然无法将其与字节联系起来。

“ISO/IEC 14496-3,第1子部分:主要部分,第1.6节:14496-1接口”是正确的选择

首先查看
AudioSyncStream()

LATM应以G 11位长的同步字开始:
同步字==(2B7)十六进制==(1010111)bin
。您的流似乎不是这样:
(47FC)hex==(0100011111111100)bin
,前11位是
(01000111111)bin
,“ISO/IEC 14496-3,子部分1:Main,第1.6节:与14496-1的接口”是查看的正确位置

首先查看
AudioSyncStream()


LATM应以G 11位长的同步字开始:
同步字==(2B7)十六进制==(1010111)bin
。您的流似乎不是这样的:
(47FC)hex==(0100011111111100)bin
,前11位是
(01000111111)bin
,我能够按如下方式解码标头:

Use same stream config       = 0 (1 bit)
StreamMuxConfig():

AudioSpecificConfig():


看起来我有一个旧版本的规范。正确的规范版本是ISO/IEC 14496-3:2005。苹果的蓝牙设计指南文档中也有打字错误(它指的是不存在的文档13818-3:2005!)。

我能够对标题进行如下解码:

Use same stream config       = 0 (1 bit)
StreamMuxConfig():

AudioSpecificConfig():


看起来我有一个旧版本的规范。正确的规范版本是ISO/IEC 14496-3:2005。苹果的蓝牙设计指南文档中也有打字错误(它指的是不存在的文档13818-3:2005!)。

最近,我也遇到了同样的问题。因为在一张纸上解码比特流不是很方便,所以我创建了一个基于ISO/IEC 14496-3参考实现的简单(用于调试目的)

正确解码问题中的流:

useSameStreamMux:1             = 0 => 0
audioMuxVersion:1              = 1 => 1
audioMuxVersionA:1             = 0 => 0
bytesForValue:2                = 00 => 0
valueTmp:8                     = 11111111 => 255 (taraBufferFullness)
allStreamsSameTimeFraming:1    = 1 => 1
numSubFrames:6                 = 000000 => 0
numProgram:4                   = 0000 => 0
numLayer:3                     = 000 => 0
bytesForValue:2                = 00 => 0
valueTmp:8                     = 00010110 => 22 (ascLen)
audioObjectType:5              = 00010 => 2
samplingFrequencyIndex:4       = 0100 => 4
channelConfiguration:4         = 0010 => 2
frameLengthFlag:1              = 0 => 0
dependsOnCoreCoder:1           = 0 => 0
extensionFlag:1                = 0 => 0
fillBits:6                     = 000000 => 0
frameLengthType:3              = 000 => 0
latmBufferFullness:8           = 11000000 => 192
otherDataPresent:1             = 0 => 0
crcCheckPresent:1              = 0 => 0
tmp:8                          = 00100000 => 32 (MuxSlotLengthBytes)
payload:8                      = 00100000 => 32
...
payload:8                      = 00011100 => 28
byteAlign:0                    = 0 => 0

最近,我也遇到了同样的问题。因为在一张纸上解码比特流不是很方便,所以我创建了一个基于ISO/IEC 14496-3参考实现的简单(用于调试目的)

正确解码问题中的流:

useSameStreamMux:1             = 0 => 0
audioMuxVersion:1              = 1 => 1
audioMuxVersionA:1             = 0 => 0
bytesForValue:2                = 00 => 0
valueTmp:8                     = 11111111 => 255 (taraBufferFullness)
allStreamsSameTimeFraming:1    = 1 => 1
numSubFrames:6                 = 000000 => 0
numProgram:4                   = 0000 => 0
numLayer:3                     = 000 => 0
bytesForValue:2                = 00 => 0
valueTmp:8                     = 00010110 => 22 (ascLen)
audioObjectType:5              = 00010 => 2
samplingFrequencyIndex:4       = 0100 => 4
channelConfiguration:4         = 0010 => 2
frameLengthFlag:1              = 0 => 0
dependsOnCoreCoder:1           = 0 => 0
extensionFlag:1                = 0 => 0
fillBits:6                     = 000000 => 0
frameLengthType:3              = 000 => 0
latmBufferFullness:8           = 11000000 => 192
otherDataPresent:1             = 0 => 0
crcCheckPresent:1              = 0 => 0
tmp:8                          = 00100000 => 32 (MuxSlotLengthBytes)
payload:8                      = 00100000 => 32
...
payload:8                      = 00011100 => 28
byteAlign:0                    = 0 => 0

我面临的问题也是找不到同步词。是否可以在没有LOA的情况下传输LATM?此外,我也无法计算出AVDTP头文件47 fc 00 b0 90 80 03 00 20后的前9个字节是什么。下一个字节“20”表示长度。我面临的问题也是找不到同步字。是否可以在没有LOA的情况下传输LATM?此外,我也无法计算出AVDTP头文件47 fc 00 b0 90 80 03 00 20后的前9个字节是什么。下一个字节“20”表示长度。
useSameStreamMux:1             = 0 => 0
audioMuxVersion:1              = 1 => 1
audioMuxVersionA:1             = 0 => 0
bytesForValue:2                = 00 => 0
valueTmp:8                     = 11111111 => 255 (taraBufferFullness)
allStreamsSameTimeFraming:1    = 1 => 1
numSubFrames:6                 = 000000 => 0
numProgram:4                   = 0000 => 0
numLayer:3                     = 000 => 0
bytesForValue:2                = 00 => 0
valueTmp:8                     = 00010110 => 22 (ascLen)
audioObjectType:5              = 00010 => 2
samplingFrequencyIndex:4       = 0100 => 4
channelConfiguration:4         = 0010 => 2
frameLengthFlag:1              = 0 => 0
dependsOnCoreCoder:1           = 0 => 0
extensionFlag:1                = 0 => 0
fillBits:6                     = 000000 => 0
frameLengthType:3              = 000 => 0
latmBufferFullness:8           = 11000000 => 192
otherDataPresent:1             = 0 => 0
crcCheckPresent:1              = 0 => 0
tmp:8                          = 00100000 => 32 (MuxSlotLengthBytes)
payload:8                      = 00100000 => 32
...
payload:8                      = 00011100 => 28
byteAlign:0                    = 0 => 0