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


////////////////////////////////////////////////////////////////////////// 
// class CWaveOut 
// 
// 功能:	语音播放的基类 
// 创建人:	陈文凯 (chwkai@gmail.com) 
// 创建日期:2005年5月19日 
// 修改人:	 
// 修改日期: 
// 版本 
 
#ifndef _WAVEOUT_H_ 
#define _WAVEOUT_H_ 
 
#include 		// 包含音频处理API 
#include "WaveFile.h" 
 
////////////////////////////////////////////////////////////////////////// 
// 负责音频输出 
class CWaveOut 
{ 
public: 
	CWaveOut(void); 
	~CWaveOut(void); 
 
protected: 
	////////////////////////////////////////////////////////////////////////// 
	// 打开输出设备,设置回调窗口,初始化参数 
	virtual BOOL Init( 
		WAVEFORMATEX fmt,	/*wave format信息*/ 
		DWORD hWnd			/*回调窗口*/ 
		); 
	 
	////////////////////////////////////////////////////////////////////////// 
	// 关闭输出设备 
	void CloseDev(); 
 
	////////////////////////////////////////////////////////////////////////// 
	// 回收资源,派生类中实现分配资源的释放 
	virtual void Dispose();	 
 
public: 
	////////////////////////////////////////////////////////////////////////// 
	// 修改当前状态为playing。派生类中实现第一个裸音频块的发送 
	virtual void Start(); 
 
	////////////////////////////////////////////////////////////////////////// 
	// 暂停播放,修改状态为paused 
	void Pause(); 
 
	////////////////////////////////////////////////////////////////////////// 
	// 恢复播放,修改状态为playing 
	void Resume();					 
 
	////////////////////////////////////////////////////////////////////////// 
	// 停止播放。派生类中实现WAVEHDR的Unprepare 
	virtual void Stop(); 
 
	////////////////////////////////////////////////////////////////////////// 
	// 处理WOM_DONE消息,继续播放下一个缓冲块 
	virtual LRESULT OnDone(DWORD dwParam) = 0; 
 
private: 
	////////////////////////////////////////////////////////////////////////// 
	// 是否存在可用的输出设备 
	BOOL IsDevAvailable() const; 
 
protected: 
	WAVEFORMATEX m_format;		// wave的格式 
	HWAVEOUT m_hWaveOut;		// 所打开的输出设备的句柄 
 
private: 
	DWORD m_hWnd;				// 保存回调窗口的句柄 
	BOOL m_bPaused;				// 当前状态是否暂停播放 
	BOOL m_bPlaying;			// 当前状态是否为正在播放 
 
}; 
#endif /*_WAVEOUT_H_*/