// Audio.h: interface for the CAudio class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_AUDIO_H__4DD286A3_85E9_4492_A1A5_C3B2D860BD1A__INCLUDED_) #define AFX_AUDIO_H__4DD286A3_85E9_4492_A1A5_C3B2D860BD1A__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include #include #include #pragma comment(lib, "Winmm.lib") class CAudio { public: CAudio(); virtual ~CAudio(); int m_nBufferLength; LPBYTE m_lpInAudioData[2]; // 保持声音的连继 LPBYTE m_lpOutAudioData[2]; HWAVEIN m_hWaveIn; int m_nWaveInIndex; int m_nWaveOutIndex; HANDLE m_hEventWaveIn; // MM_WIM_DATA触发 HANDLE m_hStartRecord; // getRecordBuffer 返回后触发 LPBYTE getRecordBuffer(LPDWORD lpdwBytes); bool playBuffer(LPBYTE lpWaveBuffer, DWORD dwBytes); private: HANDLE m_hThreadCallBack; LPWAVEHDR m_lpInAudioHdr[2]; LPWAVEHDR m_lpOutAudioHdr[2]; HWAVEOUT m_hWaveOut; bool m_bIsWaveInUsed; bool m_bIsWaveOutUsed; GSM610WAVEFORMAT m_GSMWavefmt; bool InitializeWaveIn(); bool InitializeWaveOut(); static DWORD WINAPI waveInCallBack(LPVOID lparam); }; #endif // !defined(AFX_AUDIO_H__4DD286A3_85E9_4492_A1A5_C3B2D860BD1A__INCLUDED_)