Got mails continuously from everywhere throwing question to me about AAC audio in H.323.
So I arranged this post to example my previous posts: http://rg4.net/archives/1480.html, http://rg4.net/archives/1126.html, http://rg4.net/archives/1112.html
The pcap file for this example can be downloaded here: HUAWEI_TE600-vs-ZTE_T800.pcapnp
Here it is.
1. Basic knowledge: AAC LD descriptions in 14496-3
It operates at up to 48 kHz sampling rate and uses a frame length of 512 or 480 samples, compared to the 1024 or 960 samples used in standard MPEG-2/4 AAC to enable coding of general audio signals with an algorithmic delay not exceeding 20 ms. Also the size of the window used in the analysis and synthesis filterbank is reduced by a factor of 2.
And Table 1.3 — Audio Profiles definition of 14496-3 explained AAC format definition, AAC LC or AAC LD.
2. Basic knowledge: AAC capability in description of H.245 TCS
maxBitRate: 640
noncollapsing:
ProfileAndLevel: nonCollapsing item –> parameterIdentifier: standard = 0
AAC format: nonCollapsing item –> parameterIdentifier: standard = 1
AudioObjectType: nonCollapsing item –> parameterIdentifier: standard = 3
Config(Including sample rate and channel parameters): nonCollapsing item –> parameterIdentifier: standard = 4
MuxConfig: nonCollapsing item –> parameterIdentifier: standard = 8
3. H.245 TCS of HUAWEI TE60 and ZTE T800
HUAWEI TE60: 172.16.219.105
————————————————–
There are two AAC capabilities:
Capability 1:
collapsing:
collapsing item –> parameterIdentifier=2, parameterValue=2
collapsing item –> parameterIdentifier=5, parameterValue=1
noncollapsing:
ProfileAndLevel: 24
AAC format: logical (0)
AudioObjectType: 23
Capability 2:
collapsing:
collapsing item –> parameterIdentifier=2, parameterValue=2
collapsing item –> parameterIdentifier=5, parameterValue=1
noncollapsing:
ProfileAndLevel: 24
AudioObjectType: 23
ZTE T800: 172.16.219.103
————————————————–
There are four AAC capabilities:
Capability 1:
Capability 2:
Capability 3:
Capability 4:
4. Detail parameters in OLC command
TE60 OLC to T800:
————————————————–
maxBitRate: 1280
collapsing:
item 0 –> parameterIdentifier=2, parameterValue=2
item 1 –> parameterIdentifier=5, parameterValue=1
noncollapsing:
item 0 –> parameterIdentifier=0, value=25
item 1 –> parameterIdentifier=1, value=logical (0)
item 2 –> parameterIdentifier=3, value=23
item 3 –> parameterIdentifier=6, value=logical (0)
item 4 –> parameterIdentifier=8, octetString = 41 01 73 2a 00 11 00
item 5 –> parameterIdentifier=9, octetString = 00 00 00
Explanation:
AOT=23 –> AAC LD
MuxConfig = 41 01 73 2a 00 11 00 –> LATM format
Sample rate = (MuxConfig[2]&0x0f) = 0x73 & 0x0f = 3 = 48K Hz
Channel = (MuxConfig[3]&0xf0)>>4 = (0x2a & 0xf0) >> 4 = 0x20 >> 4 = 2 = Stereo
HUAWEI sent open logical channel with AAC LD stereo to ZTE.
T800 OLC to TE60:
————————————————–
maxBitRate: 1280
collapsing:
item 0 –> parameterIdentifier=2, parameterValue=2
item 1 –> parameterIdentifier=5, parameterValue=1
noncollapsing:
item 0 –> parameterIdentifier=0, value=25
item 1 –> parameterIdentifier=1, value=logical (0)
item 2 –> parameterIdentifier=3, value=23
item 3 –> parameterIdentifier=6, value=logical (0)
item 4 –> parameterIdentifier=8, octetString = 41 01 73 1a 00 11 00
item 5 –> parameterIdentifier=9, octetString = 00 00 00
Explanation:
AOT=23 –> AAC LD
MuxConfig = 41 01 73 1a 00 11 00 –> LATM format
Sample rate = (MuxConfig[2]&0x0f) = 0x73 & 0x0f = 3 = 48K Hz
Channel = (MuxConfig[3]&0xf0)>>4 = (0x1a & 0xf0) >> 4 = 0x10 >> 4 = 1 = Mono
ZTE sent open logical channel with AAC LD mono to HUAWEI.
Any furture questions?
HVXC is not a normal format of AAC, it’s under some particular patents protection, so there’s no way to decode if you are using open source codecs like ffmpeg, faad, etc.
Try some commercial codecs.
Could you explain this in detail:
41 01 73 1a 00 11 00
thanks !
please, can you help me explain the structure of RTP codec AAC LD for ZTE ?
Thanks a lot.Learned from your analysis!
Some questiones:
1.HUAWEI IP:172.16.219.103;ZTE IP:172.16.219.105;KDV GK:172.16.220.104
2.Both of HUAWEI and ZTE have 4 AAC capabilitities
3.AOT=23->AAC LD,not AAC ELD
4.StreamMuxConfig=41 01 73 1a 00 11 00->LATM Header Info,if the stream is not LATM, there is no need to contain standard 8 and it should contain standard 6 to set the ADTS header info(AudioSpecifigConfig)
Hi Snow,
Q1
172.16.219.103 –> ZTE T800
172.16.219.105 –> HUAWEI TE60
172.16.220.104 –> KDV GK
Q2
Yes, both of HUAWEI and ZTE have 4 AAC capabilitities, but both them have some private format of AAC.
Typo, and has been corrected in the post.
Q4
Yes, StreamMuxConfig is in LATM format. Let me explain your “standard 6 -> muxConfigPresent” description to other readers:
If the muxConfigPresent value is 0, streamMuxConfig is not multiplexed into the audio RTP payload. (OUT-OF-BAND)
if the muxConfigPresent value is 1, streamMuxConfig is multiplexed into the audio RTP payload. (IN-BAND)
Thanks for your correction.