⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 waveio.h

📁 这是G.723和G.729的音频编解码的源代码
💻 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 + -