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

📄 audioiomsgr.h

📁 一个VC实现的,用G.729a实现的语言对讲的例子
💻 H
字号:
// AudioIOMsgr.h: interface for the CAudioIOMsgr class.
//
//////////////////////////////////////////////////////////////////////

#define R_TIMEOUT    1
#define R_USER       2
#define R_BUSY       3
#define IOMN_ERR     4 

//data handle msg
//the lParam point to the AVIO object
//Use
//GetRemoteAudio
//GetRemoteVideo
//GetLocalAudio
//GetLocalVideo
//to Handle the data ,and proccess this as you like(paint or play)
//Warning:you should return these messages quickly,as these msg is sent by SendMessage
////the wParam identify the data type,0 local,or remote
#define IOM_AUDIO       WM_USER+51
#define IOM_VIDEO       WM_USER+52


///status
#define STA_TALK    1
#define STA_FREE    2
#define STA_WAIT    3
#define STA_WAIT_USER 4

//pack flag
#define FLAG_AUDIO 0x3131
#define FLAG_CMD   0x3133
//
#define SIZE_AUDIO_FRAME 960
#define SIZE_AUDIO_PACKED 60
//
//
//音频数据包(包含音频数据)
typedef struct
{
	short flag;
	BYTE  id;
	BYTE data[SIZE_AUDIO_PACKED];
}PACK_AUDIO;

#define CMD_ACCEPT	       1
#define CMD_REFUSE    	   2			
#define CMD_END            3
#define CMD_AUDIO          4

//命令数据包
typedef struct
{
	short flag;
	BYTE id;
	BYTE cmd;
	BYTE ex;
	unsigned short data_size_extra;
}PACK_CMD;

typedef struct
{
	bool bAudioIn;
	bool bAudioOut;
	bool bAudioCodec;
}DEVICE_SUPPORT;


#include "AudioPlay.h"
#include "AudioRec.h"
#include "AudioCodec.h"
//#include "MyTalkDlg.h"

#if !defined(AFX_AUDIOIOMSGR_H__662C2583_5E44_479B_92C3_349F25A11FCB__INCLUDED_)
#define AFX_AUDIOIOMSGR_H__662C2583_5E44_479B_92C3_349F25A11FCB__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

//class CtsBuffer;
class CAudioPlay;
class CAudioRec;
class CAudioCodec;
class CRemoteTalkDlg;
class CAudioIOMsgr  
{
public:
	void SendError(int Error);
	void EndTalk();
	BOOL InitAudioControl();
	void OnEncodeAudioData(char *pa, int len);
	void OnDecodeAudioData(PACK_AUDIO *ppa, int len);
	void ServerReceCommand(PACK_CMD *ppc, int len);
	void ClientReceCommand(PACK_CMD *ppc, int len);
	void DestroyAudioCodec();
	BOOL InitAudioCodec();
	void Destroy();
	BOOL Init();
	CAudioIOMsgr(CRemoteTalkDlg* pMain = NULL);
	virtual ~CAudioIOMsgr();

	CRemoteTalkDlg* pMainDlg;

	DEVICE_SUPPORT m_ds;

	HANDLE m_hBuffer;
	DWORD  m_dwBuffer;

	HANDLE m_hAudioOut;
	HANDLE m_hAudioIn;
	DWORD m_dwAudioOutId;
	DWORD m_dwAudioInId;

	int m_iAudioBuf;
	int m_iStatus;

	BOOL DestroyAudioRec();
	BOOL InitAudioRec();

	BOOL DestroyAudioPlay();
	BOOL InitAudioPlay();
protected:
	static DWORD WINAPI AudioInThreadProc(LPVOID lpParameter);
	static DWORD WINAPI AudioOutThreadProc(LPVOID lpParameter);

	static DWORD WINAPI SockSendThreadProc(LPVOID lpParameter);

protected:
	CAudioPlay m_AudioPlay;
	CAudioRec m_AudioRec;
	CAudioCodec m_CodecMgr;
//	CtsBuffer*  m_pBuffer;

	char* m_paR;
	char* m_paL;

	UINT m_nFrameCount;
	UINT m_uDataRcv;
	UINT m_uDataSend;

	PACK_AUDIO* m_ppaL;

//	HWND m_hwndLocalAudioRcv;
//	HWND m_hwndRemoteAudioRcv;

	sockaddr_in m_sockaddr;
	sockaddr_in m_dst;
};

#endif // !defined(AFX_AUDIOIOMSGR_H__662C2583_5E44_479B_92C3_349F25A11FCB__INCLUDED_)

⌨️ 快捷键说明

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