Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/******************************************************************************
* tips.h * *--------* * *------------------------------------------------------------------------------ * Copyright (C) 2000 Microsoft Corporation Date: 03/02/00 - 12/4/00 * All Rights Reserved * ********************************************************************* mplumpe was PACOG ***/
#ifndef __TIPS_H_
#define __TIPS_H_
class CSynth;
class CTips { friend class CSynth;
public: static enum {LpTips = 1, RTips= 2};
CTips(int iOptions); ~CTips();
int Init (int iSampFormat, int iSampFreq); void SetGain (double dGain); double GetGain ();
void NewSentence (float* pfF0, int iNumF0, int iF0SampFreq); int NewUnit (CSynth* pUnit); int Pending (); int NextPeriod (short** ppsSamples, int* piNumSamples); int SetBuffer ( double* pdSamples, int iNumSamples, int iCenter, double dDelay, double* pdLpcCoef);
// Waveform concatenation buffer
int SetWaveSeg ( double* pdSamples, int iNumSamples, double dGain ); int GetWaveSeg ( double** ppdSamples, int* piNumSamples, double* pdGain );
protected: int Prosody (CSynth* pUnit); int Synthesize (int iPeriodLen); int GetWindowedSignal (int whichBuffer, int periodLength, double** windowed, int* nWindowed); void HalfHanning (double* x, int xLen, double ampl, int whichHalf); static short ClipData (double x);
bool LpcInit (); void LpcSynth( double* pdData, int iNumData); void LpcFreeAll();
enum {WindowFirstHalf, WindowSecondHalf}; static const double m_iDefaultPeriod; static const double m_dMinF0;
int m_iSampFormat; int m_iSampFreq; double m_dGain; // Operation flags
bool m_fLptips; bool m_fRtips; // Compute prosody Variables
float* m_pfF0; int m_iNumF0; double m_dRunTime; double m_dF0SampFreq; double m_dF0TimeNext; double m_dF0TimeStep; double m_dF0Value; double m_dAcumF0; int m_iF0Idx; double m_dLastEpochTime; double m_dNewEpochTime; // Buffers for synthesis
struct CBuffer { double* m_pdSamples; int m_iNumSamples; int m_iCenter; double m_dDelay; } m_aBuffer[2]; // Lpc Synthesis
int m_iLpcOrder; double* m_pdFiltMem; double* m_pdInterpCoef; double* m_pdNewCoef; double* m_pdLastCoef;
// Holds current synthesis unit
CSynth* m_pUnit; short* m_psSynthSamples; int m_iNumSynthSamples;
static const int m_iHalfHanLen_c; double* m_adHalfHanning; };
#endif
|