Converts LP coefficients to LSP coefficients.
IppStatus ippsLPCToLSP_G729_16s(const Ipp16s* pSrcLPC, const Ipp16s* pSrcPrevLSP, Ipp16s* pDstLSP);
IppStatus ippsLPCToLSP_G729A_16s(const Ipp16s* pSrcLPC, const Ipp16s* pSrcPrevLSP, Ipp16s* pDstLSP);
IppStatus ippsLPCToLSP_G729A_32f(const Ipp32f* pSrcLPC, const Ipp32f* pSrcPrevLsp, Ipp32f* pDstLSP);
IppStatus ippsLPCToLSP_G729_32f(const Ipp32f* pSrcLPC, const Ipp32f* pSrcPrevLsp, Ipp32f* pDstLSP);
pSrcLPC |
Pointer to the LP coefficients vector [11], in Q12 for 16s data. |
pSrcPrevLSP |
Pointer to the previous LSP coefficients vector [10], in Q15 for 16s data. |
pDstLSP |
Pointer to the computed LSP coefficients vector [10]. |
These functions are declared in the ippsc.h file. They convert 10th order LP coefficients to LSP coefficients. The first function ippsLPCToLSP_G729 is designed for G.729/B codec while the second function ippsLPCToLSP_G729A is designed for G.729A codec. Functions perform the following steps:
1. Calculate the polynomial coefficients of F1(z) and Fz 2(z), using the following recursive relations:
where f1(0) = f2(0) = 1.0.
2. Use Chebyshev polynomials to evaluate F1(z) and Fz 2(z). The Chebyshev polynomials are given by.
For G.729/B, evaluate F1(z) and Fz 2(z) at 60 points equally spaced between 0 and π and check for sign changes. A sign change indicates the existence of a root and the sign change interval is then divided four times to track the root. For G.729A, evaluate F1(z) and Fz 2(z) at 50 points equally spaced between 0 and π and check for sign changes. A sign change indicates the existence of a root and the sign change interval is then divided two times to track the root.
3. If all 10 roots needed to determine LSP coefficients are not found, just use the previous set of LSP coefficients.
ippStsNoErr |
Indicates no error. |
ippStsNullPtrErr |
Indicates an error when one of the specified pointers is NULL. |
Copyright © 2000 - 2011, Intel Corporation. All rights reserved.