Reconstructing AAC CPE
Revision as of 17:58, 5 March 2006 by Multimedia Mike (talk | contribs) (outline the reconstruction process)
Part of Understanding AAC
This page describes the process of reconstructing PCM data based on the decoded CPE parameters in an AAC bitstream.
Reconstruction Process
+-specrec.c:reconstruct_channel_pair() +-specrec.c:allocate_channel_pair() +-specrec.c:quant_to_spec() +-pns.c:pns_decode() +-ms.c:ms_decode() +-is.c:is_decode() +-ic_predict.c:ic_prediction() (main profile) +-ic_predict.c:pns_reset_pred_state() (main profile) +-(LTP & LD stuff) +-tns.c:tns_decode_frame() +-drc.c:drc_decode() +-filtback.c:ifilter_bank() +-ssr.c:ssr_decode() +-lt_predict.c:lt_update_state() +-sbr_dec.c:sbrDecodeInit() +-sbr_dec.c:sbrDecodeCoupleFrame()
reconstruct_channel_pair(2 ic_streams, 2 spec_data arrays(16 bit ints))
declare 2 1024-element float arrays for spectral coefficients (spec_coeff1 and spec_coeff2) quant_to_spec(ics1, spec_data1, ics1) quant_to_spec(ics2, spec_data2, ics2) if ics1.ms_mask_present pns_decode(ics1, ics2, spec_coef1, spec_coeff2) else pns_decode(ics1, spec_coef1) pns_decode(ics2, spec_coef2) ms_decode(ics1, ics2, spec_coef1, spec_coef2) is_decode(ics1, ics2, spec_coef1, spec_coef2) // main profile decoding // LTP decoding tns_decode(ics1, spec_coeff1) tns_decode(ics2, spec_coeff2) // DRC stuff ifilter_bank(ics1, spec_coeff1) ifilter_bank(ics2, spec_coeff2) save window shape for next frame (I thought frames were independent) // LTP stuff // SBR stuff