// stdafx.h : include file for standard system include files,
//  or project specific include files that are used frequently, but
//      are changed infrequently
//

#if !defined(AFX_STDAFX_H__D5182BE9_6A5B_4986_B617_F95B61230183__INCLUDED_)
#define AFX_STDAFX_H__D5182BE9_6A5B_4986_B617_F95B61230183__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


// Insert your headers here
#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers

#include <windows.h>
#include <math.h>

// TODO: reference additional headers your program requires here
#define EXTERN_DEFINE extern "C" __declspec(dllexport)

typedef char INT8;
typedef unsigned char UINT8;

typedef short INT16;
typedef unsigned short UINT16;

typedef int INT32;
typedef unsigned int UINT32;


typedef double DOUBLE;


typedef struct
{
	DOUBLE Re,Im;
} TCPoint;

#define MAX_FFT_LENGTH		256
#define MAX_BLOCK_SIZE		256
#define MAX_BLOCKS_COUNT	300
#define PI					3.1415926535897932384626433832795
#define MFCC_SIZE			20


typedef	struct
{
	DOUBLE	Coefficient[MAX_BLOCKS_COUNT][MFCC_SIZE];
	UINT16	Len;
	//DOUBLE Sample[MAX_BLOCKS_COUNT][MAX_BLOCK_SIZE];
	//DOUBLE AbsSpecter[MAX_BLOCKS_COUNT][MAX_BLOCK_SIZE];
}TMFCC;

typedef	struct
{
	DOUBLE w[MFCC_SIZE+1][MAX_BLOCK_SIZE+2];	//весовые окна
    UINT16 M[MFCC_SIZE+1];					//начальнаые частоты фильтров
    UINT16 N[MFCC_SIZE+1];					//длины фильтров

	

} TFiltersSet;

class CBlock
{
	public:
	DOUBLE Sample[MAX_BLOCK_SIZE];
    DOUBLE AbsSpecter[MAX_BLOCK_SIZE];
    DOUBLE CeipCoeff[MFCC_SIZE];
	UINT16 Size;

	public:
    void FFTransform(void);
    void GetCeipCoeffs(TFiltersSet* FiltersSet);
};



class CMainVector
{
	public:
	UINT16 Len;
	UINT16 BlocksSize;
	CBlock Block[MAX_BLOCKS_COUNT];

    TFiltersSet FiltersSet;

    void Init(INT16* Buffer,UINT16 BufferLen, UINT16 BlockSize, UINT16 BlockStep);
    void FFTransform(void);
    void GetCeipCoeffs(void);
};



EXTERN_DEFINE void GetMFCC(INT16* Buffer,UINT16 BufferLen, UINT16 BlockSize, UINT16 BlockStep, TMFCC* MFCC);


//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_STDAFX_H__D5182BE9_6A5B_4986_B617_F95B61230183__INCLUDED_)
Соседние файлы в папке MFCCExtract