This blog is only to remind myself of what I've learned (from others or by myself) and only for knowledge sharing. External sources will be clearly stated in [Reference] of each article. I hope this blog won't infringe any copyrights and that it can be useful for interested blog readers.

2008年2月18日 星期一

mpeg4-generic parsing for AAC over RFC3640


Preface

Reference
  • RFC3640
  • ISO/IEC 14496-3
  • ISO/IEC 13818-7, MPEG-2 Advanced Coding (AAC)

AU-header structure



AAC frame in AU-header


!!NOTES:
1) DVB-H supports High bit-rate AAC while streaming

2) The AU-headers are configured using MIME format parameters
may be empty. Don’t know how to know it according to SDP description??
(if anyone knows the answer, please let me know..:P)

3) If AAC frames are carried over RFC3640, ADTS header is needed for each AAC frame
for AAC decoder using the following info.

++++++++++++++++++++++++++
| ADTS header (length may vary) |
++++++++++++++++++++++++++
| AAC frame (length may vary) |
++++++++++++++++++++++++++

Example:
[ADTS header]
Please refer to adts_frame() of ISO/IEC 13818-7

[SDP info]
a=rtpmap:97 mpeg4-generic/32000/1
a=fmtp:97 streamType=5;profile-level-id=41;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1288

=> clock-rate = 32000

=> "config" should be parsed based on AudioSpecificConfig() in ISO/IEC 14496-3,

and when forming a ADTS header for an AAC frame,

sampling_frequency_index, channel_configuration needs to be

extracted from "config" field and

frame_length is calculated from RTP payload when parsing AU-header.

---------------------------------------------------------

沒有留言: