1

Bluetooth A2DP プロファイル用に Apple IPhone から受信したビットストリームをデコードしようとしています。

Appleによると、構造は

ビットストリーム構造

私が持っているサンプルビットストリームは

36 00 47 00 | 80 60 00 01 00 06 3c ab 00 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 00 00 00 00 00 00 00 00 00 00 00 1c

最初の 4 バイトは L2CAP で、次の 12 バイトは AVDTP です。しかし、残りのバイトをデコードできません。親切に助けてください。

AudioMuxElement を定義する ISO 14496-3 を見たことがありますが、それでもバイトに関連付けることができません。

4

3 に答える 3

3

最近、私はまったく同じ問題を抱えています。紙の上でビットストリームをデコードするのはあまり便利ではないので、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
于 2016-10-01T16:18:13.877 に答える