亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? aviomgr.h

?? nettalk
?? H
字號:
//NetTalk
/*------------------------------------------------------------------------------*\
 =============================
   模塊名稱: AVIOMgr.h
 =============================
 
 [版權]
 
   2000-2002  115軟件工廠  版權所有
                                              
\*------------------------------------------------------------------------------*/
//視頻通訊的核心部分//

#ifndef _AVIOMGR_H_
#define _AVIOMGR_H_

#include "AudioRec.h"
#include "CodecMgr.h"
#include "VideoCapture.h"
#include "AudioPlay.h"
#include "UDPSocket.h"


//AVIO版本
#define VER_AVIO 102

//msg
//the LOWORD wParam specify the notify code
#define IOM_NOTIFY     WM_USER+50

//notify code
//the HIWORD of wParam specify the VER of AVIO
#define IOMN_CALL              0
#define IOMN_ACCEPT            1
#define IOMN_CONNECTED         2
//////////
#define IOMN_END               3//HIWORD of wParam identify the end code
#define E_TIMEOUT   1
#define E_USER      2
////////////////
#define IOMN_REFUSE            4 //HIWORD of wParam identify the refuse code

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

//the HIWORD of wParam specify the err code
#define IOMN_ERR               5      

//err code

#define IOME_STOP        0
#define IOME_SOCKET      1
#define IOME_AUDIO_IN    2
#define IOME_AUDIO_OUT   3
#define IOME_VIDEO_IN    4
#define IOME_VIDEO_OUT   5
#define IOME_AUDIO_CODEC 6
#define IOME_VIDEO_CODEC 7


#define IOMN_TXT                6//lParam point to the txt
#define IOMN_VQSET               7//Hiword :q
////////////////////////////////////////////
//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_FREE    0
#define STA_BUSY    1



//pack flag
#define FLAG_AUDIO 0x3131
#define FLAG_VIDEO 0x3132
#define FLAG_CMD   0x3133

//
#define SIZE_AUDIO_FRAME 960
#define SIZE_AUDIO_PACKED 60
//
//音頻數據包(包含音頻數據)
typedef struct
{
	short flag;
	BYTE session;
	BYTE  id;
	BYTE data[SIZE_AUDIO_PACKED];
}PACK_AUDIO;
//視頻數據包(不包含視頻數據)
typedef struct
{
	short flag;
	BYTE session;
	BYTE id;
	BYTE subid;
	BYTE key; //whether key frame
	unsigned int data_size_total;
	unsigned short data_size;
	
}PACK_VIDEO;

/////
#define CMD_CALL           1
#define CMD_REFUSE         2
#define CMD_ACCEPT	       3
#define CMD_END            4


#define CMD_TXT            20

//丟包率
#define CMD_DROPRATE      21
//命令數據包(文本信息也用該數據包)
#define SIZE_TXT 1024

typedef struct
{
	short flag;
	BYTE session;
	BYTE id;
	
	BYTE cmd;
	BYTE type;//0:始發 1:反饋
	BYTE ext;
	unsigned short data_size_extra;
}PACK_CMD;

typedef struct
{
	bool bVideoIn;
	bool bVideoOut;
	bool bAudioIn;
	bool bAudioOut;
	bool bVideoCodec;
	bool bAudioCodec;
}DEVICE_SUPPORT;
//////////////////
struct CMD_ITEM
{
	char resend;
	int ID;
	char* pbuf;
	UINT len;
	sockaddr_in addr;
	CMD_ITEM* pNext;
	CMD_ITEM* pPrev;
};
//Cmd queue implementation
class CCmdQueue
{
public:
	CCmdQueue()
	{
		InitializeCriticalSection(&m_cs);
		pHead=0;
		count=0;
	}
	~CCmdQueue()
	{
		CMD_ITEM* p=pHead,*temp;
		while(p)
		{
			temp=p->pNext;
			Remove(p);
			p=temp;
		}
		DeleteCriticalSection(&m_cs);
	}
	void Add(int ID,char* buf,UINT len,sockaddr_in &addr)
	{
		EnterCriticalSection(&m_cs);
		CMD_ITEM* p=new CMD_ITEM;
		p->pNext=pHead;
		if(pHead)
			pHead->pPrev=p;
		p->resend=1;
		p->pPrev=0;
		p->ID=ID;
		p->pbuf=new char[len];
		p->len=len;
		p->addr=addr;
		CopyMemory(p->pbuf,buf,len);
		pHead=p;
		count++;
		LeaveCriticalSection(&m_cs);
	}
	char* GetBuf(int ID,UINT& len,char& resend,sockaddr_in& addr)
	{
		
		CMD_ITEM* p=pHead;
		while(p)
		{
			if(p->ID==ID)
			{
				len=p->len;
				addr=p->addr;
				resend=p->resend++;
				return p->pbuf;
			}
			p=p->pNext;
		}
		return 0;
	}
	bool Remove(int ID)
	{
		EnterCriticalSection(&m_cs);
		bool ret=false;
		CMD_ITEM* p=pHead,*temp;
		
		while(p)
		{
			temp=p->pNext;
			if(p->ID==ID)
			{
			
				Remove(p);
				ret=true;
				break;
				
			}
			p=temp;			
		}
		LeaveCriticalSection(&m_cs);
		return ret;
	}
	bool Remove(CMD_ITEM* p)
	{
		if(p)
		{
			if(p==pHead)
				pHead=p->pNext;
			if(p->pbuf)
				delete []p->pbuf;
			if(p->pPrev)
				p->pPrev->pNext=p->pNext;
			if(p->pNext)
				p->pNext->pPrev=p->pPrev;
			delete p;
			count--;
			return true;
		}
		else
		{
			return false;
		}
	}
	int count;
private:
	
	CMD_ITEM* pHead;
protected:
	CRITICAL_SECTION m_cs;
};

//

class CAVIOMgr
{
public:
	BOOL EnableBandAdjust(BOOL bEnable);
	BOOL Enable(BOOL bEnable);
	sockaddr_in& GetCurrentAddr();
	BOOL SendTxt(char* ip,unsigned short port,char* txt);
	
	UINT GetFps();
	CAVIOMgr();
	virtual  ~CAVIOMgr();
	
	BOOL Init(UINT nPort);
	void Destroy();

	BOOL Call(char* ip,unsigned short port);
	BOOL Accept();
	void OnAccept();
	BOOL Refuse();
	BOOL EndTalk();

	UINT GetFrameCount();
	UINT GetDataRcv();
	UINT GetDataSend();

	BOOL EnablePreview(BOOL b);
	
	sockaddr_in GetRemoteAddr();
	int GetStatus();
	void GetDeviceSupport(DEVICE_SUPPORT& ds);

	BITMAPINFO* GetBitampInfo();
	char* GetRemoteAudio(UINT& len);
	char* GetRemoteVideo(UINT& len);
	char* GetLocalAudio(UINT&len);
	char* GetLocalVideo(UINT& len);
	
	
	void SetRemoteAudioRcvWnd(HWND hwnd);
	void SetRemoteVideoRcvWnd(HWND hwnd);
	void SetLocalAudioRcvWnd(HWND hwnd);
	void SetLocalVideoRcvWnd(HWND hwnd);
	void SetMainWnd(HWND hwnd);
	
	void VideoSend(BOOL b);
	void SetVideoQuality(UINT q);

	friend class CCodecMgr;

protected:
	BOOL InitCap();
	BOOL DestroyCap();

	void DestroyVideoCodec();
	BOOL InitVideoCodec();

	void DestroyAudioCodec();
	BOOL InitAudioCodec();
	
	BOOL DestroyAudioPlay();
	BOOL InitAudioPlay();

	BOOL DestroyAudioRec();
	BOOL InitAudioRec();
	
	BOOL DestroySocket();
	BOOL InitSocket(UINT nPort);

	void OnEncodeVideoData(char* pv,int len);
	void OnEncodeAudioData(char* pa,int len);
	void OnDecodeVideoData(PACK_VIDEO* ppv,int len);
	void OnDecodeAudioData(PACK_AUDIO* ppa,int len);
	void OnCommand(PACK_CMD* ppc,int len);

	void SetDst(char* ip,unsigned short port);
	
	static DWORD WINAPI AudioInThreadProc(LPVOID lpParameter);
	static DWORD WINAPI AudioOutThreadProc(LPVOID lpParameter);
	static DWORD WINAPI SockThreadProc(LPVOID lpParameter);
	static void CALLBACK CmdTimeOutProc(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime);
	static void CALLBACK DropRateCounter(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime);
	static LRESULT CALLBACK VideoStreamCallbackProc(HWND hWnd, LPVIDEOHDR lpVHdr);
	
protected:
	BOOL m_bEnableBandAdjust;
	BOOL m_bEnable;
	CWndX m_MsgRcvWnd;
	BYTE m_session;

	
	BYTE m_idCmd;
	BYTE m_idVideo;
	BOOL SendCmd(PACK_CMD* pCmd,UINT nLen,sockaddr_in &addr,BOOL bFlag);

	CCmdQueue m_CmdQueue;
	UINT m_nFrameCount;
	UINT m_nLastFrameCount;
	UINT m_nDropRate;
	UINT m_nFps;
	UINT m_uDataRcv;
	UINT m_uDataSend;
	UINT m_nCurVid;
	UINT m_nLastVid;

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

	BOOL m_bVideoSend;
	

	
	PACK_AUDIO m_AudioPack;
	char m_VideoPack[MAX_UDP_SIZE];

	char m_AudioLocal[SIZE_AUDIO_FRAME];
	char m_VideoRemote[76032];
	char m_AudioRemote[SIZE_AUDIO_FRAME];
	char* m_VideoLocal;

	
	int m_iStatus;	
	DEVICE_SUPPORT m_ds;

	HWND m_hwndMainWnd;
	HWND m_hwndLocalVideoRcv;
	HWND m_hwndLocalAudioRcv;
	HWND m_hwndRemoteVideoRcv;
	HWND m_hwndRemoteAudioRcv;
	
	

	int m_iAudioBuf;
	
	CAudioPlay m_AudioPlay;
	CAudioRec m_AudioRec;
	
	CCodecMgr m_CodecMgr;
	CVideoCapture m_ViCap;
	CUDPSocket m_Socket;


	sockaddr_in m_sockaddr;
	sockaddr_in m_dst;
	
	
	CAPSTATUS m_CapStauts;

	HANDLE m_hSockThread;
	DWORD m_dwSockThreadId;
	
};


#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
狠狠色丁香久久婷婷综合_中| 在线观看视频欧美| 秋霞电影网一区二区| 婷婷开心久久网| 香蕉影视欧美成人| 亚洲成人午夜影院| 亚洲大片一区二区三区| 97精品超碰一区二区三区| 99久久er热在这里只有精品66| 成人黄色免费短视频| 岛国精品一区二区| av电影在线观看不卡 | 欧洲一区二区三区免费视频| 在线看日韩精品电影| 欧美另类变人与禽xxxxx| 欧美日韩国产片| 日韩一区二区电影在线| 精品国产乱码久久久久久久久| 国产亚洲福利社区一区| 国产精品传媒视频| 亚洲一区二区精品3399| 日本sm残虐另类| 国产又黄又大久久| caoporn国产精品| 欧美色综合久久| 日韩欧美国产一区二区在线播放 | 亚洲一二三专区| 午夜精品久久久久久久99水蜜桃| 日韩精品成人一区二区三区| 美国十次综合导航| 国产.欧美.日韩| 94-欧美-setu| 91精品婷婷国产综合久久性色| 欧美一级在线视频| 中文字幕不卡的av| 一区二区理论电影在线观看| 日本美女一区二区三区| 国产91色综合久久免费分享| 91在线精品一区二区| 欧美日韩精品欧美日韩精品一综合| 91精品国产免费| 国产偷国产偷亚洲高清人白洁 | 成人永久免费视频| 91精品1区2区| 精品动漫一区二区三区在线观看| 国产精品久久免费看| 日韩高清中文字幕一区| 国产99久久久国产精品潘金网站| 欧美亚洲动漫精品| 精品伦理精品一区| 亚洲免费av网站| 日韩高清不卡一区二区三区| 国产一区二区三区日韩| 日本国产一区二区| 久久婷婷国产综合国色天香| 综合自拍亚洲综合图不卡区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 三级欧美韩日大片在线看| 成熟亚洲日本毛茸茸凸凹| 亚洲成人免费电影| 麻豆精品视频在线观看免费| kk眼镜猥琐国模调教系列一区二区 | 日韩综合在线视频| 国产成人免费av在线| 欧美片网站yy| 亚洲色图制服丝袜| 国产在线播放一区三区四| 欧洲亚洲国产日韩| 国产精品久久久久7777按摩| 捆绑变态av一区二区三区| 欧美午夜寂寞影院| 国产精品久久久久久一区二区三区 | 亚洲v日本v欧美v久久精品| 波多野结衣中文一区| 日韩一区二区三区免费看| 一区二区成人在线| 99精品欧美一区| 欧美激情自拍偷拍| 激情综合一区二区三区| 欧美性受极品xxxx喷水| 亚洲三级在线看| 国产精品99久久久久久有的能看 | 国产精品久久久久久久午夜片| 午夜成人在线视频| 91久久精品午夜一区二区| 国产精品拍天天在线| 国产大陆亚洲精品国产| 538在线一区二区精品国产| 亚洲一区在线视频| 成人av资源站| 国产精品国产三级国产aⅴ中文 | 99久久99久久精品免费观看| 26uuu亚洲| 蜜臀久久99精品久久久久宅男| 欧美亚洲国产一区在线观看网站| 亚洲欧美中日韩| 国产98色在线|日韩| 国产色产综合色产在线视频| 蜜臀av国产精品久久久久| 在线电影一区二区三区| 亚洲一区av在线| 91国偷自产一区二区三区成为亚洲经典| 中文字幕欧美日本乱码一线二线| 韩国女主播成人在线| 欧美高清dvd| 日本强好片久久久久久aaa| 色综合久久88色综合天天| 亚洲人xxxx| 在线国产电影不卡| 亚洲最大成人网4388xx| 欧美在线播放高清精品| 一区二区三国产精华液| 欧美在线|欧美| 日韩电影免费一区| 欧美电影一区二区三区| 蜜桃久久久久久| 免费精品99久久国产综合精品| 日韩欧美成人激情| 国产精品夜夜嗨| 国产欧美精品一区二区三区四区 | 亚洲精品成人在线| 91豆麻精品91久久久久久| 中文字幕永久在线不卡| 成人精品免费视频| 国产精品国产自产拍在线| 在线观看日韩精品| 日韩成人免费看| 亚洲精品一区二区三区影院| 成人在线视频一区| 亚洲精品免费在线观看| 欧美喷水一区二区| 狠狠网亚洲精品| 最新国产精品久久精品| 色狠狠av一区二区三区| 青青草国产成人99久久| 久久久久久99久久久精品网站| 成人精品视频一区二区三区尤物| 一区二区三区欧美在线观看| 欧美一区二区三区成人| 国产成人亚洲精品狼色在线 | 99热在这里有精品免费| 亚洲一区二区在线视频| 久久综合一区二区| 91欧美一区二区| 天堂精品中文字幕在线| 亚洲精品在线观看网站| 成人免费视频一区| 亚洲一区二区三区在线看| 日韩免费电影一区| av一区二区久久| 日韩不卡手机在线v区| 欧美韩日一区二区三区| 欧美日韩国产综合久久| 国产精品123| 亚洲18色成人| 国产精品的网站| 欧美一级片在线观看| 成人av网站在线观看免费| 亚洲h精品动漫在线观看| 中文字幕国产一区| 欧美一区二区女人| 99re免费视频精品全部| 麻豆视频观看网址久久| 亚洲欧美一区二区三区国产精品 | 成人app网站| 美女任你摸久久| 一区二区三区精品视频| 久久人人爽人人爽| 在线观看av一区二区| 国产很黄免费观看久久| 首页国产欧美日韩丝袜| 国产精品看片你懂得| 欧美电影免费观看完整版| 日本乱人伦aⅴ精品| 国产精品自拍网站| 婷婷开心激情综合| 亚洲精品国产无天堂网2021 | 色综合久久88色综合天天6| 国产原创一区二区| 日韩高清欧美激情| 夜夜爽夜夜爽精品视频| 国产精品乱码一区二区三区软件 | 成人性视频免费网站| 91超碰这里只有精品国产| 成人午夜在线免费| 久久av老司机精品网站导航| 一区二区三区国产精品| 精品国产一区二区三区久久影院 | av电影在线观看一区| 国内精品国产成人| 琪琪久久久久日韩精品| 亚洲一区二区在线播放相泽| 亚洲视频一二三| 国产精品女同互慰在线看| 久久精品一区四区| 久久久久久久久久久电影| 精品国产一区二区三区不卡| 欧美一卡二卡在线| 日韩免费看的电影| 欧美tickling网站挠脚心|