⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wavein.h

📁 音频通信的一个例子
💻 H
字号:
/*------------------------------------------------------------------------------*\
 [模块名称]
	CWaveIn

 [文件名称]
	WaveIn.h

 [相关文件]
	WaveIn.cpp

 [目的]
 
     方便音频采集  
                                            
\*------------------------------------------------------------------------------*/

#ifndef _WAVEIN_H_
#define _WAVEIN_H_
#define WISA_POOR	8000
#define WISA_LOW	11025
#define WISA_NORMAL	22050
#define WISA_HIGH	44100

#define NUM_BUF 10
#define SIZE_AUDIO_FRAME 960
#define SIZE_AUDIO_PACKED 60
#include <mmsystem.h>

class CWaveIn
{
public:
	//线程处理
	static DWORD WINAPI AudioInThreadProc(LPVOID lpParameter);

public:
	//获取数据
	virtual void GetData(char *pBuffer,int iLen);

	//启动录音
	BOOL StartRec();
	//停止录音
	BOOL StopRec();

	//获取实例
	inline DWORD GetInstance();
	//获取采样位数
	inline WORD GetBit();
	//获取采样速率
	inline DWORD GetSample();
	//获取频道数
	inline WORD GetChannel();

	//设置采样位数
	inline void SetBit(WORD wBit);
	//设置采样速率
	inline void SetSample(DWORD dwSample);
	//设置采样速率
	inline void SetChannel(WORD wChannel);

	//获取错误信息
	inline MMRESULT GetLastMMError();
	CString GetLastErrorString();

	//构造函数
	CWaveIn();
	//析构函数
	virtual ~CWaveIn();	

protected:
	//打开设备
	BOOL OpenDev();
	//关闭设备
	BOOL CloseDev();

	//停止线程
	BOOL StopThread();
	//启动线程
	BOOL StartThread();

	//准备缓存
	BOOL PerPareBuffer();
	//释放缓存
	BOOL FreeBuffer();

	//开始录音
	BOOL OpenRecord();
	//结束录音
	BOOL CloseRecord();

protected:
	//用户实例数据
	static DWORD s_dwInstance;

protected:
	//频道数
	WORD m_wChannel;
	//采样速率
	DWORD m_dwSample;
	//采样位数
	WORD m_wBit;

protected:
	//音频输入设备句柄
	HWAVEIN m_hIn;
	//函数调用返回信息
	MMRESULT m_mmr;
	//回调函数指针
	DWORD m_dwAudioInId;
	//线程句柄
	HANDLE m_hAudioIn;
	//WAVEHDR结构缓存指针
	WAVEHDR* m_pHdr;

	//线程启动标志
	BOOL m_bThreadStart;
	//设备打开标记
	BOOL m_bDevOpen;
	//内存分配标记
	BOOL m_bAllocBuffer;
	//录音开始标记
	BOOL m_bRecord;
};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -