winamp/Src/external_dependencies/intel_ipp_6.1.1.035/em64t/include/ippsc.h

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 /////////////////////////////// */