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

📄 audrec.h

📁 利用intel dsplib 库函数进行特定2FSK信号(需传导频)解调
💻 H
字号:
#if !defined(AFX_AUDREC_H__7E439646_4865_460A_B9D7_921F23BE8053__INCLUDED_)
#define AFX_AUDREC_H__7E439646_4865_460A_B9D7_921F23BE8053__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// AudRec.h : header file
//

#include "mmsystem.h"

typedef void (*CALLBACK_DATAWORK)(PBYTE pDateHead, UINT nBytes);

/////////////////////////////////////////////////////////////////////////////
// CAudRec window
// 录音类,
//	 在使用前先用Init初始化,指定录音格式和数据处理函数地址,及缓冲区大小
// 数据处理函数形式如下:
//   void FunctionName( PBYTE pData, UINT nBytes)
//        PBYTE      数据地址指针,BYTE*类型
//        nBytes	 数据长度,直接处理即可,缓冲区的释放等由类完成
//		  
/////////////////////////////////////////////////////////////////////////////

class CAudRec : public CWnd
{
// Construction
public:
	typedef enum _enum_status
	{
		ENUM_STATUS_INVALID,		// 无效状态
		ENUM_STATUS_READY,			// 准备就绪
		ENUM_STATUS_RECORDING,		// 正在录音
		ENUM_STATUS_STOPING,		// 正在停止
		ENUM_STATUS_NUM,
	} ENUM_STATUS;

	enum
	{
		TIMER_EVENT_STOPREC = 1,	//停止
		TIMER_EVENT_NUM,
	};

	CAudRec();
	virtual ~CAudRec();

// Attributes
public:
	

// Operations
public:
	BOOL Record();
	void Stop();

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAudRec)
	public:
	virtual BOOL PreTranslateMessage(MSG* pMsg);
	//}}AFX_VIRTUAL

// Implementation
public:
	UINT GetBuffSize();
	UINT GetWaveInCount();
	BOOL Init( WAVEFORMATEX sRecordFormat, 
				BOOL IsSaveFile = FALSE, 
				UINT nBuffSize = 2048, 
				UINT nDeviceID = WAVE_MAPPER,
				HWND hwndParent = NULL,
				LPRECT lpRect = NULL,
				CALLBACK_DATAWORK proc_CallBack_DataWork = NULL
			);
	inline ENUM_STATUS GetStatus() { return m_eStatus; }

	// Generated message map functions
protected:
	LRESULT OnMM_WIM_DATA ( WPARAM wParam, LPARAM lParam );
	//{{AFX_MSG(CAudRec)
	afx_msg void OnTimer(UINT nIDEvent);
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()

private:		
	void CreateWaveFile();
	UINT				m_nBuffSize;
	UINT				m_nBuffNum;
	UINT				m_nDataQueueNum;

	CHAR				**m_szAryInData;
	WAVEHDR				**m_pAryHdr;

	BOOL				m_bRecording;
	HWAVEIN				m_hRecord;
	HWND				m_hwndParent;
	UINT				m_nDeviceID;
	CRect				m_rcClient;
	BOOL				m_bSaveFile;
	WAVEFORMATEX		m_Format;
	ENUM_STATUS			m_eStatus;

	HMMIO				m_hWaveFile;
	MMCKINFO			m_MMCKInfoParent;
	MMCKINFO			m_MMCKInfoChild;


	CALLBACK_DATAWORK	m_funCallBackDataWork;
	
	void StopRec();
	void StopAndFreeAll();
	void FreeBuffer ();

	BOOL AllocateBuffer(UINT dwBufferSize);
	BOOL AddInputBufferToQueue( INT nIndex );

	void waveErrorMsg( MMRESULT result, LPCTSTR addstr );
	
	void SetRecordFormat(WAVEFORMATEX sFormat);
	BOOL SetRelateParaAfterGetWaveFormat();
	VOID SetDeviceID( UINT uDeviceID );
	
	//在此建立自己,以便获取消息
	BOOL Create( HWND hwndParent, LPRECT lpRect=NULL );
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_AUDREC_H__7E439646_4865_460A_B9D7_921F23BE8053__INCLUDED_)

⌨️ 快捷键说明

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