waveio.h

来自「这是G.723和G.729的音频编解码的源代码」· C头文件 代码 · 共 91 行

H
91
字号
//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 + =
减小字号Ctrl + -
显示快捷键?