www.pudn.com > IP_phone.rar > WaveOut.h


/**********************************************************/ 
/*类名:CWaveIn                                           */ 
/*简述:封装的音频播放类                                  */ 
/**********************************************************/ 
// WaveOut.h: interface for the CWaveOut class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_WAVEOUT_H__98A8BBC9_96F5_44F0_9C19_FA70BC27CBF8__INCLUDED_) 
#define AFX_WAVEOUT_H__98A8BBC9_96F5_44F0_9C19_FA70BC27CBF8__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
#include  
#include  
 
#define PLAY_DELAY 10 //播放延时 
 
class CWaveOut   
{ 
//////////////////////////////////////////////////// 
//成员函数 
public: 
	//初始化 
	BOOL Ini(); 
	BOOL Release(); 
 
	static DWORD WINAPI AudioOutThreadProc(LPVOID lpParameter); 
 
	//错误处理 
	MMRESULT GetLastMMError(); 
	CString GetLastErrorString(); 
 
	//参数设定 
	inline void SetBit(WORD wBit); 
	inline void SetSample(DWORD dwSample); 
	inline void SetChannel(WORD wChannel); 
 
	//参数查询 
	inline WORD GetBit(); 
	inline DWORD GetSample(); 
	inline WORD GetChannel(); 
	inline DWORD GetInstance(); 
     
	//缓冲区处理 
	inline int GetBufferNum(); 
	inline void BufferSub(); 
	inline void BufferAdd(); 
     
	//转接口 
	BOOL SetFormatByFile(CString file); 
	BOOL Play(char* buf,UINT uSize); 
	 
	CWaveOut(); 
	virtual ~CWaveOut(); 
protected: 
	//线程处理 
	BOOL StopThread(); 
	BOOL StartThread(); 
	//设备处理 
	BOOL OpenDev(); 
	BOOL CloseDev(); 
 
////////////////////////////////////////////////////////// 
//成员变量 
protected: 
	WORD m_wChannel;//声道数 1/2 
	DWORD m_dwSample;//采样频率 8.0 kHz/11.025 kHz/22.05 kHz/44.1 kHz 
	WORD m_wBit;//存储位数 8/16 bit 
	static DWORD s_dwInstance; 
 
	MMRESULT m_mmr; 
	HWAVEOUT m_hOut; 
	HANDLE m_hAudioOut; 
	DWORD m_dwAudioOutId; 
 
	int m_iBufferNum; 
	CCriticalSection m_csLock; 
 
	BOOL m_bThreadStart; 
	BOOL m_bDevOpen; 
	friend DWORD WINAPI AudioOutThreadProc(LPVOID lpParameter); 
}; 
 
#endif // !defined(AFX_WAVEOUT_H__98A8BBC9_96F5_44F0_9C19_FA70BC27CBF8__INCLUDED_)