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_*/