📄 waveio.h
字号:
//filename: Waveio.h
#ifndef __CWaveIO_h__
#define __CWaveIO_h__
//how many wave in and wave out buffer and there have
#define WAVE_IN_BUFFER_NUM 384
#define WAVE_OUT_BUFFER_NUM 24
#include <mmsystem.h>
UINT WaveThread( LPVOID pParam);
typedef int (WaveCallBack)(BYTE* pbyContent,int nLength,DWORD dwUserData);
typedef WaveCallBack * PWaveCallBack;
//class CWave is base class of CWaveIn and CWaveOut
class CWave
{
public:
UINT m_uDeviceID;
DWORD m_dwUserData;
HANDLE m_hWaveEvent;
HANDLE m_hRequestQuit;
HANDLE m_hIndicateQuit;
CWinThread* m_pWaveThread;
PWaveCallBack m_pWaveCallBack;
WAVEFORMATEX m_WaveFormat;
WAVEHDR * m_WaveHdr;
int m_nBufferCount;
int m_nBufferSize;
char * * m_pBuffer;
BOOL * m_bUsingBuffer;
BOOL m_bIsComplete;//object of this class is complete?
public:
//unit of nSampleRate is HZ
//the possible value are 8000, 11025, 22050, or 44100
//the possible value of nSampleBitsLen are 8 or 16
CWave(PWaveCallBack pWaveCallBack,
int nBufferSize,
int nBufferNum,
int nSampleRate,
int nSampleBitsLen);
virtual ~CWave();
virtual BOOL Begin(DWORD dwUserData)=0;
virtual void End(void)=0;
//protected:
void WaveThreadFunc(void);
void ExitThread(void);
virtual void HandleWaveEvent(void)=0;
};
class CWaveIn: public CWave
{
public:
HWAVEIN m_hWaveIn;
CWaveIn(PWaveCallBack pWaveCallBack=NULL,
int nBufferSize=480,
int nSampleRate=8000,
int nSampleBitsLen=16);
~CWaveIn(void);
BOOL Begin(DWORD dwUserData=0);
void End(void);
void HandleWaveEvent(void);
void CloseWaveIn(void);
};
class CWaveOut: public CWave
{
public:
HWAVEOUT m_hWaveOut;
CWaveOut(PWaveCallBack pWaveCallBack=NULL,
int nBufferSize=480,
int nSampleRate=8000,
int nSampleBitsLen=16);
~CWaveOut(void);
BOOL Begin(DWORD dwUserData=0);
void End(void);
void HandleWaveEvent(void);
void CloseWaveOut(void);
};
#endif//__CWaveIO_h__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -