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_)