WaveIn.h
上传用户:goak128
上传日期:2013-07-17
资源大小:155k
文件大小:1k
- #pragma once
- #include <MMSystem.h> // 包含音频处理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; // 用于缓存的文件,当缓冲区填满时数据保存至缓存文件
- };