MDCTInv_AAC_32s16s

Maps time-frequency domain signal into time domain and generates 1024 reconstructed 16-bit signed little-endian PCM samples.

Syntax

IppStatus ippsMDCTInv_AAC_32s16s(Ipp32s* pSrcSpectralCoefs, Ipp16s* pDstPcmAudioOut, Ipp32s* pSrcDstOverlapAddBuf, int winSequence, int winShape, int prevWinShape, int pcmMode);

Parameters

pSrcSpectralCoefs

Pointer to the source vector containing 1024 time-frequency domain samples in Q13.18 format.

pSrcDstOverlapAddBuf

Pointer to the overlap-add buffer that contains the second half of the previous block windowed sequence in Q13.18. There are 1024 elements in this buffer.

winSequence

Flag that indicates which window sequence is used for current block.

winShape

Flag that indicates which window function is selected for current block.

prevWinShape

Flag that indicates which window function is selected for previous block.

pcmMode

Flag that indicates whether the PCM audio output is interleaved, that is has the pattern LRLRLR... or not. 1 stands for not interleaved. 2 stands for interleaved.

pDstPcmAudioOut

Pointer to the output vector with 1024 reconstructed 16-bit signed little-endian PCM samples in Q15, interleaved, if needed. The maximum computation error is less than 1 for each vector element. The total quadratic error for the vector is less than 96.

pSrcDstOverlapAddBuf

Pointer to the overlap-add buffer which contains the second half of the current block windowed sequence in Q13.18. The maximum computation error is less than 4 for each vector element. The total quadratic error for the vector is less than 1536.

Description

This function is declared in the ippac.h file. This function maps the time-frequency domain signal into time domain and generates 1024 reconstructed 16-bit signed little-endian PCM samples as output for each channel.

This module consists of

In order to adapt the time/frequency resolution of the filterbank to the characteristics of the input signal, a block switching tool is also adopted. For each channel, 1024 time-frequency domain samples are transformed into the time domain via the IMDCT.

After applying the windowing operation, the first half of the windowed sequence is added to the second half of the previous block windowed sequence to reconstruct 1024 output samples for each channel. Output can be interleaved according to pcmMode.

If pcmMode equals to 2, the output is in the sequence pDstPcmAudioOut[2*i], i=0 to 1023, that is, 1024 output samples are stored in the sequence: pDstPcmAudioOut [0], pDstPcmAudioOut[2], pDstPcmAudioOut[4],..., pDstPcmAudioOut[2046].

If pcmMode equals 1, the output is in the sequence pDstPcmAudioOut [i], i=0 to 1023.

You should also preallocate an input-output buffer pointed to by pSrcDstOverlapAddBuf for the overlap‑add operation.

Reset this buffer to zero before the first call and then use the output of the current call as the input of the next call for the same channel.

Return Values

ippStsNoErr

Indicates no error.

ippStsNullPtrErr

Indicates an error when at least one of the specified pointers is NULL.

ippStsAacWinSeqErr

Indicates an error when winSequence exceeds [0,3].

ippStsAacWinShapeErr

Indicates an error when winShape or prevWinShape exceeds [0,1].

ippStsAacPcmModeErr

Indicates an error when pcmMode exceeds [1,2].

Submit feedback on this help topic

Copyright © 2000 - 2011, Intel Corporation. All rights reserved.