www.pudn.com > hmmPlatform.rar > WaveIn.h
#pragma once #include// 包含音频处理API #include "WaveFile.h" ////////////////////////////////////////////////////////////////////////// // 负责音频输入 class CWaveIn { public: CWaveIn(WAVEFORMATEX fmt); CWaveIn( WORD wChannels /*声道数*/, DWORD dwSamplesPerSec /*采样频率*/, WORD wBitsPerSample /*位数*/, WORD wFormatTag = WAVE_FORMAT_PCM /*Wave格式*/ ); ~CWaveIn(void); public: BOOL Open(); // 打开输入设备 void Start(); // 开始录音 void Pause(); // 暂停录音 void Stop(); // 停止录音 void Close(); // 关闭输入设备 void SaveTo(LPCTSTR lpszFileName); // 录音数据保存到wav文件 BOOL IsDevAvailable() const; // 返回是否有可用的输入设备 // 消息处理函数 private: void OnData(); void OnClose(); void OnOpen(); private: WAVEFORMATEX m_format; // wav的格式 HWAVEIN m_hWaveIn; // 所打开的输入设备的句柄 BOOL m_bOpen; // 输入设备是否打开 BOOL m_bPaused; // 当前状态是否暂停录音 BOOL m_bStoped; // 当前状态是否停止录音 BOOL m_bStarted; // 当前状态是否为正在录音 CString m_strLastErrText; // 最后的错误信息 UINT m_nLastErr; // 最后的错误代码 WAVEHDR m_waveHdr; // 缓冲区 UINT m_nBufferSize; // 缓冲区大小,以Sample Frame为单位 DWORD m_dwSize; // 已经输入的数据大小,以Sample Frame为单位,不包括正在缓存的数据 CFile m_bufferFile; // 用于缓存的文件,当缓冲区填满时数据保存至缓存文件 };