Transforms SBR-processed subband signals into time domain samples and performs downsampling at the same time.
Case 1: Operation on float-point signal.
IppStatus ippsSynthesisFilter_SBR_CToR_32fc32f_D2L (const Ipp32fc* pSrc[], Ipp32f* pDst, const Ipp32f* pSbrTableWindow, int numLoop, const IppsFilterSpec_SBR_C_32fc* pFilterSpec, Ipp8u* pWorkBuf);
IppStatus ippsSynthesisFilter_SBR_CToR_32f_D2L(const Ipp32f* pSrcRe[], const Ipp32f* pSrcIm[], Ipp32f* pDst, const Ipp32f* pSbrTableWindow, int numLoop, const IppsFilterSpec_SBR_C_32f* pFilterSpec, Ipp8u* pWorkBuf);
IppStatus ippsSynthesisFilter_SBR_RToR_32f_D2L(const Ipp32f* pSrc[], Ipp32f* >pDst, const Ipp32f* pSbrTableWindow, int numLoop, const IppsFilterSpec_SBR_R_32f* pFilterSpec, Ipp8u* pWorkBuf);
Case 2: Operation on fixed-point signal.
IppStatus ippsSynthesisFilter_SBRHQ_32sc32s(const Ipp32sc* pSrc, Ipp32s* pDst, const IppsFilterSpec_SBR_C_32sc* pFilterSpec);
IppStatus ippsSynthesisFilter_SBRLP_32s(const Ipp32s* pSrc, Ipp32s* pDst, const IppsFilterSpec_SBR_R_32s* pFilterSpec);
pSrc |
Pointer or array of pointers to the SBR-processed subband signals. |
pSrcRe |
Array of pointers to the real parts of SBR-processed subband signals. |
pSrcIm |
Array of pointers to the imaginary parts of SBR-processed subband signals. |
pDst |
Pointer to the output vector with time domain output samples. |
pSbrTableWindowDown |
Pointer to the window table that is used by decoder SBR synthesis filter. This parameter is used only for float-point flavors. |
numLoop |
Parameter equal to 32 if frame size of the core decoded signal is 1024, and to 30 if frame size of the core decoded signal is 960. |
pFilterSpec |
Pointer to the synthesis SBR specification structure. |
pWorkBuf |
Pointer to the work buffer. |
These functions are declared in the ippac.h file. The functions transform SBR-processed subband signals into time domain samples and perform downsampling at the same time according to pFilterSpec specification parameters.
Float-point case.
The function ippsSynthesisDownFilter_SBR_CToR_32fc32f_D2L uses the complex input data type and real output data type, processes the input complex matrix pSrc and stores the result in the real array pDst.
The function ippsSynthesisDownFilter_SBR_CToR_32f_D2L uses the real data type and stores the result separately in pSrcRe matrix and pSrcIm matrix.
The functionality of ippsSynthesisDownFilter_SBR_CToR_32fc32f_D2L and ippsSynthesisDownFilter_SBR_CToR_32f_D2L is described as follows:
Note that Steps 1 through 4 are repeated for 0 ≤ l < numLoop and
pSrcTableWindowDown[n] = c[2n], n = 0, .., 320,
where coefficients c[i] are coefficients of the QMF bank window from ISO14496.
The function ippsSynthesisDownFilter_SBR_RToR_32f_D2L uses the real data type, processes the input real matrix pSrc and stores the result in the real array pDst.
The functionality of ippsSynthesisDownFilter_SBR_RToR_32f_D2L can be described in the same way as the above SynthesisFilter_SBR functions but Step 2 changes as follows:
The functions ippsSynthesisDownFilter_SBR_CToR_32f_D2L and ippsSynthesisDownFilter_SBR_RToR_32f_D2L are used in the float-point version of AAC decoder included into IPP Samples. See introduction to this section.
Fixed-point case.
The functions with integer values do not saturate any intermediate or output data so the user should watch closely for overload.
In ippsSynthesisDownFilter_SBRHQ_32sc32s and ippsSynthesisDownFilter_SBRLP_32s the source and destination have different positions of decimation point (Q format). If pSrc has Q(N) format, pDst has Q(N-6) format. The recommended Q of the source is Q12.
The functionality of ippsSynthesisDownFilter_SBRHQ_32sc32s is described as follows:
Here pWin[n] = c[2n] and c[n] are coefficients of the QMF bank window from ISO14496A.
The functionality of ippsSynthesisDownFilter_SBRLP_32s can be described in the same way as the above function but Step 2 changes as follows:
The functions ippsSynthesisDownFilter_SBRHQ_32sc32s and ippsSynthesisDownFilter_SBRLP_32s are used in the fixed-point version of AAC decoder included into IPP Samples. See introduction to this section.
ippStsNoErr |
Indicates no error. |
ippStsNullPtrErr |
Indicates an error when at least one of the specified pointers is NULL. |
ippStsContextMatchErr |
Indicates an error when the identifier pFilterSpec is incorrect. |
Copyright © 2000 - 2010, Intel Corporation. All rights reserved.