MDCTInv_MP3

Performs the first stage of hybrid synthesis filter bank.

Syntax

IppStatus ippsMDCTInv_MP3_32s(Ipp32s* pSrcXr, Ipp32s* pDstY, Ipp32s* pSrcDstOverlapAdd, int nonZeroBound, int* pPrevNumOfImdct, int blockType, int mixedBlock);

Parameters

pSrcXr

Pointer to the vector of requantized spectral samples for the current channel and granule, represented in Q5.26 format.

pDstY

Pointer to the vector of IMDCT outputs in Q7.24 format for input to PQMF bank.

pSrcDstOverlapAdd

Pointer to the overlap-add buffer. Contains the overlapped portion of the previous granule IMDCT output in Q7.24 format. The function updates this buffer.

nonZeroBound

Limiting bound for spectral coefficients. All spectral coefficients exceeding this boundary become zero for the current granule and channel.

pPrevNumOfImdct

Pointer to the number of IMDCTs computed for the current channel of the previous granule. The function updates this parameter so that it references the number of IMDCTs for the current granule.

blockType

Block type indicator.

mixedBlock

Mixed block indicator.

Description

The function ippsMDCTInv_MP3 is declared in the ippac.h file. This function performs the first stage of the hybrid synthesis filter bank. The following operations are performed:

Since IMDCT is a lapped transform, you should preallocate a buffer referenced by pSrcDstOverlapAdd to maintain the IMDCT overlap-add state.

The buffer must contain 576 elements. Prior to the first call to the synthesis filter bank, all elements of the overlap-add buffer should be set to zero. In between all subsequent calls, the MP3 application must preserve the contents of the overlap-add buffer.

Upon entry to ippsMDCTInv_MP3_32s, the overlap-add buffer mustd contain the IMDCT output generated by operating on the previous granule. Upon exit from ippsMDCTInv_MP3_32s, the overlap-add buffer contains the overlapped portion of the output generated by operating on the current granule.

Upon return from the function, the IMDCT sub-band output samples are organized as follows:

pDstY[j*32+subband], for j = 0 to 17, subband = 0 to 31.

Q5.26 designates that 5 bits before and 26 bits after fixed point position are used to present a 32-bit value in the fixed point format.

Q7.24 designates that 7 bits before and 24 bits after fixed point position are used to present a 32-bit value in the fixed point format.

Note iconNote

Note that the pointers pSrcXr and pDstY must reference different buffers.

Return Values

ippStsNoErr

Indicates no error.

ippStsBadArgErr

Indicates an error condition if any of the specified pointers is NULL.

ippStsErr

Indicates an error when one or more of the following input data errors are detected: either blockType exceeds [0,3], or mixedBlock exceeds [0,1], or nonZeroBound exceeds [0,576], or pPrevNumOfImdct exceeds [0,32].

Submit feedback on this help topic

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