www.pudn.com > IP_phone.rar > WaveIn.h
/**********************************************************/ /*类名:CWaveIn */ /*简述:封装的音频采集类 */ /**********************************************************/ // WaveIn.h: interface for the CWaveIn class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_WAVEIN_H__D485FF82_F8EF_40D6_8019_F468F0FE8A50__INCLUDED_) #define AFX_WAVEIN_H__D485FF82_F8EF_40D6_8019_F468F0FE8A50__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include#include #include "SendSocket.h" #define WISA_POOR 8000 #define WISA_LOW 11025 #define WISA_NORMAL 22050 #define WISA_HIGH 44100 #define SIZE_AUDIO_FRAME 960//音频块大小 #define SIZE_AUDIO_PACKED 60 class CWaveIn { //////////////////////////////////////////////////// //成员函数 public: //音频初始化 BOOL Ini(); BOOL Release(); static DWORD WINAPI AudioInThreadProc(LPVOID lpParameter); //错误处理 MMRESULT GetLastMMError(); CString GetLastErrorString(); //参数设定 inline void SetBit(WORD wBit); inline void SetSample(DWORD dwSample); inline void SetChannel(WORD wChannel); inline void SetBuf_Number(int buf_number); //参数查询 inline WORD GetBit(); inline DWORD GetSample(); inline WORD GetChannel(); inline int GetBuf_Number(); inline DWORD GetInstance(); //转接口 virtual void GetData(char *pBuffer,int iLen); void EnableSend(BOOL bSend); CWaveIn(CSendSocket *temp_socket,CNC_ClientDlg *temp); virtual ~CWaveIn(); protected: //线程处理 BOOL StopThread(); BOOL StartThread(); //设备处理 BOOL OpenDev(); BOOL CloseDev(); //缓冲区处理 BOOL PerPareBuffer(); BOOL FreeBuffer(); //采集控制 BOOL OpenRecord(); BOOL CloseRecord(); ////////////////////////////////////////////////////////// //成员变量 protected: CNC_ClientDlg *m_dlg; 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 int m_buf_number;//缓冲队列大小 static DWORD s_dwInstance; HWAVEIN m_hIn; MMRESULT m_mmr; DWORD m_dwAudioInId; HANDLE m_hAudioIn;//线程句柄 WAVEHDR* m_pHdr; WAVEINCAPS m_WaveInDevCaps; //信号量 BOOL m_bThreadStart; BOOL m_bDevOpen; BOOL m_bAllocBuffer; BOOL m_bRecord; BOOL m_bSend; CCriticalSection m_soLock;//临界区 char m_cBufOut[60]; CSendSocket *send_socket; SHORT InputBuffer[1024]; }; #endif // !defined(AFX_WAVEIN_H__D485FF82_F8EF_40D6_8019_F468F0FE8A50__INCLUDED_)