Performs the first stage of hybrid synthesis filter bank.
IppStatus ippsMDCTInv_MP3_32s(Ipp32s* pSrcXr, Ipp32s* pDstY, Ipp32s* pSrcDstOverlapAdd, int nonZeroBound, int* pPrevNumOfImdct, int blockType, int mixedBlock);
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. |
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 that the pointers pSrcXr and pDstY must reference different buffers.
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]. |
Copyright © 2000 - 2011, Intel Corporation. All rights reserved.