5459 lines
270 KiB
C
5459 lines
270 KiB
C
/* /////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// INTEL CORPORATION PROPRIETARY INFORMATION
|
|
// This software is supplied under the terms of a license agreement or
|
|
// nondisclosure agreement with Intel Corporation and may not be copied
|
|
// or disclosed except in accordance with the terms of that agreement.
|
|
// Copyright (c) 2001-2009 Intel Corporation. All Rights Reserved.
|
|
//
|
|
// Intel(R) Integrated Performance Primitives
|
|
// Speech Coding
|
|
//
|
|
*/
|
|
|
|
#if !defined( __IPPSC_H__ ) || defined( _OWN_BLDPCS )
|
|
#define __IPPSC_H__
|
|
|
|
#if defined (_WIN32_WCE) && defined (_M_IX86) && defined (__stdcall)
|
|
#define _IPP_STDCALL_CDECL
|
|
#undef __stdcall
|
|
#endif
|
|
|
|
#ifndef __IPPDEFS_H__
|
|
#include "ippdefs.h"
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#if !defined( _OWN_BLDPCS )
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Speech compression bit rates structure
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
typedef enum {
|
|
IPP_SPCHBR_4750 = 0, /* 4.75 kbps GSMAMR */
|
|
IPP_SPCHBR_5150, /* 5.15 kbps GSMAMR */
|
|
IPP_SPCHBR_5300, /* 5.3 kbps G723.1 */
|
|
IPP_SPCHBR_5900, /* 5.9 kbps GSMAMR */
|
|
IPP_SPCHBR_6300, /* 6.3 kbps G723.1 */
|
|
IPP_SPCHBR_6600, /* 6.60 kbps AMRWB */
|
|
IPP_SPCHBR_6700, /* 6.7 kbps GSMAMR */
|
|
IPP_SPCHBR_7400, /* 7.4 kbps GSMAMR */
|
|
IPP_SPCHBR_7950, /* 7.95 kbps GSMAMR */
|
|
IPP_SPCHBR_8850, /* 8.85 kbps AMRWB */
|
|
IPP_SPCHBR_9600, /* 9.60 kbps G728 */
|
|
IPP_SPCHBR_10200, /* 10.2 kbps GSMAMR */
|
|
IPP_SPCHBR_12200, /* 12.2 kbps GSMAMR */
|
|
IPP_SPCHBR_12650, /* 12.65 kbps AMRWB */
|
|
IPP_SPCHBR_12800, /* 12.8 kbps G728 */
|
|
IPP_SPCHBR_14250, /* 14.25 kbps AMRWB */
|
|
IPP_SPCHBR_15850, /* 15.85 kbps AMRWB */
|
|
IPP_SPCHBR_16000, /* 16 kbps G726, G728 */
|
|
IPP_SPCHBR_18250, /* 18.25 kbps AMRWB */
|
|
IPP_SPCHBR_19850, /* 19.85 kbps AMRWB */
|
|
IPP_SPCHBR_23050, /* 23.05 kbps AMRWB */
|
|
IPP_SPCHBR_23850, /* 23.85 kbps AMRWB */
|
|
IPP_SPCHBR_24000, /* 24 kbps G726, AMRWBE */
|
|
IPP_SPCHBR_32000, /* 32 kbps G726 */
|
|
IPP_SPCHBR_40000, /* 40 kbps G726 */
|
|
IPP_SPCHBR_DTX, /* Discontinuous TX mode for various codecs*/
|
|
/* IPP_SPCHBR_6400, 6.4 kbps G729D
|
|
// IPP_SPCHBR_8000, 8.0 kbps G729
|
|
// IPP_SPCHBR_11800, 11.8 kbps G729E
|
|
// IPP_SPCHBR_13000, 13.0 kbps GSMFR
|
|
// IPP_SPCHBR_48000, 48 kbps G722
|
|
// IPP_SPCHBR_56000, 56 kbps G722
|
|
// IPP_SPCHBR_64000, 64 kbps G711, G722 */
|
|
IPP_SPCHBR_10400, /* 10.4 kbps AMRWBE */
|
|
IPP_SPCHBR_12000, /* 12.0 kbps AMRWBE */
|
|
IPP_SPCHBR_13600, /* 13.6 kbps AMRWBE */
|
|
IPP_SPCHBR_15200, /* 15.2 kbps AMRWBE, iLBC */
|
|
IPP_SPCHBR_16800, /* 16.8 kbps AMRWBE */
|
|
IPP_SPCHBR_19200, /* 19.2 kbps AMRWBE */
|
|
IPP_SPCHBR_20800, /* 20.8 kbps AMRWBE */
|
|
IPP_SPCHBR_13330 /* 13.33 kbps iLBC */
|
|
/* new bitrates to be added to the end */
|
|
} IppSpchBitRate;
|
|
|
|
typedef enum {
|
|
IPP_PCM_MULAW = 0, /* mu-Law */
|
|
IPP_PCM_ALAW, /* A-Law */
|
|
IPP_PCM_LINEAR /* uniform PCM */
|
|
} IppPCMLaw;
|
|
|
|
typedef enum {
|
|
IPP_PCM_FREQ_8000 = 8000, /* 8 kHz */
|
|
IPP_PCM_FREQ_16000 = 16000, /* 16 kHz */
|
|
IPP_PCM_FREQ_22050 = 22050, /* 22.05 kHz */
|
|
IPP_PCM_FREQ_32000 = 32000, /* 32 kHz */
|
|
IPP_PCM_FREQ_11025 = 11025
|
|
} IppPCMFrequency;
|
|
|
|
typedef enum {
|
|
ippsNrNone,
|
|
ippsNrLow,
|
|
ippsNrMedium,
|
|
ippsNrNormal,
|
|
ippsNrHigh,
|
|
ippsNrAuto
|
|
} IppsNRLevel;
|
|
|
|
typedef enum {
|
|
ippsNrNoUpdate=-1,
|
|
ippsNrUpdate,
|
|
ippsNrUpdateAll
|
|
} IppsNrMode;
|
|
|
|
typedef enum {
|
|
ippsNrSmoothDynamic=-1,
|
|
ippsNrSmoothStatic,
|
|
ippsNrSmoothOff
|
|
} IppsNrSmoothMode;
|
|
|
|
typedef enum {
|
|
IPP_G722_VOICED,
|
|
IPP_G722_UNVOICED,
|
|
IPP_G722_TRANSIENT,
|
|
IPP_G722_WEAKLY_VOICED,
|
|
IPP_G722_VUV_TRANSITION
|
|
} IppG722SBClass;
|
|
|
|
typedef struct {
|
|
Ipp16s pPrevSignalSublevel[9]; /* signal sublevel vector */
|
|
Ipp16s pPrevSignalLevel[9]; /* previous signal level vector */
|
|
Ipp16s pPrevAverageLevel[9]; /* average signal level */
|
|
Ipp16s pBkgNoiseEstimate[9]; /* background noise estimate vector */
|
|
Ipp16s pFifthFltState[6]; /* 5th order filters history */
|
|
Ipp16s pThirdFltState[5]; /* 3rd order filters history */
|
|
Ipp16s burstCount; /* burst counter */
|
|
Ipp16s hangCount; /* hangover counter */
|
|
Ipp16s statCount; /* stationarity counter */
|
|
Ipp16s vadReg; /* intermediate vad decision */
|
|
Ipp16s complexHigh; /* high for complex signal decision */
|
|
Ipp16s complexLow; /* low for ccomplex signal decision */
|
|
Ipp16s complexHangTimer; /* complex hangover timer */
|
|
Ipp16s complexHangCount; /* complex hangover counter */
|
|
Ipp16s complexWarning; /* complex_warining flag */
|
|
Ipp16s corrHp; /* High-pass filtered signal correlation */
|
|
Ipp16s pitchFlag; /* pitch flag by pitch detection */
|
|
} IppGSMAMRVad1State;
|
|
|
|
typedef struct {
|
|
Ipp32s pEngyEstimate[16]; /* channel energy estimate vector of */
|
|
/* current half-frame */
|
|
Ipp32s pNoiseEstimate[16]; /* channel noise estimate vector of */
|
|
/* current half-frame */
|
|
Ipp16s pLongTermEngyDb[16]; /* channel long-term log energy vector */
|
|
/* of current half-frame */
|
|
Ipp16s preEmphasisFactor; /* pre-emphasize factor */
|
|
Ipp16s updateCount; /* update counter */
|
|
Ipp16s lastUpdateCount; /* last update counter */
|
|
Ipp16s hysterCount; /* hyster counter */
|
|
Ipp16s prevNormShift; /* previous normalize shift bits */
|
|
Ipp16s shiftState; /* previous half-frame shift state */
|
|
Ipp16s forcedUpdateFlag; /* forced update flag */
|
|
Ipp16s ltpSnr; /* long-term peak SNR */
|
|
Ipp16s variabFactor; /* background noise variability factor */
|
|
Ipp16s negSnrBias; /* negative SNR sensitivity Bias */
|
|
Ipp16s burstCount; /* burst counter */
|
|
Ipp16s hangOverCount; /* hangover counter */
|
|
Ipp32s frameCount; /* frame counter */
|
|
} IppGSMAMRVad2State;
|
|
|
|
typedef struct Ipp32s_EC_Sfs_Def {
|
|
Ipp32s val;
|
|
Ipp32s sf;
|
|
} Ipp32s_EC_Sfs;
|
|
|
|
#endif /* _OWN_BLDPCS */
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// Functions declarations
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippscGetLibVersion
|
|
// Purpose: getting of the library version
|
|
// Returns: the structure of information about version
|
|
// of ippSC library
|
|
// Parameters:
|
|
//
|
|
// Notes: not necessary to release the returned structure
|
|
*/
|
|
IPPAPI( const IppLibraryVersion*, ippscGetLibVersion, (void) )
|
|
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsHighPassFilterSize
|
|
// Purpose: Knowing of G729 high pass preprocessing filter size demand
|
|
// Parameters:
|
|
// pSize Pointer to the output value of the memory size needed for filtering
|
|
// Returns:
|
|
// ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI( IppStatus, ippsHighPassFilterSize_G729, (int *pSize) )
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsHighPassFilterInit
|
|
// Purpose: Initialization of the memory allocated for preprocessing filter
|
|
// Parameters:
|
|
// pMem pointer to the memory supplied for filtering
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI( IppStatus, ippsHighPassFilterInit_G729, (const Ipp16s *pCoeff, char* pMem) )
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsHighPassFilter
|
|
// Purpose: G729 input signal preprocessing, consists of two functions applied:
|
|
// - scaling ( divide by a factor 2)
|
|
// - high-pass filtering
|
|
// Parameters:
|
|
// pSrcDst pointer to the vector for inplace operation
|
|
// pMem pointer to the memory supplied for filtering
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI( IppStatus, ippsHighPassFilter_G729_16s_ISfs, (Ipp16s* pSrcDst, int len, int scaleFactor,
|
|
char* pMem) )
|
|
IPPAPI( IppStatus, ippsHighPassFilter_G723_16s, (const Ipp16s* pSrc, Ipp16s* pDst, int* pMem) )
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsMul
|
|
// Purpose: multiply operations upon every element of
|
|
// the source vectors.
|
|
// rounding to nearest:
|
|
// const1 = 1<<(scaleFactor-1)
|
|
// (a*b+const1)>>scaleFactor;
|
|
// Parameters:
|
|
// pSrc pointer to the input vector
|
|
// pSrc1 pointer to the first source vector
|
|
// pSrc2 pointer to the second source vector
|
|
// pDst pointer to the output vector
|
|
// pSrcDst pointer to the source/destination vector
|
|
// len length of the vectors
|
|
// scaleFactor scale factor value
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI( IppStatus, ippsMul_NR_16s_Sfs, (const Ipp16s* pSrc1, const Ipp16s* pSrc2,
|
|
Ipp16s* pDst, int len, int scaleFactor) )
|
|
IPPAPI( IppStatus, ippsMul_NR_16s_ISfs, (const Ipp16s* pSrc, Ipp16s* pSrcDst,
|
|
int len, int scaleFactor) )
|
|
IPPAPI( IppStatus, ippsMulC_NR_16s_ISfs, (Ipp16s val, Ipp16s* pSrcDst, int len, int scaleFactor) )
|
|
IPPAPI( IppStatus, ippsMulC_NR_16s_Sfs, ( const Ipp16s* pSrc, Ipp16s val, Ipp16s* pDst,
|
|
int len, int scaleFactor) )
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsMulPowerC
|
|
// Purpose: power weighting of every element of the source vectors
|
|
// dst[i] = pow(val, i)*src[i] ; i=0..len-1
|
|
// with rounding to nearest:
|
|
// const1 = 1<<(scaleFactor-1)
|
|
// (a*b+const1)>>scaleFactor;
|
|
// Parameters:
|
|
// pSrc pointer to the input vector
|
|
// pDst pointer to the output vector
|
|
// len length of the vectors
|
|
// scaleFactor scale factor value
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI( IppStatus, ippsMulPowerC_NR_16s_Sfs, (const Ipp16s* pSrc, Ipp16s val, Ipp16s* pDst,
|
|
int len, int scaleFactor) )
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsInvSqrt
|
|
// Purpose: Inverted square root with normalization
|
|
// Parameters:
|
|
// pSrcDst pointer to the input/output vector
|
|
// len length of the input vector
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI( IppStatus, ippsInvSqrt_32s_I, (Ipp32s *pSrcDst, int len ) )
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsAutoScale
|
|
// Purpose: Autoscaling: Find and normalize (shift left) the absolute
|
|
// maximal element and then do the same shift for all other elements
|
|
// Parameters:
|
|
// pSrc pointer to the input vector
|
|
// pDst pointer to the output vector
|
|
// pSrcDst pointer to the input/output vector
|
|
// len length of the input vector
|
|
// pScale pointer to the output scaling factor
|
|
// (number of bit the output vector has been shifted left)
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI( IppStatus, ippsAutoScale_16s, (const Ipp16s *pSrc, Ipp16s *pDst, int Len , int *pScale) )
|
|
IPPAPI( IppStatus, ippsAutoScale_16s_I, ( Ipp16s *pSrcDst, int Len , int *pScale) )
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsAutoCorrLagMax
|
|
// Purpose: Find the maximum of the correlation for the given lag range
|
|
// r[lag]=SUM(n=0,...,len-1) src[n]*src[n-lag] - backward
|
|
// r[lag]=SUM(n=0,...,len-1) src[n]*src[n+lag] - forward
|
|
// within the range [lowerLag,upperLag] of the lags.
|
|
// Parameters:
|
|
// pSrc pointer to the input vector
|
|
// len length of the input vector
|
|
// lowerLag lower input lag value
|
|
// upperLag upper input lag value
|
|
// pMax pointer to the output maximum of the correlation
|
|
// maxLag pointer to the output lag value that hold maximum
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI( IppStatus, ippsAutoCorrLagMax_Fwd_16s, (const Ipp16s *pSrc, int len, int lowerLag,
|
|
int upperLag, Ipp32s *pMax, int *maxLag ) )
|
|
IPPAPI( IppStatus, ippsAutoCorrLagMax_Inv_16s, (const Ipp16s *pSrc, int len, int lowerLag,
|
|
int upperLag, Ipp32s *pMax, int *maxLag ) )
|
|
IPPAPI( IppStatus, ippsAutoCorrLagMax_32f,(const Ipp32f *pSrc, int len, int lowerLag,
|
|
int upperLag, Ipp32f *pMax, int *maxLag ))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsAutoCorr_NormE
|
|
// Purpose: Compute autocorrelation using formula:
|
|
// r[n]=SUM(i=0,...,len-n-1) src[i]*src[i+n], n=0,...,lenDst-1
|
|
// Norm in function name means multiplication of result by normalzation factor
|
|
// of corr[0].
|
|
// Parameters:
|
|
// pSrc pointer to the input vector
|
|
// len length of the input vector
|
|
// step
|
|
// pDst pointer to the output autocorrelation vector
|
|
// lenDst length of the output vector
|
|
// Returns: ippStsNoErr, if no errors
|
|
// ippStsOverflow, if at least one result really was saturated
|
|
*/
|
|
IPPAPI( IppStatus, ippsAutoCorr_16s32s,
|
|
(const Ipp16s *pSrc, int srcLen, Ipp32s *pDst, int dstLen ))
|
|
IPPAPI( IppStatus, ippsAutoCorr_NormE_16s32s, (const Ipp16s *pSrc, int len, Ipp32s *pDst,
|
|
int lenDst, int *pNorm) )
|
|
IPPAPI( IppStatus, ippsAutoCorr_NormE_NR_16s, (const Ipp16s *pSrc, int len, Ipp16s *pDst,
|
|
int lenDst, int *pNorm) )
|
|
IPPAPI( IppStatus, ippsAutoCorr_NormE_G723_16s, (const Ipp16s *pSrc, Ipp16s *pDst, int *pNorm) )
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsToeplizMatrix
|
|
// Purpose: Compute of the autocorrelation matrix for the impulse response
|
|
// Parameters:
|
|
// pSrc pointer to the input vector (Impulse response)
|
|
// pDst pointer to the output autocorrelation matrix
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI( IppStatus, ippsToeplizMatrix_G729_16s32s,(const Ipp16s *pSrcImpulseResponse, Ipp32s *pDstMatrix))
|
|
IPPAPI( IppStatus, ippsToeplizMatrix_G729_16s, (const Ipp16s *pSrcImpulseResponse, Ipp16s *pDstMatrix))
|
|
IPPAPI( IppStatus, ippsToeplizMatrix_G723_16s32s,(const Ipp16s *pSrcImpulseResponse, Ipp32s *pDstMatrix))
|
|
IPPAPI( IppStatus, ippsToeplizMatrix_G723_16s, (const Ipp16s *pSrcImpulseResponse, Ipp16s *pDstMatrix))
|
|
IPPAPI( IppStatus, ippsToeplizMatrix_G729_32f, (const Ipp32f *pSrcImpulseResponse, Ipp32f *pDstMatrix))
|
|
IPPAPI( IppStatus, ippsToeplizMatrix_G729D_32f, (const Ipp32f *pSrcImpulseResponse, Ipp32f *pDstMatrix))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsCrossCorr
|
|
// Purpose: Compute crosscorrelation of two vectors using formula:
|
|
// r[k]=SUM(i=k,...,len) src2[i]*src1[j-i] k=0,...,lenDst-1
|
|
// result is scaled so that the crosscorrelation maximum is int 13 bit
|
|
// Parameters:
|
|
// pSrc1 pointer to the input vector
|
|
// pSrc2 pointer to the input vector
|
|
// len length of the correlation
|
|
// pDst pointer to the output crosscorrelation vector
|
|
// lenDst length of the output vector
|
|
// scaleFactor Scale factor of the destination vector.
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI( IppStatus, ippsCrossCorr_NormM_16s, (const Ipp16s *pSrc1, const Ipp16s *pSrc2, int len,
|
|
Ipp16s *pDst) )
|
|
IPPAPI( IppStatus, ippsCrossCorr_16s32s_Sfs, (const Ipp16s *pSrc1, const Ipp16s *pSrc2, int len,
|
|
Ipp32s *pDst, int scaleFactor) )
|
|
IPPAPI(IppStatus, ippsCrossCorr_NR_16s, ( const Ipp16s* pSrc1, const Ipp16s* pSrc2, int len,
|
|
Ipp16s* pDst, int lenDst))
|
|
IPPAPI ( IppStatus, ippsCrossCorr_NR_16s_Sfs, (const Ipp16s* pSrc1, const Ipp16s* pSrc2, int len, Ipp16s* pDst, int lenDst, int scaleFactor))
|
|
IPPAPI ( IppStatus, ippsCrossCorr_NR_16s32s, (const Ipp16s *pSrc1, const Ipp16s *pSrc2, Ipp32s len, Ipp32s *pDst, Ipp32s lenDst))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsCrossCorrLagMax
|
|
// Purpose: Find the maximum of the cross-correlation for the given lag range [0,lag]
|
|
// r[lag]=SUM(n=0,...,len-1) src1[n]*src2[n+lag]
|
|
// within the range [lowerLag,upperLag] of the lags.
|
|
// Parameters:
|
|
// pSrc pointer to the input vector
|
|
// len length of the input vector
|
|
// lag max lag value
|
|
// pMax pointer to the output maximum of the correlation
|
|
// pMaxLag pointer to the output lag value that hold maximum
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI(IppStatus, ippsCrossCorrLagMax_16s, (const Ipp16s *pSrc1, const Ipp16s *pSrc2, int len,
|
|
int lag, Ipp32s *pMax, int *pMaxLag))
|
|
IPPAPI(IppStatus, ippsCrossCorrLagMax_32f64f,(const Ipp32f *pSrc1, const Ipp32f *pSrc2, int len,
|
|
int lag, Ipp64f *pMax, int *pMaxLag ))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsOpenLoopPitchSearch
|
|
// Purpose: Find the best codebook delay by open-loop pitch analysis
|
|
// r[lag]=SUM(n=0,...,L_FRAME-1) src[n]*src[n-lag]
|
|
// within the range [lowerLag,upperLag] of the lags.
|
|
// Parameters:
|
|
// pSrc pointer to the input vector of range [pSrc-upperLag,pSrc+L_FRAME-1]
|
|
// bestLag pointer to the output best open-loop pitch lag
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI( IppStatus, ippsOpenLoopPitchSearch_G729_16s, (const Ipp16s *pSrc, Ipp16s* bestLag) )
|
|
IPPAPI( IppStatus, ippsOpenLoopPitchSearch_G729A_16s,(const Ipp16s *pSrc, Ipp16s* bestLag) )
|
|
IPPAPI( IppStatus, ippsOpenLoopPitchSearch_G729A_32f,(const Ipp32f *pSrc, Ipp32s* bestLag))
|
|
IPPAPI( IppStatus, ippsOpenLoopPitchSearch_G723_16s, (const Ipp16s *pSrc, Ipp16s* bestLag ) )
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsDotProd
|
|
// Purpose: Compute dot product of two input signals using formula:
|
|
// energy=SUM(n=0,...,len-1) src1[n]*src2[n]
|
|
// AutoScale function interchange downscaling by 1 of input vectors until
|
|
// no overflow occured, returns total number of shifts right.
|
|
// Parameters:
|
|
// pSrc1 pointer to the first input vector
|
|
// pSrc2 pointer to the second input vector
|
|
// len length of each input vectors
|
|
// pDp pointer to the output result value
|
|
// pSfs pointer to the output total number of shifts right done to avoid overflow
|
|
// Returns: ippStsNoErr, if no errors
|
|
// ippStsOverflow, if at least one result really was saturated
|
|
*/
|
|
IPPAPI( IppStatus, ippsDotProd_G729A_16s32s,
|
|
(const Ipp16s* pSrc1, const Ipp16s* pSrc2, int len, Ipp32s* pDp) )
|
|
IPPAPI( IppStatus, ippsDotProd_G729A_32f,
|
|
(const Ipp32f* pSrc1, const Ipp32f* pSrc2, int len, Ipp32f* pDp) )
|
|
IPPAPI( IppStatus, ippsDotProdAutoScale_16s32s_Sfs,
|
|
(const Ipp16s* pSrc1, const Ipp16s* pSrc2, int len, Ipp32s* pDp, int *pSfs) )
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsLagWindow
|
|
// Purpose: A 60 Hz bandwidth expansion is applied to input auto-correlation
|
|
// r[0]=1.0001*r[0];
|
|
// r[k]=wlag[k]*r[k];
|
|
// 60 Hz bandwidth expansion coefficients
|
|
// w_lag(k)=exp[-1/2*(2*pi*f0*k/fs)^2]
|
|
// where : f0 = 60 Hz
|
|
// fs = 8000 Hz
|
|
// Parameters:
|
|
// pSrcDst pointer to the autocorrelation vector
|
|
// len length of the autocorrelation vector
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI( IppStatus, ippsLagWindow_G729_32s_I, (Ipp32s *pSrcDst, int len) )
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsLSPToLSF
|
|
// pLSF[i] = arccos(pLSP[i]); i=0,...,10
|
|
// pLSP pointer to the LSP input vector of values 15 bit scaled in range [-1:1]
|
|
// pLSF pointer to the LSF output vector
|
|
// ippsLSPToLSF_G729_16s: 13 bit scaled in range [0:pi]
|
|
// ippsLSPToLSF_Norm_G729_16s: 15 bit scaled in range [0:0.5]
|
|
// Parameters:
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI( IppStatus, ippsLSPToLSF_G729_16s, (const Ipp16s *pLSP, Ipp16s *pLSF) )
|
|
IPPAPI( IppStatus, ippsLSPToLSF_Norm_G729_16s, (const Ipp16s *pLSP, Ipp16s *pLSF) )
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsLSFQuant
|
|
// Purpose: Quantize of LSPs
|
|
// Parameters:
|
|
// pLSF pointer to the input vector of LSF representation of LSP
|
|
// pQuantLSFTable pointer to the table of the previously quantized LSFs
|
|
// prevLSF pointer to the input vector of previously quantized LSFs
|
|
// pQuantLSF pointer to the output vector of quantized LSF
|
|
// quantIndex pointer to the output combined codebook indices
|
|
// G729 - MA,L0,L1,L2
|
|
// Returns: ippStsNoErr, if no errors
|
|
// ippStsLSFHigh, ippStsLSFLow or ippStsLSFLowAndHigh warnings
|
|
*/
|
|
IPPAPI( IppStatus, ippsLSFQuant_G729_16s, (const Ipp16s *pLSF, Ipp16s *pQuantLSFTable,
|
|
Ipp16s *pQuantLSF, Ipp16s *quantIndex) )
|
|
IPPAPI( IppStatus, ippsLSFQuant_G729B_16s, (const Ipp16s *pLSF, Ipp16s *pQuantLSFTable,
|
|
Ipp16s *pQuantLSF, Ipp16s *quantIndex) )
|
|
IPPAPI ( IppStatus, ippsLSFQuant_G729B_32f,(const Ipp32f *pLSF, Ipp32f *pQuantLSFTable,
|
|
Ipp32f *pQuantLSF, int *quantIndex) )
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsLSFDecode
|
|
// Purpose: Construct LSFs by codebook indices
|
|
// Parameters:
|
|
// quantIndex pointer to the input vector of codebook indices ( L0,L1,L2 )
|
|
// pQuantLSFTable pointer to the table of previously quantized LSFs
|
|
// pPrevLSF pointer to the input vector of the previously quantized LSFs
|
|
// pLSF pointer to the constructed LSF output vector
|
|
// Returns: ippStsNoErr, if no errors
|
|
// ippStsLSFHigh, ippStsLSFLow or ippStsLSFLowAndHigh warnings
|
|
*/
|
|
IPPAPI( IppStatus, ippsLSFDecode_G729_16s, (const Ipp16s *quantIndex, Ipp16s *pQuantLSPTable,
|
|
Ipp16s *pQuantLSF) )
|
|
IPPAPI (IppStatus, ippsLSFDecode_G729_32f, (const int *quantIndex, Ipp32f *pQuantLSFTable,
|
|
Ipp32f *pQuantLSF) )
|
|
IPPAPI( IppStatus, ippsLSFDecodeErased_G729_16s, (Ipp16s maIndex, Ipp16s *pQuantLSFTable,
|
|
const Ipp16s *pLSF) )
|
|
IPPAPI ( IppStatus,ippsLSFDecodeErased_G729_32f, (int maIndex, Ipp32f *pQuantLSFTable,
|
|
const Ipp32f *pSrcPrevLSF))
|
|
IPPAPI( IppStatus, ippsLSFDecode_G729B_16s, (const Ipp16s *quantIndex, Ipp16s *pQuantLSFTable,
|
|
Ipp16s *pLSF) )
|
|
IPPAPI ( IppStatus, ippsLSFDecode_G729B_32f,(const int *quantIndex, Ipp32f *pQuantLSFTable, Ipp32f *pDstQLsp ))
|
|
IPPAPI( IppStatus, ippsLSFDecode_G723_16s, ( const Ipp16s *quantIndex, const Ipp16s *pPrevLSF,
|
|
int erase, Ipp16s *pLSF ) )
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsLSFToLSP
|
|
// Purpose: LSF interpolation and conversion to LPC
|
|
// Parameters:
|
|
// pLSF pointer to the LSF input vector
|
|
// pLPC pointer to the LPC output vector of values in range [-1,1] 15 bit scaled
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI( IppStatus, ippsLSFToLSP_G729_16s, (const Ipp16s *pLSF, Ipp16s *pLSP) )
|
|
IPPAPI( IppStatus, ippsLSFToLSP_GSMAMR_16s, (const Ipp16s *pLSF, Ipp16s *pLSP) )
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsInterpolation
|
|
// Purpose: interpolation of two vector
|
|
// ippsInterpolation_G729_16s: dst = ((src1+sign(src1) )>>1+((src2+sign(src2) )>>1
|
|
// ippsInterpolationC_G729_16s_Sfs: dst = (val1*src1+val2*src2)>>scaleFactor
|
|
// ippsInterpolation_GSMAMR_16s: dst = (src1>>2)+(src2-(src2>>2))
|
|
// Parameters:
|
|
// pSrc1 pointer to the input vector1
|
|
// pSrc2 pointer to the input vector2
|
|
// pDst pointer to the interpolated output vector
|
|
// val1 interp. coeff. of first vector
|
|
// val2 interp. coeff. of second vector
|
|
// scaleFactor scaling factor to apply to the result
|
|
// len length of the vectors
|
|
/ Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI( IppStatus, ippsInterpolate_G729_16s, (const Ipp16s *pSrc1, const Ipp16s *pSrc2,
|
|
Ipp16s *pDst, int len) )
|
|
IPPAPI( IppStatus, ippsInterpolateC_G729_16s_Sfs, (const Ipp16s *pSrc1, Ipp16s val1,
|
|
const Ipp16s *pSrc2, Ipp16s val2, Ipp16s *pDst, int len, int scaleFactor) )
|
|
IPPAPI( IppStatus, ippsInterpolateC_NR_G729_16s_Sfs, (const Ipp16s *pSrc1, Ipp16s val1,
|
|
const Ipp16s *pSrc2, Ipp16s val2, Ipp16s *pDst, int len, int scaleFactor) )
|
|
IPPAPI( IppStatus, ippsInterpolateC_G729_32f,(const Ipp32f *pSrc1, Ipp32f val1,
|
|
const Ipp32f *pSrc2, Ipp32f val2, Ipp32f *pDst, int len))
|
|
IPPAPI ( IppStatus, ippsInterpolate_GSMAMR_16s,
|
|
(const Ipp16s *pSrc1, const Ipp16s *pSrc2, Ipp16s *pDst, int len))
|
|
/* ////////////////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsLSPToLPC
|
|
// Purpose: LSP conversion to LPC
|
|
// Parameters:
|
|
// pLSP pointer to the LSP input vector
|
|
// pLPC pointer to the LPC output vector of values in range [-1,1] 15 bit scaled
|
|
// pLSFLPC pointer to the input LSF/output LPC vector
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI( IppStatus, ippsLSPToLPC_G729_16s, (const Ipp16s *pSrcLSP, Ipp16s *pDstLPC) )
|
|
IPPAPI( IppStatus, ippsLSPToLPC_G729_32f, (const Ipp32f *pSrcLSP, Ipp32f *pDstLPC) )
|
|
/* ///////////////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsResidualFilter
|
|
// Purpose: Compute the LPC residual by filtering the input speech through A(z)
|
|
// Parameters:
|
|
// pSrc pointer to the input vector[-order,..,-1,0,...,,len-1]
|
|
// pSrcLPC pointer to the input LPC
|
|
// pDst pointer to the output vector of length[len]
|
|
// order LPC filer order
|
|
// len length of output vector
|
|
// With default order=10, len=40 for ippsResidualFilter_G729_16s
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI( IppStatus, ippsResidualFilter_G729_16s, ( const Ipp16s * pSrc, const Ipp16s * pSrcLPC,
|
|
Ipp16s * pDst) )
|
|
IPPAPI( IppStatus, ippsResidualFilter_G729E_16s,(
|
|
const Ipp16s *pSrcLPC, Ipp16s order, const Ipp16s *pSrc, Ipp16s *pDst, int len))
|
|
/* ///////////////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsSynthesisFilter
|
|
// Purpose: Compute the speech signal by synthesis filtering of the input speech through
|
|
// 1/A(z)
|
|
// Parameters:
|
|
// pSrc,pSrcSignal pointer to the input vector[len]
|
|
// pLPC pointer to the input LPC[0,..,10]
|
|
// pSrcLpc pointer to the input LPC[0,..,order]
|
|
// pSrcDst pointer to the history input/filtered output
|
|
// pDst,pSrcDstSignal pointer to the filtered output vector[len]
|
|
// pMem Pointer to the memory[-10,...,-1] supplied for filtering
|
|
// pSrcDstSynFltMemory Pointer to the memory[-order,..,-1] supplied for filtering
|
|
// Returns: ippStsNoErr, if no errors
|
|
// ippStsOverflow, if at least one result really was saturated
|
|
*/
|
|
IPPAPI( IppStatus, ippsSynthesisFilter_NR_16s_Sfs, (const Ipp16s * pLPC, const Ipp16s * pSrc,
|
|
Ipp16s * pDst, int len, int scaleFactor, const Ipp16s *pMem) )
|
|
IPPAPI( IppStatus, ippsSynthesisFilterLow_NR_16s_ISfs, (const Ipp16s * pLPC, Ipp16s * pSrcDst,
|
|
int len, int scaleFactor, const Ipp16s *pMem) )
|
|
IPPAPI( IppStatus, ippsSynthesisFilter_NR_16s_ISfs, (const Ipp16s * pLPC, Ipp16s * pSrcDst,
|
|
int len, int scaleFactor, const Ipp16s *pMem) )
|
|
IPP_DEPRECATED("use ippsSynthesisFilter_NR_16s_Sfs function instead of this one")\
|
|
IPPAPI( IppStatus, ippsSynthesisFilter_G729_16s,
|
|
(const Ipp16s * pSrcResidual, const Ipp16s * pSrcLPC, Ipp16s * pSrcDstSpch))
|
|
IPPAPI(IppStatus, ippsSynthesisFilterZeroStateResponse_NR_16s,
|
|
(const Ipp16s * pSrcLPC, Ipp16s * pDstImp, int len, int scaleFactor))
|
|
IPPAPI( IppStatus, ippsSynthesisFilter_G729E_16s,(
|
|
const Ipp16s *pSrcLpc, Ipp16s order, const Ipp16s *pSrcSignal,
|
|
Ipp16s *pDstFltSignal, int len, Ipp16s *pSrcDstSynFltMemory))
|
|
IPPAPI( IppStatus, ippsSynthesisFilter_G729_32f,(
|
|
const Ipp32f *pSrcLpc, Ipp32s order, const Ipp32f *pSrcSignal,
|
|
Ipp32f *pDstFltSignal, int len, Ipp32f *pSrcDstSynFltMemory))
|
|
IPPAPI( IppStatus, ippsSynthesisFilter_G729E_16s_I,(
|
|
const Ipp16s *pSrcLpc, Ipp16s order, Ipp16s *pSrcDstSignal,
|
|
int len, Ipp16s *pSrcDstSynFltMemory))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsConvPartial
|
|
// Purpose: Linear Convolution of 1D signals
|
|
// dst[n] = sum(i=[0,n])(src1[i]*src2[n-i]), n=[0,len-1]
|
|
// computation is the same as for
|
|
// ippsConv_16s32s(pSrc1,len,pSrc2,len,pDst)
|
|
// but only len results are computed and written to destination vector.
|
|
// dst[n] = sum(i=[0,n])(src1[i]*src2[n-i]), n=[0,len-1]
|
|
// NR: rounding to nearest:
|
|
// const1 = 1<<(scaleFactor-1)
|
|
// (a*b+const1)>>scaleFactor;
|
|
// Parameters:
|
|
// pSrc1 pointer to the first source vector
|
|
// pSrc2 pointer to the second source vector
|
|
// pDst pointer to the destination vector
|
|
// len length of the destination vector
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsConvPartial_NR_Low_16s,(const Ipp16s *pSrc1,
|
|
const Ipp16s *pSrc2, Ipp16s *pDst, int len))
|
|
IPPAPI(IppStatus, ippsConvPartial_NR_16s,
|
|
(const Ipp16s *pSrc1,const Ipp16s *pSrc2, Ipp16s *pDst, int len))
|
|
IPPAPI(IppStatus, ippsConvPartial_16s_Sfs,
|
|
( const Ipp16s* pSrc1, const Ipp16s* pSrc2, Ipp16s* pDst, int len, int scaleFactor) )
|
|
IPPAPI(IppStatus, ippsConvPartial_16s32s,
|
|
( const Ipp16s* pSrc1, const Ipp16s* pSrc2, Ipp32s* pDst, int len))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsDecodeAdaptiveVector
|
|
// Purpose: Compute adaptive-codebook vector by interpolatindg the past excitation signal
|
|
// at the given integer delay and fraction
|
|
// Parameters:
|
|
// pSrcDstPrevExcitation pointer to the source/destination past excitation signal
|
|
// pDstAdptVector pointer to the destination adaptive-codebook vector
|
|
// pSrcDelay pointer to fractional pitch delay:
|
|
// pSrcDelay[0] - pitch delay
|
|
// pSrcDelay[1] - pitch fraction
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI( IppStatus, ippsDecodeAdaptiveVector_G729_16s_I,(const Ipp16s * pSrcDelay,
|
|
Ipp16s * pSrcDstPrevExcitation))
|
|
IPPAPI( IppStatus, ippsDecodeAdaptiveVector_G729_32f_I,(const Ipp32s * pSrcDelay,
|
|
Ipp32f * pSrcDstPrevExcitation))
|
|
IPPAPI( IppStatus, ippsDecodeAdaptiveVector_G729_16s,(const Ipp16s * pSrcDelay,
|
|
Ipp16s * pSrcDstPrevExcitation, Ipp16s * pDstAdptVector))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsAdaptiveCodebookContribution
|
|
// Purpose: Update target vector for codebook search
|
|
// by subtracting the adaptive codebook contribition:
|
|
// pDstFltAdptVector[i] = pSrcAdptTarget[i]-gain*pDstFltAdptVector[i];
|
|
// G.729 3.8.1
|
|
// Parameters:
|
|
// gain adaptive codebook gain
|
|
// pFltAdptVector pointer to the filtered adaptive codebook vector y(n)
|
|
// pSrcAdptTarget pointer to the target signal
|
|
// pDstAdptTarget pointer to the output target signal
|
|
(updated by subtracting the adaptive codebook contribition)
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus,ippsAdaptiveCodebookContribution_G729_16s, (Ipp16s gain,
|
|
const Ipp16s *pFltAdptVector, const Ipp16s *pSrcAdptTarget, Ipp16s* pDstAdptTarget))
|
|
IPPAPI(IppStatus, ippsAdaptiveCodebookContribution_G729_32f,(Ipp32f gain,
|
|
const Ipp32f *pFltAdptVector, const Ipp32f *pSrcAdptTarget, Ipp32f* pDstAdptTarget))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsFixedCodebookSearch
|
|
// Purpose: Search in fixed codebook for four non zero pulses, which minimize MSE
|
|
// between the weighted input speech and weighted teconstructed speech.
|
|
// The target signal used in the close-loop pitch search is updated by
|
|
// substracting of adaptive-codebook contribution by formulae:
|
|
// x[n] = x[n] - g*y[n], n=0,...,39
|
|
// where: g - adaptive-codebook gain
|
|
// y - filtered adaptive-codebook vector
|
|
// x - weighted input
|
|
// Parameters:
|
|
// pSrcFixedCorr pointer to the correlation vector of the impulse response and target
|
|
// pSrcDstMatrix pointer to the correlation matrix of impulse response.
|
|
// pDstFixedVector pointer to the output selected acodeword
|
|
// pSearchTimes pointer to the input/output extra searching time
|
|
// pDstFixedIndex pointer to the output codeword index
|
|
// pSrc1 pointer to the correlation vector of the impulse response and target
|
|
// pSrcDst pointer to the correlation matrix of impulse response.
|
|
// pSrc2 Impulse response
|
|
// pDst1 pointer to the output selected acodeword
|
|
// pDst2 pointer to the output filteredcodeword
|
|
// pSign pointer to the output sign of 4 pulses selected
|
|
// subFrame input sub frame number (0,1)
|
|
// extraTime pointer to the input/output extra searching time
|
|
// pDstFixedIndex pointer to the output codeword index
|
|
// valLpMode Backward / Forward LP mode indication
|
|
// len length of the destination vectors
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsFixedCodebookSearch_G729_32s16s, (const Ipp16s *pSrcFixedCorr,
|
|
Ipp32s *pSrcDstMatrix, Ipp16s *pDstFixedVector,
|
|
Ipp16s *pDstFixedIndex, Ipp16s *pSearchTimes, Ipp16s subFrame))
|
|
IPPAPI(IppStatus, ippsFixedCodebookSearch_G729_16s, (const Ipp16s *pSrcFixedCorr,
|
|
Ipp16s *pSrcDstMatrix, Ipp16s *pDstFixedVector,
|
|
Ipp16s *pDstFixedIndex, Ipp16s *pSearchTimes, Ipp16s subFrame))
|
|
IPPAPI(IppStatus,ippsFixedCodebookSearch_G729A_32s16s,(const Ipp16s *pSrcFixedCorr,
|
|
Ipp32s *pSrcDstMatrix, Ipp16s *pDstFixedVector, Ipp16s *pDstFixedIndex))
|
|
IPPAPI(IppStatus,ippsFixedCodebookSearch_G729A_16s,(const Ipp16s *pSrcFixedCorr,
|
|
Ipp16s *pSrcDstMatrix, Ipp16s *pDstFixedVector, Ipp16s *pDstFixedIndex))
|
|
IPPAPI(IppStatus, ippsFixedCodebookSearch_G729E_16s,(
|
|
Ipp16s valLpMode, const Ipp16s* pSrcFixedTarget, const Ipp16s* pSrcLtpResidual,
|
|
const Ipp16s* pSrcImpulseResponse, Ipp16s* pDstFixedVector, Ipp16s* pDstFltFixedVector,
|
|
Ipp16s* pDstFixedIndex))
|
|
IPPAPI(IppStatus, ippsFixedCodebookSearch_G729D_16s,(const Ipp16s *pSrcFixedCorr,
|
|
const Ipp16s *pSrcImpulseResponse, Ipp16s *pDstFixedVector, Ipp16s *pDstFltFixedVector,
|
|
Ipp16s *pDstSign, Ipp16s *pDstFixedIndex))
|
|
IPPAPI(IppStatus, ippsFixedCodebookSearch_G729_32f,(const Ipp32f *pSrcFixedCorr,
|
|
Ipp32f *pSrcDstMatrix, Ipp32f *pDstFixedVector, Ipp32s *pDstFixedIndex,
|
|
Ipp32s *pSearchTimes, Ipp32s subFrame))
|
|
IPPAPI(IppStatus,ippsFixedCodebookSearch_G729A_32f,(const Ipp32f *pSrcFixedCorr,
|
|
Ipp32f *pSrcDstMatrix, Ipp32f *pDstFixedVector, Ipp32s *pDstFixedIndex))
|
|
IPPAPI(IppStatus,ippsFixedCodebookSearch_G729D_32f,(Ipp32f *pSrcDstFixedCorr,
|
|
Ipp32f *pSrcDstMatrix, const Ipp32f *pSrcImpulseResponse,
|
|
Ipp32f *pDstFixedVector, Ipp32f *pDstFltFixedVector, Ipp32s *pDstFixedIndex))
|
|
IPPAPI(IppStatus,ippsFixedCodebookSearch_G729E_32f, (int mode,
|
|
Ipp32f *pSrcDstFixedCorr, const Ipp32f *pSrcLtpResidual,
|
|
const Ipp32f *pSrcImpulseResponse, Ipp32f *pDstFixedVector,
|
|
Ipp32f *pDstFltFixedVector, Ipp32s *pDstFixedIndex))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsHarmonicFilter
|
|
// Purpose: Enchance harmonic component of signal by formulae:
|
|
// y[n] = x[n] + val * x[n-T] - harmonic nose shaping: 1+val*z^(-T)
|
|
// y[n] = y[n] + val * y[n-T] - adaptive pre-filter: 1/(1-val*z^(-T) )
|
|
// Parameters:
|
|
// val the input factor of filter
|
|
// T the value of delay
|
|
// pSrc pointer to the input vector
|
|
// pDst pointer to the output vector
|
|
// pSrcDst pointer to the input/output vector
|
|
// len number of output results needed.
|
|
// pSrc[-T,1] or pSrcDst[-T,-1] shell be done
|
|
// pDst[0,len-1] or pSrcDst[0,len-1] will be computed.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI( IppStatus, ippsHarmonicFilter_16s_I,(Ipp16s val, int T, Ipp16s *pSrcDst, int len) )
|
|
IPPAPI( IppStatus, ippsHarmonicFilter_32f_I,(Ipp32f val, int T, Ipp32f *pSrcDst, int len) )
|
|
IPPAPI( IppStatus, ippsHarmonicFilter_NR_16s, (Ipp16s val, int T, const Ipp16s *pSrc,
|
|
Ipp16s *pDst, int len) )
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsGainQuant
|
|
// Purpose: Quantization of the adaptive codebook gains
|
|
// Parameters:
|
|
// pSrcAdptTarget pointer to the input target vector x(n).
|
|
// pSrcFltAdptVector pointer to the input filtered adaptive codebook vector y(n)
|
|
// pSrcFixedVector pointer to the input pre-filtered codebook contribition c(n)
|
|
// pSrcFltFixedVector pointer to the input filtered codebook vector z(n)
|
|
// pSrcDstEnergyErr pointer to the input/output energy error vector
|
|
// for 4 previous subframes
|
|
// pDstQGain pointer to the output gains:
|
|
// gain pitch = pDstQGainIndex[0]
|
|
// gain code = pDstQGainIndex[1]
|
|
// pDstQGainIndex pointer to the output codebook indexes found
|
|
// tameProcess 1 - taming is needed
|
|
//
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsGainQuant_G729_16s, (
|
|
const Ipp16s *pSrcAdptTarget, const Ipp16s *pSrcFltAdptVector,
|
|
const Ipp16s * pSrcFixedVector, const Ipp16s *pSrcFltFixedVector,
|
|
Ipp16s *pSrcDstEnergyErr, Ipp16s *pDstQGain, Ipp16s *pDstQGainIndex, Ipp16s tameProcess))
|
|
IPPAPI(IppStatus, ippsGainQuant_G729D_16s, (
|
|
const Ipp16s *pSrcAdptTarget, const Ipp16s *pSrcFltAdptVector,
|
|
const Ipp16s *pSrcFixedVector, const Ipp16s *pSrcFltFixedVector,
|
|
Ipp16s *pSrcDstEnergyErr, Ipp16s *pDstQGain, Ipp16s *pDstQGainIndex, Ipp16s tameProcess))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsGainCodebookSearch_G729
|
|
// Purpose: Searching procedure used in adaptive codebook gains quantization
|
|
// gain pitch = gcdbk1[pDstIdxs[0]][0] + gcdbk2[pDstIdxs[1]][0]
|
|
// gain code = gcdbk1[pDstIdxs[0]][1] + gcdbk2[pDstIdxs[1]][1]
|
|
// where gcdbk1 = gbk1_6k, gcdbk2 = gbk1_6k for D mode
|
|
// gcdbk1 = gbk1, gcdbk2 = gbk1 for other then D modes
|
|
// Parameters:
|
|
// pSrcCorr Pointer to the correlations :
|
|
// pSrcCorr[0] = y(n)*y(n)
|
|
// pSrcCorr[1] = -2.x(n)*y(n)
|
|
// pSrcCorr[2] = z(n)*z(n)
|
|
// pSrcCorr[3] = -2.x(n)*z(n)
|
|
// pSrcCorr[4] = -2.y(n)*z(n)
|
|
// x - target, y - filtered target, z - innovative vectors
|
|
// valPredictedGain Input predicted codebook gain.
|
|
// pCand pointer to the input pre-searched candidates indexes vector[2].
|
|
// pCand[0] from [0,4]
|
|
// pCand[1] from [0,8]
|
|
//
|
|
// pIdxs Pointer to the output indexes vector[2].
|
|
// tameProcess Taming process indicator.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsGainCodebookSearch_G729_32f,(const Ipp32f *pSrcCorr,
|
|
Ipp32f valPredictedGain, const int *pCand, int *pIdxs, int tameProcess))
|
|
IPPAPI(IppStatus, ippsGainCodebookSearch_G729D_32f,(const Ipp32f *pSrcCorr,
|
|
Ipp32f valPredictedGain, const int *pCand, int *pIdxs, int tameProcess))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsGainQuant
|
|
// Purpose: Construct of the excitation for the high rate coder by
|
|
// MultiPulse Maximum Likelihood Quantization (MP-MLQ) of the residual
|
|
// signal
|
|
// pImp pointer to the input impulse response of combined filter
|
|
// pSrc pointer to the input target vector.
|
|
// pDstLoc pointer to the output pulse location
|
|
// pDstAmp pointer to the output pulse amplitudes
|
|
// pMaxErr pointer to the output maximal error
|
|
// pGrid output grid (even = 0, odd = 1)
|
|
// pAmp output index of max codebook amplitude
|
|
// Np input number of pulses
|
|
// isBest shows whether best gain found (1) or not (0)
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI( IppStatus, ippsGainQuant_G723_16s, (const Ipp16s *pImp, const Ipp16s *pSrc,
|
|
Ipp16s *pDstLoc, Ipp16s *pDstAmp, Ipp32s *pMaxErr, Ipp16s *pGrid, Ipp16s *pAmp,
|
|
int Np, int* isBest) )
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsDecodeGain
|
|
// Purpose: Decode adaptive and fixed-codebook gains
|
|
// energy energy of code vector in Q32
|
|
// pPastEnergy past quantized energies
|
|
// quaIndex pointer to the gain quantization indexes transmitted:
|
|
// quaIndex[0] - GA, quaIndex[1] - GB.
|
|
// NULL for bad frame
|
|
// pGain Pointer to the vector of decoded gains:
|
|
// pGain[0] - adaptive and pGain[1] - fixed codebook gains.
|
|
// For active frame: output vector.
|
|
// For bad (erased) frame - input/output vector.
|
|
// Input of gains decoded for previous frame.
|
|
// See subclause G.729 3.9.1
|
|
// valGainAttenuation
|
|
// Attenuation factor for gains. See subclause G.729 E.4.4.3
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI( IppStatus, ippsDecodeGain_G729_16s, (Ipp32s energy, Ipp16s *pPastEnergy,
|
|
const Ipp16s *quaIndex, Ipp16s *pGain) )
|
|
IPPAPI(IppStatus, ippsDecodeGain_G729I_16s, (Ipp32s energy, Ipp16s valGainAttenuation, Ipp16s *pPastEnergy,
|
|
const Ipp16s *quaIndex, Ipp16s *pGain))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsTiltCompensation
|
|
// Purpose: Tilt compensation filter
|
|
// G729: transfer function 1/(1-|mu|) * (1 + mu * 1/z)
|
|
// G723: transfer function 1 + 0.25*k1*(1/z)
|
|
// pSrc pointer to the input vector
|
|
// val gain coefficient
|
|
// pDst pointer to the output filtered vector
|
|
// pSrcImpulseResponse Pointer to the impulse response hf(n) in the length of 20, in Q12.
|
|
// pSrcDstSpch Pointer to the speech x(n), in Q15
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI( IppStatus, ippsTiltCompensation_G729E_16s, (Ipp16s val, const Ipp16s *pSrc,
|
|
Ipp16s *pDst) )
|
|
IPPAPI( IppStatus, ippsTiltCompensation_G723_32s16s, (Ipp16s val, const Ipp32s *pSrc,
|
|
Ipp16s *pDst) )
|
|
|
|
IPPAPI (IppStatus, ippsTiltCompensation_G729_16s,(const Ipp16s * pSrcImpulseResponse,
|
|
Ipp16s * pSrcDstSpch))
|
|
IPPAPI (IppStatus, ippsTiltCompensation_G729A_16s,
|
|
(const Ipp16s * pSrcLPC,Ipp16s * pSrcDstFltResidual))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsLongTermPostFilter
|
|
// Purpose: Long-term post G729 filtering
|
|
// valDelay pitch delay
|
|
// gammaFactor the LTP weighting factor
|
|
// pSrcSpch Pointer to the resconstructed speech s[n]
|
|
// pSrcLPC Pointer to weighted LP coff a'[i]
|
|
// pSrcDstResidual Pointer to LP residual signal.
|
|
// pDstFltResidual Pointer to output filtered residual signal.
|
|
// pResultVoice Pointer to the voice information.
|
|
// frameType The type of the frame (1 - active, 2 - SID, 0 - untransmitted).
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsLongTermPostFilter_G729_16s,(Ipp16s gammaFactor, int valDelay,
|
|
const Ipp16s *pSrcDstResidual, Ipp16s *pDstFltResidual, Ipp16s *pResultVoice ))
|
|
IPPAPI(IppStatus, ippsLongTermPostFilter_G729A_16s,(Ipp16s valDelay, const Ipp16s * pSrcSpch,
|
|
const Ipp16s * pSrcLPC, Ipp16s * pSrcDstResidual, Ipp16s * pDstFltResidual))
|
|
IPPAPI(IppStatus, ippsLongTermPostFilter_G729B_16s,(Ipp16s valDelay, const Ipp16s * pSrcSpch,
|
|
const Ipp16s * pSrcLPC, Ipp16s * pSrcDstResidual, Ipp16s * pDstFltResidual,
|
|
Ipp16s * pResultVoice, Ipp16s frameType))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsShortTermPostFilter
|
|
// Purpose: Short-term post G729 filtering
|
|
// pSrcDstSpch Pointer to the short-term filtered speech y(n), in Q15
|
|
// pSrcLPC Pointer to the quantized LP coefficients in the length of 11, in Q12
|
|
// pDstFltResidual Pointer to the residual signal x(n) in the length of 40, in Q15.
|
|
// pDstImpulseResponse Pointer to the generated impulse response hf(n)
|
|
// in the length of 20, in Q12..
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI( IppStatus, ippsShortTermPostFilter_G729_16s, (const Ipp16s * pSrcLPC,
|
|
const Ipp16s * pSrcFltResidual, Ipp16s * pSrcDstSpch, Ipp16s * pDstImpulseResponse))
|
|
IPP_DEPRECATED("use ippsSynthesisFilter_NR_16s_Sfs function instead of this one")\
|
|
IPPAPI( IppStatus, ippsShortTermPostFilter_G729A_16s,(const Ipp16s * pSrcLPC,
|
|
const Ipp16s * pSrcFltResidual,Ipp16s * pSrcDstSpch))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsPreemphasize
|
|
// Purpose: Preemphasis post filter
|
|
// H(z) = 1 - gamma z^-1 (G.729/A)
|
|
// H(z) = 1 + gamma z^-1 (GSMAMR)
|
|
// pSrcDst pointer to the input/output vector
|
|
// gamma filter coeeficient
|
|
// pMem pointer to the filter memory of length 1
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI( IppStatus, ippsPreemphasize_G729A_16s_I, (Ipp16s gamma, Ipp16s *pSrcDst, int len,
|
|
Ipp16s* pMem) )
|
|
IPPAPI( IppStatus, ippsPreemphasize_32f_I,(Ipp32f gamma, Ipp32f *pSrcDst, int len,
|
|
Ipp32f *pMem))
|
|
IPPAPI( IppStatus, ippsPreemphasize_G729A_16s, (Ipp16s gamma, const Ipp16s *pSrc, Ipp16s *pDst,
|
|
int len, Ipp16s* pMem) )
|
|
IPPAPI( IppStatus, ippsPreemphasize_GSMAMR_16s, (Ipp16s gamma, const Ipp16s *pSrc, Ipp16s *pDst,
|
|
int len, Ipp16s* pMem) )
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsGainControl
|
|
// Purpose: Adaptive gain control
|
|
// Compensate for the gain difference between reconstructed speech signal given
|
|
// pSrc (sr) and the postfiltered signal given by pSrcDst (spf)
|
|
// dst[i] = g[i] * dst[i]
|
|
// pSrc pointer to the input vector
|
|
// pSrcDst Pointer to the input post-filtered and output gain compensated signal vector.
|
|
// pSrcDstGain the gain for the previous subframe
|
|
// pGain the gain for the previous subframe
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI( IppStatus, ippsGainControl_G729_16s_I, (const Ipp16s *pSrc1, Ipp16s *pSrcDst,
|
|
Ipp16s *pGain) )
|
|
IPPAPI( IppStatus, ippsGainControl_G729A_16s_I, (const Ipp16s *pSrc1, Ipp16s *pSrcDst,
|
|
Ipp16s *pGain) )
|
|
IPPAPI( IppStatus, ippsGainControl_G723_16s_I, (Ipp32s energy, Ipp16s *pSrcDst, Ipp16s *pGain) )
|
|
|
|
IPPAPI( IppStatus, ippsGainControl_G729_32f_I,(Ipp32f gainScalingVal,
|
|
Ipp32f gainFactor, Ipp32f *pSrcDst, Ipp32f *pGain))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsRandomNoiseExcitation
|
|
// Purpose: Generation of random noise excitation
|
|
// gain target sample gain
|
|
// pSrcDst pointer to the input/output excitation vector
|
|
// pSeed pointer to the input/output seed for the random generator
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI( IppStatus, ippsRandomNoiseExcitation_G729B_16s, (Ipp16s *pSeed, Ipp16s *pExc, int len) )
|
|
IPPAPI( IppStatus, ippsRandomNoiseExcitation_G729B_16s32f,(Ipp16s *pSeed, Ipp32f *pExc, int len))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsLPCLevinsonDurbin
|
|
// Purpose: Obtaining of the LPC
|
|
// G.729: filter 1/1-A(z), LPC in Q12, by solving the set of equation
|
|
// SUM(i=1,order)a(i)*r(|i-k|) = -r(k) k=1,..,order
|
|
// Parameters:
|
|
// pSrcAutoCorr pointer to the autocorrelation vector [order+1]
|
|
// order LP order
|
|
// pDstLPC pointer to the LPC output vector [order+1]
|
|
// pDstRC pointer to the RC output vector
|
|
// [2] - ippsLevinsonDurbin_G729B
|
|
// [order+1] - ippsLevinsonDurbin_G729
|
|
// pResultResidualEnergy pointer to output residual energy in Q15
|
|
//
|
|
*/
|
|
IPPAPI(IppStatus,ippsLevinsonDurbin_G729_32s16s,( const Ipp32s * pSrcAutoCorr,
|
|
int order, Ipp16s * pDstLPC, Ipp16s * pDstRc, Ipp16s * pResultResidualEnergy))
|
|
IPPAPI(IppStatus, ippsLevinsonDurbin_G729_32f,(const Ipp32f * pSrcAutoCorr,
|
|
int order, Ipp32f * pDstLpc, Ipp32f * pDstRc, Ipp32f * pResultResidualEnergy))
|
|
IPPAPI(IppStatus,ippsLevinsonDurbin_G729B,(const Ipp32s * pSrcAutoCorr,
|
|
Ipp16s * pDstLPC, Ipp16s * pDstRc, Ipp16s * pResultResidualEnergy))
|
|
|
|
|
|
IPPAPI(IppStatus, ippsLevinsonDurbin_G723_16s,
|
|
(const Ipp16s * pSrcAutoCorr, Ipp16s * pValResultSineDtct,
|
|
Ipp16s * pResultResidualEnergy, Ipp16s * pDstLPC))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsIIR16s
|
|
//
|
|
// Purpose: IIR filter
|
|
// 1-A(1/z)/1-B(1/z)
|
|
// pCoeffs pointer to the input filter coefficients
|
|
// pSrc pointer to the input speech vector
|
|
// pDst pointer to the output perceptually weighted speech vector
|
|
// pMem pointer to the filter memory
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsIIR16sLow_G729_16s,
|
|
(const Ipp16s *pCoeffs, const Ipp16s *pSrc, Ipp16s *pDst, Ipp16s *pMem))
|
|
IPPAPI (IppStatus, ippsIIR16s_G729_16s,
|
|
(const Ipp16s *pCoeffs, const Ipp16s *pSrc, Ipp16s *pDst, Ipp16s *pMem))
|
|
IPPAPI( IppStatus, ippsIIR16s_G723_16s32s, (const Ipp16s *pCoeffs, const Ipp16s *pSrc,
|
|
Ipp32s *pDst, Ipp16s *pMem ) )
|
|
IPPAPI( IppStatus, ippsIIR16s_G723_16s_I, (const Ipp16s *pCoeffs, Ipp16s *pSrcDst,
|
|
Ipp16s *pMem ) )
|
|
IPPAPI( IppStatus, ippsIIR16s_G723_32s16s_Sfs, (const Ipp16s *pCoeffs, const Ipp32s *pSrc,
|
|
int sFs, Ipp16s *pDst, Ipp16s *pMem ) )
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsHarmonicNoiseSubtract_G723_16s_I
|
|
//
|
|
// Purpose: Do harmonic noise filtering and subtract the result
|
|
// from harmonic noise weighted vector
|
|
// val the input filter coefficient
|
|
// T the input filter lag
|
|
// pSrc pointer to the input vector to filter
|
|
// pSrcDst pointer to the input/output harmonic noise weighted vector
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI( IppStatus, ippsHarmonicNoiseSubtract_G723_16s_I, (Ipp16s val, int T, const Ipp16s *pSrc,
|
|
Ipp16s *pSrcDst) )
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: PhaseDispersion
|
|
// Purpose: The filter alters (mainly the phase of) the innovation signal such
|
|
// that a new innovation is created which has the energy more spread over
|
|
// the subframe. The filtering is performed by circular convolution
|
|
// using one of the three stored "semi-random" impulse responses,
|
|
// correspond to different amounts of spreading.
|
|
// Parameters:
|
|
// valPitchGain pitch gain Q14
|
|
// valCodebookGain codebook gain Q1
|
|
// pSrcExcSignal input signal
|
|
// pDstFltExcSignal output signal
|
|
// pSrcDstInnovation input/output innovation vector
|
|
*/
|
|
#if !defined( _OWN_BLDPCS )
|
|
|
|
typedef struct _PhaseDispersion_State_G729D IppsPhaseDispersion_State_G729D;
|
|
|
|
#endif
|
|
|
|
IPPAPI(IppStatus, ippsPhaseDispersionGetStateSize_G729D_16s,(int *pSize))
|
|
IPPAPI(IppStatus, ippsPhaseDispersionInit_G729D_16s,(IppsPhaseDispersion_State_G729D *pPhDMem))
|
|
IPPAPI(IppStatus, ippsPhaseDispersionUpdate_G729D_16s,(
|
|
Ipp16s valPitchGain,
|
|
Ipp16s valCodebookGain,
|
|
IppsPhaseDispersion_State_G729D *pPhDMem
|
|
))
|
|
IPPAPI(IppStatus, ippsPhaseDispersion_G729D_16s,(
|
|
const Ipp16s *pSrcExcSignal,
|
|
Ipp16s *pDstFltExcSignal,
|
|
Ipp16s valCodebookGain,
|
|
Ipp16s valPitchGain,
|
|
Ipp16s *pSrcDstInnovation,
|
|
IppsPhaseDispersion_State_G729D *pPhDMem
|
|
))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsWinHybrid_G729E
|
|
// Purpose: Hybrid window auto-correlation for backward-adaptive analysis.
|
|
// Window is as follows:
|
|
// s(M-N),s(M-N+1),...,s(M-1),s(M),s(M+1),...,s(M+L-1)
|
|
// M LPC order for backward adaptation
|
|
// L number of signal samples in backward adaptation
|
|
// N number of non-recursive samples in the hybrid window
|
|
// where pSrcSfs[i] is the scale factor of pSrc[i*DIM],...,pSrc[i*DIM+DIM-1]
|
|
//
|
|
// pSrcSynthSpeech input signal for backward-adaptive analysis (35 samples)
|
|
//
|
|
*/
|
|
#if !defined( _OWN_BLDPCS )
|
|
|
|
typedef struct _WinHybridState_G729E_16s IppsWinHybridState_G729E_16s;
|
|
typedef struct _WinHybridState_G729E_32f IppsWinHybridState_G729E_32f;
|
|
|
|
#endif
|
|
IPPAPI(IppStatus, ippsWinHybridGetStateSize_G729E_16s,(int *pSize))
|
|
IPPAPI(IppStatus, ippsWinHybridGetStateSize_G729E_32f,(int *pSize))
|
|
|
|
IPPAPI(IppStatus, ippsWinHybridInit_G729E_16s,(IppsWinHybridState_G729E_16s *pMem))
|
|
IPPAPI(IppStatus, ippsWinHybridInit_G729E_32f,(IppsWinHybridState_G729E_32f *pMem))
|
|
|
|
IPPAPI(IppStatus, ippsWinHybrid_G729E_16s32s,(const Ipp16s *pSrcSynthSpeech,
|
|
Ipp32s *pDstInvAutoCorr, IppsWinHybridState_G729E_16s *pMem))
|
|
IPPAPI(IppStatus, ippsWinHybrid_G729E_32f,(const Ipp32f *pSrcSynthSpeech,
|
|
Ipp32f *pDstInvAutoCorr, IppsWinHybridState_G729E_32f *pMem))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name : ippsAutoCorr_G729B
|
|
// Purpose: Apply window and then compute autocorelation of input speech
|
|
// Equivalent to:
|
|
// ippsMul_NR_16s_Sfs
|
|
// ippsAutoCorr_NormE_16s32s
|
|
*/
|
|
IPPAPI(IppStatus,ippsAutoCorr_G729B,
|
|
(const Ipp16s* pSrcSpch, Ipp16s* pResultAutoCorrExp, Ipp32s* pDstAutoCorr))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name : ippsLPCToLSP_G729, ippsLPCToLSP_G729A
|
|
// Purpose: LP to LSP coefficients conversion
|
|
*/
|
|
IPPAPI( IppStatus, ippsLPCToLSP_G729_16s,
|
|
(const Ipp16s* pSrcLPC, const Ipp16s* pSrcPrevLsp, Ipp16s* pDstLSP) )
|
|
IPPAPI( IppStatus, ippsLPCToLSP_G729A_16s,
|
|
(const Ipp16s* pSrcLPC, const Ipp16s* pSrcPrevLsp, Ipp16s* pDstLSP) )
|
|
IPPAPI( IppStatus, ippsLPCToLSP_G729_32f,
|
|
(const Ipp32f* pSrcLPC, const Ipp32f* pSrcPrevLsp, Ipp32f* pDstLSP))
|
|
IPPAPI( IppStatus, ippsLPCToLSP_G729A_32f,
|
|
(const Ipp32f* pSrcLPC, const Ipp32f* pSrcPrevLsp, Ipp32f* pDstLSP))
|
|
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name : ippsAdaptiveCodebookSearch_G729_16s
|
|
// Purpose: Determination of optimal integer and fractional pitch delay
|
|
// and generation of adaptive codebook vector
|
|
// Parameters:
|
|
// valOpenDelay Open-loop delay, in the range [18,145].
|
|
// pSrcAdptTarget Pointer to the target signal for adaptive-codebook
|
|
// search vector [40].
|
|
// pSrcImpulseResponse Pointer to the impulse response of weighted synthesis filter
|
|
// vector [40]
|
|
// pSrcDstPrevExcitation Pointer to the previous and updated excitation vector [194].
|
|
// pDstDelay Pointer to the integer delay and fraction delay vector [2].
|
|
// pDstAdptVector Pointer to the adaptive vector [40].
|
|
// subFrame Subframe number, either 0 or 1.*/
|
|
IPPAPI( IppStatus, ippsAdaptiveCodebookSearch_G729_16s, (Ipp16s valOpenDelay,
|
|
const Ipp16s * pSrcAdptTarget, const Ipp16s * pSrcImpulseResponse,
|
|
Ipp16s * pSrcDstPrevExcitation, Ipp16s * pDstDelay,
|
|
Ipp16s * pDstAdptVector, Ipp16s subFrame))
|
|
IPPAPI( IppStatus, ippsAdaptiveCodebookSearch_G729A_16s, (Ipp16s valOpenDelay,
|
|
const Ipp16s * pSrcAdptTarget, const Ipp16s * pSrcImpulseResponse,
|
|
Ipp16s * pSrcDstPrevExcitation, Ipp16s * pDstDelay,
|
|
Ipp16s * pDstAdptVector, Ipp16s subFrame))
|
|
IPPAPI( IppStatus, ippsAdaptiveCodebookSearch_G729D_16s, (Ipp16s valOpenDelay,
|
|
const Ipp16s * pSrcAdptTarget, const Ipp16s * pSrcImpulseResponse,
|
|
Ipp16s * pSrcDstPrevExcitation, Ipp16s subFrame, Ipp16s * pDstDelay ))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsFilteredExcitation_G729
|
|
// Purpose: computes filtered excitation
|
|
// Arguments:
|
|
// pSrcImpulseResponse Pointer to the impulse response of weighted synthesis filter
|
|
// vector
|
|
// pSrcDstPrevExcitation Pointer to the previous and updated excitation vector [194].
|
|
// valExc Excitation value delayed by pitch lag ( u(-k) )
|
|
// len Length of input/output vectors
|
|
*/
|
|
IPPAPI(IppStatus, ippsFilteredExcitation_G729_32f,
|
|
( const Ipp32f* pSrcImpulseResponse, Ipp32f *pSrcDstPrevExcitation, int len, Ipp32f valExc))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name : ippsLSPQuant_G729_16s
|
|
// Purpose: LSP quantization
|
|
// Is equivalent to:
|
|
// ippsLSPToLSF_G729_16s
|
|
// ippsLSFQuant_G729_16s
|
|
// ippsLSFToLSP_G729_16s
|
|
*/
|
|
IPPAPI( IppStatus, ippsLSPQuant_G729_16s, (const Ipp16s * pSrcLsp, Ipp16s * pSrcDstPrevFreq,
|
|
Ipp16s * pDstQLsp, Ipp16s * pDstQLspIndex))
|
|
IPPAPI (IppStatus, ippsLSPQuant_G729E_16s, (const Ipp16s * pSrcLsp, const Ipp16s * pSrcPrevFreq,
|
|
Ipp16s * pDstQLsf, Ipp16s * pDstQLsp, Ipp16s * pDstQLspIndex))
|
|
IPPAPI (IppStatus, ippsLSPQuant_G729E_32f, (const Ipp32f *pSrcLsp, Ipp32f* pSrcDstPrevFreq, Ipp32f *pDstQLsf,
|
|
Ipp32f *pDstQLsp, int *pDstQLspIndex) )
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name : ippsAdaptiveCodebookGain_G729_16s
|
|
// Purpose: Compute the adaptive codebook gain
|
|
//
|
|
// pSrcImpulseResponse: Pointer to the impulse response
|
|
// of the perceptual weighting filter in the length of 40, in Q12.
|
|
// pSrcAdptVector: Pointer to the adaptive-codebook vector in the length of 40.
|
|
// pSrcLPC: Pointer to the LPC coefficients of the synthesis filter
|
|
// in the length of 11, in Q12.
|
|
// pDstFltAdptVector: Pointer to the output filtered adaptive-codebook vector
|
|
// pSrcFltAdptVector: Pointer to the input filtered adaptive-codebook vector
|
|
// in the length of 40.
|
|
// pResultAdptGain: Pointer to the adaptive-codebook gain in the length of 1, in Q14.
|
|
// pResultAdptGainCoeffs Pointer to the output vector in the length 4 represents
|
|
// the adaptive-codebook gain as a fraction:
|
|
// xy * 2^exp_xy
|
|
// gain = ------------- in Q14
|
|
// yy * 2^exp_yy
|
|
// where yy = pResultAdptGainCoeffs[0]
|
|
// exp_yy = pResultAdptGainCoeffs[1]
|
|
// exp_xy = pResultAdptGainCoeffs[2]
|
|
// exp_xy = pResultAdptGainCoeffs[3]
|
|
// If xy < 4 then gain = 0;
|
|
*/
|
|
IPPAPI( IppStatus, ippsAdaptiveCodebookGain_G729_16s, (const Ipp16s * pSrcAdptTarget,
|
|
const Ipp16s * pSrcImpulseResponse, const Ipp16s * pSrcAdptVector,
|
|
Ipp16s * pDstFltAdptVector, Ipp16s * pResultAdptGain))
|
|
IPPAPI( IppStatus, ippsAdaptiveCodebookGain_G729A_16s, (const Ipp16s * pSrcAdptTarget,
|
|
const Ipp16s * pSrcLPC, const Ipp16s * pSrcAdptVector, Ipp16s * pDstFltAdptVector,
|
|
Ipp16s * pResultAdptGain))
|
|
IPPAPI( IppStatus, ippsAdaptiveCodebookGain_GSMAMR_16s,(const Ipp16s * pSrcAdptTarget,
|
|
const Ipp16s * pSrcFltAdptVector, Ipp16s * pResultAdptGain))
|
|
IPPAPI( IppStatus, ippsAdaptiveCodebookGainCoeffs_GSMAMR_16s,(const Ipp16s * pSrcAdptTarget,
|
|
const Ipp16s * pSrcFltAdptVector, Ipp16s * pResultAdptGain,
|
|
Ipp16s * pResultAdptGainCoeffs))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name : ippsFFTFwd_RToPerm_GSMAMR_16s
|
|
// Purpose: This is an implementation of decimation-in-time FFT algorithm for
|
|
// real sequences.
|
|
// pSrcDst pointer to the input signal/output frequencies vector in Perm format
|
|
*/
|
|
IPPAPI( IppStatus, ippsFFTFwd_RToPerm_GSMAMR_16s_I, (Ipp16s *pSrcDst))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name : ippsAutoCorr_G723_16s
|
|
// Purpose: Apply window and then compute autocorelation of input speech
|
|
// Equivalent to:
|
|
// ippsAutoScale_16s
|
|
// ippsMul_NR_16s_ISfs
|
|
// ippsAutoCorr_NormE_G723_16s
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsAutoCorr_G723_16s,(const Ipp16s * pSrcSpch,
|
|
Ipp16s * pResultAutoCorrExp, Ipp16s * pDstAutoCorr))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsLPCToLSF_G723_16s
|
|
// Purpose: LSP to LSF conversion normalized
|
|
// pLSF[i] = arccos(pLSP[i]); i=0,...,10
|
|
// pSrcLPC pointer to the LPC input vector
|
|
// pSrcPrevLSF pointer to previous normalized LSF coefficients
|
|
// pDstLSF pointer to the LSF output vector of values 15 bit scaled in range [0:0.5]
|
|
// Parameters:
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI(IppStatus, ippsLPCToLSF_G723_16s,(const Ipp16s * pSrcLPC,
|
|
const Ipp16s * pSrcPrevLSF, Ipp16s * pDstLSF))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsHarmonicSearch_G723_16s
|
|
// Purpose: This function searches the harmonic delay and harmonic gain for the harmonic noise shaping filter
|
|
// from the weighted speech and open loop pitch.
|
|
// valOpenDelay Open loop pitch
|
|
// pSrcWgtSpch Pointer to the weighted speech in the length of 205. The pointer points to the
|
|
// location of 146
|
|
// pResultHarmonicDelay Pointer to the harmonic delay
|
|
// pResultHarmonicGain Pointer to the harmonic gain
|
|
// Parameters:
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI(IppStatus, ippsHarmonicSearch_G723_16s,(Ipp16s valOpenDelay, const Ipp16s * pSrcWgtSpch,
|
|
Ipp16s * pResultHarmonicDelay, Ipp16s * pResultHarmonicGain))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsAdaptiveCodebookSearch_G723
|
|
// Purpose: This function searches for the close loop pitch and adaptive gain index.
|
|
// valBaseDelay Base delay
|
|
// pSrcAdptTarget Pointer to the adaptive target signal in the length of 60.
|
|
// pSrcImpulseResponse Pointer to the impulse response in the length of 60.
|
|
// pSrcPrevExcitation Pointer to the previous excitation in the length of 145.
|
|
// pSrcPrevError Pointer to the previous error in the length of 5, in 32-bit format.
|
|
// pResultCloseLag Pointer to the lag of close pitch
|
|
// pResultAdptGainIndex Pointer to the index of adaptive gain
|
|
// subFrame Subframe number
|
|
// sineDtct Sine circumstance.
|
|
// bitRate Transmit bit rate
|
|
// Parameters:
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI (IppStatus, ippsAdaptiveCodebookSearch_G723,(
|
|
Ipp16s valBaseDelay,
|
|
const Ipp16s * pSrcAdptTarget,
|
|
const Ipp16s * pSrcImpulseResponse,
|
|
const Ipp16s * pSrcPrevExcitation,
|
|
const Ipp32s * pSrcPrevError,
|
|
Ipp16s * pResultCloseLag,
|
|
Ipp16s * pResultAdptGainIndex,
|
|
Ipp16s subFrame,
|
|
Ipp16s sineDtct,
|
|
IppSpchBitRate bitRate))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsDecodeAdaptiveVector_G723_16s
|
|
// Purpose: This function decodes the adaptive vector from excitation,
|
|
// close loop pitch, adaptive gain index and bit rate.
|
|
*/
|
|
IPPAPI (IppStatus, ippsDecodeAdaptiveVector_G723_16s,(
|
|
Ipp16s valBaseDelay,
|
|
Ipp16s valCloseLag,
|
|
Ipp16s valAdptGainIndex,
|
|
const Ipp16s * pSrcPrevExcitation,
|
|
Ipp16s * pDstAdptVector,
|
|
IppSpchBitRate bitRate))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsLSFToLPC_G723_16s
|
|
// Purpose: This function converts a set of 10-order LSF coefficients to LPC coefficients.
|
|
// Equivalent to:
|
|
// ippsLSFToLPC_G723_16s_I
|
|
*/
|
|
IPPAPI (IppStatus, ippsLSFToLPC_G723_16s,(const Ipp16s * pSrcLSF, Ipp16s * pDstLPC))
|
|
IPPAPI( IppStatus, ippsLSFToLPC_G723_16s_I, (Ipp16s *pLSFLPC) )
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsLSFQuant_G723_16s32s
|
|
// Purpose: This function searches for the close loop pitch and adaptive gain index.
|
|
// pSrcLSF Pointer to LSF coefficients
|
|
// pSrcPrevLSF Pointer to previous LSF coefficients
|
|
// pResultQLSFIndex Pointer to combined index of quantized LSF coefficients.
|
|
// Parameters:
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI(IppStatus, ippsLSFQuant_G723_16s32s,(const Ipp16s * pSrcLSF, const Ipp16s *pSrcPrevLSF,
|
|
Ipp32s * pResultQLSFIndex))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsACELPFixedCodebookSearch_G723_16s
|
|
// Purpose: TThis function searches for the ACELP fixed codebook for the excitation for 5.3 Kbps bit rate.
|
|
// Equivalent to:
|
|
// ippsFixedCodebookSearch_G723_16s
|
|
*/
|
|
IPPAPI (IppStatus, ippsACELPFixedCodebookSearch_G723_16s,(
|
|
const Ipp16s * pSrcFixedCorr,
|
|
const Ipp16s * pSrcMatrix,
|
|
Ipp16s * pDstFixedSign,
|
|
Ipp16s * pDstFixedPosition,
|
|
Ipp16s * pResultGrid,
|
|
Ipp16s * pDstFixedVector,
|
|
Ipp16s * pSearchTimes))
|
|
IPPAPI( IppStatus, ippsACELPFixedCodebookSearch_G723_32s16s,(
|
|
const Ipp16s * pSrcFixedCorr,
|
|
Ipp32s * pSrcDstMatrix,
|
|
Ipp16s * pDstFixedSign,
|
|
Ipp16s * pDstFixedPosition,
|
|
Ipp16s * pResultGrid,
|
|
Ipp16s * pDstFixedVector,
|
|
Ipp16s * pSearchTimes))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsMPMLQFixedCodebookSearch_G723
|
|
//
|
|
// Purpose: This function searches for the MP-MLQ fixed-codebook for the excitation for 6.3Kbps bit rate.
|
|
// valBaseDelay - Base delay, in Q0.
|
|
// pSrcImpulseResponse - Pointer to the impulse response in the length of 60.
|
|
// pSrcResidualTarget - Pointer to the residue target signal in the length of 60.
|
|
// pDstFixedVector - Pointer to the fixed codebook vector in the length of 60.
|
|
// pResultGrid - Pointer to the begin grid location, in Q0, 0 or 1.
|
|
// pResultTrainDirac - Pointer to the flag if train Dirac function used, 0: unused, 1: used.
|
|
// pResultAmpIndex - Pointer to the index of quantized amplitude, in Q0.
|
|
// pResultAmplitude - Pointer to the amplitude of the fixed codebook vector.
|
|
// pResultPosition - Pointer to the position of fixed codebook vector, which amplitude is not equal
|
|
// to 0, in Q0.
|
|
// subFrame - Subframe number, in Q0, from 0 to 3.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsMPMLQFixedCodebookSearch_G723,(
|
|
Ipp16s valBaseDelay,
|
|
const Ipp16s * pSrcImpulseResponse,
|
|
const Ipp16s * pSrcResidualTarget,
|
|
Ipp16s * pDstFixedVector,
|
|
Ipp16s * pResultGrid,
|
|
Ipp16s * pResultTrainDirac,
|
|
Ipp16s * pResultAmpIndex,
|
|
Ipp16s * pResultAmplitude,
|
|
Ipp32s * pResultPosition,
|
|
Ipp16s subFrame))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsSynthesisFilter_G723_16s
|
|
//
|
|
// Purpose: function implements the LPC synthesis filter.
|
|
// pSrcLPC - Pointer to the LPC coefficients in the length of 10, in Q13.
|
|
// pSrcResidual - Pointer to the residual signal in the length of 60.
|
|
// pSrcDstIIRState - Pointer to the history of synthesized speech signal in the
|
|
// length of 10.
|
|
// pDstSpch - Pointer to the output speech signal in the length of 60.
|
|
// pMem pointer to the filter memory
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI( IppStatus, ippsSynthesisFilter_G723_16s32s, (const Ipp16s *pQntLPC, const Ipp16s *pSrc,
|
|
Ipp32s *pDst, Ipp16s *pMem ) )
|
|
|
|
IPPAPI(IppStatus, ippsSynthesisFilter_G723_16s, (const Ipp16s *pSrcLPC, const Ipp16s *pSrcResidual,
|
|
Ipp16s *pSrcDstIIRState, Ipp16s *pDstSpch))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsPitchPostFilter_G723_16s
|
|
//
|
|
// Purpose: function calculates the coefficients of the pitch post filter..
|
|
// valBaseDelay - Base delay, in Q0.
|
|
// pSrcResidual - Pointer to the residual signal in the length of 365.
|
|
// The pointer points to the location of 146.
|
|
// subFrame - Subframe number, in Q0, from 0 to 3.
|
|
// bitRate - Transmit bit rate, IPP_SPCHBR_6300 stands for 6.3 Kbps
|
|
// and IPP_SPCHBR_5300 stands for 5.3 Kbps.
|
|
// pResultDelay - Point to the delay of the pitch post filter, in Q0.
|
|
// pResultPitchGain - Point to the gain of the pitch post filter, in Q15.
|
|
// pResultScalingGain - Point to the scaling gain of the pitch post filter, in Q15.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsPitchPostFilter_G723_16s, (Ipp16s valBaseDelay, const Ipp16s *pSrcResidual,
|
|
Ipp16s *pResultDelay, Ipp16s *pResultPitchGain, Ipp16s *pResultScalingGain,
|
|
Ipp16s subFrame, IppSpchBitRate bitRate))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsAutoCorr_GSMAMR_16s32s
|
|
//
|
|
// Purpose: Compute autocorrelations of signal with windowing and
|
|
// Lag windowing
|
|
// pSrcSpch - Pointer to the input speech vector (240 samples),
|
|
// represented using Q15.0.
|
|
// mode - Bit rate specifier. Values between IPP_SPCHBR_4750 and
|
|
// IPP_SPCHBR_12200 are valid.
|
|
// pDstAutoCorr - Pointer to the autocorrelation coefficients, of length 22.
|
|
// For 12.2 kbps mode, elements 0 ~ 10 contain the first
|
|
// set of autocorrelation lags, and elements 11 ~ 21
|
|
// contain the second set of autocorrelation lags.
|
|
// For all other modes there is only one set of autocorrelation
|
|
// lags contained in vector elements 0 ~ 10.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsAutoCorr_GSMAMR_16s32s,
|
|
(const Ipp16s *pSrcSpch, Ipp32s *pDstAutoCorr,IppSpchBitRate mode))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsLevinsonDurbin_GSMAMR_32s16s
|
|
//
|
|
// Purpose: Calculates the 10th-order LP coefficients from the autocorrelation lags using the Levinson-Durbin
|
|
// algorithm.
|
|
// pSrcAutoCorr - Pointer to the autocorrelation coefficients, a vector of length of 11.
|
|
// pSrcDstLPC - Pointer to the LP coefficients associated with
|
|
// the previous frame, a vector of length 11, represented using Q3.12.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsLevinsonDurbin_GSMAMR_32s16s,
|
|
(const Ipp32s *pSrcAutoCorr, Ipp16s *pSrcDstLPC))
|
|
#define ippsLevinsonDurbin_GSMAMR ippsLevinsonDurbin_GSMAMR_32s16s
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsLPCToLSP_GSMAMR_16s
|
|
//
|
|
// Purpose: Converts a set of 10th-order LP coefficients to
|
|
// an equivalent set of line spectrum pairs (LSPs).
|
|
// pSrcLPC - Pointer to 11-element LP coefficient vector, represented using Q3.12.
|
|
// pSrcPrevLsp - Pointer to the 10-element LSP coefficient vector associated
|
|
// with the previous frame, represented using Q0.15.
|
|
// pDstLsp - Pointer to the 10-element LSP coefficient vector, represented using Q0.15.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsLPCToLSP_GSMAMR_16s,
|
|
(const Ipp16s * pSrcLPC, const Ipp16s * pSrcPrevLsp, Ipp16s * pDstLsp))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsLSPToLPC_GSMAMR_16s
|
|
//
|
|
// Purpose: Converts a set of 10th-order LSPs to LP coefficients.
|
|
// pSrcLsp - Pointer to the 10-element LSP coefficient vector, represented using Q0.15.
|
|
// pDstLPC - Pointer to the 11-element LP coefficient vector, represented using Q3.12.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsLSPToLPC_GSMAMR_16s, (const Ipp16s *pSrcLsp, Ipp16s *pDstLPC))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsLSPQuant_GSMAMR_16s
|
|
//
|
|
// Purpose: Quantizes the LSP coefficient vector, then obtains quantized LSP codebook indices.
|
|
// pSrcLsp - Pointer to the unquantized 20-element LSP vector, represented using Q0.15. For
|
|
// 12.2 kbps frames, the first LSP set is contained in vector elements 0 ~ 9, and the second LSP
|
|
// set is contained in vector elements 10 ~ 19. For all other bit rates, only elements 0 ~ 9 are valid
|
|
// and used for the quantization.
|
|
// pSrcDstPrevQLSFResidual - Pointer to the 10-element quantized LSF residual from the previous
|
|
// frame, represented using Q0.15.
|
|
// pDstQLsp - Pointer to the 20-element quantized LSP vector, represented using Q0.15. For 12.2
|
|
// kbps frames, elements 0 to 9 contain the first quantized LSP set, and elements 10 to 19 contain
|
|
// the second quantized LSP set. For all other bit rates there is only one LSP set contained in
|
|
// elements 0 to 9.
|
|
// pDstQLspIndex - Pointer to the 5-element vector of quantized LSP indices. For 12.2Kbps
|
|
// frames, all five elements contain valid data; for all other bit rates, only the first three elements
|
|
// contain valid indices.
|
|
// mode - Bit rate specifier. The enumerated values of IPP_SPCHBR_4750 to
|
|
// IPP_SPCHBR_12200 are valid.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsLSPQuant_GSMAMR_16s, (const Ipp16s *pSrcLsp,
|
|
Ipp16s *pSrcDstPrevQLSFResidual, Ipp16s *pDstQLsp,
|
|
Ipp16s *pDstQLspIndex, IppSpchBitRate mode))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsEncDTXSID_GSMAMR_16s
|
|
//
|
|
// Purpose: This function is called only when the current frame is a DTX frame. It extracts the needed
|
|
// parameters for the SID frame: LSF quantization parameter and the energy index parameter. If the
|
|
// SID flag is off, no operation is needed, and all the parameters are copied from last frame.
|
|
// pSrcLspBuffer - Pointer to the LSP coefficients of eight consecutive frames marked with
|
|
// VAD = 0, in the length of 80, in Q15.
|
|
// pSrcLogEnergyBuffer - Pointer to the log energy coefficients of eight consecutive frames
|
|
// marked with unvoiced, in the length of 8, in Q10.
|
|
// pValResultLogEnergyIndex - Pointer log energy index of last frame, in Q2.
|
|
// pValResultDtxLSFRefIndex - Pointer to the LSF quantization reference index of last frame.
|
|
// pSrcDstDtxQLSFIndex - Pointer to the LSF residual quantization indices of last frame, in the
|
|
// length of 3.
|
|
// pSrcDstPredQErr - Pointer to the fixed gain prediction error of four previous subframes for
|
|
// non-12.2 Kbps modes, in the length of 4, in Q10.
|
|
// pSrcDstPredQErrMR122 - Pointer to the fixed gain prediction error of four previous
|
|
// subframes for 12.2 Kbps, in the length of 4, in Q10.
|
|
// sidFLag - The SID flag of the current frame. If it is set to 1, the current frame is a SID frame,
|
|
// and the function will extract the LSF and energy parameters. If it is set to 0, the LSF and
|
|
// energy parameters will copy from previous frame.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsEncDTXSID_GSMAMR_16s, (const Ipp16s *pSrcLspBuffer,
|
|
const Ipp16s *pSrcLogEnergyBuffer, Ipp16s *pValResultLogEnergyIndex,
|
|
Ipp16s *pValResultDtxLSFRefIndex, Ipp16s *pSrcDstDtxQLSFIndex,
|
|
Ipp16s *pSrcDstPredQErr, Ipp16s *pSrcDstPredQErrMR122,
|
|
Ipp16s sidFlag))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsQuantLSPDecode_GSMAMR_16s
|
|
//
|
|
// Purpose: Decodes quantized LSPs from the received codebook index if the
|
|
// errors are not detected on the received frame. Otherwise, the
|
|
// function recovers the quantized LSPs from previous quantized
|
|
// LSPs using linear interpolation.
|
|
// pSrcQLspIndex - Pointer to the five-element vector containing codebook indices
|
|
// of the quantized LSPs.
|
|
// pSrcDstPrevQLSFResidual - Pointer to the 10-element quantized LSF residual from
|
|
// the previous frame, represented using Q0.15.
|
|
// pSrcDstPrevQLSF - Pointer to the 10-element quantized LSF vector from the previous
|
|
// frame, represented using Q0.15.
|
|
// pSrcDstPrevQLsp - Pointer to the 10-element quantized LSP vector from the previous
|
|
// frame, represented using Q0.15.
|
|
// pDstQLsp - Pointer to a 40-element vector containing four subframe LSP sets.
|
|
// bfi - Bad frame indicator; "0" signifies a good frame; all other values
|
|
// signify a bad frame.
|
|
// mode - Bit rate specifier.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsQuantLSPDecode_GSMAMR_16s, (const Ipp16s *pSrcQLspIndex,
|
|
Ipp16s *pSrcDstPrevQLSFResidual, Ipp16s *pSrcDstPrevQLSF,
|
|
Ipp16s *pSrcDstPrevQLsp, Ipp16s *pDstQLsp, Ipp16s bfi,
|
|
IppSpchBitRate mode))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsEncDTXHandler_GSMAMR_16s
|
|
//
|
|
// Purpose: Function determines the SID flag of current frame, and it determines
|
|
// whether the current frame should use DTX encoding.
|
|
// pValResultHangOverCount - Pointer to the DTX hangover count. When initialized or reset,
|
|
// it is set to 0.
|
|
// pValResultDtxElaspCount - Pointer to elapsed frame count since last non-DTX frame.
|
|
// When initialized or reset, it is set 0.
|
|
// pValResultUsedMode - Pointer to the transmission mode.
|
|
// pResultSidFlag - Pointer to the output SID flag, "1" indicates a SID frame, and "0"
|
|
// indicates a non-SID frame.
|
|
// vadFlag - This is the VAD flag of the current frame, if it is set 1, the current
|
|
// frame is marked with voiced, and if it is set to 0, it is marked with
|
|
// unvoiced.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsEncDTXHandler_GSMAMR_16s, (Ipp16s *pValResultHangOverCount,
|
|
Ipp16s *pValResultDtxElapseCount, Ipp16s *pValResultUsedMode,
|
|
Ipp16s *pResultSidFlag, Ipp16s vadFlag))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsEncDTXBuffer_GSMAMR_16s
|
|
//
|
|
// Purpose: Function buffer the LSP coefficients and previous log energy coefficients.
|
|
// pSrcSpch - Pointer to the input speech signal, in the length of 160, in Q15.0.
|
|
// pSrcLsp - Pointer to the LSP for this frame, in the length of 10, in Q0.15.
|
|
// pValResultUpdateIndex - Pointer to the previous memory update index. It is a value
|
|
// circularly increased between 0 and 7.
|
|
// pSrcDstLspBuffer - Pointer to the LSP coefficients of eight previous frames, in the
|
|
// length of 80, in Q0.15.
|
|
// pSrcDstLogEnergyBuffer - Pointer to the logarithm energy coefficients of eight previous
|
|
// frames,inthelength of 8,in Q5.10.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsEncDTXBuffer_GSMAMR_16s, (const Ipp16s * pSrcSpch,
|
|
const Ipp16s *pSrcLsp, Ipp16s *pValResultUpdateIndex,
|
|
Ipp16s *pSrcDstLspBuffer, Ipp16s *pSrcDstLogEnergyBuffer))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsDecDTXBuffer_GSMAMR_16s
|
|
//
|
|
// Purpose: Function buffer the LSF coefficients and previous log energy coefficients.
|
|
// pSrcSpch - Pointer to the input speech signal, in the length of 160, in Q15.0.
|
|
// pSrcLSF - Pointer to the LSF for this frame, in the length of 10, in Q0.15.
|
|
// pValResultUpdateIndex - Pointer to the previous memory update index. It is a value
|
|
// circularly increased between 0 and 7.
|
|
// pSrcDstLSFBuffer - Pointer to the LSF coefficients of eight previous frames, in the
|
|
// length of 80, in Q0.15.
|
|
// pSrcDstLogEnergyBuffer - Pointer to the logarithm energy coefficients of eight previous
|
|
// frames,inthelength of 8,in Q5.10.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsDecDTXBuffer_GSMAMR_16s, (const Ipp16s *pSrcSpch,
|
|
const Ipp16s *pSrcLSF, Ipp16s *pValResultUpdateIndex,
|
|
Ipp16s *pSrcDstLSFBuffer, Ipp16s *pSrcDstLogEnergyBuffer))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsAlgebraicCodebookSearch_GSMAMR_16s
|
|
//
|
|
// Purpose: Fixed (algebraic) codebook search functions
|
|
// valIntPitchLag pitch lag
|
|
// valBoundQAdptGain pitch gain
|
|
// pSrcFixedTarget target vector
|
|
// pSrcLtpResidual long term prediction residual
|
|
// pSrcDstImpulseResponse impulse response of weighted synthesis
|
|
// filter h[-L_subfr..-1] must be set to zero
|
|
// pDstFixedVector innovative codebook
|
|
// pDstFltFixedVector filtered fixed codebook excitation
|
|
// pDstEncPosSign signs of the pulses
|
|
// subFrame subframe number
|
|
// mode coder mode
|
|
// pBuffer pointer to the internal memory buffer
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI( IppStatus, ippsAlgebraicCodebookSearch_GSMAMR_16s, (Ipp16s valIntPitchLag, Ipp16s valBoundQAdptGain,
|
|
const Ipp16s *pSrcFixedTarget, const Ipp16s *pSrcLtpResidual, Ipp16s *pSrcDstImpulseResponse,
|
|
Ipp16s *pDstFixedVector, Ipp16s *pDstFltFixedVector, Ipp16s *pDstEncPosSign,
|
|
Ipp16s subFrame, IppSpchBitRate mode) )
|
|
IPPAPI(IppStatus, ippsAlgebraicCodebookSearchEX_GSMAMR_16s,
|
|
(Ipp16s valIntPitchLag, Ipp16s valBoundQAdptGain,
|
|
const Ipp16s * pSrcFixedTarget, const Ipp16s * pSrcLtpResidual,
|
|
Ipp16s * pSrcDstImpulseResponse, Ipp16s * pDstFixedVector,
|
|
Ipp16s * pDstFltFixedVector, Ipp16s * pDstEncPosSign,
|
|
Ipp16s subFrame, IppSpchBitRate mode, Ipp32s * pBuffer))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsFixedCodebookDecode_GSMAMR_16s
|
|
//
|
|
// Purpose: Fixed codebook vector decode functions
|
|
// pSrcFixedIndex pointer to the fixed codebook index vector
|
|
// pDstFixedVector pointer to the 40-element fixed codebook vector
|
|
// subFrame subframe number
|
|
// mode coder mode
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsFixedCodebookDecode_GSMAMR_16s,
|
|
(const Ipp16s *pSrcFixedIndex,
|
|
Ipp16s *pDstFixedVector,
|
|
Ipp16s subFrame,
|
|
IppSpchBitRate mode) )
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsOpenLoopPitchSearchNonDTX_GSMAMR_16s
|
|
//
|
|
// Purpose: Computes the open-loop pitch lag (as well as optimal pitch gain for 10.2 kbps frames only) when
|
|
// both DTX and VAD are disabled.
|
|
// pSrcWgtLPC1 Pointer to the 44-element vector of weighted LP coefficients
|
|
// pSrcWgtLPC2 Pointer to the 44-element vector of weighted LP coefficients
|
|
// pSrcSpch Pointer to the 170-sample input speech vector
|
|
// pValResultPrevMidPitchLag Pointer to the median filtered pitch lag of the 5 previous voiced
|
|
// speech half-frames
|
|
// pValResultVvalue Pointer to the adaptive parameter v
|
|
// pSrcDstPrevPitchLag Pointer to the five-element vector that contains the pitch lags associated
|
|
// with the five most recent voiced speech half-frames
|
|
// pSrcDstPrevWgtSpch Pointer to a 143-element vector containing perceptually weighted
|
|
// speech from the previous frame
|
|
// pDstOpenLoopLag Pointer to a two-element vector of open-loop pitch lags.
|
|
// pDstOpenLoopGain Pointer to a 2-element vector containing optimal open-loop pitch gains.
|
|
// mode coder mode
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
|
|
IPPAPI (IppStatus, ippsOpenLoopPitchSearchNonDTX_GSMAMR_16s,(
|
|
const Ipp16s * pSrcWgtLPC1,
|
|
const Ipp16s * pSrcWgtLPC2,
|
|
const Ipp16s * pSrcSpch,
|
|
Ipp16s * pValResultPrevMidPitchLag,
|
|
Ipp16s * pValResultVvalue,
|
|
Ipp16s * pSrcDstPrevPitchLag,
|
|
Ipp16s * pSrcDstPrevWgtSpch,
|
|
Ipp16s * pDstOpenLoopLag,
|
|
Ipp16s * pDstOpenLoopGain,
|
|
IppSpchBitRate mode))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsOpenLoopPitchSearchDTXVAD1_GSMAMR_16s
|
|
//
|
|
// Purpose: Extracts an open-loop pitch lag estimate from the weighted input speech when the VAD 1 scheme
|
|
// is enabled
|
|
// pSrcWgtLPC1 Pointer to the 44-element vector of weighted LP coefficients
|
|
// pSrcWgtLPC2 Pointer to the 44-element vector of weighted LP coefficients
|
|
// pSrcSpch Pointer to the 170-sample input speech vector
|
|
// pValResultToneFlag Pointer to the tone flag for the VAD module.
|
|
// pValResultPrevMidPitchLag Pointer to the median filtered pitch lag of the 5 previous voiced
|
|
// speech half-frames
|
|
// pValResultVvalue Pointer to the adaptive parameter v
|
|
// pSrcDstPrevPitchLag Pointer to the five-element vector that contains the pitch lags associated
|
|
// with the five most recent voiced speech half-frames
|
|
// pSrcDstPrevWgtSpch Pointer to a 143-element vector containing perceptually weighted
|
|
// speech from the previous frame
|
|
// pResultMaxHpCorr Pointer to the correlation maximum.
|
|
// pDstOpenLoopLag Pointer to a two-element vector of open-loop pitch lags.
|
|
// pDstOpenLoopGain Pointer to a 2-element vector containing optimal open-loop pitch gains.
|
|
// mode coder mode
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsOpenLoopPitchSearchDTXVAD1_GSMAMR_16s,(
|
|
const Ipp16s * pSrcWgtLPC1,
|
|
const Ipp16s * pSrcWgtLPC2,
|
|
const Ipp16s * pSrcSpch,
|
|
Ipp16s * pValResultToneFlag,
|
|
Ipp16s * pValResultPrevMidPitchLag,
|
|
Ipp16s * pValResultVvalue,
|
|
Ipp16s * pSrcDstPrevPitchLag,
|
|
Ipp16s * pSrcDstPrevWgtSpch,
|
|
Ipp16s * pResultMaxHpCorr,
|
|
Ipp16s * pDstOpenLoopLag,
|
|
Ipp16s * pDstOpenLoopGain,
|
|
IppSpchBitRate mode))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsOpenLoopPitchSearchDTXVAD2_GSMAMR_16s32s
|
|
//
|
|
// Purpose: Extracts an open-loop pitch lag estimate from the weighted input speech when the VAD 2 scheme
|
|
// is enabled
|
|
// pSrcWgtLPC1 Pointer to the 44-element vector of weighted LP coefficients
|
|
// pSrcWgtLPC2 Pointer to the 44-element vector of weighted LP coefficients
|
|
// pSrcSpch Pointer to the 170-sample input speech vector
|
|
// pValResultPrevMidPitchLag Pointer to the median filtered pitch lag of the 5 previous voiced
|
|
// speech half-frames
|
|
// pValResultVvalue Pointer to the adaptive parameter v
|
|
// pSrcDstPrevPitchLag Pointer to the five-element vector that contains the pitch lags associated
|
|
// with the five most recent voiced speech half-frames
|
|
// pSrcDstPrevWgtSpch Pointer to a 143-element vector containing perceptually weighted
|
|
// speech from the previous frame
|
|
// pResultMaxCorr Pointer to the correlation maximum..
|
|
// pResultWgtEnergy Pointer to the pitch delayed energy of the weighted speech signal.
|
|
// pDstOpenLoopLag Pointer to a two-element vector of open-loop pitch lags.
|
|
// pDstOpenLoopGain Pointer to a 2-element vector containing optimal open-loop pitch gains.
|
|
// mode coder mode
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsOpenLoopPitchSearchDTXVAD2_GSMAMR_16s32s,(
|
|
const Ipp16s * pSrcWgtLPC1,
|
|
const Ipp16s * pSrcWgtLPC2,
|
|
const Ipp16s * pSrcSpch,
|
|
Ipp16s * pValResultPrevMidPitchLag,
|
|
Ipp16s * pValResultVvalue,
|
|
Ipp16s * pSrcDstPrevPitchLag,
|
|
Ipp16s * pSrcDstPrevWgtSpch,
|
|
Ipp32s * pResultMaxCorr,
|
|
Ipp32s * pResultWgtEnergy,
|
|
Ipp16s * pDstOpenLoopLag,
|
|
Ipp16s * pDstOpenLoopGain,
|
|
IppSpchBitRate mode))
|
|
#define ippsOpenLoopPitchSearchDTXVAD2_GSMAMR ippsOpenLoopPitchSearchDTXVAD2_GSMAMR_16s32s
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsImpulseResponseTarget_GSMAMR_16s
|
|
//
|
|
// Purpose: Computes the impulse response and target signal required for the adaptive codebook search.
|
|
// pSrcSpch Pointer to the 50-element input speech vector, where elements 0 - 9 are from the
|
|
// previous subframe, and elements 10 - 49 are from the current subframe.
|
|
// pSrcWgtLPC1 Pointer to an 11-element vector of weighted LP coefficients
|
|
// pSrcWgtLPC2 Pointer to an 11-element vector of weighted LP coefficients
|
|
// pSrcQLPC Pointer to an 11-element vector of quantized LP coefficients
|
|
// pSrcSynFltState Pointer to the 10-element vector that contains the state of the synthesis
|
|
// filter
|
|
// pSrcWgtFltState Pointer to the 10-element vector that contains the state of the weighting
|
|
// filter.
|
|
// pDstImpulseResponse Pointer to the 40-element vector that contains the impulse response.
|
|
// pDstLpResidual Pointer to the 40-element vector that contains the LP residual.
|
|
// pDstAdptTarget Pointer to the 40-element vector that contains the adaptive codebook search
|
|
// target signal.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsImpulseResponseTarget_GSMAMR_16s,(
|
|
const Ipp16s * pSrcSpch,
|
|
const Ipp16s * pSrcWgtLPC1,
|
|
const Ipp16s * pSrcWgtLPC2,
|
|
const Ipp16s * pSrcQLPC,
|
|
const Ipp16s * pSrcSynFltState,
|
|
const Ipp16s * pSrcWgtFltState,
|
|
Ipp16s * pDstImpulseResponse,
|
|
Ipp16s * pDstLpResidual,
|
|
Ipp16s * pDstAdptTarget))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsAdaptiveCodebookSearch_GSMAMR_16s
|
|
//
|
|
// Purpose: Performs the adaptive codebook search.
|
|
// pSrcAdptTarget Pointer to the 40-element adaptive target signal vector,
|
|
// pSrcImpulseResponse Pointer to the 40-element impulse response of the weighted synthesis
|
|
// filter.
|
|
// pSrcOpenLoopLag Pointer to a two-element vector of open-loop pitch lags.
|
|
// pValResultPrevIntPitchLag Pointer to the previous integral pitch lag.
|
|
// pSrcDstExcitation Pointer to the 194-element excitation vector.
|
|
// pResultFracPitchLag Pointer to the fractional pitch lag obtained during the adaptive codebook
|
|
// search.
|
|
// pResultAdptIndex Pointer to the coded closed-loop pitch index.
|
|
// pDstAdptVector Pointer to the 40-sample adaptive codebook vector.
|
|
// subFrame subframe number
|
|
// mode coder mode
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsAdaptiveCodebookSearch_GSMAMR_16s,(
|
|
const Ipp16s * pSrcAdptTarget,
|
|
const Ipp16s * pSrcImpulseResponse,
|
|
Ipp16s * pSrcOpenLoopLag,
|
|
Ipp16s * pValResultPrevIntPitchLag,
|
|
Ipp16s * pSrcDstExcitation,
|
|
Ipp16s * pResultFracPitchLag,
|
|
Ipp16s * pResultAdptIndex,
|
|
Ipp16s * pDstAdptVector,
|
|
Ipp16s subFrame,
|
|
IppSpchBitRate mode))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsAdaptiveCodebookDecode_GSMAMR_16s
|
|
//
|
|
// Purpose: This function decodes the adaptive codebook parameters transmitted by the encoder, and then
|
|
// applies them to interpolate an adaptive codebook vector.
|
|
// valAdptIndex Adaptive codebook index.
|
|
// pValResultPrevIntPitchLag Pointer to the previous integer pitch lag.
|
|
// pValResultLtpLag Pointer to the LTP-Lag value.
|
|
// pSrcDstExcitation Pointer to the 194-element excitation vector.
|
|
// pResultIntPitchLag Pointer to the 194-element excitation vector.
|
|
// pDstAdptVector Pointer to the fractional pitch lag obtained during the adaptive codebook
|
|
// subFrame subframe number
|
|
// bfi Bad frame indicator. "0" signifies a good frame; any other value signifies a bad frame.
|
|
// inBackgroundNoise Flag set when the previous frame is considered to contain background
|
|
// noise and only shows minor energy level changes.
|
|
// voicedHangover Counter used to monitor the time since a frame was presumably voiced.
|
|
// mode coder mode
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus ,ippsAdaptiveCodebookDecode_GSMAMR_16s,(
|
|
Ipp16s valAdptIndex,
|
|
Ipp16s * pValResultPrevIntPitchLag,
|
|
Ipp16s * pValResultLtpLag,
|
|
Ipp16s * pSrcDstExcitation,
|
|
Ipp16s * pResultIntPitchLag,
|
|
Ipp16s * pDstAdptVector,
|
|
Ipp16s subFrame,
|
|
Ipp16s bfi,
|
|
Ipp16s inBackgroundNoise,
|
|
Ipp16s voicedHangover,
|
|
IppSpchBitRate mode))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsPostFilter_GSMAMR_16s
|
|
//
|
|
// Purpose: This function decodes the adaptive codebook parameters transmitted by the encoder, and then
|
|
// applies them to interpolate an adaptive codebook vector.
|
|
// pSrcQLPC Pointer to the reconstructed LP coefficients, in the length of 44.
|
|
// pSrcSpch Pointer to the start position of the input speech signal for current frame.
|
|
// pValResultPrevResidual Pointer to the last output of the FIR filter of the formant filter for
|
|
// previous subframe.
|
|
// pValResultPrevScalingGain Pointer to the scaling factor b of the last signal for the previous
|
|
// subframe.
|
|
// pSrcDstFormantFIRState Pointer to the state of the FIR part of the formant filter, in the
|
|
// length of 10.
|
|
// pSrcDstFormantIIRState Pointer to the state of the IIR part of the formant filter, in the length
|
|
// of 10.
|
|
// pDstFltSpch Pointer to the filtered speech, in the length of 160.
|
|
// mode coder mode
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsPostFilter_GSMAMR_16s,(
|
|
const Ipp16s * pSrcQLPC,
|
|
const Ipp16s * pSrcSpch,
|
|
Ipp16s * pValResultPrevResidual,
|
|
Ipp16s * pValResultPrevScalingGain,
|
|
Ipp16s * pSrcDstFormantFIRState,
|
|
Ipp16s * pSrcDstFormantIIRState,
|
|
Ipp16s * pDstFltSpch,
|
|
IppSpchBitRate mode))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsVAD1_GSMAMR_16s
|
|
//
|
|
// Purpose: Voice Activity Detection (VAD) for AMR (option 1) functions
|
|
// pSrcSpch pointer to the input speech signal, in the length of 160
|
|
// pSrcDstVad1State pointer to the VAD Option 1 history variables
|
|
// pResultVadFlag pointer to the VAD flag of this frame
|
|
// maxHpCorr best_corr_hp value of previous frame
|
|
// toneFlag tone flag
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsVAD1_GSMAMR_16s,
|
|
(const Ipp16s *pSrcSpch,
|
|
IppGSMAMRVad1State *pSrcDstVad1State,
|
|
Ipp16s *pResultVadFlag,
|
|
Ipp16s maxHpCorr,
|
|
Ipp16s toneFlag) )
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsVAD2_GSMAMR_16s
|
|
//
|
|
// Purpose: Voice Activity Detection (VAD) for AMR (option 2) functions
|
|
// pSrcSpch pointer to the input speech signal, in the length of 160
|
|
// pSrcDstVad2State pointer to the VAD Option 2 history variables
|
|
// pResultVadFlag pointer to the VAD flag of this frame
|
|
// ltpFlag LTP_flag value, which is generated by the comparison
|
|
// of the long-term prediction to a constant threshold LTP_THLD.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsVAD2_GSMAMR_16s,
|
|
(const Ipp16s * pSrcSpch,
|
|
IppGSMAMRVad2State *pSrcDstVad2State,
|
|
Ipp16s *pResultVadFlag,
|
|
Ipp16s ltpFlag) )
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// G.722.1 related functions
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsDCTFwd_G722, ippsDCTInv_G722
|
|
// Purpose: Computes the forward or inverse discrete cosine transform (DCT)
|
|
// of a signal.
|
|
// Parameters:
|
|
// pSrc Pointer to the source vector.
|
|
// pDst Pointer to the destination vector.
|
|
// len Length of the source and destination vectors either 320
|
|
// for G722 by default or 640 for G7221 functions respectively.
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// ippStsNullPtrErr Indicates an error when one of the specified pointer is NULL.
|
|
// IppStsSizeErr Indicates an error when len has an illegal value.
|
|
*/
|
|
IPPAPI( IppStatus, ippsDCTFwd_G722_16s, (const Ipp16s *pSrc, Ipp16s *pDst))
|
|
IPPAPI( IppStatus, ippsDCTFwd_G7221_16s, (const Ipp16s *pSrc, Ipp16s *pDst, int len))
|
|
|
|
IPPAPI( IppStatus, ippsDCTInv_G722_16s, (const Ipp16s *pSrc, Ipp16s *pDst))
|
|
IPPAPI( IppStatus, ippsDCTInv_G7221_16s, (const Ipp16s *pSrcMLT, Ipp16s *pDstSmpl, int len))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsDecomposeMLTToDCT_G722
|
|
// Purpose: Decompose MLT transform input signal to form of the DCT transform
|
|
// input signal.
|
|
// Parameters:
|
|
// pSrcSpch Pointer to the source speech vector .
|
|
// pSrcSpchOld Pointer to the source/destination vector of
|
|
// the previous speech frame.
|
|
// pDstSpchDecomposed Pointer to the destination decomposed speech vector.
|
|
// len Length of the source and destination vectors either 320
|
|
// for G722 by default or 640 for G7221 functions respectively.
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// ippStsNullPtrErr Indicates an error when one of the specified pointer is NULL.
|
|
// IppStsSizeErr Indicates an error when len has an illegal value.
|
|
*/
|
|
IPPAPI( IppStatus, ippsDecomposeMLTToDCT_G722_16s, (const Ipp16s *pSrcSpch,
|
|
Ipp16s *pSrcDstSpchOld, Ipp16s *pDstSpchDecomposed))
|
|
IPPAPI( IppStatus, ippsDecomposeMLTToDCT_G7221_16s, (const Ipp16s *pSrcSpch,
|
|
Ipp16s *pSrcDstSpchOld, Ipp16s *pDstSpchDecomposed, int len))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsDecomposeDCTToMLT_G722_16s
|
|
// Purpose: Decompose IDCT output signal to form of the MLT transform output signal.
|
|
// Parameters:
|
|
// pSrcSpchDecomposed Pointer to the source windowed speech vector[len].
|
|
// pSrcSpchDecomposedOld Pointer to the source/destination
|
|
// windowed speech vector[len/2] of previous frame.
|
|
// pDstSpch Pointer to the destination speech vector[len].
|
|
// len Length of destination vectors either 320 for G722
|
|
// by default or 640 for G7221 functions respectively.
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// ippStsNullPtrErr Indicates an error when one of the specified pointer is NULL.
|
|
// IppStsSizeErr Indicates an error when len has an illegal value.
|
|
*/
|
|
IPPAPI( IppStatus, ippsDecomposeDCTToMLT_G722_16s, (const Ipp16s *pSrcSpchDecomposed,
|
|
Ipp16s *pSrcDstSpchDecomposedOld, Ipp16s *pDstSpch))
|
|
IPPAPI( IppStatus, ippsDecomposeDCTToMLT_G7221_16s, (const Ipp16s *pSrcSpchDecomposed,
|
|
Ipp16s *pSrcDstSpchDecomposedOld, Ipp16s *pDstSpch, int len))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsHuffmanEncode_G722
|
|
// Purpose: Performs Huffman encoding of the quantized amplitude envelope indexes.
|
|
// Parameters:
|
|
// category The category of MLT region in range of [0-7]
|
|
// qntAmpEnvIndex The quantized amplitude envelope index in range of [0-63]
|
|
// pSrcMLTCoeffs Pointer to the source vector[20] of raw MLT coefficients.
|
|
// pDstCode Pointer to the output Huffman code.
|
|
// pCodeLength Pointer to output Huffman code length in bit.
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// IppStsNullPtrErr Indicates an error when the pSrcMLTCoeffs or pDstCode
|
|
// or pCodeLength pointer is null
|
|
// IppStsScaleRangeErr Indicates an error when category or qntAmpEnvIndex is out of
|
|
// proper range.
|
|
*/
|
|
IPPAPI( IppStatus, ippsHuffmanEncode_G722_16s32u, (int category, int qntAmpEnvIndex,
|
|
const Ipp16s *pSrcMLTCoeffs, Ipp32u *pDstCode, int *pCodeLength))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// G.722.1 end
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// G.726 related functions
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
#if !defined( _OWN_BLDPCS )
|
|
|
|
typedef struct _EncoderState_G726_16s IppsEncoderState_G726_16s;
|
|
typedef struct _DecoderState_G726_16s IppsDecoderState_G726_16s;
|
|
|
|
#endif
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsEncodeGetStateSize_G726
|
|
// Purpose: Query of G726 encoder memory size
|
|
// Parameters:
|
|
// pEncSize Pointer to the output value of the G726 encoder memory size in bytes
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI(IppStatus, ippsEncodeGetStateSize_G726_16s8u,(unsigned int* pEncSize))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsEncodeInit_G726
|
|
// Purpose: Initializes the memory for the ADPCM encode
|
|
// Parameters:
|
|
// pEncMem Pointer to the input memory buffer of appropriate size applicable to
|
|
// store a state of the encoder
|
|
// rate Encode bit rate of the G.726 encoder: IPP_SPCHBR_16000,
|
|
// IPP_SPCHBR_24000, IPP_SPCHBR_32000, IPP_SPCHBR_40000.
|
|
// Returns:
|
|
// ippStsBadArgErr Indicates an error when the rate is not equal to one of the
|
|
// allowable encoding bit rates: IPP_SPCHBR_16000, IPP_SPCHBR_24000 or
|
|
// IPP_SPCHBR_32000, IPP_SPCHBR_40000.
|
|
// IppStsNullPtrErr Indicates an error when the memory pointer is null
|
|
*/
|
|
IPPAPI(IppStatus, ippsEncodeInit_G726_16s8u,
|
|
(IppsEncoderState_G726_16s* pEncMem, IppSpchBitRate rate))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsEncode_G726
|
|
// Purpose: ADPCM encoding of input speech signal
|
|
// Parameters:
|
|
// pEncMem Pointer to the encoder state memory
|
|
// pSrc Pointer to the uniform PCM input speech vector.
|
|
// pDst Pointer to the ADPCM bit-stream output vector.
|
|
// len The length of input/output vectors.
|
|
// Returns:
|
|
// ippStsNoErr, if no errors
|
|
// ippStsBadArgErr Indicates an error when the len is less or equal to 0.
|
|
// IppStsNullPtrErr Indicates an error when the pEncMem , pSrc, pDst pointer is null
|
|
*/
|
|
IPPAPI(IppStatus, ippsEncode_G726_16s8u,
|
|
(IppsEncoderState_G726_16s* pEncMem, const Ipp16s *pSrc, Ipp8u *pDst, unsigned int len))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsEncodeGetStateSize_G726
|
|
// Purpose: Query of G726 decoder memory size
|
|
// Parameters:
|
|
// pDecSize Pointer to the output value of the G726 decoder memory size in bytes
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI(IppStatus, ippsDecodeGetStateSize_G726_8u16s,(unsigned int* pDecSize))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsEncodeInit_G726
|
|
// Purpose: Initializes the memory for the ADPCM encode
|
|
// Parameters:
|
|
// pDecMem Pointer to the input memory buffer of appropriate size applicable to
|
|
// store a state of the decoder
|
|
// rate input bit rate of the G.726 decoder: IPP_SPCHBR_16000,
|
|
// IPP_SPCHBR_24000, IPP_SPCHBR_32000, IPP_SPCHBR_40000.
|
|
// law Output speech PCM law : IPP_PCM_MULAW, IPP_PCM_ALAW, IPP_PCM_LINEAR
|
|
// Returns:
|
|
// ippStsBadArgErr Indicates an error when the rate is not equal to one of the
|
|
// allowable decoding bit rates: IPP_SPCHBR_16000, IPP_SPCHBR_24000 or
|
|
// IPP_SPCHBR_32000,
|
|
// IPP_SPCHBR_40000 or the law is not equal to one othe allowable output PCM:
|
|
// IPP_PCM_MULAW, IPP_PCM_ALAW, IPP_PCM_LINEAR.
|
|
// IppStsNullPtrErr Indicates an error when the obj pointer is null
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsDecodeInit_G726_8u16s,
|
|
(IppsDecoderState_G726_16s* pDecMem, IppSpchBitRate rate, IppPCMLaw law))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsDecode_G726
|
|
// Purpose: Initializes the memory for the ADPCM encode
|
|
// Parameters:
|
|
// pDecMem Pointer to the decoder state memory
|
|
// pSrc Pointer to the input ADPCM code vector contains two, three,
|
|
// four or five bits of the ADPCM codes per byte respectively for
|
|
// 16, 24, 32 or 40 Kbit/s bit rates.
|
|
// pDst Pointer to the 16bit linear PCM speech output vector.
|
|
// len The length of input/output vectors.
|
|
// Returns:
|
|
// ippStsNoErr, if no errors
|
|
// ippStsBadArgErr Indicates an error when the len is less or equal to 0.
|
|
// IppStsNullPtrErr Indicates an error when the pDecMem , pSrc, pDst pointer is null
|
|
*/
|
|
IPPAPI(IppStatus, ippsDecode_G726_8u16s,
|
|
(IppsDecoderState_G726_16s* pDecMem, const Ipp8u *pSrc, Ipp16s *pDst, unsigned int len))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// G.726 end
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// G.728 related functions
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
/*
|
|
// Name: ippsIIR16s_G728
|
|
// Purpose: IIR filter
|
|
// 1+B(1/z)/1+A(1/z)
|
|
// pCoeffs pointer to the input filter coefficients B[11], A[11] in Q14
|
|
// pSrcQntSpeech pointer to the input quantized speech vector
|
|
// pDstWgtSpeech pointer to the output perceptually weighted speech vector
|
|
// pMem pointer to the filter memory
|
|
*/
|
|
#if !defined( _OWN_BLDPCS )
|
|
|
|
typedef struct _IIRState_G728_16s IppsIIRState_G728_16s;
|
|
|
|
#endif
|
|
|
|
IPPAPI(IppStatus, ippsIIR16sGetStateSize_G728_16s, (int *pSize))
|
|
IPPAPI(IppStatus, ippsIIR16sInit_G728_16s, (IppsIIRState_G728_16s *pMem ))
|
|
IPPAPI(IppStatus, ippsIIR16s_G728_16s, (const Ipp16s *pCoeffs, const Ipp16s *pSrcQntSpeech,
|
|
Ipp16s *pDstWgtSpeech, int len, IppsIIRState_G728_16s *pMem ))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippSynthesisFilter_G728
|
|
// Purpose: Synthesis filter of size LPC (50)
|
|
// 1/1+A(1/z)
|
|
// pCoeffs pointer to the input LPC filter coefficients vector[51]
|
|
// pSrcDstExc pointer to the input/output gain-scaled excitation vector[5] (ET)
|
|
// excSfs input scale of the previous gain-scaled excitation vector (NLSET)
|
|
// pDstSpeech pointer to the output quantized speech vector[5] (ST)
|
|
// pSpeechSfs output scale of the quantized speech vector (NLSST)
|
|
// pMem pointer to the filter memory
|
|
*/
|
|
|
|
#if !defined( _OWN_BLDPCS )
|
|
|
|
typedef struct _SynthesisFilterState_G728_16s IppsSynthesisFilterState_G728_16s;
|
|
|
|
#endif
|
|
|
|
IPPAPI(IppStatus, ippsSynthesisFilterGetStateSize_G728_16s,(int* pSize))
|
|
IPPAPI(IppStatus, ippsSynthesisFilterInit_G728_16s,(IppsSynthesisFilterState_G728_16s *pMem))
|
|
IPPAPI(IppStatus, ippsSyntesisFilterZeroInput_G728_16s,(const Ipp16s* pCoeffs,
|
|
Ipp16s *pSrcDstExc, Ipp16s excSfs,Ipp16s *pDstSpeech, Ipp16s *pSpeechSfs,
|
|
IppsSynthesisFilterState_G728_16s *pMem))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsCombinedFilter_G728
|
|
// Purpose: Combined filter
|
|
// Synthesis filter of size LPC (50) + Perceptual weighted filter (IIR)
|
|
// 1/1+A(1/z) * 1+B(1/z)/1+A(1/z)
|
|
// pSyntCoeffs pointer to the input LPC coefficient vector[51]: 1, a0,...,a50
|
|
// pWgtCoeffs pointer to the input WGT filter coefficients B[11] 1,b0,...,b10,
|
|
and A[11] 1,a0,...,a10 in Q14
|
|
// pDstWgtZIR pointer to the output synthesized speech vector
|
|
// pSrcDstExc pointer to the input/output gain-scaled excitation vector[5] (ET)
|
|
// excSfs input scale of the previous gain-scaled excitation vector (NLSET)
|
|
// pDstSpeech pointer to the output quantized speech vector[5] (ST)
|
|
// pSpeechSfs output scale of the quantized speech vector (NLSST)
|
|
// pMem pointer to the filter memory
|
|
*/
|
|
|
|
#if !defined( _OWN_BLDPCS )
|
|
|
|
typedef struct _CombinedFilterState_G728_16s IppsCombinedFilterState_G728_16s;
|
|
|
|
#endif
|
|
|
|
IPPAPI(IppStatus, ippsCombinedFilterGetStateSize_G728_16s,(int* pSize))
|
|
IPPAPI(IppStatus, ippsCombinedFilterInit_G728_16s,(IppsCombinedFilterState_G728_16s* pMem))
|
|
IPPAPI(IppStatus, ippsCombinedFilterZeroInput_G728_16s,(const Ipp16s* pSyntCoeff,
|
|
const Ipp16s* pWgtCoeff, Ipp16s* pDstWgtZIR, IppsCombinedFilterState_G728_16s* pMem))
|
|
IPPAPI(IppStatus, ippsCombinedFilterZeroState_G728_16s,(const Ipp16s* pSyntCoeff,
|
|
const Ipp16s* pWgtCoeff, Ipp16s* pSrcDstExc, Ipp16s excSfs,
|
|
Ipp16s* pDstSpeech, Ipp16s* pSpeechSfs, IppsCombinedFilterState_G728_16s* pMem))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsPostFilter_G728
|
|
// Purpose: Post filter
|
|
// gl*(1+glb*1/z^kp)* 1-B(1/z)/1-A(1/z) * (1+kp*1/z)
|
|
// gl LTP scaling factor
|
|
// glb LTP product term
|
|
// kp LTP lag, pitch period of current frame
|
|
// tiltz STP tilt-compensation coefficient
|
|
// pCoeffs pointer to the input LPC filter coefficients B(10), A(10)
|
|
// pSrc pointer to the input quantized speech vector SST [-kp,IDIM-1]
|
|
// pDst pointer to the output postfiltered speech vector
|
|
// pSTPmem pointer to the filter memory (61 short integers)
|
|
*/
|
|
|
|
#if !defined( _OWN_BLDPCS )
|
|
|
|
typedef struct _PostFilterState_G728_16s IppsPostFilterState_G728_16s;
|
|
|
|
#endif
|
|
|
|
IPPAPI(IppStatus, ippsPostFilterGetStateSize_G728_16s,(int *pSize))
|
|
IPPAPI(IppStatus, ippsPostFilterInit_G728_16s,(IppsPostFilterState_G728_16s *pMem))
|
|
IPPAPI(IppStatus, ippsPostFilter_G728_16s,(Ipp16s gl, Ipp16s glb, Ipp16s kp, Ipp16s tiltz,
|
|
const Ipp16s *pCoeffs, const Ipp16s *pSrc, Ipp16s *pDst,
|
|
IppsPostFilterState_G728_16s *pMem))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsWinHybrid_G728
|
|
// Purpose: Hybrid window auto-correlation for backward-adaptive analysis
|
|
// in LD-CELP window:
|
|
// s(M-N),s(M-N+1),...,s(M-1),s(M),s(M+1),...,s(M+L-1)
|
|
// M LPC order for backward adaptation
|
|
// L number of signal samples in backward adaptation
|
|
// N number of non-recursive samples in the hybrid window
|
|
// DIM block size, shall be defined for block scaled operation by
|
|
// the function _ippsWinHybridBlock_G728_16s,
|
|
// where pSrcSfs[i] is the scale factor of pSrc[i*DIM],...,pSrc[i*DIM+DIM-1]
|
|
// If 0, then default scale factor 14 is always used.
|
|
// pSrc input signal for backward-adaptive analysis
|
|
//
|
|
// ippsWinHybridGetStateSize_G728_16s: return the size of HWM memory
|
|
// ippsWinHybridInit_G728_16s: initialized the HWM memory given
|
|
// ippsWinHybridBlock_G728_16s : block operation
|
|
// ippsWinHybrid_G728_16s : non-block operation
|
|
*/
|
|
#if !defined( _OWN_BLDPCS )
|
|
|
|
typedef struct _WinHybridState_G728_16s IppsWinHybridState_G728_16s;
|
|
|
|
#endif
|
|
|
|
IPPAPI(IppStatus, ippsWinHybridGetStateSize_G728_16s,(int M, int L, int N, int DIM, int *pMemSize))
|
|
IPPAPI(IppStatus, ippsWinHybridInit_G728_16s,(const Ipp16s *pWinTab,int M, int L, int N,
|
|
int DIM, Ipp16s a2L, IppsWinHybridState_G728_16s *pMem))
|
|
IPPAPI(IppStatus, ippsWinHybridBlock_G728_16s,(Ipp16s bfi, const Ipp16s *pSrc, const Ipp16s *pSrcSfs, Ipp16s *pDst,
|
|
IppsWinHybridState_G728_16s *pMem))
|
|
IPPAPI(IppStatus, ippsWinHybrid_G728_16s,(Ipp16s bfi, const Ipp16s *pSrc, Ipp16s *pDst,
|
|
IppsWinHybridState_G728_16s *pMem))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsLevinsonDurbin_G728
|
|
// Purpose: Calculates LPC by Levinson-Durbin recursion
|
|
// pSrcAutoCorr pointer to the autocorrelation vector
|
|
// numSrcLPC number of precalculated LPC
|
|
// order LP order
|
|
// pDstLPC pointer to the LPC output vector
|
|
// pSrcDstLPC pointer to the input/output LPC vector
|
|
// pDstRC1 pointer to the output first RC
|
|
// pDstResidualEnergy pointer to output residual energy
|
|
// pDstScaleFactor pointer to the output scale factor of LPC
|
|
// pSrcDstScaleFactor pointer to the input/output scale factor of LPC
|
|
*/
|
|
IPPAPI(IppStatus, ippsLevinsonDurbin_G728_16s_Sfs,(const Ipp16s *pSrcAutoCorr,
|
|
int order,
|
|
Ipp16s *pDstLPC,
|
|
Ipp16s *pDstRC1,
|
|
Ipp16s *pDstResidualEnergy,
|
|
Ipp16s *pDstScaleFactor))
|
|
IPPAPI(IppStatus, ippsLevinsonDurbin_G728_16s_ISfs,(const Ipp16s *pSrcAutoCorr,
|
|
int numSrcLPC,
|
|
int order,
|
|
Ipp16s *pSrcDstLPC,
|
|
Ipp16s *pSrcDstResidualEnergy,
|
|
Ipp16s *pSrcDstScaleFactor))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsCodebookSearch_G728
|
|
// Purpose: Search for the best codebook vector
|
|
// pSrcCorr pointer to the input correlation vector
|
|
// pSrcEnergy pointer to the input energy of convolved shape codevector
|
|
// pDstShapeIdx pointer to the output best 7-bit shape codebook index
|
|
// pDstGainIdx pointer to the output best 3-bit gain codebook index
|
|
// rate input coding bit rate :
|
|
// IPP_SPCHBR_16000, IPP_SPCHBR_12800 or IPP_SPCHBR_9600
|
|
*/
|
|
IPPAPI(IppStatus, ippsCodebookSearch_G728_16s,(
|
|
const Ipp16s* pSrcCorr, const Ipp16s* pSrcEnergy,
|
|
int* pDstShapeIdx, int* pDstGainIdx, Ipp16s* pDstCodebookIdx, IppSpchBitRate rate))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsImpulseResponseEnergy_G728
|
|
// Purpose: Shape codevector convolution and energy calculation
|
|
// pSrcImpResp - pointer to the input impulse response vector of F(z)W(z)
|
|
// pDstEnergy - pointer to the output energy of convolved shape codevector Y2[1,NCWD]
|
|
*/
|
|
IPPAPI(IppStatus, ippsImpulseResponseEnergy_G728_16s,(const Ipp16s *pSrcImpResp, Ipp16s *pDstEnergy))
|
|
|
|
/* Postfilter adapter block */
|
|
|
|
#if !defined( _OWN_BLDPCS )
|
|
|
|
typedef struct _PostFilterAdapterState_G728 IppsPostFilterAdapterState_G728;
|
|
|
|
#endif
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsPostFilterAdapterGetStateSize_G728
|
|
// Purpose: return the size of postfilter adapter memory.
|
|
*/
|
|
IPPAPI(IppStatus, ippsPostFilterAdapterGetStateSize_G728, (int *pSize))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsPostFilterAdapterStateInit_G728
|
|
// Purpose: initializes the memory for postfilter adapter.
|
|
*/
|
|
IPPAPI(IppStatus, ippsPostFilterAdapterStateInit_G728, (IppsPostFilterAdapterState_G728 *pMem))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsLPCInverseFilter_G728_16s
|
|
//
|
|
// Purpose: compute the LPC prediction residual for the current decoded speech vector. (block 81)
|
|
// Parameters:
|
|
// pSrcSpeech pointer to quantized speech buffer. (sst)
|
|
// pCoeffs pointer to 10th-order LPC filter coefficients. (apf)
|
|
// pDstResidual pointer to LPC prediction residual memory. (d)
|
|
// pMem pointer to postfilter adapter memory. (LPC inverse filter memory - "stlpci")
|
|
// Returns: IppStatus
|
|
// ippStsNoErr Ok
|
|
// ippStsNullPtrErr At least one of the specified pointers is NULL
|
|
// Notes:
|
|
*/
|
|
IPPAPI(IppStatus, ippsLPCInverseFilter_G728_16s, (const Ipp16s* pSrcSpeech, const Ipp16s* pCoeffs,
|
|
Ipp16s* pDstResidual, IppsPostFilterAdapterState_G728* pMem))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsPitchPeriodExtraction_G728_16s
|
|
//
|
|
// Purpose: extract the pitch period from the LPC prediction residual. (block 82)
|
|
// Parameters:
|
|
// pSrcResidual pointer to LPC prediction residual memory. (d)
|
|
// pPitchPeriod pointer to the pitch period of the frame. (kp1)
|
|
// pMem pointer to postfilter adapter memory. (lpfiir, lpfiir, dec)
|
|
// Returns: IppStatus
|
|
// ippStsNoErr Ok
|
|
// ippStsNullPtrErr At least one of the specified pointers is NULL
|
|
// Notes:
|
|
*/
|
|
IPPAPI(IppStatus, ippsPitchPeriodExtraction_G728_16s, (const Ipp16s* pSrcResidual,
|
|
int* pPitchPeriod, IppsPostFilterAdapterState_G728* pMem))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// G.728 end
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// GSMFR related functions
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsRPEQuantDecode_GSMFR_16s
|
|
// Purpose: APCM inverse quantization: decoding the RPE sequence of coded xMc
|
|
// pSrc pointer to the input RPE pulses vector[13] (xMc)
|
|
// pDst pointer to the output reconstructed long-term residual vector[13] (xMp)
|
|
// ampl block amplitude (xmaxc)
|
|
// amplSfs block amplitude scale factor
|
|
*/
|
|
IPPAPI(IppStatus, ippsRPEQuantDecode_GSMFR_16s,
|
|
(const Ipp16s *pSrc, Ipp16s ampl, Ipp16s amplSfs, Ipp16s *pDst))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsDeemphasize_GSMFR_16s_I
|
|
// Purpose: De-emphasis filtering (GSM 06.10 5.3.5)
|
|
// pSrcDst pointer to the input ST-synthesized signal (sr)
|
|
// and output post-processed speech (sr0)
|
|
// pMem pointer to the filter memory element
|
|
// len length of input/output vector
|
|
*/
|
|
IPPAPI(IppStatus, ippsDeemphasize_GSMFR_16s_I,(Ipp16s *pSrcDst,int len,Ipp16s *pMem))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsShortTermSynthesisFilter_GSMFR_16s
|
|
// Purpose: Short-term synthesis filtering (GSM 06.10 5.3.2)
|
|
// 1/A(z)
|
|
// pRC pointer to the input reflection coefficients vector[8]
|
|
// pSrc pointer to the input reconstructed short term residual vector[len]
|
|
// pDstSpch pointer to the output speech vector[len]
|
|
// len length of input residual and output speech vectors
|
|
// pMem pointer to the filter memory vector[9]
|
|
*/
|
|
IPPAPI(IppStatus, ippsShortTermSynthesisFilter_GSMFR_16s,
|
|
(const Ipp16s *pRC, const Ipp16s *pSrcResidual, Ipp16s *pDstSpch, int len, Ipp16s *pMem))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsShortTermAnalysisFilter_GSMFR_16s_I
|
|
// Purpose: Short-term analysis filtering (GSM 06.10 5.2.10)
|
|
// 1/A(z)
|
|
// pRC pointer to the input reflection coefficients vector[8]
|
|
// pSrcDstSpch pointer to the input preprocessed signal and output
|
|
// short term residual vector[len]
|
|
// len length of input residual and output speech vectors
|
|
// pMem pointer to the filter memory vector[9]
|
|
*/
|
|
IPPAPI(IppStatus, ippsShortTermAnalysisFilter_GSMFR_16s_I,
|
|
(const Ipp16s *pRC, Ipp16s *pSrcDstSpch, int len, Ipp16s *pMem))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsHighPassFilter_GSMFR
|
|
// Purpose: Offset compensation of the input signal, GSM 06.10 5.2.2
|
|
// Parameters:
|
|
// pSrc pointer to the input speech vector
|
|
// pDst pointer to the output filtered vector
|
|
// len length of input and output vectors
|
|
// pMem pointer to the filter memory vector[2]
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI(IppStatus, ippsHighPassFilter_GSMFR_16s,
|
|
(const Ipp16s *pSrc, Ipp16s *pDst,int len,int *pMem))
|
|
/*/////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsSchur_GSMFR
|
|
// Purpose: Calculates reflection coefficients using Schur algorithm. GSM 06.10 5.2.5.
|
|
//
|
|
// Arguments:
|
|
// pSrc - Pointer to the input autocorrelations vector
|
|
// pDst - Pointer to the output reflection coefficients vector
|
|
// dstLen - vector destination length
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI(IppStatus, ippsSchur_GSMFR_32s16s,(const Ipp32s *pSrc,Ipp16s *pDst,int dstLen))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsWeightingFilter_GSMFR
|
|
// Purpose: weighting filtering. GSM 06.10 5.2.13
|
|
// Arguments:
|
|
// pSrc - pointer to the source vector
|
|
// pDst - pointer to the destination vector
|
|
// dstLen - source/destination length
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI(IppStatus, ippsWeightingFilter_GSMFR_16s,(const Ipp16s *pSrc, Ipp16s *pDst,int dstLen))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsPreemphasize_GSMFR
|
|
// Purpose: preemphasize offset compensated signal. GSM 06.10 5.2.3
|
|
// Arguments:
|
|
// pSrc - pointer to the source vector
|
|
// pDst - pointer to the destination vector
|
|
// pMem - pointer to the filter memory value
|
|
// len - source/destination length
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI(IppStatus, ippsPreemphasize_GSMFR_16s,
|
|
(const Ipp16s *pSrc, Ipp16s *pDst, int len, Ipp16s *pMem))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// GSMFR end
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// AMRWB related functions
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsResidualFilter_AMRWB_16s_Sfs
|
|
// Purpose: Compute the LPC residual by filtering the input speech through A(z).
|
|
// rounding to nearest:
|
|
// const1 = 1<<(scaleFactor-1)
|
|
// (a*b+const1)>>scaleFactor;
|
|
// Parameters:
|
|
// pSrcLpc pointer to the input LPC
|
|
// valLPCOrder length of the LPC vector
|
|
// pSrcSpeech pointer to the input vector[-valLPCOrder,..,-1,0,...,,len-1]
|
|
// pDstResidualSignal pointer to the output vector of length[len]
|
|
// len length of the vectors
|
|
// scaleFactor scale factor value
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
|
|
IPPAPI( IppStatus, ippsResidualFilter_AMRWB_16s_Sfs,(
|
|
const Ipp16s *pSrcLpc,
|
|
Ipp16s valLPCOrder,
|
|
const Ipp16s *pSrcSpeech,
|
|
Ipp16s *pDstResidualSignal,
|
|
Ipp32s len,
|
|
Ipp32s scaleFactor
|
|
))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsResidualFilter_Low_16s_Sfs
|
|
// Purpose: Compute the LPC residual by filtering the input speech through A(z).
|
|
// rounding to nearest:
|
|
// const1 = 1<<(scaleFactor-1)
|
|
// (a*b+const1)>>scaleFactor;
|
|
// Parameters:
|
|
// pSrcLpc pointer to the input LPC
|
|
// valLPCOrder length of the LPC vector
|
|
// pSrcSpeech pointer to the input vector[-valLPCOrder,..,-1,0,...,,len-1]
|
|
// pDstResidualSignal pointer to the output vector of length[len]
|
|
// len length of the vectors
|
|
// scaleFactor scale factor value
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
|
|
IPPAPI( IppStatus, ippsResidualFilter_Low_16s_Sfs,(
|
|
const Ipp16s *pSrcLpc,
|
|
Ipp16s valLPCOrder,
|
|
const Ipp16s *pSrcSpeech,
|
|
Ipp16s *pDstResidualSignal,
|
|
Ipp32s len,
|
|
Ipp32s scaleFactor
|
|
))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name : ippsLPCToISP_AMRWB_16s
|
|
// Purpose: LP to ISP coefficients conversion
|
|
// Parameters:
|
|
// pSrcLpc pointer to the input predictor coefficients
|
|
// pDstIsp pointer to the output immittance spectral pairs
|
|
// pSrcPrevIsp pointer to the input previous immittance spectral pairs.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
|
|
IPPAPI( IppStatus, ippsLPCToISP_AMRWB_16s,(
|
|
const Ipp16s *pSrcLpc,
|
|
Ipp16s *pDstIsp,
|
|
const Ipp16s *pSrcPrevIsp
|
|
))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name : ippsISPToLPC_AMRWB_16s
|
|
// Purpose: ISP to LP coefficients conversion
|
|
// Parameters:
|
|
// pSrcIsp pointer to the input immittance spectral pairs
|
|
// pDstLpc pointer to the output predictor coefficients
|
|
// len length of the destination vector.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
|
|
IPPAPI( IppStatus, ippsISPToLPC_AMRWB_16s,(
|
|
const Ipp16s *pSrcIsp,
|
|
Ipp16s *pDstLpc,
|
|
Ipp32s len
|
|
))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsISPToISF_Norm_AMRWB_16s
|
|
// Purpose:
|
|
// pDstIsf[i] = arccos(pSrcIsp[i]); i=0,...,lenLpc
|
|
// result is 15 bit scaled in range [0:0.5]
|
|
// Parameters:
|
|
// pSrcIsp pointer to the ISP input vector of values 15 bit scaled in range [-1:1]
|
|
// pDstIsf pointer to the ISF output vector
|
|
// len ISP order
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
|
|
IPPAPI( IppStatus, ippsISPToISF_Norm_AMRWB_16s,(
|
|
const Ipp16s *pSrcIsp,
|
|
Ipp16s *pDstIsf,
|
|
Ipp32s len
|
|
))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsISFToISP_AMRWB_16s
|
|
// Purpose: ISF interpolation and conversion to LPC
|
|
// Parameters:
|
|
// pSrcIsf pointer to the ISF input vector of values 15 bit scaled in range [0:0.5]
|
|
// pDstIsp pointer to the LPC output vector of values 15 bit scaled in range [-1:1]
|
|
// len ISP order
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
|
|
IPPAPI( IppStatus, ippsISFToISP_AMRWB_16s,(
|
|
const Ipp16s *pSrcIsf,
|
|
Ipp16s *pDstIsp,
|
|
Ipp32s len
|
|
))
|
|
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsEncDTXBuffer_AMRWB_16s
|
|
//
|
|
// Purpose: Function buffer the ISP coefficients and previous log energy coefficients.
|
|
// Parameters:
|
|
// pSrcSpch - Pointer to the input speech signal, in the length of 320, in Q15.0.
|
|
// pSrcLsp - Pointer to the ISP for this frame, in the length of 16, in Q0.15.
|
|
// pUpdateIndex - Pointer to the previous memory update index. It is a value
|
|
// circularly increased between 0 and 7.
|
|
// pSrcDstLspBuffer - Pointer to the ISP coefficients of eight previous frames, in the
|
|
// length of 128, in Q0.15.
|
|
// pSrcDstLogEnergyBuffer - Pointer to the logarithm energy coefficients of eight previous
|
|
// frames,in the length of 8,in Q5.10.
|
|
// mode - coder mode
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsEncDTXBuffer_AMRWB_16s,(const Ipp16s * pSrcSpch,
|
|
const Ipp16s *pSrcIsp, Ipp16s *pUpdateIndex, Ipp16s *pSrcDstIspBuffer,
|
|
Ipp16s *pSrcDstLogEnergyBuffer, IppSpchBitRate mode))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsDecDTXBuffer_AMRWB_16s
|
|
//
|
|
// Purpose: Function buffer the ISF coefficients and previous log energy coefficients.
|
|
// Parameters:
|
|
// pSrcSpch - Pointer to the input speech signal, in the length of 320, in Q15.0.
|
|
// pSrcIsf - Pointer to the ISF for this frame, in the length of 16, in Q0.15.
|
|
// pUpdateIndex - Pointer to the previous memory update index. It is a value
|
|
// circularly increased between 0 and 7.
|
|
// pSrcDstIsfBuffer - Pointer to the ISF coefficients of eight previous frames, in the
|
|
// length of 128, in Q0.15.
|
|
// pSrcDstLogEnergyBuffer - Pointer to the logarithm energy coefficients of eight previous
|
|
// frames,inthelength of 8,in Q5.10.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
|
|
IPPAPI( IppStatus, ippsDecDTXBuffer_AMRWB_16s,(const Ipp16s *pSrcSpch,
|
|
const Ipp16s *pSrcIsf, Ipp16s *pUpdateIndex,
|
|
Ipp16s *pSrcDstIsfBuffer, Ipp16s *pSrcDstLogEnergyBuffer))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsOpenLoopPitchSearch_AMRWB_16s
|
|
//
|
|
// Purpose: Extracts an open-loop pitch lag estimate from the weighted input speech
|
|
// Parameters:
|
|
// pSrcWgtSpch Pointer to a 320-element vector containing
|
|
// perceptually weighted speech.
|
|
// pSrcFltWgtSpch Pointer to a 320-element vector containing filtered
|
|
// perceptually weighted speech.
|
|
// pPrevMidPitchLag Pointer to the median filtered pitch lag
|
|
// of the 5 previous voiced
|
|
// speech half-frames
|
|
// pAdaptiveParam Pointer to the adaptive parameter.
|
|
// pDstOpenLoopLag Pointer to the open-loop pitch lag.
|
|
// pToneFlag Pointer to the tone flag for the VAD module.
|
|
// pDstOpenLoopGain Pointer to the optimal open-loop pitch gain.
|
|
// pSrcDstPrevPitchLag Pointer to the five-element vector that contains
|
|
// the pitch lags associated
|
|
// with the five most recent voiced speech half-frames
|
|
// pSrcDstLagSwitcher Switches lag weighting on and off
|
|
// len Length of the frame.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
|
|
IPPAPI( IppStatus, ippsOpenLoopPitchSearch_AMRWB_16s,(const Ipp16s *pSrcWgtSpch,
|
|
const Ipp16s * pSrcFltWgtSpch, Ipp16s * pPrevMidPitchLag,
|
|
Ipp16s * pAdaptiveParam, Ipp16s * pDstOpenLoopLag,
|
|
Ipp16s * pToneFlag, Ipp16s * pDstOpenLoopGain,
|
|
Ipp16s * pSrcDstPrevPitchLag, Ipp16s * pSrcDstLagSwitcher, int len ))
|
|
|
|
#if !defined( _OWN_BLDPCS )
|
|
|
|
typedef struct _HighPassFilterState_AMRWB_16s IppsHighPassFilterState_AMRWB_16s;
|
|
|
|
#endif /* _OWN_BLDPCS */
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsHighPassFilterGetSize_AMRWB_16s
|
|
// Purpose: Query of AMRWB HP filter state memory size
|
|
|
|
// Parameters:
|
|
// pDstSize Pointer to the output value of the memory size needed for filtering
|
|
// order Order of filter/ Currently only 2 or 3 is supported
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsHighPassFilterGetSize_AMRWB_16s,(int order, int *pDstSize))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsHighPassFilterInit_AMRWB_16s
|
|
// Purpose: Initialization of the memory allocated for AMR WB high pass filter
|
|
// Parameters:
|
|
// pFilterCoeffA Pointer to a 4-element vector containing
|
|
// IIR part of the coefficiensts of the filter
|
|
// pFilterCoeffB Pointer to a 4-element vector containing
|
|
// FIR part of the coefficiensts of the filter
|
|
// pState pointer to the memory supplied for filtering
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsHighPassFilterInit_AMRWB_16s,
|
|
(Ipp16s *pFilterCoeffA, Ipp16s *pFilterCoeffB, int order,
|
|
IppsHighPassFilterState_AMRWB_16s *pState))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsHighPassFilter_AMRWB
|
|
// Purpose: High-pass filtering
|
|
// Parameters:
|
|
// pSrc pointer to the input vector[len]
|
|
// pDst pointer to the vector [len].
|
|
// pSrcDst pointer to the input/output vector [len].
|
|
// len length of the input and output vectors.
|
|
// pState pointer to the memory supplied for filtering
|
|
// valBounds if valBounds = 0 then pSrc[-1] and pSrc[len] are equal to zero
|
|
// otherwise they must be given.
|
|
// scaleFactor Scale factor
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsHighPassFilter_AMRWB_16s_Sfs,(
|
|
const Ipp16s *pSrc, Ipp16s *pDst, int len,
|
|
IppsHighPassFilterState_AMRWB_16s *pState, int scaleFactor))
|
|
|
|
IPPAPI(IppStatus, ippsHighPassFilter_AMRWB_16s_ISfs,(
|
|
Ipp16s *pSrcDst, int len,
|
|
IppsHighPassFilterState_AMRWB_16s *pState, int scaleFactor))
|
|
|
|
IPPAPI(IppStatus, ippsHighPassFilter_Direct_AMRWB_16s,(
|
|
const Ipp16s *pSrcCoeff, const Ipp16s *pSrc, Ipp16s *pDst, int len, int valBounds ))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsHighPassFilterGetDlyLine_AMRWB_16s
|
|
// Purpose: Get the delay line of high-pass filter.
|
|
// Parameters:
|
|
// pState Pointer to the memory supplied for filtering.
|
|
// pDlyLine Pointer to the vector of size [6 or 9] containing the filter memory.
|
|
// order The order of high-pass filter; orders of 2 and 3 is currently supported.
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI(IppStatus, ippsHighPassFilterGetDlyLine_AMRWB_16s,
|
|
(const IppsHighPassFilterState_AMRWB_16s* pState, Ipp16s* pDlyLine, Ipp32s order))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsHighPassFilterSetDlyLine_AMRWB_16s
|
|
// Purpose: Set the delay line of high-pass filter.
|
|
// Parameters:
|
|
// pDlyLine Pointer to the vector of size [6 or 9] containing the filter memory.
|
|
// pState Pointer to the memory supplied for filtering.
|
|
// order The order of high-pass filter; orders of 2 and 3 is currently supported.
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI(IppStatus, ippsHighPassFilterSetDlyLine_AMRWB_16s,
|
|
(const Ipp16s* pDlyLine, IppsHighPassFilterState_AMRWB_16s* pState, Ipp32s order))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// AMRWB Voice Activity Detector functions
|
|
// /////////////////////////////////////////////////////////////////////////////
|
|
*/
|
|
|
|
#if !defined( _OWN_BLDPCS )
|
|
|
|
typedef struct _VADState_AMRWB_16s IppsVADState_AMRWB_16s;
|
|
|
|
#endif /* _OWN_BLDPCS */
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsVADGetSize_AMRWB_16s
|
|
// Purpose: AMRWB VADetector size -
|
|
// computes the size,in bytes,
|
|
// of the state variable structure IppsVADState_AMRWB_16s.
|
|
// Parameters:
|
|
// pState pointer to the VAD history variables
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI( IppStatus, ippsVADGetSize_AMRWB_16s,(int *pDstSize ))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsVADGetSize_AMRWB_16s
|
|
// Purpose: Initialize AMRWB VADetector -
|
|
// of the state variable structure IppsVADState_AMRWB_16s.
|
|
// Parameters:
|
|
// pState pointer to the VAD history variables
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI( IppStatus, ippsVADInit_AMRWB_16s,(
|
|
IppsVADState_AMRWB_16s *pState
|
|
))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsVADGetEnergyLevel_AMRWB_16s
|
|
// Purpose: return energy level vector
|
|
// Parameters:
|
|
// pState pointer to the VAD history variables
|
|
// pEnergyLevel pointer to the destination vector of enrgy level [12]
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
// ippStsNullPtrErr if at least one of the poiners is null.
|
|
*/
|
|
IPPAPI (IppStatus, ippsVADGetEnergyLevel_AMRWB_16s,
|
|
(const IppsVADState_AMRWB_16s* pState, Ipp16s* pEnergyLevel))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsVAD_AMRWB_16s
|
|
//
|
|
// Purpose: AMRWB VADetector -
|
|
// detect type of frame - active (voice) or inactive (unvoiced)
|
|
// Parameters:
|
|
// pSrcSpch pointer to the input speech signal, in the length of 320
|
|
// pState pointer to the VAD history variables
|
|
// pVadFlag pointer to the VAD type detected (1 - voice)
|
|
// pToneFlag pointer to tone detected
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
|
|
IPPAPI( IppStatus, ippsVAD_AMRWB_16s,(const Ipp16s *pSrcSpch,
|
|
IppsVADState_AMRWB_16s *pState,
|
|
Ipp16s *pToneFlag,
|
|
Ipp16s *pVadFlag))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsAlgebraicCodebookSearch_AMRWB_16s
|
|
//
|
|
// Purpose: Fixed (algebraic) codebook search functions
|
|
// Parameters:
|
|
// pSrcFixedTarget target vector
|
|
// pSrcLtpResidual long term prediction residual
|
|
// pSrcDstImpulseResponse impulse response of weighted synthesis
|
|
// filter h[-L_subfr..-1] must be set to zero
|
|
// pDstFixedVector innovative codebook
|
|
// pDstFltFixedVector filtered fixed codebook excitation
|
|
// pDstIndex Indexes of the pulses
|
|
// mode coder mode
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsAlgebraicCodebookSearch_AMRWB_16s,(
|
|
const Ipp16s *pSrcFixedTarget,
|
|
const Ipp16s *pSrcLtpResidual,
|
|
Ipp16s *pSrcDstImpulseResponse,
|
|
Ipp16s *pDstFixedVector,
|
|
Ipp16s *pDstFltFixedVector,
|
|
IppSpchBitRate mode,
|
|
Ipp16s *pDstIndex
|
|
))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsAlgebraicCodebookDecode_AMRWB_16s
|
|
//
|
|
// Purpose: This function decodes the fixed (algebraic) codebook parameters transmitted by the encoder.
|
|
// Parameters:
|
|
// pSrcIdxs Algebraic codebook indexes.
|
|
// pDstFixedCode Pointer to the algebraic codevector, in the length of 64
|
|
// mode coder mode
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsAlgebraicCodebookDecode_AMRWB_16s,(
|
|
const Ipp16s *pSrcIdxs,
|
|
Ipp16s *pDstFixedCode,
|
|
IppSpchBitRate mode
|
|
))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsInterpolateC_NR_16s
|
|
// Purpose: interpolation of two vector
|
|
// dst = (src1*va1*2^scaleFactor1 + src2*val2*2^scaleFactor2)*2^-16
|
|
// Parameters:
|
|
// pSrc1 pointer to the input vector1
|
|
// val1 interpolation coeff. of first vector
|
|
// val1ScaleFactor val1 scaling factor
|
|
// pSrc2 pointer to the input vector2
|
|
// val2 interpolation coeff. of second vector
|
|
// val2scaleFactor val2 scaling factor
|
|
// pDst pointer to the interpolated output vector
|
|
// len length of the vectors
|
|
/ Returns: ippStsNoErr, if no errors
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsInterpolateC_NR_16s,
|
|
(const Ipp16s *pSrc1, Ipp16s val1, int val1ScaleFactor, const Ipp16s *pSrc2,
|
|
Ipp16s val2, int val2ScaleFactor, Ipp16s *pDst, int len))
|
|
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsPreemphasize_AMRWB_16s_ISfs
|
|
// Purpose: Preemphasis filter
|
|
// H(z) = 1 - gamma z^-1
|
|
// Parameters:
|
|
// pSrcDst pointer to the input/output vector
|
|
// gamma filter coeeficient
|
|
// ScaleFactor scale factor for the result
|
|
// len length of the input/output vector
|
|
// pMem pointer to the filter memory of length 1
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsPreemphasize_AMRWB_16s_ISfs,(Ipp16s gamma, Ipp16s *pSrcDst,
|
|
int len, int ScaleFactor, Ipp16s* pMem))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name : ippsAdaptiveCodebookGainCoeff_AMRWB_16s
|
|
// Purpose: Compute the adaptive codebook gain
|
|
//
|
|
// Parameters:
|
|
// pSrcAdptTarget: Pointer to the adaptive-codebook vector.
|
|
// pSrcFltAdptVector: Pointer to the input filtered adaptive-codebook vector.
|
|
// pResultAdptGain: Pointer to the adaptive-codebook gain in the length of 1.
|
|
// pResultAdptGainCoeffs Pointer to the output vector in the length 4 represents
|
|
// the adaptive-codebook gain as a fraction:
|
|
// xy * 2^exp_xy
|
|
// gain = -------------
|
|
// yy * 2^exp_yy
|
|
// where yy = pResultAdptGainCoeffs[0]
|
|
// exp_yy = pResultAdptGainCoeffs[1]
|
|
// xy = pResultAdptGainCoeffs[2]
|
|
// exp_xy = pResultAdptGainCoeffs[3]
|
|
// If xy < 0 then pResultAdptGain = 0;
|
|
// len length of vectors
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
|
|
IPPAPI( IppStatus, ippsAdaptiveCodebookGainCoeff_AMRWB_16s,(const Ipp16s * pSrcAdptTarget,
|
|
const Ipp16s * pSrcFltAdptVector, Ipp16s * pDstGainCoeff, Ipp16s * pResultAdptGain, int len))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsISFQuant_AMRWB_16s
|
|
//
|
|
// Purpose: Quantizes the ISF coefficient vector, then obtains quantized ISF codebook indices.
|
|
// Parameters:
|
|
// pSrcIsf - Pointer to the unquantized 16-element ISF vector.
|
|
// pSrcDstResidual - Pointer to the 16-element quantized ISF residual from the previous
|
|
// frame.
|
|
// pDstQIsf - Pointer to the 16-element quantized ISF vector.
|
|
// pDstQIsfIndex - Pointer to the 7-element vector of quantized ISP indices. For 6.60 Kbps
|
|
// frames only the first five elements contain valid indices,
|
|
// for all other bit rates, all seven elements contain valid data
|
|
// mode - Bit rate specifier.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
|
|
IPPAPI( IppStatus, ippsISFQuant_AMRWB_16s,(const Ipp16s *pSrcIsf,
|
|
Ipp16s *pSrcDstResidual, Ipp16s *pDstQIsf,
|
|
Ipp16s *pDstQIsfIndex, IppSpchBitRate mode))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsISFQuantDecode_AMRWB_16s
|
|
//
|
|
// Purpose: Decodes quantized ISFs from the received codebook index if the
|
|
// errors are not detected on the received frame. Otherwise, the
|
|
// function recovers the quantized ISFs from previous quantized
|
|
// ISFs using linear interpolation.
|
|
// Parameters:
|
|
// pSrcIdxs - Pointer to the seven-element vector containing codebook indices
|
|
// of the quantized LSPs.
|
|
// pSrcDstResidual - Pointer to the 16-element quantized ISF residual from
|
|
// the previous frame.
|
|
// pSrcPrevQntIsf - Pointer to the 16-element quantized ISF vector from the previous
|
|
// frame.
|
|
// pSrcDstIsfMemory - Pointer to the 64-element vector containing four subframe ISF sets.
|
|
// pDstQntIsf - Pointer to a 16-element destination vector containing quantized ISF in frequency domain (0..0.5).
|
|
// bfi - Bad frame indicator; "0" signifies a good frame; all other values
|
|
// signify a bad frame.
|
|
// mode - Bit rate specifier.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
|
|
IPPAPI( IppStatus, ippsISFQuantDecode_AMRWB_16s,(
|
|
const Ipp16s *pSrcIdxs,
|
|
Ipp16s *pDstQntIsf,
|
|
Ipp16s *pSrcDstResidual,
|
|
const Ipp16s *pSrcPrevQntIsf,
|
|
Ipp16s *pSrcDstIsfMemory,
|
|
int bfi,
|
|
IppSpchBitRate mode
|
|
))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsISFQuantDTX_AMRWB_16s
|
|
//
|
|
// Purpose: Quantizes the ISP coefficient vector, then obtains quantized ISP codebook indices in case of DTX mode.
|
|
// Parameters:
|
|
// pSrcIsf - Pointer to the unquantized 16-element ISF in the frequency domain (0..0.5) vector.
|
|
// pDstQntIsf - Pointer to the 16-element quantized ISF vector.
|
|
// pDstIdxs - Pointer to the 5-element vector quantization indices.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
|
|
IPPAPI( IppStatus, ippsISFQuantDTX_AMRWB_16s,(
|
|
const Ipp16s *pSrcIsf,
|
|
Ipp16s *pDstQntIsf,
|
|
Ipp16s *pDstIdxs
|
|
))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsISFQuantDecodeDTX_AMRWB_16s
|
|
//
|
|
// Purpose: Decodes quantized ISFs from the received codebook index in case of DTX mode.
|
|
// Parameters:
|
|
// pSrcIdxs - Pointer to the 5-element vector quantization indices.
|
|
// pDstQntIsf - Pointer to the 16-element ISF in the frequency domain (0..0.5) vector.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
|
|
IPPAPI( IppStatus, ippsISFQuantDecodeDTX_AMRWB_16s,(
|
|
const Ipp16s *pSrcIdxs,
|
|
Ipp16s *pDstQntIsf
|
|
))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsSynthesisFilter_AMRWB_16s32s_I
|
|
//
|
|
// Purpose:
|
|
// Parameters:
|
|
// pSrcLpc Pointer to the LP coefficients vector.
|
|
// order Order of LP filter.
|
|
// pSrcExc Pointer to the excitation vector.
|
|
// pSrcDst Pointer to the synthesized and updated speech.
|
|
// len
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsSynthesisFilter_AMRWB_16s32s_I,(
|
|
const Ipp16s *pSrcLpc, int order, const Ipp16s *pSrcExc, Ipp32s *pSrcDstSignal, int len))
|
|
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsDeemphasize_AMRWB
|
|
// Purpose: De-emphasis filtering.
|
|
// Parameters:
|
|
// gamma deemphasis factor.
|
|
// pSrc pointer to the input vector
|
|
// pDst pointer to the output vector
|
|
// pSrcDst pointer to the input/output vector
|
|
// pMem memory (pSrcDst[-1])
|
|
// len length of input/output vector
|
|
*/
|
|
IPPAPI(IppStatus, ippsDeemphasize_AMRWB_32s16s,(
|
|
Ipp16s gamma, const Ipp32s *pSrc, Ipp16s *pDst, int len, Ipp16s *pMem))
|
|
|
|
IPPAPI(IppStatus, ippsDeemphasize_AMRWB_NR_16s_I,(
|
|
Ipp16s gamma, Ipp16s *pSrcDst, int len, Ipp16s *pMem))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsAdaptiveCodebookSearch_AMRWB_16s
|
|
//
|
|
// Purpose: Performs the adaptive codebook search.
|
|
// Parameters:
|
|
// pSrcAdptTarget Pointer to the 64-element adaptive target signal vector,
|
|
// pSrcImpulseResponse Pointer to the 64-element impulse response of the weighted synthesis
|
|
// filter.
|
|
// pSrcOpenLoopLag Pointer to a two-element vector of open-loop pitch lags.
|
|
// pPitchLag Pointer to output the previous integral pitch lag.
|
|
// pPitchLagBounds Pointer to output the previous integral pitch lag bounds.
|
|
// pSrcDstExcitation Pointer to the 321-element excitation vector.
|
|
// pFracPitchLag Pointer to output the fractional pitch lag obtained during the adaptive codebook
|
|
// search.
|
|
// pAdptIndex Pointer to output the coded closed-loop pitch index.
|
|
// subFrame Subframe number
|
|
// mode Coder mode
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsAdaptiveCodebookSearch_AMRWB_16s,(
|
|
const Ipp16s * pSrcAdptTarget,
|
|
const Ipp16s * pSrcImpulseResponse,
|
|
const Ipp16s * pSrcOpenLoopLag,
|
|
Ipp16s * pPitchLag,
|
|
Ipp16s * pPitchLagBounds,
|
|
Ipp16s * pSrcDstExcitation,
|
|
Ipp16s * pFracPitchLag,
|
|
Ipp16s * pAdptIndex,
|
|
int subFrame,
|
|
IppSpchBitRate mode))
|
|
|
|
#if !defined( _OWN_BLDPCS )
|
|
|
|
typedef struct _AdaptiveCodebookDecodeState_AMRWB_16s IppsAdaptiveCodebookDecodeState_AMRWB_16s;
|
|
|
|
#endif /* _OWN_BLDPCS */
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsAdaptiveCodebookDecode
|
|
//
|
|
// Purpose: This function decodes the adaptive codebook parameters transmitted by the encoder, and then
|
|
// applies them to interpolate an adaptive codebook vector.
|
|
// valAdptIndex Adaptive codebook index.
|
|
// pFracPitchLag Pointer to the fractional pitch lag obtained during the adaptive codebook
|
|
// search.
|
|
// pResultPrevIntPitchLagBounds Pointer to the previous integral pitch lag bounds.
|
|
// pSrcDstExcitation Pointer to the 321-element excitation vector.
|
|
// pResultIntPitchLag Pointer to the integral pitch lag.
|
|
// subFrame Subframe number
|
|
// bfi Bad frame indicator. "0" signifies a good frame; any other value signifies a bad frame.
|
|
// unusableFrame
|
|
// mode Coder mode
|
|
// pState Pointer to the memory supplied for function.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsAdaptiveCodebookDecodeGetSize_AMRWB_16s,(int *pDstSize))
|
|
|
|
IPPAPI(IppStatus, ippsAdaptiveCodebookDecodeInit_AMRWB_16s,(IppsAdaptiveCodebookDecodeState_AMRWB_16s *pState))
|
|
|
|
IPPAPI(IppStatus, ippsAdaptiveCodebookDecodeUpdate_AMRWB_16s,(int valPitchGain, int valIntPitchLag,
|
|
IppsAdaptiveCodebookDecodeState_AMRWB_16s *pState))
|
|
IPPAPI(IppStatus, ippsAdaptiveCodebookDecode_AMRWB_16s,(
|
|
int valAdptIndex,
|
|
Ipp16s * pFracPitchLag,
|
|
Ipp16s * pSrcDstExcitation,
|
|
Ipp16s * pResultIntPitchLag,
|
|
Ipp16s * pResultPrevIntPitchLagBounds,
|
|
int subFrame,
|
|
int bfi,
|
|
int unusableFrame,
|
|
IppSpchBitRate mode,
|
|
IppsAdaptiveCodebookDecodeState_AMRWB_16s *pState))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsGainQuant_AMRWB_16s
|
|
// Purpose: Quantization of the adaptive codebook gains
|
|
// pSrcAdptTarget - pointer to the input target vector x(n).
|
|
// pSrcFltAdptVector - pointer to the input filtered adaptive codebook vector y(n)
|
|
// valFormat - format of the pSrcAdptTarget and pSrcFltAdptVector vectors.
|
|
// pSrcFixedVector - pointer to the input pre-filtered codebook contribition c(n)
|
|
// pSrcFltFixedVector - pointer to the input filtered codebook vector z(n)
|
|
// pSrcCorr - pointer to the vector of correlations between pSrcAdptTarget, pSrcFltAdptVector,
|
|
// pSrcFltFixedVector vectors.
|
|
// pSrcDstEnergyErr - pointer to the input/output energy error vector
|
|
// for 4 previous subframes
|
|
// pSrcDstPitchGain - Pointer to the input/output pitch gain.
|
|
// pDstCodeGain - Pointer to the output code gain.
|
|
// valClipFlag - if valClipFlag = 1 then limit gain pitch to 1.0.
|
|
// pDstQGainIndex - Pointer to the output codebook indexes found
|
|
// lenSrc - Length of the input vectors.
|
|
// mode - Coder mode.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
|
|
IPPAPI( IppStatus, ippsGainQuant_AMRWB_16s,(
|
|
const Ipp16s *pSrcAdptTarget, const Ipp16s *pSrcFltAdptVector, int valFormat,
|
|
const Ipp16s * pSrcFixedVector, const Ipp16s *pSrcFltFixedVector, const Ipp16s *pSrcCorr,
|
|
Ipp16s *pSrcDstEnergyErr, Ipp16s *pSrcDstPitchGain, int *pDstCodeGain,
|
|
int valClipFlag, Ipp16s *pDstQGainIndex, int lenSrc, IppSpchBitRate mode))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsDecodeGain_AMRWB_16s
|
|
// Purpose: Decode adaptive and fixed-codebook gains
|
|
// valQIndex - index of quantization.
|
|
// valEnergy - energy of code vector.
|
|
// pDstPitchGain - Pointer to decoded pitch gain.
|
|
// pDstCodeGain - Pointer to decoded code gain.
|
|
// bfi - Bad frame indicator.
|
|
// prevBfi - Bad frame indicator of the previous frame.
|
|
// pSrcDstPastEnergy - past quantized energies
|
|
// pPrevCodeGain - Past code gain.
|
|
// pSrcDstPastCodeGain - Past code gain for frame erasures.
|
|
// mode - Coder mode.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
|
|
IPPAPI( IppStatus, ippsDecodeGain_AMRWB_16s,(
|
|
int valQIndex,
|
|
Ipp32s valEnergy,
|
|
Ipp16s *pDstPitchGain,
|
|
int *pDstCodeGain,
|
|
int bfi,
|
|
int prevBfi,
|
|
Ipp16s *pSrcDstPastEnergy,
|
|
Ipp16s *pPrevCodeGain,
|
|
Ipp16s *pSrcDstPastCodeGain,
|
|
IppSpchBitRate mode
|
|
))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// AMRWB end
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// AMRWBE related functions
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsAdaptiveCodebookSearch_AMRWBE_16s
|
|
//
|
|
// Purpose: Performs the adaptive codebook search.
|
|
// Parameters:
|
|
// pSrcAdptTarget Pointer to the 64-element adaptive target signal vector,
|
|
// pSrcImpulseResponse Pointer to the 64-element impulse response of the weighted synthesis
|
|
// filter.
|
|
// pSrcOpenLoopLag Pointer to a two-element vector of open-loop pitch lags.
|
|
// pPitchLag Pointer to output the previous integral pitch lag.
|
|
// pPitchLagBounds Pointer to output the previous integral pitch lag bounds.
|
|
// pSrcDstExcitation Pointer to the 321-element excitation vector.
|
|
// pFracPitchLag Pointer to output the fractional pitch lag obtained during the adaptive codebook
|
|
// search.
|
|
// pAdptIndex Pointer to output the coded closed-loop pitch index.
|
|
// subFrame Subframe number
|
|
// mode Coder mode
|
|
// pitchOffset Offset for pitch adjustment corresponding internal sampling frequency scale.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsAdaptiveCodebookSearch_AMRWBE_16s,(
|
|
const Ipp16s * pSrcAdptTarget,
|
|
const Ipp16s * pSrcImpulseResponse,
|
|
const Ipp16s * pSrcOpenLoopLag,
|
|
Ipp16s * pPitchLag,
|
|
Ipp16s * pPitchLagBounds,
|
|
Ipp16s * pSrcDstExcitation,
|
|
Ipp16s * pFracPitchLag,
|
|
Ipp16s * pAdptIndex,
|
|
int subFrame,
|
|
IppSpchBitRate mode,
|
|
Ipp16s pitchOffset))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsAdaptiveCodebookDecode_AMRWBE_16s
|
|
//
|
|
// Purpose: This function decodes the adaptive codebook parameters transmitted by the encoder, and then
|
|
// applies them to interpolate an adaptive codebook vector.
|
|
// Parameters:
|
|
// valAdptIndex Adaptive codebook index.
|
|
// pSrcDstExcitation Pointer to the 321-element excitation vector.
|
|
// pSrcDstPitchLag Pointer to the integral pitch lag.
|
|
// pSrcDstFracPitchLag Pointer to the fractional pitch lag obtained during the adaptive
|
|
// codebook search.
|
|
// pSrcDstPitchLagBounds Pointer to the integral pitch lag bounds.
|
|
// subFrame Subframe number
|
|
// bfi Bad frame indicator. "0" signifies a good frame; any other value signifies a bad frame.
|
|
// pitchOffset Offset for pitch adjustment corresponding internal sampling frequency scale.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsAdaptiveCodebookDecode_AMRWBE_16s, (
|
|
int valAdptIndex,
|
|
Ipp16s* pSrcDstExcitation,
|
|
Ipp16s* pSrcDstPitchLag,
|
|
Ipp16s* pSrcDstFracPitchLag,
|
|
Ipp16s* pSrcDstPitchLagBounds,
|
|
int subFrame,
|
|
int bfi,
|
|
Ipp16s pitchOffset))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsGainQuant_AMRWBE_16s
|
|
// Purpose: Quantization of the adaptive codebook gains
|
|
// Parameters:
|
|
// pSrcAdptTarget - pointer to the input target vector x(n).
|
|
// pSrcFltAdptVector - pointer to the input filtered adaptive codebook vector y(n)
|
|
// valFormat - format of the pSrcAdptTarget and pSrcFltAdptVector vectors.
|
|
// pSrcFixedVector - pointer to the input pre-filtered codebook contribition c(n)
|
|
// pSrcFltFixedVector - pointer to the input filtered codebook vector z(n)
|
|
// lenSrc - Length of the input vectors.
|
|
// pSrcCorr - pointer to the vector of correlations between pSrcAdptTarget, pSrcFltAdptVector,
|
|
// pSrcFltFixedVector vectors [4].
|
|
// meanEnergy - The average energy in the whole frame.
|
|
// pSrcDstPitchGain - Pointer to the input/output pitch gain.
|
|
// pDstCorrFactor - Pointer to the correction factor.
|
|
// pDstCodeGain - Pointer to the output code gain.
|
|
// pDstQGainIndex - Pointer to the output codebook indexes found
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsGainQuant_AMRWBE_16s,(
|
|
const Ipp16s *pSrcAdptTarget, const Ipp16s *pSrcFltAdptVector, int valFormat,
|
|
const Ipp16s *pSrcFixedVector, const Ipp16s *pSrcFltFixedVector, int lenSrc,
|
|
const Ipp16s *pSrcCorr, Ipp16s meanEnergy, Ipp16s *pSrcDstPitchGain,
|
|
Ipp16s* pDstCorrFactor, int *pDstCodeGain, Ipp16s *pDstQGainIndex))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsSNR_AMRWBE_16s
|
|
// Purpose: Calculate the signal to noise ratio.
|
|
// Parameters:
|
|
// pSrcSignal Pointer to the input signal.
|
|
// pSrcEstimatedSiganl Pointer to the estimated signal.
|
|
// lenSrc Length of the signals.
|
|
// lenSeg Length of segments (subframes).
|
|
// pDstSNR Pointer to the output signal-to-noise ratio in dB.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsSNR_AMRWBE_16s, (const Ipp16s* pSrcSignal,
|
|
const Ipp16s* pSrcEstimatedSignal, int lenSrc, int lenSeg, Ipp16s* pDstSNR))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsGainQuantTCX_AMRWBE_16s
|
|
// Purpose: Gain optimization and quantization.
|
|
// Parameters:
|
|
// pSrcSignal Pointer to the original weighted signal.
|
|
// srcScale Format of input signal.
|
|
// pSrcQuantSiganl Pointer to the quantized weighted signal.
|
|
// len Length of the signals.
|
|
// quantFlag If quantFlag = 0, then compute and return optimal gain only,
|
|
// else calculate and return quantized gain and quant index.
|
|
// pGain Pointer to the output quantized (or optimal) gain.
|
|
// pQuantIdx Pointer to the output index of quantization.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsGainQuantTCX_AMRWBE_16s, (const Ipp16s *pSrcSignal,
|
|
Ipp16s srcScale, const Ipp16s *pSrcQuantSignal, int len, Ipp32s quantFlag,
|
|
Ipp32s *pGain, Ipp16s *pQuantIdx))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsGainDecodeTCX_AMRWBE_16s
|
|
// Purpose: Decode the global TCX gain.
|
|
// Parameters:
|
|
// pSrcQuantSignal Pointer to the quantized vector.
|
|
// lenSrc Length of the input signal.
|
|
// quantIdx Index of quantization.
|
|
// bfi Bad frame indicator: value "0" signifies a good frame,
|
|
// all other values signify a bad frame.
|
|
// pSrcDstRMSval Pointer to root mean square value.
|
|
// pGain Pointer to the output global TCX gain.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsGainDecodeTCX_AMRWBE_16s, (const Ipp16s *pSrcQuantSignal,
|
|
int lenSrc, Ipp16s quantIdx, Ipp32s bfi, Ipp16s *pSrcDstRMSval, Ipp32s *pGain))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsISFQuantDecode_AMRWBE_16s
|
|
//
|
|
// Purpose: Decodes quantized ISFs from the received codebook index if the
|
|
// errors are not detected on the received frame. Otherwise, the
|
|
// function recovers the quantized ISFs from previous quantized
|
|
// ISFs using linear interpolation.
|
|
// Parameters:
|
|
// pSrcIdxs - Pointer to the seven-element vector containing codebook indices
|
|
// of the quantized LSPs.
|
|
// pSrcDstResidual - Pointer to the 16-element quantized ISF residual from
|
|
// the previous frame.
|
|
// pSrcPrevQntIsf - Pointer to the 16-element quantized ISF vector from the previous
|
|
// frame.
|
|
// pSrcDstIsfMemory - Pointer to the 64-element vector containing four subframe ISF sets.
|
|
// pDstQntIsf - Pointer to a 16-element destination vector containing quantized
|
|
// ISF in frequency domain (0..0.5).
|
|
// bfi - Bad frame indicator; "0" signifies a good frame; all other values
|
|
// signify a bad frame.
|
|
// bfiNext - Bad frame indicator for the next frames.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI( IppStatus, ippsISFQuantDecode_AMRWBE_16s,(
|
|
const Ipp16s *pSrcIdxs, Ipp16s *pDstQntIsf, Ipp16s *pSrcDstResidual,
|
|
const Ipp16s *pSrcPrevQntIsf, Ipp16s *pSrcDstIsfMemory, int bfi, int bfiNext))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsOpenLoopPitchSearch_AMRWBE_16s
|
|
//
|
|
// Purpose: Extracts an open-loop pitch lag estimate from the weighted input speech
|
|
// Parameters:
|
|
// pSrcWgtSpch Pointer to input vector containing perceptually weighted speech.
|
|
// pSrcFltWgtSpch Pointer to input vector containing filtered through
|
|
// high-pass filter perceptually weighted speech.
|
|
// pPrevMedPitchLag Pointer to the median filtered pitch lag of
|
|
// the 5 previous voiced speech half-frames.
|
|
// pAdaptiveParam Pointer to the adaptive parameter.
|
|
// pDstOpenLoopLag Pointer to the open-loop pitch lag.
|
|
// pToneFlag Pointer to the tone flag for the VAD module.
|
|
// pDstOpenLoopGain Pointer to the optimal open-loop pitch gain.
|
|
// pSrcDstPrevPitchLag Pointer to the five-element vector that contains the pitch lags
|
|
// associated with the five most recent voiced speech half-frames.
|
|
// pSrcDstLagSwitcher Switches lag weighting on and off
|
|
// len Length of the frame.
|
|
// minPitchLag Minimum pitch lag.
|
|
// maxPitchLag Maximum pitch lag.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsOpenLoopPitchSearch_AMRWBE_16s,
|
|
(const Ipp16s *pSrcWgtSpch, const Ipp16s * pSrcFltWgtSpch, Ipp16s * pPrevMedPitchLag,
|
|
Ipp16s * pAdaptiveParam, Ipp16s * pDstOpenLoopLag, Ipp16s * pToneFlag,
|
|
Ipp16s * pDstOpenLoopGain, Ipp16s * pSrcDstPrevPitchLag, Ipp16s * pSrcDstLagSwitcher,
|
|
int len, Ipp16s minPitchLag, Ipp16s maxPitchLag))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsLPCToISP_AMRWBE_16s
|
|
// Purpose: Performs LP to ISP coefficients conversion.
|
|
// Parameters:
|
|
// pSrcLpc Pointer to the input predictor coefficients.
|
|
// pDstIsp Pointer to the output immittance spectral pairs.
|
|
// pSrcPrevIsp Pointer to the input previous immittance spectral pairs.
|
|
// lpOrder Order of convertion.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsLPCToISP_AMRWBE_16s, (const Ipp16s *pSrcLpc,
|
|
const Ipp16s *pSrcPrevIsp, Ipp16s *pDstIsp, int lpOrder))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsResamplePolyphase_AMRWBE_16s
|
|
// Purpose: Oversample or downsample input signal to/from upper frequency (44.1/48 khz).
|
|
// Parameters:
|
|
// pSrcSignal Pointer to the signal to resample.
|
|
// len Length of input signal.
|
|
// upFactor Upsampling factor.
|
|
// downFactor Downsampling factor.
|
|
// pIntrepFracMem Pointer to the memory of interpolation fraction.
|
|
// pMem Pointer to resampling memory. Length is 144 for decimating
|
|
// mode, or 44 for oversampling mode.
|
|
// pDstSignal Pointer to the resampled signal.
|
|
// lenDst Length of resampling signal.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsResamplePolyphase_AMRWBE_16s, (const Ipp16s *pSrcSignal,
|
|
int lenSrc, Ipp16s upFactor, Ipp16s downFactor, Ipp16s *pInterpFracMem,
|
|
Ipp16s *pMem, Ipp16s *pDstSignal, int lenDst))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsBandSplit_AMRWBE_16s
|
|
// Purpose: Split the signal to low and high frequency components.
|
|
// Parameters:
|
|
// pSrcSignal Poineter to src vector [len + 2*64].
|
|
// pSrcDstSig2k Poineter to srcdst low frequency vector [len*5/32 + 2*10].
|
|
// pDstSigHi Poineter to dst high frequency vector [len].
|
|
// len Length of the sample.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsBandSplit_AMRWBE_16s, (const Ipp16s* pSrcSignal,
|
|
Ipp16s* pSrcDstSig2k, Ipp16s* pDstSigHi, int len))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsBandJoin_AMRWBE_16s
|
|
// Purpose: Join low and high frequency signals.
|
|
// Parameters:
|
|
// pSrcSig2k Poineter to src low frequency vector [len*5/32 + 2*10].
|
|
// pSrcSigHi Poineter to src high frequency vector [len].
|
|
// pDstSignal Poineter to dst vector [len].
|
|
// len Length of the sample.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsBandJoin_AMRWBE_16s, (const Ipp16s* pSrcSig2k,
|
|
const Ipp16s* pSrcSigHi, Ipp16s* pDstSignal, int len))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsBandJoinUpsample_AMRWBE_16s
|
|
// Purpose: Join high and low frequency signals and upsample.
|
|
// Parameters:
|
|
// pSrcSigLF Pointer to LF signal.
|
|
// pSrcSigHF Pointer to HF signal.
|
|
// lenSrc Length of LF and HF vectors.
|
|
// pDstSig Pointer to upsampled signal.
|
|
// lenOut Length of output vector.
|
|
// pMem Resampling memory [72].
|
|
// pInterFracMem Interpolating fraction memory.
|
|
// pCountSamp Number of oversampled samples.
|
|
// upsampScale Upsampling frequency scale.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsBandJoinUpsample_AMRWBE_16s, (const Ipp16s* pSrcSigLF,
|
|
const Ipp16s* pSrcSigHF, int lenSrc, Ipp16s* pDstSig, int lenDst,
|
|
Ipp16s* pMem, Ipp16s* pInterFracMem, Ipp32s* pCountSamp, Ipp16s upsampScale))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsBandSplitDownsample_AMRWBE_16s
|
|
// Purpose: Decimate input signal and split to high and low frequency components.
|
|
// Parameters:
|
|
// pSrcSig Pointer to decimating signal.
|
|
// lenSrc Lenth of the input vector.
|
|
// pDstSigLF Pointer to LF decimated signal.
|
|
// pDstSigHF Pointer to HF decimated signal.
|
|
// lenDst Length of LF and HF vectors.
|
|
// pMem Decimating memory [1608].
|
|
// pInterFracMem Interpolating fraction memory.
|
|
// pCountSamp Number of decimated samples.
|
|
// upsampScale Upsampling frequency scale.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsBandSplitDownsample_AMRWBE_16s, (const Ipp16s* pSrcSig, int lenSrc,
|
|
Ipp16s* pDstSigLF, Ipp16s* pDstSigHF, int lenDst, Ipp16s* pMem,
|
|
Ipp16s *pInterFracMem, Ipp32s* pCountSamp, Ipp16s upsampScale))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsUpsample_AMRWBE_16s
|
|
// Purpose: Signal oversampling.
|
|
// Parameters:
|
|
// pSrcSignal Pointer to signal for oversampling.
|
|
// pSrcDstSignal Pointer to oversampled signal.
|
|
// lenDst Length of output vector.
|
|
// pMem Pointer to oversampling memory [24].
|
|
// bandIdx Index of interpolating band: 0 for 0..6.4k band, 1 for 6.4..10.8k.
|
|
// addFlag Flag for adding operation. 1 if result is added to output
|
|
// vector, 0 if not.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsUpsample_AMRWBE_16s, (const Ipp16s* pSrcSignal,
|
|
Ipp16s* pSrcDstSignal, int lenDst, Ipp16s* pMem, Ipp32s bandIdx, Ipp32s addFlag))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsDownsample_AMRWBE_16s
|
|
// Purpose: Signal decimating.
|
|
// Parameters:
|
|
// pSrcSignal Pointer to decimating signal.
|
|
// lenSrc Length of input vector
|
|
// pDstSignal Pointer to decimated signal [1024].
|
|
// pMem Pointer to decimating memory [46].
|
|
// bandIdx Index of interpolating band: 0 for 0..6.4k band, 1 for 6.4..10.8k.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsDownsample_AMRWBE_16s, (const Ipp16s* pSrcSignal, int lenSrc,
|
|
Ipp16s*pDstSignal, Ipp16s* pMem, Ipp32s bandIdx))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsISFQuantHighBand_AMRWBE_16s
|
|
// Purpose: ISF quantization of HF-band encoded signal.
|
|
// Parameters:
|
|
// pSrcISF Pointer to the vector of proceeding ISF [8].
|
|
// pSrcDstPastQISF Pointer to the past quantized ISF [8].
|
|
// pDstQISF Pointer to the output vector of quantized ISF [8].
|
|
// pQuantIdxs Pointer to the output quantization indices [2].
|
|
// pitchAdjust Pitch adjustment flag (if null, pitch adjustment is not
|
|
// implements, else any other).
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsISFQuantHighBand_AMRWBE_16s, (const Ipp16s *pSrcISF,
|
|
Ipp16s *pSrcDstPastQISF, Ipp16s *pDstQISF, Ipp16s *pQuantIdxs, Ipp32s pitchAdjust))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsISFQuantDecodeHighBand_AMRWBE_16s
|
|
// Purpose: Decode quantized ISF of HF-band signal.
|
|
// Parameters:
|
|
// pQuantIdxs Pointer to the quantization indices [2].
|
|
// pSrcDstPastQISF Pointer to the past quantized ISF [8].
|
|
// pDstQISF Pointer to the output vector of decoded quantized ISF [8].
|
|
// bfi Bad frame indicator: value "0" signifies a good frame,
|
|
// all other values signify a bad frame.
|
|
// pitchAdjust Pitch adjustment flag (if null, pitch adjustment
|
|
// is not implements, else any other).
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsISFQuantDecodeHighBand_AMRWBE_16s, (const Ipp16s *pSrcQuantIdxs,
|
|
Ipp16s *pSrcDstPastQISF, Ipp16s *pDstQISF, Ipp32s bfi, Ipp32s pitchAdjust))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsFFTFwd_RToPerm_AMRWBE_16s
|
|
// Purpose: Computes the forward fast Fourier transform (FFT) of a real signal.
|
|
// Parameters:
|
|
// pSrc Pointer to the real-valued sequence.
|
|
// pDst Pointer to the transform result.
|
|
// len Length of the sequence (48, 96, 192 for Radix-3 algorithm
|
|
// or 288, 576, 1152 for Radix-9 algorithm).
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsFFTFwd_RToPerm_AMRWBE_16s, (const Ipp16s* pSrc, Ipp16s* pDst, int len))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsFFTInv_PermToR_AMRWBE_16s
|
|
// Purpose: Computes the inverse fast Fourier transform (FFT) of a real signal.
|
|
// Parameters:
|
|
// pSrc Pointer to the transform coefficients.
|
|
// pDst Pointer to the real-valued sequence.
|
|
// len Length of the sequence (48, 96, 192 for Radix-3 algorithm
|
|
// or 288, 576, 1152 for Radix-9 algorithm).
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsFFTInv_PermToR_AMRWBE_16s, (const Ipp16s* pSrc, Ipp16s* pDst, int len))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsSynthesisFilter_AMRWBE_16s32s_I
|
|
//
|
|
// Purpose:
|
|
// Parameters:
|
|
// pSrcLpc Pointer to the LP coefficients vector.
|
|
// order Order of LP filter.
|
|
// pSrcExc Pointer to the excitation vector.
|
|
// pSrcDst Pointer to the synthesized and updated speech.
|
|
// len
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsSynthesisFilter_AMRWBE_16s32s_I,(
|
|
const Ipp16s *pSrcLpc, int order, const Ipp16s *pSrcExc, Ipp32s *pSrcDstSignal, int len))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsDeemphasize_AMRWBE_NR_16s_I
|
|
// Purpose: Performs de-emphasis filtering.
|
|
// Parameters:
|
|
// gamma De-emphasis factor.
|
|
// gammaScale Scale factor for gamma.
|
|
// pSrcDst Pointer to the input/output vector.
|
|
// len Length of the input/output vector.
|
|
// pMem Pointer to the filter memory element.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsDeemphasize_AMRWBE_NR_16s_I, (Ipp16s gamma,
|
|
Ipp32s gammaScale, Ipp16s *pSrcDstSignal, int len, Ipp16s *pMem))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsFIRGenMidBand_AMRWBE_16s
|
|
// Purpose: Compute a shape-constrained FIR filter using the covariance method.
|
|
// Parameters:
|
|
// pSrcSignal Pointer to the signal [-8...(256+64)]
|
|
// pSrcSideSignal Pointer to the real side signal [256+64].
|
|
// pTaps Pointer to the FIR coefficients of length [9].
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsFIRGenMidBand_AMRWBE_16s, (const Ipp16s* pSrcSignal,
|
|
const Ipp16s* pSrcSideSignal, Ipp16s* pTaps))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsPostFilterLowBand_AMRWBE_16s
|
|
// Purpose: Post-processing of low-band decoded signal.
|
|
// Parameters:
|
|
// pSrcOldPitchLag Pointer to the previous pitch periods for all subframes [16].
|
|
// pSrcOldPitchGain Pointer to the previous pitch gains for all subframes [16].
|
|
// pSrcDstSignal Pointer to the proceeding signal [1024].
|
|
// pOldSynth Pointer to the synthesis memory of post-filter [503].
|
|
// pOldNoise Pointer to the noise memory of post-filter [24].
|
|
// pFilterScale Pointer to the noise memory of post-filter scale factor.
|
|
// pitchAdjust Pitch adjustment flag (if null, pitch adjustment is not
|
|
// implements, else any other).
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsPostFilterLowBand_AMRWBE_16s, (const Ipp16s *pSrcOldPitchLag,
|
|
const Ipp16s *pSrcOldPitchGain, Ipp16s *pSrcDstSignal, Ipp16s *pOldSynth,
|
|
Ipp16s *pOldNoise, Ipp16s *pFilterScale, Ipp32s pitchAdjust))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsQuantTCX_AMRWBE_16s
|
|
// Purpose: Quantize the pre-shaped spectrum in TCX mode.
|
|
// Parameters:
|
|
// pSrc Pointer to the signal to quatize [nSubvectors*8].
|
|
// pDst Pointer to quantized normalized vector [nSubvectors*8+nSubvectors].
|
|
// nSubvectors Number of subvectors.
|
|
// nBits Number of bits to use.
|
|
// pDstNoiseFactor Pointer to the comfort noise gain factor.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsQuantTCX_AMRWBE_16s, (const Ipp16s *pSrc, Ipp16s *pDst,
|
|
int nSubvectors, int nBits, Ipp16s* pDstNoiseFactor))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsEncodeMux_AMRWBE_16s
|
|
// Purpose: Encode and multiplex subvectors into several packets.
|
|
// Parameters:
|
|
// pSrc Pointer to rounded subvectors [nSubvectors*8+nSubvectors].
|
|
// nSubvectors Number of subvectors.
|
|
// pPacketSizes Pointer to vector of each packet size [nPackets].
|
|
// pDstParams Multiplexed parameters
|
|
// [(pPacketSizes[0]+3)/4+...+(pPacketSizes[nPackets]+3)/4].
|
|
// nPackets Number of packets.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsEncodeMux_AMRWBE_16s, (const Ipp16s *pSrc, int nSubvectors,
|
|
const int *pPacketSizes, Ipp16s *pDstParams, int nPackets))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsDecodeDemux_AMRWBE_16s
|
|
// Purpose: Demultiplex and decode subvectors from several packets.
|
|
// Parameters:
|
|
// pSrcParams Demultiplex parameters [(pPacketSizes[0]+3)/4+...+(pPacketSizes[nPackets]+3)/4].
|
|
// pPacketSizes Pointer to vector of each packet size [nPackets].
|
|
// pBFI Pointer to vector of bad frame indicators for each packet [nPackets].
|
|
// nPackets Number of packets.
|
|
// pDst Pointer to rounded subvectors [nSubvectors*8].
|
|
// nSubvectors Number of subvectors.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsDecodeDemux_AMRWBE_16s, (const Ipp16s *pSrcParams,
|
|
const Ipp32s *pPacketSizes, const Ipp32s* pBFI, int nPackets,
|
|
Ipp16s *pDst, int nSubvectors))
|
|
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// AMRWBE end
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// G722 SBADPCM related functions
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
#if !defined( _OWN_BLDPCS )
|
|
|
|
struct EncoderState_G722_16s;
|
|
typedef struct EncoderState_G722_16s IppsEncoderState_G722_16s;
|
|
|
|
struct DecoderState_G722_16s;
|
|
typedef struct DecoderState_G722_16s IppsDecoderState_G722_16s;
|
|
|
|
#endif /* _OWN_BLDPCS */
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsSBADPCMEncodeStateSize_G722_16s
|
|
// Purpose: Returns the G722 SBADPCM encoder state memory size
|
|
// pEncMemSize - pointer to the output encoder state memory size in bytes.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsSBADPCMEncodeStateSize_G722_16s, (int* pEncMemSize))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsSBADPCMEncodeInit_G722_16s
|
|
// Purpose: This function initializes the memory buffer referenced by the pointer pEncMem.
|
|
// pEncMem - pointer to the input memory buffer of size required to properly initialize the encoder.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsSBADPCMEncodeInit_G722_16s, (IppsEncoderState_G722_16s* pEncMem))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsSBADPCMEncode_G722_16s
|
|
// Purpose: Encode lower and upper sub-band of incoming speech or music.
|
|
// pSrc - pointer to the input vector of synthesis QMF samples.
|
|
// pDst - pointer to the ADPCM bit-stream output vector.
|
|
// len - the length of input vector, must be a multiple of two.
|
|
// pEncMem - pointer to the state memory of the Sub-Band ADPCM encoder.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsSBADPCMEncode_G722_16s, (const Ipp16s *pSrc, Ipp16s *pDst,
|
|
int len, IppsEncoderState_G722_16s* pEncMem))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsQMFEncode_G722_16s
|
|
// Purpose: This function uses Quadrature Mirror Filtering (QMF) of the 14-bit
|
|
// uniform PCM speech input to compute the lower and higher sub-band signal
|
|
// components for the Sub-Band ADPCM encoder.
|
|
// pSrc - pointer to the uniform PCM input speech vector.
|
|
// pDst - pointer to the synthesis QMF samples output vector.
|
|
// len - the length of input/output vectors, must be a multiple of two.
|
|
// delay - pointer to the buffer of a delay line.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsQMFEncode_G722_16s,
|
|
(const Ipp16s *pSrc, Ipp16s *pDst, int len, Ipp16s *delay))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsSBADPCMDecodeStateSize_G722_16s
|
|
// Purpose: Returns the G722 SBADPCM decoder state memory size
|
|
// pDecMemSize - pointer to the output decoder state memory size in bytes.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsSBADPCMDecodeStateSize_G722_16s, (int* pDecMemSize))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsSBADPCMDecodeInit_G722_16s
|
|
// Purpose: Initializes the memory buffer referenced by the pointer pDecMem.
|
|
// pDecMem - Pointer to the input decoder state memory buffer
|
|
// of size required to properly initialize the decoder.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsSBADPCMDecodeInit_G722_16s, (IppsDecoderState_G722_16s *pDecMem))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsSBADPCMDecode_G722_16s
|
|
// Purpose: Decode lower sub-band of input audio signal.
|
|
// pSrc - pointer to the input vector that contains unpacked
|
|
// lower and high ADPCM 16bit samples given in pair.
|
|
// pDst - Pointer to the output vector that contains decoded low-
|
|
// and high- bands portions of the recovered audio samples.
|
|
// len - the length of the input vector, must be multiple of two.
|
|
// mode - decode bit rate of the G.722 decoder.
|
|
// pDecMem - pointer to the state memory of the Sub-Band ADPCM decoder.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsSBADPCMDecode_G722_16s, (const Ipp16s *pSrc, Ipp16s *pDst,
|
|
int len, Ipp16s mode, IppsDecoderState_G722_16s * pDecMem))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsQMFDecode_G722_16s
|
|
// Purpose: This function performs Quadrature Mirror Filter (QMF) synthesis
|
|
// of the low- and high- bands portions of the recovered samples
|
|
// to reconstruct the output signal.
|
|
// pSrc - pointer to the input vector that contains decoded low- and high- bands
|
|
// portions of the recovered samples.
|
|
// pDst - pointer to the output vector of 16bit linear PCM audio samples.
|
|
// len - the length of input/output vectors, must be a multiple of two.
|
|
// delay - pointer to the buffer of a delay line.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsQMFDecode_G722_16s,
|
|
(const Ipp16s *pSrc, Ipp16s *pDst, int len, Ipp16s *delay))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsSBADPCMDecodeStateUpdate_G722_16s
|
|
// Purpose: This function updates the state of the sub-band ADPCM decoder
|
|
// after extrapolating missing frames to help in recovery from frame erasures.
|
|
// pCoeffs - First-order pole zero filter coefficients array.
|
|
// gainFactor - Attenuation factor for gains.
|
|
// resetDelayFlag - If 0: no delays reset, otherwise reset delays.
|
|
// pDecMem - Pointer to the state memory of the Sub-Band ADPCM decoder.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsSBADPCMDecodeStateUpdate_G722_16s, (const Ipp16s pCoeffs[2], Ipp16s gainFactor,
|
|
int resetDelayFlag, IppsDecoderState_G722_16s *pDecMem))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsClassifyFrame_G722_16s_I
|
|
// Purpose: Classify the frame and modify the residual signal by the condition.
|
|
// pSrcDst - Pointer to the excitation vector [(valDelay*2)+2].
|
|
// valDelay - The pitch delay estimated by the LTP analysis.
|
|
// pClass - Pointer to the frame class.
|
|
// pDecMem - Pointer to the state memory of the Sub-Band ADPCM decoder.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsClassifyFrame_G722_16s_I, (Ipp16s *pSrcDst, Ipp16s valDelay, IppG722SBClass *pSrcDstClass,
|
|
IppsDecoderState_G722_16s *pDecMem))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsFilterHighband_G722_16s_I
|
|
// Purpose: This function filters higher band part of the input array pSrcDst
|
|
// through the first-order high-pass filter with memory pMem and stores
|
|
// the results in pSrcDst. The filter memory pMem is updated and shoud
|
|
// be used for filtering of the next frame.
|
|
// pSrcDst - Pointer to the source and destination vector [len].
|
|
// len - Number of elements in the source and destination vector.
|
|
// pMem - Pointer to the filter memory array
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsFilterHighband_G722_16s_I, (Ipp16s *pSrcDst, int len, Ipp16s pMem[2]))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsDownsampleFilter_G722_16s
|
|
// Purpose: This function down-samples the input vector by a factor of 4,
|
|
// by using low-pass filter and decimating their values at the same time.
|
|
// pSrc - Pointer to the source vector [lenSrc].
|
|
// lenSrc - Length of the source vector.
|
|
// pDst - Pointer to the destination vector[lenSrc/4].
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsDownsampleFilter_G722_16s, (const Ipp16s *pSrc, int lenSrc, Ipp16s *pDst))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// G722 SBADPCM end
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Echo Canceller related functions
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
|
|
#if !defined( _OWN_BLDPCS )
|
|
struct _SubbandProcessState_32f;
|
|
typedef struct _SubbandProcessState_32f IppsSubbandProcessState_32f;
|
|
struct _SubbandControllerState_EC_32f;
|
|
typedef struct _SubbandControllerState_EC_32f IppsSubbandControllerState_EC_32f;
|
|
struct _FullbandControllerState_EC_32f;
|
|
typedef struct _FullbandControllerState_EC_32f IppsFullbandControllerState_EC_32f;
|
|
struct _ToneDetectState_EC_32f;
|
|
typedef struct _ToneDetectState_EC_32f IppsToneDetectState_EC_32f;
|
|
|
|
struct _SubbandProcessState_16s;
|
|
typedef struct _SubbandProcessState_16s IppsSubbandProcessState_16s;
|
|
struct _SubbandControllerState_EC_16s;
|
|
typedef struct _SubbandControllerState_EC_16s IppsSubbandControllerState_EC_16s;
|
|
struct _FullbandControllerState_EC_16s;
|
|
typedef struct _FullbandControllerState_EC_16s IppsFullbandControllerState_EC_16s;
|
|
struct _ToneDetectState_EC_16s;
|
|
typedef struct _ToneDetectState_EC_16s IppsToneDetectState_EC_16s;
|
|
|
|
struct _SubbandControllerDTState_EC_16s;
|
|
typedef struct _SubbandControllerDTState_EC_16s IppsSubbandControllerDTState_EC_16s;
|
|
#endif /* _OWN_BLDPCS */
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippsSubbandProcessGetSize
|
|
//
|
|
// Purpose:
|
|
// Returns size of the state structure
|
|
//
|
|
// Parameters:
|
|
// order Number of subbands = (2 ^ (order - 1) + 1)
|
|
// windowLen Length of window
|
|
// pStateSize Pointer to the computed value of size of buffer
|
|
// for state structure.
|
|
// pInitBufSize Pointer to the computed size of buffer for use
|
|
// in initialization function
|
|
// pBufSize Pointer to the computed size of work buffer.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// ippStsNullPtrErr Indicates an error when pSize is NULL.
|
|
// ippStsBadArgErr Indicates an error when order is less than or
|
|
// equal to 0 or windowLen is not divisibly by 2 ^
|
|
// order
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsSubbandProcessGetSize_32f, (int order, int windowLen,
|
|
int *pSize, int *pInitBufSize, int *pBufSize))
|
|
IPPAPI(IppStatus, ippsSubbandProcessGetSize_16s, (int order, int windowLen,
|
|
int *pSize, int *pInitBufSize, int *pBufSize))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippsSubbandProcessInit
|
|
//
|
|
// Purpose:
|
|
// Initializes the state structure
|
|
//
|
|
// Parameters:
|
|
// pState Pointer to the state structure to be created
|
|
// order Number of subbands = (2 ^ (order - 1) + 1)
|
|
// frameSize Size of frame. Should be in range [1, 2 ^order]
|
|
// windowLen Window length
|
|
// pWindow Pointer to window coefficients (may be NULL, if
|
|
// the order, frameSize and windowLen are equal to
|
|
// one of the predefined values: (5, 24, 128) or
|
|
// (6, 44, 256). In this case the predefined
|
|
// window is used.
|
|
// pInitBuf Pointer to the init buffer
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// ippStsNullPtrErr Indicates an error when buf or pState is NULL.
|
|
// ippStsBadArgErr Indicates an error when order is less or equal
|
|
// to 0 or windowLen is not divisibly by 2 ^ order
|
|
// or frameSize is less than or equal to 0 or (
|
|
// window is NULL and appropriate internal window
|
|
// doesn't exist).
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsSubbandProcessInit_32f, (
|
|
IppsSubbandProcessState_32f *state,
|
|
int order, int frameSize, int windowLen, const Ipp32f *pWindow,
|
|
Ipp8u *pInitBuf))
|
|
IPPAPI(IppStatus, ippsSubbandProcessInit_16s, (
|
|
IppsSubbandProcessState_16s *state,
|
|
int order, int frameSize, int windowLen, const Ipp16s *pWindow,
|
|
Ipp8u *pInitBuf))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippsSubbandAnalysis
|
|
//
|
|
// Purpose:
|
|
// Decomposes frame into complex subband representation
|
|
//
|
|
// Parameters:
|
|
// pSignal Pointer to the source vector of the length equal
|
|
// to the frame size which was used to initialize
|
|
// the subband process algorithm by
|
|
// ippsSubbandProcessInit function.
|
|
// pSubbands Pointer to the subband results vector of the
|
|
// length equal to number of subbands, calculated
|
|
// as (2 ^ (order - 1) + 1), where order is
|
|
// specified in ippsSubbandProcessInit.
|
|
// pState Pointer to the state structure
|
|
// pBuf Pointer to work buffer, user to allocate of size
|
|
// specified by the parameter pBufSise
|
|
// ippsSubbandProcessGetSize function.
|
|
// scalefactor scale factor value
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// ippStsNullPtrErr Indicates an error when one of the specified
|
|
// pointers is NULL.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsSubbandAnalysis_32f32fc, (const Ipp32f *pSignal, Ipp32fc *pSubbands,
|
|
IppsSubbandProcessState_32f *pState, Ipp8u *pBuf))
|
|
IPPAPI(IppStatus, ippsSubbandAnalysis_16s32sc_Sfs, (const Ipp16s *pSignal, Ipp32sc *pSubbands,
|
|
IppsSubbandProcessState_16s *pState, int scalefactor, Ipp8u *pBuf))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippsSubbandSynthesis
|
|
//
|
|
// Purpose:
|
|
// Reconstructs frame from complex subband representation
|
|
//
|
|
// Parameters:
|
|
// pSubbands Pointer to the subband results vector of the
|
|
// length equal to number of subbands, calculated
|
|
// as (2 ^ (order - 1) + 1), where an order is
|
|
// specified in ippsSubbandProcessInit
|
|
// pSignal Pointer to the destination signal vector of the
|
|
// length equal to frame size which was used to
|
|
// initialize the subband process algorithm by
|
|
// ippsSubbandProcessInit function.
|
|
// pState Pointer to the state structure
|
|
// pBuf Pointer to the work buffer of size after the
|
|
// ippsSubbandProcessGetSize function call (to be
|
|
// returned via pBufSize parameter)
|
|
// scalefactor scale factor value
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// ippStsNullPtrErr Indicates an error when one of the specified
|
|
// pointers is NULL.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsSubbandSynthesis_32fc32f, (const Ipp32fc *pSubbands, Ipp32f *pSignal,
|
|
IppsSubbandProcessState_32f *pState, Ipp8u *pBuf))
|
|
IPPAPI(IppStatus, ippsSubbandSynthesis_32sc16s_Sfs, (const Ipp32sc *pSubbands, Ipp16s *pSignal,
|
|
IppsSubbandProcessState_16s *pState, int scalefactor, Ipp8u *pBuf))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippsSubbandControllerGetSize_EC
|
|
//
|
|
// Purpose:
|
|
// Returns size of the state structure
|
|
//
|
|
// Parameters:
|
|
// numSubbands Number of subbands
|
|
// frameSize Size of frame
|
|
// numSegments Number of segments
|
|
// sampleFreq Sample frequency
|
|
// pSize Pointer to the computed buffer size value.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// ippStsNullPtrErr Indicates an error when pSize NULL.
|
|
// ippStsRangeErr Indicates an error when sampleFreq is not a valid element
|
|
// of the enumerated type IppPCMFrequency.
|
|
// ippStsBadArgErr Indicates an error when numSubbands is less or
|
|
// equal to 0 or numSegment is less than or equal
|
|
// to 0 or frameSize is less than or equal to 0.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsSubbandControllerGetSize_EC_32f, (int numSubbands, int frameSize,
|
|
int numSegments, IppPCMFrequency sampleFreq, int *pSize))
|
|
IPPAPI(IppStatus, ippsSubbandControllerGetSize_EC_16s, (int numSubbands, int frameSize,
|
|
int numSegments, IppPCMFrequency sampleFreq, int *pSize))
|
|
IPPAPI(IppStatus, ippsSubbandControllerDTGetSize_EC_16s, (int numSubbands, int frameSize,
|
|
int numSegments, IppPCMFrequency sampleFreq, int *pSize))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippsSubbandControllerInit_EC
|
|
//
|
|
// Purpose:
|
|
// Initializes the state structure
|
|
//
|
|
// Parameters:
|
|
// pState Pointer to the state structure to be created
|
|
// numSubbands Number of subbands
|
|
// frameSize Size of frame
|
|
// numSegments Number of segments
|
|
// sampleFreq Sample frequency.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// ippStsNullPtrErr Indicates an error when one of the specified
|
|
// pointers is NULL.
|
|
// ippStsRangeErr Indicates an error when sampleFreq is not a valid element
|
|
// of the enumerated type IppPCMFrequency.
|
|
// ippStsBadArgErr Indicates an error when numSubbands is less or
|
|
// equal to 0 or numSegment is less than or equal
|
|
// to 0 or frameSize is less than or equal to 0.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsSubbandControllerInit_EC_32f, (IppsSubbandControllerState_EC_32f *pState,
|
|
int numSubbands, int frameSize, int numSegments, IppPCMFrequency sampleFreq))
|
|
IPPAPI(IppStatus, ippsSubbandControllerInit_EC_16s, (IppsSubbandControllerState_EC_16s *pState,
|
|
int numSubbands, int frameSize, int numSegments, IppPCMFrequency sampleFreq))
|
|
IPPAPI(IppStatus, ippsSubbandControllerDTInit_EC_16s, (IppsSubbandControllerDTState_EC_16s *pState,
|
|
int numSubbands, int frameSize, int numSegments, IppPCMFrequency sampleFreq))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippsSubbandControllerUpdate_EC
|
|
//
|
|
// Purpose:
|
|
// Updates controller state. Returns step sizes.
|
|
//
|
|
// Parameters:
|
|
// pSrcRin Pointer to receive-in signal frame.
|
|
// pSrcSin Pointer to send-in signal frame. Frame size is
|
|
// specified in ippsSubbandControllerInit function
|
|
// ppSrcRinSubbandsHistory Pointer to an array of pointers to the most
|
|
// recent receive-in blocks. Size of array is equal
|
|
// to numSegments, specified in
|
|
// ippsSubbandControllerInit_EC function
|
|
// pSrcSinSubbands Pointer to subband representation of send-in
|
|
// signal frame (or NULL). Size of array =
|
|
// numSubbands, specified in
|
|
// ippsSubbandControllerInit_EC function
|
|
// pDstStepSize Pointer to step sizes. Length of vector =
|
|
// numSubbands, specified in
|
|
// ippsSubbandControllerInit_EC function
|
|
// learningRate Positive value 0-1, learning rate parameter.
|
|
//
|
|
// pState Pointer to structure
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// ippStsNullPtrErr Indicates an error when pState, pRin, pSin,
|
|
// pRinSubbands or pStepSize is NULL.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsSubbandControllerUpdate_EC_16s, (const Ipp16s *pSrcRin, const Ipp16s *pSrcSin,
|
|
const Ipp32sc **ppSrcRinSubbandsHistory, const Ipp32sc *pSrcSinSubbands,
|
|
Ipp32s_EC_Sfs *pDstStepSize, IppsSubbandControllerState_EC_16s *pState))
|
|
IPPAPI(IppStatus, ippsSubbandAPControllerUpdate_EC_32f,(
|
|
const Ipp32fc **ppSrcRinSubbandsHistory, const Ipp32fc *pSrcSinSubbands,
|
|
double *pDstStepSize, Ipp32f learningRate, IppsSubbandControllerState_EC_32f *pState))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippsSubbandController_EC
|
|
//
|
|
// Purpose:
|
|
// Main controller function. Updates coefficients of filters. Returns
|
|
// output gain coefficients
|
|
//
|
|
// Parameters:
|
|
// pSrcAdaptiveFilterErr Pointer to the adaptive filter error vector of
|
|
// length equal to numSubbands, specified in
|
|
// ippsSubbandControllerInit_EC function
|
|
// pSrcFixedFilterErr Pointer to errors of fixed filter. Length is
|
|
// equal to numSubbands
|
|
// ppDstAdaptiveCoefs Pointer to an array of pointers to the filter
|
|
// Length of array coefficients vectors =
|
|
// numSegments, specified in
|
|
// ippsSubbandControllerInit_EC
|
|
// ppDstFixedCoefs Pointer to an array of pointers to the filter
|
|
// Length of array coefficients vectors =
|
|
// numSegments, specified in
|
|
// ippsSubbandControllerInit_EC
|
|
// pDstSGain Pointer to send gain coefficient
|
|
// pState Pointer to SubbandController_EC state structure.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// ippStsNullPtrErr Indicates an error when one of the specified
|
|
// pointers is NULL.
|
|
*/
|
|
IPPAPI(IppStatus, ippsSubbandControllerUpdate_EC_32f, (const Ipp32f *pSrcRin, const Ipp32f *pSrcSin,
|
|
const Ipp32fc **ppSrcRinSubbandsHistory, const Ipp32fc *pSrcSinSubbands,
|
|
double *pDstStepSize, IppsSubbandControllerState_EC_32f *pState))
|
|
IPPAPI(IppStatus, ippsSubbandController_EC_32f, (const Ipp32fc *pSrcAdaptiveFilterErr,
|
|
const Ipp32fc *pSrcFixedFilterErr,
|
|
Ipp32fc **ppDstAdaptiveCoefs, Ipp32fc **ppDstFixedCoefs,
|
|
Ipp32f *pDstSGain, IppsSubbandControllerState_EC_32f *pState))
|
|
|
|
IPPAPI(IppStatus, ippsSubbandController_EC_16s, (const Ipp32sc *pSrcAdaptiveFilterErr,
|
|
const Ipp32sc *pSrcFixedFilterErr,
|
|
Ipp32sc **ppDstAdaptiveCoefs, Ipp32sc **ppDstFixedCoefs,
|
|
Ipp16s *pDstSGain, IppsSubbandControllerState_EC_16s *pState))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippsSubbandControllerReset_EC
|
|
//
|
|
// Purpose:
|
|
// Resets controller state
|
|
//
|
|
// Parameters:
|
|
// pState Pointer to the structure.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// ippStsNullPtrErr Indicates an error when one of the specified
|
|
// pointers is NULL.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsSubbandControllerReset_EC_32f, (IppsSubbandControllerState_EC_32f *pState))
|
|
IPPAPI(IppStatus, ippsSubbandControllerReset_EC_16s, (IppsSubbandControllerState_EC_16s *pState))
|
|
IPPAPI(IppStatus, ippsSubbandControllerDTReset_EC_16s, (IppsSubbandControllerDTState_EC_16s *pState))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippsFullbandControllerGetSize_EC
|
|
//
|
|
// Purpose:
|
|
// Returns size of the state structure
|
|
//
|
|
// Parameters:
|
|
// frameSize Size of frame
|
|
// tapLen Number of tap values.
|
|
// sampleFreq Sample frequency
|
|
// pSize Pointer to the computed buffer size value.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// ippStsNullPtrErr Indicates an error when pSize NULL.
|
|
// ippStsRangeErr Indicates an error when sampleFreq is not a valid element
|
|
// of the enumerated type IppPCMFrequency.
|
|
// ippStsBadArgErr Indicates an error when frameSize is less or
|
|
// equal to 0 or tapLen is less than or equal to 0.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsFullbandControllerGetSize_EC_32f, (int frameSize,
|
|
int tapLen, IppPCMFrequency sampleFreq, int *pSize))
|
|
IPPAPI(IppStatus, ippsFullbandControllerGetSize_EC_16s, (int frameSize,
|
|
int tapLen, IppPCMFrequency sampleFreq, int *pSize))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippsFullbandControllerInit_EC
|
|
//
|
|
// Purpose:
|
|
// Initializes the state structure
|
|
//
|
|
// Parameters:
|
|
// pState Pointer to the memory buffer for the fullband
|
|
// controller state structure to be initialized.
|
|
// The size of the memory buffer to be acquired by
|
|
// ippsFullbandControllerGetSize_EC function via
|
|
// pSize parameter.
|
|
// frameSize Size of frame
|
|
// tapLen Number of tap values.
|
|
// sampleFreq Sample frequency.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// ippStsNullPtrErr Indicates an error when one of the specified
|
|
// pointers is NULL.
|
|
// ippStsRangeErr Indicates an error when sampleFreq is not a valid element
|
|
// of the enumerated type IppPCMFrequency.
|
|
// ippStsBadArgErr Indicates an error when frameSize is less or
|
|
// equal to 0 or tapLen is less than or equal to 0.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsFullbandControllerInit_EC_32f, (IppsFullbandControllerState_EC_32f *pState,
|
|
int frameSize, int tapLen, IppPCMFrequency sampleFreq))
|
|
IPPAPI(IppStatus, ippsFullbandControllerInit_EC_16s, (IppsFullbandControllerState_EC_16s *pState,
|
|
int frameSize, int tapLen, IppPCMFrequency sampleFreq))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippsFullbandControllerUpdate_EC
|
|
//
|
|
// Purpose:
|
|
// Updates controller state. Returns step sizes
|
|
//
|
|
// Parameters:
|
|
// pSrcRin Pointer to receive-in signal history,length =
|
|
// tapLen + frameSize, tapLen and frameSize is
|
|
// specified in ippsFullbandControllerInit
|
|
// pSrcSin Pointer to send-in signal frame, frame size is
|
|
// specified in ippsFullbandControllerInit_EC
|
|
// pDstStepSize Pointer to step sizes, length = frame_size,
|
|
// specified in ippsFullbandControllerInit_EC
|
|
// pState Pointer to structure
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// ippStsNullPtrErr Indicates an error when pState, pRin, pSin, or
|
|
// pStepSize is NULL.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsFullbandControllerUpdate_EC_32f, (const Ipp32f *pSrcRin,
|
|
const Ipp32f *pSrcSin, Ipp32f *pDstStepSize,
|
|
IppsFullbandControllerState_EC_32f *pState))
|
|
IPPAPI(IppStatus, ippsFullbandControllerUpdate_EC_16s, (const Ipp16s *pSrcRin,
|
|
const Ipp16s *pSrcSin, Ipp32s *pDstStepSize,
|
|
IppsFullbandControllerState_EC_16s *pState))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippsFullbandController_EC
|
|
//
|
|
// Purpose:
|
|
// Main controller function. Updates coefficients of filter . Returns
|
|
// output gain coefficients
|
|
//
|
|
// Parameters:
|
|
// pState Pointer to structure.
|
|
// pAdaptiveFilterErr Pointer to output of path with adaptive filter,
|
|
// length = frame size , specified in
|
|
// ippsFullbandControllerInit_EC
|
|
// pFixedFilterErr Pointer to output of path with fixed filter.
|
|
// length = frame size, specified in
|
|
// ippsFullbandControllerInit_EC
|
|
// pAdaptiveCoefs Pointer to the filter coefficients vectors.
|
|
// length = tapLength, specified in
|
|
// ippsFullbandControllerInit_EC
|
|
// pFixedCoefs Pointer to the filter coefficients vectors.
|
|
// length = tapLength, specified in
|
|
// ippsFullbandControllerInit_EC
|
|
// pSGain Pointer to send gain coefficient
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// ippStsNullPtrErr Indicates an error when one of the specified
|
|
// pointers is NULL.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsFullbandController_EC_32f, (const Ipp32f *pAdaptiveFilterErr,
|
|
const Ipp32f *pFixedFilterErr,
|
|
Ipp32f *pAdaptiveCoefs, Ipp32f *pFixedCoefs,
|
|
Ipp32f *pSGain,
|
|
IppsFullbandControllerState_EC_32f *pState))
|
|
IPPAPI(IppStatus, ippsFullbandController_EC_16s, (const Ipp16s *pAdaptiveFilterErr,
|
|
const Ipp16s *pFixedFilterErr,
|
|
Ipp16s *pAdaptiveCoefs, Ipp16s *pFixedCoefs,
|
|
Ipp16s *pSGain,
|
|
IppsFullbandControllerState_EC_16s *pState))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippsFullbandControllerReset_EC
|
|
//
|
|
// Purpose:
|
|
// Resets controller state
|
|
//
|
|
// Parameters:
|
|
// pState Pointer to the structure.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// ippStsNullPtrErr Indicates an error when one of the specified
|
|
// pointers is NULL.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsFullbandControllerReset_EC_32f, (IppsFullbandControllerState_EC_32f *pState))
|
|
IPPAPI(IppStatus, ippsFullbandControllerReset_EC_16s, (IppsFullbandControllerState_EC_16s *pState))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippsFIR_EC
|
|
//
|
|
// Purpose:
|
|
// Computes FIR filtering results.
|
|
//
|
|
// Parameters:
|
|
// pSrcSpchRef Pointer to the source original (receive-out)
|
|
// signal of (tapLength + len) length
|
|
// pSrcSpch Pointer to the signal with echo path (send-in)
|
|
// pDstSpch Pointer to the destination "echo-free" signal
|
|
// (send-out)
|
|
// len Length of source and destination signals
|
|
// pSrcTaps FIR filter taps vector
|
|
// tapsLen Number of taps of the FIR filter
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// ippStsNullPtrErr Indicates an error when one of the specified
|
|
// pointers is NULL.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsFIR_EC_32f, (const Ipp32f *pSrcSpchRef,
|
|
const Ipp32f *pSrcSpch,
|
|
Ipp32f *pDstSpch,
|
|
int len,
|
|
Ipp32f *pSrcCoef,
|
|
int tapLength))
|
|
IPPAPI(IppStatus, ippsFIR_EC_16s, (const Ipp16s *pSrcSpchRef,
|
|
const Ipp16s *pSrcSpch,
|
|
Ipp16s *pDstSpch,
|
|
int len,
|
|
Ipp16s *pSrcCoef,
|
|
int tapLength))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippsNLMS_EC
|
|
//
|
|
// Purpose:
|
|
// Performs filtering with coefficients update.
|
|
//
|
|
// Parameters:
|
|
// pSrcSpchRef Pointer to the source original (receive-out)
|
|
// signal of (tapLength + len) length.
|
|
// pSrcSpch Pointer to the signal with echo path (send-in)
|
|
// pStepSize Pointer to step sizes vector of length equal to
|
|
// len
|
|
// pSrcDstErr Pointer to last error value
|
|
// pDstSpch Pointer to the destination "echo-free" signal
|
|
// (send-out)
|
|
// len Length of source and destination signals
|
|
// pSrcDstTaps FIR filter taps source and destination vector
|
|
// tapsLen Number of taps
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// ippStsNullPtrErr Indicates an error when one of the specified
|
|
// pointers is NULL.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsNLMS_EC_32f, (const Ipp32f *pSrcSpchRef,
|
|
const Ipp32f *pSrcSpch,
|
|
const Ipp32f *pStepSize,
|
|
Ipp32f *pDstSpch,
|
|
int len,
|
|
Ipp32f *pSrcDstCoef,
|
|
int tapLength,
|
|
Ipp32f *pErr))
|
|
IPPAPI(IppStatus, ippsNLMS_EC_16s, (const Ipp16s *pSrcSpchRef,
|
|
const Ipp16s *pSrcSpch,
|
|
const Ipp32s *pStepSize,
|
|
Ipp16s *pDstSpch,
|
|
int len,
|
|
Ipp16s *pSrcDstCoef,
|
|
int tapLength,
|
|
Ipp16s *pErr))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippsFIRSubband_EC
|
|
//
|
|
// Purpose:
|
|
// This function computes the filter output in AEC NLMS algorithm.
|
|
//
|
|
// Parameters:
|
|
// ppSrcSignalIn, ppSrcSignal Pointers to an two-dimensional vector of size
|
|
// [numSegments][len] containing the pointers to the most recent
|
|
// complex-valued FFT spectra an input audio signal.
|
|
// ppSrcCoefs, ppCoefs Pointers to an two-dimensional vector of size [numSegments][len]
|
|
// containing the pointers to the filter coefficients vector of size [len].
|
|
// pDstSignalOut, pDstSignal Pointers to the complex-valued filter output vector.
|
|
// numSegments Number of filter segments (0 < numSegments < 256).
|
|
// len, numSubbands Number of filter subbands (0 < len, numSubbands < 4097).
|
|
// startSubband Number of subbands to skip before filtering (0<= startSubband < numSubbands)
|
|
// scaleFactor Saturation fixed scale factor (-32 < scaleFactor < 32)
|
|
// for Low function 0 <= scaleFactor < 32)
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No Error.
|
|
// ippStsNullPtrErr ppSrcSignalIn, ppSrcCoefs or pDstSignalOut is null.
|
|
// ippStsLengthErr len is out of range.
|
|
// ippStsRangeErr numSegments or scaleFactor is out of range.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsFIRSubband_EC_32fc, (
|
|
Ipp32fc **ppSrcSignalIn,
|
|
Ipp32fc **ppSrcCoefs,
|
|
Ipp32fc *pDstSignalOut,
|
|
int numSegments,
|
|
int len))
|
|
|
|
IPPAPI(IppStatus, ippsFIRSubband_EC_32sc_Sfs,(
|
|
Ipp32sc **ppSrcSignalIn,
|
|
Ipp32sc **ppSrcCoefs,
|
|
Ipp32sc *pDstSignalOut,
|
|
int numSegments,
|
|
int len,
|
|
int scaleFactor))
|
|
|
|
IPPAPI(IppStatus, ippsFIRSubbandLow_EC_32sc_Sfs,(
|
|
const Ipp32sc** ppSrcSignal,
|
|
const Ipp32sc** ppCoefs,
|
|
int numSegments,
|
|
Ipp32sc* pDstSignal,
|
|
int startSubband,
|
|
int numSubbands,
|
|
int scaleFactor))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippsFIRSubbandCoeffUpdate_EC
|
|
//
|
|
// Purpose:
|
|
// This function updates the coefficients of the AEC adaptive
|
|
// filter designed based on NLMS algorithm.
|
|
// Parameters:
|
|
// pSrcStepSize, pSrcAdaptStepSize Pointer to the adaptive filter step size
|
|
// vector of size [len] or [numSubbands]. For the integer
|
|
// functions step size vector elements are represented
|
|
// as a scaled integer values where variable x of type
|
|
// Ipp32s_EC_Sfs corresponds to the floating point value
|
|
// x.val * 2^x.sf.
|
|
// ppSrcStepSize Pointer to the array of pSrcStepSize. See above.
|
|
// apOrder affine projection order.
|
|
// ppSrcFilterInput Pointer to the array of pointers to the most recent
|
|
// input blocks (e.g., Xn, Xn-1,..., Xn-L+1) the complex-valued
|
|
// vectors that contain the FFT of the input signal.
|
|
// The dimension of ppSrcFilterInput is [numSegments][len]
|
|
// or [numSegments][numSubbands].
|
|
// ppSrcDstCoefsQ15, ppSrcDstCoefs Pointer to the array of pointers to the filter coefficient
|
|
// vectors. These are the complex-valued vectors containing
|
|
// the filter coefficients. The dimension of ppSrcDstCoefs
|
|
// is [numSegments][len] or [numSegments][numSubbands].
|
|
// pSrcError Pointer to the complex-valued vector containing the filter
|
|
// error. The dimension of pSrcError is [len] or [numSubbands].
|
|
// ppSrcError Pointer to the array of pSrcError. See above.
|
|
// numSegments Number of filter segments (0 < numSegments < 256).
|
|
// len, numSubbands Number of adaptive filter subbands and length of the input
|
|
// and output vectors.
|
|
// pDstProdStepErrQ Pointer to the output vector of filter error and step size product.
|
|
// scaleFactorCoef Fixed scale factor for filter coefficients (0 < scaleFactor < 32).
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No Error.
|
|
// ippStsNullPtrErr pSrcStepSize, ppSrcFilterInput, pSrcError or ppSrcDstCoefsQ15 is null.
|
|
// ippStsLengthErr len is out of range.
|
|
// ippStsRangeErr numSegments or scaleFactorCoef is out of range.
|
|
// ippStsSizeErr pSrcStepSize[indexVec].val is out of range.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsFIRSubbandCoeffUpdate_EC_32fc_I, (
|
|
const double *pSrcStepSize,
|
|
const Ipp32fc **ppSrcFilterInput,
|
|
const Ipp32fc *pSrcError,
|
|
Ipp32fc **ppSrcDstCoefs,
|
|
int numSegments,
|
|
int len))
|
|
|
|
IPPAPI(IppStatus, ippsFIRSubbandAPCoeffUpdate_EC_32fc_I, (
|
|
const Ipp64f** ppSrcStepSize,
|
|
const Ipp32fc** ppSrcFilterInput,
|
|
const Ipp32fc** ppSrcError,
|
|
Ipp32fc** ppSrcDstCoefs,
|
|
Ipp32u numSegments,
|
|
Ipp32u len,
|
|
Ipp32u apOrder))
|
|
IPPAPI(IppStatus, ippsFIRSubbandCoeffUpdate_EC_32sc_I, (
|
|
const Ipp32s_EC_Sfs *pSrcStepSize,
|
|
const Ipp32sc **ppSrcFilterInput,
|
|
const Ipp32sc *pSrcError,
|
|
Ipp32sc **ppSrcDstCoefsQ15,
|
|
int numSegments,
|
|
int len,
|
|
int scaleFactorCoef))
|
|
|
|
IPPAPI(IppStatus, ippsFIRSubbandLowCoeffUpdate_EC_32sc_I, (
|
|
const Ipp32sc** ppSrcFilterInput,
|
|
const Ipp32sc* pSrcError,
|
|
Ipp32sc** ppSrcDstCoefsQ15,
|
|
int numSegments,
|
|
Ipp32sc* pDstProdStepErrQ,
|
|
const Ipp32s_EC_Sfs* pSrcAdaptStepSize,
|
|
int startSubband,
|
|
int numSubbands,
|
|
int scaleFactorCoef))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippsToneDetectGetStateSize_EC
|
|
//
|
|
// Purpose:
|
|
// Returns size of the state structure
|
|
//
|
|
// Parameters:
|
|
// sampleFreq Sample frequency.
|
|
// pSize Pointer to the computed buffer size value
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// ippStsNullPtrErr Indicates an error when one of the specified
|
|
// pointers is NULL.
|
|
// ippStsRangeErr Indicates an error when sampleFreq is not a valid element
|
|
// of the enumerated type IppPCMFrequency.
|
|
// ippStsRangeErr Indicates an error when sampleFreq is not a
|
|
// valid element of the enumerated type IppFrequency
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsToneDetectGetStateSize_EC_32f, (IppPCMFrequency sampleFreq, int *pSize))
|
|
IPPAPI(IppStatus, ippsToneDetectGetStateSize_EC_16s, (IppPCMFrequency sampleFreq, int *pSize))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippsToneDetectInit_EC
|
|
//
|
|
// Purpose:
|
|
// Initializes the state structure
|
|
//
|
|
// Parameters:
|
|
// pState Pointer to the memory buffer to be initialized
|
|
// as the tone detector state structure. The size
|
|
// of memory to be acquired by the
|
|
// ippsToneDetectGetStateSize_EC function via pSize
|
|
// parameter.
|
|
// sampleFreq Sample frequency
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// ippStsRangeErr Indicates an error when sampleFreq is not a valid element
|
|
// of the enumerated type IppPCMFrequency.
|
|
// ippStsRangeErr Indicates an error when sampleFreq is not a
|
|
// valid element of the enumerated type IppFrequency
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsToneDetectInit_EC_32f, (IppsToneDetectState_EC_32f *pState,
|
|
IppPCMFrequency sampleFreq))
|
|
IPPAPI(IppStatus, ippsToneDetectInit_EC_16s, (IppsToneDetectState_EC_16s *pState,
|
|
IppPCMFrequency sampleFreq))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippsToneDetect_EC
|
|
//
|
|
// Purpose:
|
|
// Detects signal 2100 Hz with every 450 ms phase reversal
|
|
//
|
|
// Parameters:
|
|
// pSignal Pointer to signal vector.
|
|
// len Number of samples in signal vector
|
|
// pResult Pointer to result value (not zero means tone was
|
|
// detected)
|
|
// pState Pointer to the tone detector state structure.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsToneDetect_EC_32f, (const Ipp32f *pSignal,
|
|
int len, int *pResult,
|
|
IppsToneDetectState_EC_32f *pState))
|
|
IPPAPI(IppStatus, ippsToneDetect_EC_16s, (const Ipp16s *pSignal,
|
|
int len, int *pResult,
|
|
IppsToneDetectState_EC_16s *pState))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippsSubbandControllerDT_EC_16s
|
|
//
|
|
// Purpose:
|
|
// Main controller function. Updates coefficients of filters. Returns
|
|
// output gain coefficients
|
|
//
|
|
// Parameters:
|
|
// pSrcAdaptiveFilterErr Pointer to the adaptive filter error vector of
|
|
// length equal to numSubbands, specified in
|
|
// ippsSubbandControllerInit_EC function
|
|
// pSrcFixedFilterErr Pointer to errors of fixed filter. Length is
|
|
// equal to numSubbands
|
|
// ppDstAdaptiveCoefs Pointer to an array of pointers to the filter
|
|
// Length of array coefficients vectors =
|
|
// numSegments, specified in
|
|
// ippsSubbandControllerInit_EC
|
|
// ppDstFixedCoefs Pointer to an array of pointers to the filter
|
|
// Length of array coefficients vectors =
|
|
// numSegments, specified in
|
|
// ippsSubbandControllerInit_EC
|
|
// pSrcDstFilterPwr Pointer to an input/output power of adaptive filter coefficient.
|
|
// pDstStsAdapt Pointer to output flag which shows controller state.
|
|
// *pDstStsAdapt = -1 - coefficients of adaptive filter have been copied to the fixed filter.
|
|
// *pDstStsAdapt = 0 - nothing happened.
|
|
// *pDstStsAdapt = 1 - coefficients of fixed filter have been copied to the adaptive filter.
|
|
// pwrDelta Adaptive filter coefficients power change value (adaptive filter coefficients power
|
|
// of the current frame minus adaptive filter coefficients power of the previous frame).
|
|
// filterUpdateEnabled Indicator which indicates possibility to change (update) adaptive filter
|
|
// coefficients in this frame.
|
|
// adaptationEnabled Indicator which indicates if adaptation is enabled or not.
|
|
// startSubband Number of subbands to skip before filtering (0? startSubband < numSubbands).
|
|
// pState Pointer to SubbandControllerDT_EC state structure.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// ippStsNullPtrErr Indicates an error when one of the specified pointers is NULL.
|
|
// ippStsBadArgErr Indicates an error when startSubband is less 0 or startSubband is greater than or equal to numSubbands.
|
|
*/
|
|
IPPAPI(IppStatus, ippsSubbandControllerDT_EC_16s, (const Ipp32sc* pSrcAdaptiveFilterErr, const Ipp32sc* pSrcFixedFilterErr,
|
|
Ipp32sc** ppDstAdaptiveCoefs, Ipp32sc** ppDstFixedCoefs, Ipp64s* pSrcDstFilterPwr, int* pDstStsAdapt, Ipp64s pwrDelta,
|
|
int filterUpdateEnabled, int adaptationEnabled, int startSubband, IppsSubbandControllerDTState_EC_16s* pState))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippsSubbandControllerDTUpdate_EC
|
|
//
|
|
// Purpose:
|
|
// Updates controller state. Returns step sizes.
|
|
//
|
|
// Parameters:
|
|
// ppSrcRinSubbandsHistory Pointer to an array of pointers to the most
|
|
// recent receive-in blocks. Size of array is equal
|
|
// to numSegments, specified in
|
|
// ippsSubbandControllerInit_EC function
|
|
// pSrcSinSubbands Pointer to subband representation of send-in
|
|
// signal frame (or NULL). Size of array =
|
|
// numSubbands, specified in
|
|
// ippsSubbandControllerInit_EC function
|
|
// pSrcFilterErr Pointer to the input filter error vector. Vector length is equal to numSubbands
|
|
// specified in ippsSubbandControllerInit_EC function.
|
|
// pDstStepSize Pointer to step sizes. Length of vector =
|
|
// numSubbands, specified in
|
|
// ippsSubbandControllerInit_EC function
|
|
// pIsDT Pointer to the indicator which indicate double-talk condition.
|
|
// pDisabledNLP Pointer to the indicator which indicate whether NLP is disable (1) or not (0).
|
|
// startSubband Number of subbands to skip before filtering (0? startSubband < numSubbands).
|
|
// pState Pointer to SubbandControllerDT_EC state structure.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// ippStsNullPtrErr Indicates an error when pState, pRin, pSin,
|
|
// pRinSubbands or pStepSize is NULL.
|
|
// ippStsBadArgErr Indicates an error when startSubband is less 0 or startSubband is greater than or equal to numSubbands.
|
|
*/
|
|
IPPAPI(IppStatus, ippsSubbandControllerDTUpdate_EC_16s, (const Ipp32sc** ppSrcRinSubbandsHistory,
|
|
const Ipp32sc* pSrcSinSubbands, const Ipp32sc* pSrcFilterErr, Ipp32s_EC_Sfs* pDstStepSize,
|
|
int* pIsDT, int* pDisabledNLP, int startSubband, IppsSubbandControllerDTState_EC_16s* pState))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Echo Canceller end
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// MSRTA related functions
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
#if !defined( _OWN_BLDPCS )
|
|
typedef struct _QMFState_MSRTA_32s IppsQMFState_MSRTA_32s;
|
|
typedef struct _QMFState_RTA_32f IppsQMFState_RTA_32f;
|
|
typedef struct _ShortTermPostFilterState_MSRTA_32s IppsShortTermPostFilterState_MSRTA_32s;
|
|
typedef struct _PostFilterState_RTA_32f IppsPostFilterState_RTA_32f;
|
|
#endif
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsLPCToLSP_RTA
|
|
//
|
|
// Purpose: Converts a set of 10th-order LP coefficients to
|
|
// an equivalent set of line spectrum pairs (LSPs).
|
|
// Parameters:
|
|
// pSrcLPC Pointer to LP coefficient vector [order].
|
|
// pDstLSP Pointer to the LSP coefficient vector [order].
|
|
// order LP coefficient filter order.
|
|
// Returns: IppStatus
|
|
// ippStsNoRootFoundErr if number of roots less than order
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsLPCToLSP_RTA_32f,(const Ipp32f* pSrcLPC, Ipp32f* pDstLSP, int order))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsLSPToLPC_RTA
|
|
//
|
|
// Purpose: Converts a set of order LSPs to LP coefficients.
|
|
// Parameters:
|
|
// pSrcLSP Pointer to the input LSFs [order].
|
|
// pDstLPC Pointer to the output predictive coefficients [order].
|
|
// order LP coefficient filter order.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsLSPToLPC_RTA_32f,(const Ipp32f* pSrcLSP, Ipp32f* pDstLPC, int order))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsLevinsonDurbin_RTA
|
|
// Purpose: Obtaining of the LPC using durbin algorithm
|
|
// Parameters:
|
|
// pSrcAutoCorr Pointer to the autocorrelation vector [order+1].
|
|
// pDstLPC Pointer to the LPC output vector [order+1].
|
|
// pDstRC Pointer to the RC output vector [order].
|
|
// order LP order.
|
|
//
|
|
*/
|
|
IPPAPI(IppStatus, ippsLevinsonDurbin_RTA_32f, (const Ipp32f* pSrcAutoCorr, Ipp32f* pDstLPC, Ipp32f* pDstRC, int order))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsQMFGetStateSize_RTA
|
|
// Purpose: Knowing of MSRTA QMF filter size demand
|
|
// Parameters:
|
|
// pSize pointer to the output value of the memory size needed for QMF filter
|
|
// Returns:
|
|
// ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI(IppStatus, ippsQMFGetStateSize_RTA_32f, ( int* pSize ))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsQMFInit_RTA
|
|
// Purpose: Initialization of the memory allocated for QMF filter
|
|
// Parameters:
|
|
// pQMFMem Pointer to the memory supplied for filtering.
|
|
// nTaps Number of taps: 24, 48.
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI(IppStatus, ippsQMFInit_RTA_32f,( IppsQMFState_RTA_32f* pQMFMem, int nTaps ))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsQMFDecode_RTA
|
|
// Purpose: QMF synthesis filter implementation
|
|
// Parameters:
|
|
// ptQmf QMF filter structure.
|
|
// pSrcLow Pointer to the input buffer low band (len).
|
|
// pSrcHigh Pointer to the input buffer high band (len).
|
|
// len Length of the input buffer size.
|
|
// pDst Pointer to the output buffer (2 * len).
|
|
// pQMFMem Pointer to the memory supplied for filtering.
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI(IppStatus, ippsQMFDecode_RTA_32f,(const Ipp32f* pSrcLow, const Ipp32f* pSrcHigh,
|
|
int len, Ipp32f* pDst, IppsQMFState_RTA_32f* pQMFMem))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsQMFEncode_RTA
|
|
// Purpose: QMF analysis filter implementation
|
|
// Parameters:
|
|
// pSrc Pointer to the input buffer (len).
|
|
// len Length of the input buffer size.
|
|
// pDstLow Pointer to the output buffer low band (len / 2).
|
|
// pDstHigh Pointer to the output buffer high band (len / 2).
|
|
// pQMFMem Pointer to the memory supplied for filtering.
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI(IppStatus, ippsQMFEncode_RTA_32f,(const Ipp32f* pSrc, int len, Ipp32f* pDstLow,
|
|
Ipp32f* pDstHigh, IppsQMFState_RTA_32f* pQMFMem))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsPostFilterGetStateSize_RTA
|
|
// Purpose: Knowing of MSRTA Short Term Post filter size demand
|
|
// Parameters:
|
|
// pSize pointer to the output value of the memory size needed for STP filter
|
|
// Returns:
|
|
// ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI(IppStatus ,ippsPostFilterGetStateSize_RTA_32f,(int* pSize))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsPostFilterInit_RTA
|
|
// Purpose: Initialization of the memory allocated for STP filter
|
|
// Parameters:
|
|
// pStateMem Pointer to the memory supplied for filtering.
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI(IppStatus ,ippsPostFilterInit_RTA_32f,( IppsPostFilterState_RTA_32f *pStateMem))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsPostFilter_RTA
|
|
// Purpose: Adaptive Short-term Post Filter (APF)
|
|
// pSrcLPC pointer to the LPC coefficients.
|
|
// order LPC Order.
|
|
// pSrcDstSpeech pointer to the input/output speech buffer.
|
|
// len Length of input speech.
|
|
// apfIdx Index for different parameter value.
|
|
// harmonic and full band coding: iApfIdx = 0
|
|
// subband coding: iApfIdx = 1,3,4 respectively
|
|
// streaming coding: iApfIdx = 2,5,6 respectively
|
|
// pMem Pointer to the apf memory [33].
|
|
// pStateMem Pointer to the apf state memory.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus ,ippsPostFilter_RTA_32f_I,(const Ipp32f* pSrcLPC, int order, Ipp32f* pSrcDstSpeech,
|
|
int len, int pfType, Ipp32f* pMem,
|
|
IppsPostFilterState_RTA_32f* pStateMem))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsAdaptiveCodebookSearch_RTA
|
|
// Purpose: Adaptive Codebook Search
|
|
// pSrcAdptTarget Pointer to the input target signal (subFrameSize).
|
|
// pSrcImpulseResponse Pointer to the input impulse response (subFrameSize).
|
|
// subFrameSize Subframe size.
|
|
// pSrcBoundary Pointer to the input acb search boundaries (4).
|
|
// pSrcDstExc Pointer to the input/output current excitation buffer.
|
|
// pSrcDstLag Pointer to the input / output the lag.
|
|
// pDstAdptIndex Pointer to the output acb index.
|
|
// pDstAdptContribution Pointer to the output acb contribution (subFrameSize).
|
|
// deltaSearchRange Delta search range value.
|
|
// searchFlag 0 - full search, 1 - search around open-loop pitch.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsAdaptiveCodebookSearch_RTA_32f,(
|
|
const Ipp32f* pSrcAdptTarget, const Ipp32f* pSrcImpulseResponse, int subFrameSize, const Ipp32f* pSrcBoundary,
|
|
Ipp32f* pSrcDstExc, Ipp32f* pSrcDstLag, int* pDstAdptIndex,
|
|
Ipp32f* pDstAdptContribution, int deltaSearchRange, int searchFlag))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsFixedCodebookSearch_RTA
|
|
// Name: ippsFixedCodebookSearchRandom_RTA
|
|
// Purpose: Two tracks Fixed Codebook Search
|
|
// pSrcFixedTarget Pointer to the input target signal.
|
|
// pSrcImpulseResponse Pointer to the input impluse response.
|
|
// pDstFixedVector Pointer to the output FCB vector.
|
|
// subFrameSize Subframe size.
|
|
// pDstFixedIndex Pointer to the output codeword index.
|
|
// pDstGain Pointer to the output optimal gain.
|
|
// numPulses Number of pulses.
|
|
// complexity Complexity control parameter.
|
|
// codebookSize Random codebook size (64, 160, 256).
|
|
// nStage Stage number (0, 1,2).
|
|
// gainLimit Gain constrain limit flag(1, 2, 3, 4).
|
|
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsFixedCodebookSearch_RTA_32f,(
|
|
const Ipp32f* pSrcFixedTarget, const Ipp32f* pSrcImpulseResponse, Ipp32f* pDstFixedVector,
|
|
int subFrameSize, int* pDstFixedIndex, Ipp32f* pDstGain, int numPulses, int complexity))
|
|
IPPAPI(IppStatus, ippsFixedCodebookSearchRandom_RTA_32f,(
|
|
const Ipp32f * pSrcResidualTarget, const Ipp32f * pSrcImpulseResponse, Ipp32f *pDstFixedVector,
|
|
int subFrameSize, int* pDstFixedIndex, Ipp32f *pDstGain, int codebookSize,
|
|
int nStage, int gainLimit))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsLSPQuant_RTA
|
|
// Purpose: Quantize LSP parameters
|
|
// pSrcLSP Pointer to the input unquantized LSP vector.
|
|
// pSrcLPC Pointer to the input unquantized LPC vector.
|
|
// pDstLSP Pointer to the output quantized LSP vector.
|
|
// order LP coefficient filter order.
|
|
// pDstLSPIndex Pointer to the vector of quantized LSP indices.
|
|
// numMSVQStages Number stages MSVQ for LSP.
|
|
// frequency Sampling frequency.
|
|
// complexity Complexity control parameter.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsLSPQuant_RTA_32f,(
|
|
const Ipp32f* pSrcLSP, const Ipp32f* pSrcLPC, Ipp32f* pDstLSP, int order,
|
|
int* pDstLSPIndex, IppPCMFrequency frequency, int complexity))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsHighPassFilter_RTA_
|
|
// Purpose: High pass filtering with lattice structure
|
|
// pSrc Pointer to the input buffer.
|
|
// pDst Pointer to the output buffer.
|
|
// len Length of input /output buffers.
|
|
// hpfOrder Filter order 4 or 5.
|
|
// frequency Sampling frequency.
|
|
// pMem Pointer to the filter memory.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsHighPassFilter_RTA_32f,(const Ipp32f* pSrc, Ipp32f* pDst, int len, int hpfOrder, IppPCMFrequency frequency, Ipp32f* pMem))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsBandPassFilter_RTA
|
|
// Purpose: Performs band pass filter
|
|
// pSrcDst Pointer to the input/output speech vector [len].
|
|
// len Number of elements in the pSrcDst vector.
|
|
// pMem Pointer to the memory allocated for the frequency enhancement filter [len+2].
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI(IppStatus, ippsBandPassFilter_RTA_32f_I,(Ipp32f* pSrcDst, int len, Ipp32f *pMem))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// MSRTA end
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// G7291 related functions
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
#if !defined( _OWN_BLDPCS )
|
|
typedef struct _FilterHighpassState_G7291_16s IppsFilterHighpassState_G7291_16s;
|
|
typedef struct _QMFState_G7291_16s IppsQMFState_G7291_16s;
|
|
typedef struct _GenerateExcitationState_G7291_16s IppsGenerateExcitationState_G7291_16s;
|
|
#endif
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsFilterHighpassGetStateSize_G7291_16s
|
|
// Purpose: Knowing of G7291 high-pass filter size demand
|
|
// Parameters:
|
|
// pSize Pointer to the output value of the memory size.
|
|
// Returns:
|
|
// ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI (IppStatus, ippsFilterHighpassGetStateSize_G7291_16s, (int* pSize))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsFilterHighpassInit_G7291_16s
|
|
// Purpose: Initialization of the memory allocated for preprocessing filter
|
|
// Parameters:
|
|
// pState Pointer to memory supplied for filtering.
|
|
// pCoeff Pointer to the source vector of the filter coefficients.
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI (IppStatus, ippsFilterHighpassInit_G7291_16s, (IppsFilterHighpassState_G7291_16s* pState,
|
|
const Ipp16s* pCoeff))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsFilterHighpass_G7291_16s_ISfs
|
|
// Purpose: The input sampled speech shall be high-pass filtered
|
|
// Parameters:
|
|
// pSrcDst Pointer to the source and destination vector (for in-place operation).
|
|
// len Length of the pSrcDst.
|
|
// pState Pointer to the memory supplied for filtering.
|
|
// scaleFactor Scaling factor to apply to the result.
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI (IppStatus, ippsFilterHighpass_G7291_16s_ISfs, (Ipp16s* pSrcDst, int len,
|
|
IppsFilterHighpassState_G7291_16s* pState, int scaleFactor))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsFilterLowpass_G7291_16s_I
|
|
// Purpose: The input sampled speech shall be low-pass filtered
|
|
// Parameters:
|
|
// pSrcDst Pointer to the source and destination vector (for in-place operation).
|
|
// len Length of the pSrcDst.
|
|
// pMem Pointer to the memory supplied for filtering.
|
|
// hint Code specific use hints.
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI (IppStatus, ippsFilterLowpass_G7291_16s_I, (Ipp16s* pSrcDst, int len, Ipp16s* pMem,
|
|
IppHintAlgorithm hint))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsQMFGetStateSize_G7291_16s
|
|
// Purpose: Knowing of G7291 QMF analysis filter size demand
|
|
// Parameters:
|
|
// pSize Pointer to the output value of the memory size.
|
|
// Returns:
|
|
// ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI (IppStatus, ippsQMFGetStateSize_G7291_16s, (int* pSize))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsQMFInit_G7291_16s
|
|
// Purpose: Initialization of the memory allocated for QMF filter
|
|
// Parameters:
|
|
// pState Pointer to the memory supplied for QMF encode.
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI (IppStatus, ippsQMFInit_G7291_16s, (IppsQMFState_G7291_16s* pState))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsQMFEncode_G7291_16s
|
|
// Purpose: Two-channel filter bank analysis.
|
|
// Parameters:
|
|
// pSrc Pointer to the input vector [len].
|
|
// len Number of samples.
|
|
// pDstLowBand Pointer to the output lower-band vector [[len/2].
|
|
// pDstHighBand Pointer to the output higher-band vector [len/2].
|
|
// pState Pointer to the memory supplied for QMF encode.
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI (IppStatus, ippsQMFEncode_G7291_16s, (const Ipp16s* pSrc, int len,
|
|
Ipp16s* pDstLowBand, Ipp16s* pDstHighBand, IppsQMFState_G7291_16s* pState))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsQMFDecode_G7291_16s
|
|
// Purpose: Two-channel filter bank synthesis.
|
|
// Parameters:
|
|
// pSrcLowBand Pointer to the input lower-band vector [len].
|
|
// pSrcHighBand Pointer to the input higher-band vector [len].
|
|
// valGainSwitching Gain attenuation factor.
|
|
// len Number of samples.
|
|
// pDst Pointer to the output vector [len*2].
|
|
// pState Pointer to the memory supplied for QMF decode.
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI (IppStatus, ippsQMFDecode_G7291_16s, (const Ipp16s* pSrcLowBand, const Ipp16s* pSrcHighBand,
|
|
Ipp16s valGainSwitching, int len, Ipp16s* pDst, IppsQMFState_G7291_16s* pState))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsLSFDecode_G7291_16s
|
|
// Purpose: Construct LSFs by codebook indices
|
|
// Parameters:
|
|
// pQuantIndex Pointer to the input vector of codebook indices.
|
|
// pSrcDstPrevLSF Pointer to the input/output table of 4 previously quantized LSFs vectors.
|
|
// pSrcDstLSF Pointer to the quantized LSF input/output vector.
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI (IppStatus, ippsLSFDecode_G7291_16s, (const Ipp16s* pQuantIndex, Ipp16s* pSrcDstPrevLSF,
|
|
Ipp16s* pSrcDstLSF))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name : ippsAdaptiveCodebookSearch_G7291_16s
|
|
// Purpose: Determination of optimal integer and fractional pitch delay
|
|
// and generation of adaptive codebook vector
|
|
// Parameters:
|
|
// pSrcAdptTarget Pointer to the target signal for adaptive-codebook search vector [40].
|
|
// pSrcImpulseResponse Pointer to the impulse response of weighted synthesis filter vector [40]
|
|
// pSrcPrevExcitation Pointer to the previous and updated excitation vector [154].
|
|
// pDstDelay Pointer to the integer delay and fraction delay vector [2].
|
|
// lagMin Minimum value in the searched range.
|
|
// lagMax Maximum value in the searched range.
|
|
// subFrame Subframe number, either 0 or 1.
|
|
*/
|
|
IPPAPI (IppStatus, ippsAdaptiveCodebookSearch_G7291_16s, (const Ipp16s* pSrcAdptTarget,
|
|
const Ipp16s* pSrcImpulseResponse, const Ipp16s* pSrcPrevExcitation, Ipp16s* pDstDelay,
|
|
Ipp16s lagMin, Ipp16s lagMax, int subFrame))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name : ippsAdaptiveCodebookGain_G7291_16s
|
|
// Purpose: Compute the adaptive codebook gain
|
|
//
|
|
// pSrcAdptTarget Pointer to the adaptive target signal vector [40].
|
|
// pSrcImpulseResponse Pointer to the impulse response of the perceptual weighting filter vector [40].
|
|
// pSrcAdptVector Pointer to the adaptive-codebook vector [40].
|
|
// pDstFltAdptVector Pointer to the output filtered adaptive-codebook vector [40].
|
|
// pResultAdptGain Pointer to the adaptive-codebook gain in the length of 1, in Q14.
|
|
*/
|
|
|
|
IPPAPI (IppStatus, ippsAdaptiveCodebookGain_G7291_16s, (const Ipp16s* pSrcAdptTarget,
|
|
const Ipp16s* pSrcImpulseResponse, const Ipp16s* pSrcAdptVector, Ipp16s* pDstFltAdptVector,
|
|
Ipp16s* pResultAdptGain))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsAlgebraicCodebookSearch
|
|
// Purpose: Fixed (algebraic) codebook search function (1st Layer)
|
|
// Parameters:
|
|
// pSrcFixedTarget Pointer to the input updated target speech vector [40].
|
|
// pSrcLtpResidual Pointer to the input residual after long term prediction vector [40].
|
|
// pSrcDstFltAdptVector Pointer to the output filtered adaptive fixed-codebook vector [40].
|
|
// pSrcDstImpulseResponse Pointer to the output LP synthesis filter [40].
|
|
// pitchLag Pitch lag value.
|
|
// pitchGain Last quantized pitch gain value.
|
|
// pDstFixedVector Pointer to the fixed-codebook vector [40].
|
|
// pDstFltFixedVector Pointer to the output filtered fixed-codebook vector [40].
|
|
// pDstCodebookIdx Pointer to the fixed-codebook index [2].
|
|
// voiceFactor Voicing factor value.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsAlgebraicCodebookSearchL1_G7291_16s, (const Ipp16s* pSrcFixedTarget,
|
|
const Ipp16s* pSrcLtpResidual, Ipp16s* pSrcDstFltAdptVector, Ipp16s* pSrcDstImpulseResponse,
|
|
Ipp16s pitchLag, Ipp16s pitchGain, Ipp16s* pDstFixedVector, Ipp16s* pDstFltFixedVector,
|
|
Ipp16s* pDstCodebookIdx))
|
|
IPPAPI (IppStatus, ippsAlgebraicCodebookSearchL2_G7291_16s, (const Ipp16s* pSrcFixedTarget,
|
|
const Ipp16s* pSrcLtpResidual, const Ipp16s* pSrcImpulseResponse, Ipp16s voiceFactor,
|
|
Ipp16s* pDstFixedVector, Ipp16s* pDstFltFixedVector, Ipp16s* pDstCodebookIdx))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsGainQuant_G7291_16s
|
|
// Purpose: Quantization of the adaptive codebook gains of 2nd stage
|
|
// Parameters:
|
|
// pSrcFixedTarget Pointer to the target signal for adaptive codebook search vector [40].
|
|
// pSrcFltFixedVector Pointer to the filtered fixed codebook vector [40].
|
|
// valSrcQGain Quantized gain of 1st stage.
|
|
// pDstQGainIndex Pointer to the output gain codebook index.
|
|
// pDstQGain Pointer to the output quantized gain.
|
|
// subFrame Subframe number in range [0,3].
|
|
//
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsGainQuant_G7291_16s, (const Ipp16s* pSrcFixedTarget, const Ipp16s* pSrcFltFixedVector,
|
|
Ipp16s valSrcQGain, Ipp16s* pDstQGainIndex, Ipp16s* pDstQGain, int subFrame))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsEnvelopTime_G7291_16s
|
|
// Purpose: TDBWE time envelope (segment energy) computation
|
|
// Parameters:
|
|
// pSrc Pointer to the original highband input signal [10*subFrame].
|
|
// nls Normalization of the input signal.
|
|
// pDstEnvelopTime Pointer to the output time envelope parameters [subFrame].
|
|
// subFrame Number of consecutive subframes in pSrc.
|
|
//
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsEnvelopTime_G7291_16s, (const Ipp16s* pSrc, Ipp16s nls,
|
|
Ipp16s* pDstEnvelopTime, int subFrame))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsEnvelopFrequency_G7291_16s
|
|
// Purpose: TDBWE frequency envelope (sub-band energy) computation
|
|
// Parameters:
|
|
// pSrc Pointer to the original highband input signal [64].
|
|
// pDstEnvelopFreq Pointer to the output frequency envelope parameters [12].
|
|
//
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsEnvelopFrequency_G7291_16s, (const Ipp16s* pSrc, Ipp16s* pDstEnvelopFreq))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsGenerateExcitationGetStateSize_G7291_16s
|
|
// Purpose: Knowing of TDBWE generate excitation size demand
|
|
// Parameters:
|
|
// pSize Pointer to the output value of the memory size.
|
|
// Returns:
|
|
// ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI (IppStatus, ippsGenerateExcitationGetStateSize_G7291_16s, (int* pSize))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsGenerateExcitationInit_G7291_16s
|
|
// Purpose: Initialization of the memory allocated for generate excitation
|
|
// Parameters:
|
|
// pState Pointer to the memory supplied for generation of the excitation signal.
|
|
// Returns: ippStsNoErr, if no errors
|
|
*/
|
|
IPPAPI (IppStatus, ippsGenerateExcitationInit_G7291_16s, (IppsGenerateExcitationState_G7291_16s* pState))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsGenerateExcitation_G7291_16s
|
|
// Purpose: TDBWE excitation generator: produce pitch-synchronous excitation
|
|
// signal based on G.729 parameters
|
|
// Parameters:
|
|
// pIntPitchLag Pointer to the integer part of pitch lag.
|
|
// pFracPitchLag Pointer to the fractional part of pitch lag.
|
|
// pLtpPower Pointer to the ltp power ratio.
|
|
// pFixPower Pointer to the fix power ratio.
|
|
// pState Pointer to the memory supplied for generate excitation.
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI (IppStatus, ippsGenerateExcitation_G7291_16s, (const Ipp16s* pIntPitchLag,
|
|
const Ipp16s* pFracPitchLag, const Ipp32s* pLtpPower, const Ipp32s* pFixPower,
|
|
Ipp16s* pDst, IppsGenerateExcitationState_G7291_16s* pState))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsShapeEnvelopTime_G7291_16s
|
|
// Purpose: TDBWE time envelope shaping module,
|
|
// shape time envelope of pSrc according to pSrcTimeEnvelope
|
|
// Parameters:
|
|
// pSrc Pointer to the excitation input signal [80].
|
|
// pSrcEnvelopTime Pointer to the desired time envelope [8].
|
|
// pSrcDstGain Pointer to the gain of the time envelope shaping.
|
|
// pSrcDstNorm Pointer to the norm of the time envelope shaping.
|
|
// pDst Pointer to the shaped output signal [208].
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI (IppStatus, ippsShapeEnvelopTime_G7291_16s, (const Ipp16s* pSrc,
|
|
const Ipp16s* pSrcEnvelopTime, Ipp16s* pSrcDstGain, Ipp16s* pSrcDstNorm,
|
|
Ipp16s* pDst))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsShapeEnvelopFrequency_G7291_16s
|
|
// Purpose: TDBWE frequency envelope shaping module
|
|
// shape frequency envelope of pSrc according to pSrcFreqEnvelope
|
|
// Parameters:
|
|
// pSrc Pointer to the input signal [208].
|
|
// pSrcEnvelopFreq Pointer to the desired frequency envelope [12].
|
|
// pDst Pointer to the shaped output signal [80].
|
|
// pDstFilterCoeffs Pointer to the filtering coefficients for frequency envelope shaping [33].
|
|
// pMem Pointer to the memory supplied for frequency envelope shaping [32].
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI (IppStatus, ippsShapeEnvelopFrequency_G7291_16s, (const Ipp16s* pSrc,
|
|
const Ipp16s* pSrcEnvelopFreq, Ipp16s* pDst, Ipp16s* pDstFilterCoeffs, Ipp16s* pMem))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsCompressEnvelopTime_G7291_16s
|
|
// Purpose: Postprocessing of the TDBWE output by adaptive amplitude compression
|
|
// Parameters:
|
|
// pSrcEnvelopTime Pointer to the desired time envelope [28].
|
|
// pSrcDst Pointer to the shaped input/output signal [160].
|
|
// pMem Pointer to the memory for 2 past time envelope parameters.
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI (IppStatus, ippsCompressEnvelopTime_G7291_16s, (const Ipp16s* pSrcEnvelopTime,
|
|
Ipp16s* pSrcDst, Ipp16s* pMem))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsMDCTFwd_G7291_16s
|
|
// Purpose: Compute MDCT
|
|
// Parameters:
|
|
// pSrc Pointer to the input signal [160].
|
|
// pSrcDst Pointer to the previous input signal [160].
|
|
// pDstNorm Pointer to the output normalization factor.
|
|
// pDstMDCTCoeffs Pointer to the output MDCT coefficients [160].
|
|
// hint Suggests using specific code.
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI(IppStatus, ippsMDCTFwd_G7291_16s, (const Ipp16s* pSrc, const Ipp16s* pSrcPrev,
|
|
int* pDstNorm, Ipp16s* pDstMDCTCoeffs, IppHintAlgorithm hint ))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsMDCTInv_G7291_16s
|
|
// Purpose: Compute inverse MDCT
|
|
// Parameters:
|
|
// pMDCTCoeffs Pointer to the MDCT coefficients [160].
|
|
// pSrcDstMDCTPrevCoeffs Pointer to the old input/output MDCT memory [160].
|
|
// pDst Pointer to the output signal [160].
|
|
// scaleFactor Scale factor for the normalization MDCT coefficients.
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI (IppStatus, ippsMDCTInv_G7291_16s, (const Ipp16s* pMDCTCoeffs,
|
|
Ipp16s* pSrcDstMDCTPrevCoeffs, Ipp16s* pDst, int scaleFactor))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsMDCTQuantFwd_G7291_16s32u
|
|
// Purpose: Split spherical vector quantization.
|
|
// Parameters:
|
|
// pMDCTCoeffs Pointer to the input MDCT coefficients [320].
|
|
// pBitsNumber Pointer to the input number of bits allocated per subbands [18].
|
|
// pDst Pointer to the output vector quantization [18].
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI (IppStatus, ippsMDCTQuantFwd_G7291_16s32u,
|
|
(const Ipp16s* pMDCTCoeffs, const Ipp16s* pBitsNumber, Ipp32u* pDst))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsMDCTQuantDecode_G7291_32u16s
|
|
// Purpose: Inverse split spherical vector quantization.
|
|
// Parameters:
|
|
// pSrc Pointer to the input vector quantization indices [18].
|
|
// pBitsNumber Pointer to the input number of bits allocated per subbands [18].
|
|
// pQuantSpecEnv Pointer to the input quantized spectrum envelope [18].
|
|
// pMDCTCoeffs Pointer to the output MDCT coefficients [320].
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI (IppStatus, ippsMDCTQuantInv_G7291_32u16s,
|
|
(const Ipp32u* pSrc, const Ipp16s* pBitsNumber,
|
|
const Ipp16s* pQuantSpecEnv, Ipp16s* pDstMDCTCoeffs))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsMDCTPostProcess_G7291_16s
|
|
// Purpose: Post-processing of higher-band MDCT coefficients.
|
|
// Parameters:
|
|
// pSrcDstMDCTCoeffs Pointer to the input/output MDCT coefficients [160].
|
|
// numBits Number of bits to decode in TDAC.
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI (IppStatus, ippsMDCTPostProcess_G7291_16s, (Ipp16s* pSrcDstMDCTCoeffs,
|
|
int numBits))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsGainControl_G7291_16s_I
|
|
// Purpose: Adaptive gain control
|
|
// Compensate for the gain difference between reconstructed speech signal given
|
|
// pSrc (sr) and the postfiltered signal given by pSrcDst (spf)
|
|
// dst[i] = g[i] * dst[i]
|
|
// pSrc Pointer to the source reconstructed speech vector [40].
|
|
// pSrcDst Pointer to the input post-filtered signal and output
|
|
// gain-compensated signal vector [40].
|
|
// pSrcDstGain Pointer to the gain for the previous subframe.
|
|
// gain First reflection coefficient.
|
|
// valGainSwitching Gain attenuation factor.
|
|
// pSrcDstSmoothLevel Pointer to the input/output smooth level.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsGainControl_G7291_16s_I, (const Ipp16s* pSrc, Ipp16s *pSrcDst,
|
|
Ipp16s* pSrcDstGain, Ipp16s gain, Ipp16s valGainSwitching,
|
|
Ipp32s* pSrcDstSmoothLevel))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsTiltCompensation_G7291_16s
|
|
// Purpose: Tilt compensation filter
|
|
// transfer function 1/(1-|mu|) * (1 + mu * 1/z)
|
|
// pSrc Pointer to the gamma weighted LP coefficients input vector [40].
|
|
// pDst Pointer to the present and tilt-compensated output speech [40].
|
|
// gain Gain coefficient.
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsTiltCompensation_G7291_16s, (const Ipp16s* pSrc, Ipp16s* pDst,
|
|
Ipp16s gain))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsQuantParam_G7291_16s
|
|
// Purpose: Quantization of the TDBWE parameter set by "mean removed VQ"
|
|
//
|
|
// Parameters:
|
|
// pSrcDst Pointer to the source/destination unquantized parameter set [28].
|
|
// pCdbkIndices Pointer to the codebook indices [4].
|
|
// Returns: IppStatus
|
|
// ippStsNoErr if no error
|
|
*/
|
|
IPPAPI (IppStatus, ippsQuantParam_G7291_16s, (Ipp16s *pSrcDst, Ipp16s *pCdbkIndices))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// G7291 end
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Noise filters functions
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
|
|
#if !defined( _OWN_BLDPCS )
|
|
typedef struct _FilterNoiseState_RTA_32f IppsFilterNoiseState_RTA_32f;
|
|
typedef struct _FilterNoiseState_EC_32f IppsFilterNoiseState_EC_32f;
|
|
#endif
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsFilterNoiseGetStateSize_*
|
|
// Purpose: Knowing of RTA Noise Suppression size demand
|
|
// Parameters:
|
|
// pcmFreq Sampling frequency.
|
|
// pSize Pointer to the output value of the memory size.
|
|
// Returns:
|
|
// ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI(IppStatus, ippsFilterNoiseGetStateSize_RTA_32f, (IppPCMFrequency pcmFreq, int* pSize ))
|
|
IPPAPI(IppStatus, ippsFilterNoiseGetStateSize_EC_32f, (IppPCMFrequency pcmFreq,int *size))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsFilterNoiseInit_*
|
|
// Purpose: Initialization of the memory allocated for Noise Suppression Main Algorithm
|
|
// Parameters:
|
|
// pcmFreq Sampling frequency.
|
|
// pNRStateMem Pointer to the memory supplied for filter state.
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI(IppStatus, ippsFilterNoiseInit_RTA_32f, (IppPCMFrequency pcmFreq, IppsFilterNoiseState_RTA_32f* pNRStateMem))
|
|
IPPAPI(IppStatus, ippsFilterNoiseInit_EC_32f, (IppPCMFrequency pcmFreq, IppsFilterNoiseState_EC_32f* pNRStateMem))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsFilterNoiseLevel_*
|
|
// Purpose: Set the level of noise attenuation
|
|
// Parameters:
|
|
// level The enumerated value which defines the degree of noise attenuation.
|
|
// pNRStateMem Pointer to the memory supplied for Noise Suppression.
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI(IppStatus, ippsFilterNoiseLevel_RTA_32f, (IppsNRLevel level, IppsFilterNoiseState_RTA_32f* pNRStateMem))
|
|
IPPAPI(IppStatus, ippsFilterNoiseLevel_EC_32f, (IppsNRLevel level, IppsFilterNoiseState_EC_32f* pNRStateMem))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsFilterNoiseSetMode_EC_32f
|
|
// Purpose: Set the type of smoothing algorithm applied
|
|
// Parameters:
|
|
// mode The enumerated value which defines the smoothing mode
|
|
// pNRStateMem Pointer to the memory supplied for Noise Suppression.
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsFilterNoiseSetMode_EC_32f, (IppsNrSmoothMode mode, IppsFilterNoiseState_EC_32f* pNRStateMem))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: _ippsFilterNoiseDetect_EC_32f64f
|
|
// Purpose: Performs Noise Suppression Main Algorithm
|
|
// Parameters:
|
|
// pSrc1 Pointer to the "sin" input vector.
|
|
// pSrc2 Pointer to the "rin" input vector.
|
|
// pNoisePwr Pointer to the noise detected power.
|
|
// pMean Weighted mean of the noise.
|
|
// pDstFlag 1-noise detected, 0-not detected
|
|
// pNRStateMem Pointer to the memory supplied for Noise Suppression.
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI(IppStatus, ippsFilterNoiseDetect_EC_32f64f, (const Ipp32f pSrc1[16],Ipp64f *pNoisePwr,
|
|
Ipp32f *pMean,int *pDstFlag,IppsFilterNoiseState_EC_32f *pNRStateMem))
|
|
|
|
IPPAPI(IppStatus, ippsFilterNoiseDetectModerate_EC_32f64f, (const Ipp32f pSrc1[16],const Ipp32f pSrc2[16],Ipp64f *pNoisePwr,
|
|
Ipp32f *pMean,int *pDstFlag,IppsFilterNoiseState_EC_32f *pNRStateMem))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsFilterNoise_*
|
|
// Purpose: Performs Noise Suppression Main Algorithm
|
|
// Parameters:
|
|
// pSrc Pointer to the input vector.
|
|
// pDst Pointer to the output vector.
|
|
// pSrcDst Pointer to the input/output vector.
|
|
// noiseFlag Enumerated value defines filter state update.
|
|
// pNRStateMem Pointer to the memory supplied for Noise Suppression.
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI(IppStatus, ippsFilterNoise_RTA_32f, (const Ipp32f pSrc[160], Ipp32f pDst[160], IppsFilterNoiseState_RTA_32f* pNRStateMem ))
|
|
IPPAPI(IppStatus, ippsFilterNoise_RTA_32f_I, (Ipp32f pSrcDst[160], IppsFilterNoiseState_RTA_32f* pNRStateMem ))
|
|
IPPAPI(IppStatus, ippsFilterNoise_EC_32f, (const Ipp32f pSrc[16],Ipp32f pDst[16],IppsNrMode noiseFlag,
|
|
IppsFilterNoiseState_EC_32f *pNRStateMem))
|
|
IPPAPI(IppStatus, ippsFilterNoise_EC_32f_I, (Ipp32f pSrcDst[16],IppsNrMode noiseFlag,IppsFilterNoiseState_EC_32f *pNRStateMem))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Noise filters end
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// ALC functions
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
#if !defined( _OWN_BLDPCS )
|
|
typedef struct _ALCState_G169_16s IppsALCState_G169_16s;
|
|
#endif
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsALCGetStateSize_G169_16s
|
|
// Purpose: Knowing of Speech level control size demand
|
|
// Parameters:
|
|
// pSize Pointer to the output value of the memory size needed for Speech Level Control
|
|
// Returns:
|
|
// ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI(IppStatus, ippsALCGetStateSize_G169_16s,(int* pSize ))
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsALCInit_G169_16s
|
|
// Purpose: Initialization of the memory allocated for Speech Level Control Algorithm
|
|
// Parameters:
|
|
// pALCMem Pointer to the memory supplied for Speech Level Control.
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI(IppStatus, ippsALCInit_G169_16s,(IppsALCState_G169_16s* pALCMem))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsALCSetLevel_G169_16s
|
|
// Purpose: Set clip limit for the Speech Level Control
|
|
// Parameters:
|
|
// targetLevel Target level in dB.
|
|
// clipLevel Clip limit in dB.
|
|
// pALCMem Pointer to the memory supplied for Speech Level Control.
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI(IppStatus, ippsALCSetLevel_G169_16s,(Ipp32f targetLevel, Ipp32f clipLevel, IppsALCState_G169_16s* pALCMem))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsALCSetGain_G169_16s
|
|
// Purpose: Set max gain limit for the Speech Level Control
|
|
// Parameters:
|
|
// targetLevel Max gain in dB.
|
|
// pALCMem Pointer to the memory supplied for Speech Level Control.
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI(IppStatus, ippsALCSetGain_G169_16s,(Ipp32f maxGain, IppsALCState_G169_16s* pALCMem))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsALC_G169_16s
|
|
// Purpose: Speech Level Control
|
|
// Parameters:
|
|
// pSrc Pointer to the input vector.
|
|
// pDst Pointer to the output vector.
|
|
// pALCMem Pointer to the memory supplied for Speech Level Control.
|
|
// Returns: ippStsNoErr, if no errors
|
|
//
|
|
*/
|
|
IPPAPI(IppStatus, ippsALC_G169_16s,(const Ipp16s *pSrc, Ipp16s *pDst, int len, IppsALCState_G169_16s* pALCMem))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// ALC functions end
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// G.728J related functions
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name: ippsCodebookSearchTCQ_G728_16s8u
|
|
//
|
|
// Purpose: This function performs codebook search by Trellis-Coded Quantization
|
|
// algorthm described in ITU G728 Annex J claus J.4.1.1 and stores trellis
|
|
// survivor path index in pBestNode and best path indices in pDst
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the input speech vector
|
|
// pSrcLPC Pointer to the LPC coefficients vector
|
|
// pDst Pointers to the output best path indices
|
|
// pSrcDstWindow Pointer to the synthesis filter hybrid window memory
|
|
// pSrcDstResidual Pointer to the input/outpu quantized residual vector
|
|
// pSrcDstBestNode Pointer to input/output survivor node value in Viterbi search
|
|
// invGain Inverted gain scaled value structure
|
|
// excGain Linear excitation gain scaled value structure
|
|
//
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr Indicates no error.
|
|
// ippStsNullPtrErr Indicates an error when the pSrc, pSrcLPC, pSrcWindow,
|
|
// pSrcDstResidual, pSrcDstBestNode or pDst pointer is NULL.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippsCodebookSearchTCQ_G728_16s8u,(const Ipp16s *pSrc, const Ipp16s *pSrcLPC,Ipp8u *pDst,
|
|
Ipp16s *pSrcDstWindow, Ipp16s *pSrcDstResidual, Ipp32s *pSrcDstBestNode,
|
|
Ipp32s_EC_Sfs invGain, Ipp32s_EC_Sfs excGain ))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// G.728J end
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#if defined (_IPP_STDCALL_CDECL)
|
|
#undef _IPP_STDCALL_CDECL
|
|
#define __stdcall __cdecl
|
|
#endif
|
|
|
|
#endif /* __IPPSC_H__ */
|
|
/* ////////////////////////////// End of file /////////////////////////////// */
|
|
|