202 lines
7.8 KiB
C
202 lines
7.8 KiB
C
#ifndef __SP_FRM
|
|
#define __SP_FRM
|
|
|
|
#include "gsmhr_typedefs.h"
|
|
#include "gsmhr_sp_rom.h"
|
|
|
|
|
|
struct QuantList
|
|
{
|
|
/* structure which points to the beginning of a block of candidate vq
|
|
* vectors. It also stores the residual error for each vector. */
|
|
int iNum; /* total number in list */
|
|
int iRCIndex; /* an index to the first vector of the
|
|
* block */
|
|
int16_t pswPredErr[PREQ1_NUM_OF_ROWS]; /* PREQ1 is the biggest block */
|
|
};
|
|
|
|
/*_________________________________________________________________________
|
|
| |
|
|
| Function Prototypes |
|
|
|_________________________________________________________________________|
|
|
*/
|
|
|
|
void iir_d(int16_t pswCoeff[], int16_t pswIn[],
|
|
int16_t pswXstate[],
|
|
int16_t pswYstate[],
|
|
int npts, int shifts,
|
|
int16_t swPreFirDownSh,
|
|
int16_t swFinalUpShift);
|
|
|
|
|
|
void filt4_2nd(int16_t pswCoeff[],
|
|
int16_t pswIn[],
|
|
int16_t pswXstate[],
|
|
int16_t pswYstate[],
|
|
int npts,
|
|
int shifts);
|
|
|
|
void initPBarVBarL(int32_t pL_PBarFull[],
|
|
int16_t pswPBar[],
|
|
int16_t pswVBar[]);
|
|
|
|
void initPBarFullVBarFullL(int32_t pL_CorrelSeq[],
|
|
int32_t pL_PBarFull[],
|
|
int32_t pL_VBarFull[]);
|
|
|
|
int16_t aflatRecursion(int16_t pswQntRc[],
|
|
int16_t pswPBar[],
|
|
int16_t pswVBar[],
|
|
int16_t *ppswPAddrs[],
|
|
int16_t *ppswVAddrs[],
|
|
int16_t swSegmentOrder);
|
|
|
|
void aflatNewBarRecursionL(int16_t pswQntRc[],
|
|
int iSegment,
|
|
int32_t pL_PBar[],
|
|
int32_t pL_VBar[],
|
|
int16_t pswPBar[],
|
|
int16_t pswVBar[]);
|
|
|
|
|
|
void setupPreQ(int iSeg, int iVector);
|
|
|
|
void setupQuant(int iSeg, int iVector);
|
|
|
|
void getNextVec(int16_t pswRc[]);
|
|
|
|
void aflat(int16_t pswSpeechToLPC[],
|
|
int piR0Index[],
|
|
int16_t pswFinalRc[],
|
|
int piVQCodewds[],
|
|
int16_t swPtch,
|
|
int16_t *pswVadFlag,
|
|
int16_t *pswSP);
|
|
|
|
|
|
int16_t fnExp2(int32_t L_Input);
|
|
|
|
int16_t fnLog2(int32_t L_Input);
|
|
|
|
void weightSpeechFrame(int16_t pswSpeechFrm[],
|
|
int16_t pswWNumSpace[],
|
|
int16_t pswWDenomSpace[],
|
|
int16_t pswWSpeechBuffBase[]);
|
|
|
|
void getSfrmLpcTx(int16_t swPrevR0, int16_t swNewR0,
|
|
int16_t pswPrevFrmKs[],
|
|
int16_t pswPrevFrmAs[],
|
|
int16_t pswPrevFrmSNWCoef[],
|
|
int16_t pswNewFrmKs[],
|
|
int16_t pswNewFrmAs[],
|
|
int16_t pswNewFrmSNWCoef[],
|
|
int16_t pswHPFSpeech[],
|
|
short *pswSoftInterp,
|
|
struct NormSw *psnsSqrtRs,
|
|
int16_t ppswSynthAs[][NP],
|
|
int16_t ppswSNWCoefAs[][NP]);
|
|
|
|
short int fnBest_CG(int16_t pswCframe[],
|
|
int16_t pswGframe[],
|
|
int16_t *pswCmaxSqr,
|
|
int16_t *pswGmax,
|
|
short int siNumPairs);
|
|
|
|
short compResidEnergy(int16_t pswSpeech[],
|
|
int16_t ppswInterpCoef[][NP],
|
|
int16_t pswPreviousCoef[],
|
|
int16_t pswCurrentCoef[],
|
|
struct NormSw psnsSqrtRs[]);
|
|
|
|
int16_t r0Quant(int32_t L_UnqntzdR0);
|
|
|
|
int16_t cov32(int16_t pswIn[],
|
|
int32_t pppL_B[NP][NP][2],
|
|
int32_t pppL_F[NP][NP][2],
|
|
int32_t pppL_C[NP][NP][2],
|
|
int32_t *pL_R0,
|
|
int32_t pL_VadAcf[],
|
|
int16_t *pswVadScalAuto);
|
|
|
|
int32_t flat(int16_t pswSpeechIn[],
|
|
int16_t pswRc[],
|
|
int *piR0Inx,
|
|
int32_t pL_VadAcf[],
|
|
int16_t *pswVadScalAuto);
|
|
|
|
|
|
|
|
void openLoopLagSearch(int16_t pswWSpeech[],
|
|
int16_t swPrevR0Index,
|
|
int16_t swCurrR0Index,
|
|
int16_t *psiUVCode,
|
|
int16_t pswLagList[],
|
|
int16_t pswNumLagList[],
|
|
int16_t pswPitchBuf[],
|
|
int16_t pswHNWCoefBuf[],
|
|
struct NormSw psnsWSfrmEng[],
|
|
int16_t pswVadLags[],
|
|
int16_t swSP);
|
|
|
|
int16_t getCCThreshold(int16_t swRp0,
|
|
int16_t swCC,
|
|
int16_t swG);
|
|
|
|
void pitchLags(int16_t swBestIntLag,
|
|
int16_t pswIntCs[],
|
|
int16_t pswIntGs[],
|
|
int16_t swCCThreshold,
|
|
int16_t pswLPeaksSorted[],
|
|
int16_t pswCPeaksSorted[],
|
|
int16_t pswGPeaksSorted[],
|
|
int16_t *psiNumSorted,
|
|
int16_t *pswPitch,
|
|
int16_t *pswHNWCoef);
|
|
|
|
short CGInterpValid(int16_t swFullResLag,
|
|
int16_t pswCIn[],
|
|
int16_t pswGIn[],
|
|
int16_t pswLOut[],
|
|
int16_t pswCOut[],
|
|
int16_t pswGOut[]);
|
|
|
|
void CGInterp(int16_t pswLIn[],
|
|
short siNum,
|
|
int16_t pswCIn[],
|
|
int16_t pswGIn[],
|
|
short siLoIntLag,
|
|
int16_t pswCOut[],
|
|
int16_t pswGOut[]);
|
|
|
|
int16_t quantLag(int16_t swRawLag,
|
|
int16_t *psiCode);
|
|
|
|
void findBestInQuantList(struct QuantList psqlInList,
|
|
int iNumVectOut,
|
|
struct QuantList psqlBestOutList[]);
|
|
|
|
int16_t findPeak(int16_t swSingleResLag,
|
|
int16_t pswCIn[],
|
|
int16_t pswGIn[]);
|
|
|
|
void bestDelta(int16_t pswLagList[],
|
|
int16_t pswCSfrm[],
|
|
int16_t pswGSfrm[],
|
|
short int siNumLags,
|
|
short int siSfrmIndex,
|
|
int16_t pswLTraj[],
|
|
int16_t pswCCTraj[],
|
|
int16_t pswGTraj[]);
|
|
|
|
int16_t
|
|
maxCCOverGWithSign(int16_t pswCIn[],
|
|
int16_t pswGIn[],
|
|
int16_t *pswCCMax,
|
|
int16_t *pswGMax,
|
|
int16_t swNum);
|
|
|
|
void getNWCoefs(int16_t pswACoefs[],
|
|
int16_t pswHCoefs[]);
|
|
|
|
#endif
|