Decoding AAC SCE and LFE
Part of Understanding AAC
An SCE is a single channel element. An LFE is a special type of SCE and may stand for low frequency element. These elements contain the encoded data (a single audio channel). Presently, this description is only concerned with what it takes to decode low complexity (LC) data. Processing that affects other features is skipped (except if the data needs to be parsed from the bitstream).
A note about the ad-hoc conventions in this syntax description: This notation:
6 bits: foo
indicates that the next 6 bits are to be read from the bitstream and stored in variable foo. Similarily, this notation:
indicates that the next (foo) quantity bits are to be read from the bitstream and stored in variable bar.
When FAAD2 wants to decode a SCE or LFE, this is the sequence of functions it calls in its internal hierarchy:
syntax.c:decode_sce_lfe() - syntax.c:single_lfe_channel_element() - syntax.c:individual_channel_stream() - (SBR decoding stuff) - specrec.c:reconstruct_single_channel()
declare an ic_stream structure: ics declare an array of 1024 16-bit ints for spectral data: spec_data 4 bits: element instance tag individual_channel_stream(ics, spec_data) reconstruct_single_channel(ics, spec_data)
individual_channel_stream(ic_stream ics, spec_data)
This process is detailed in Decoding AAC CPE.