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

📄 network.h

📁 视频会议源码
💻 H
字号:
///////////////////////////////////////////////////////// FileName:	network.h// Author:		b1gm0use// Project:		myvideo#ifndef _NETWORK_H_#define _NETWORK_H_#include <qevent.h>#include "common.h"class sockaddr_in;enum packet_type_t{	DATA,		// 内容为数据	SYN,		// 用于建立连接的数据包	HEARTBEAT,	// 心跳线数据包	GOODBYE		// 结束连接数据包};class packet_head_t{public:	int sequence_num;	unsigned char sub_sequence_num;	unsigned char opt_bits;};const int VIDEO_NET_CAP_EVENT = QEvent::User+200;const int AUDIO_NET_CAP_EVENT = QEvent::User+210;const int VIDEO_NET_SEND_EVENT = QEvent::User+220;const int AUDIO_NET_SEND_EVENT = QEvent::User+230;const int DEFAULT_CTRL_PORT = 6200;const int DEFAULT_VIDEO_PORT = 6210;const int DEFAULT_AUDIO_PORT = 6220;const int DEFAULT_MC_CTRL_PORT = 6300;const int DEFAULT_MC_VIDEO_PORT = 6310;const int DEFAULT_MC_AUDIO_PORT = 6320;const int DATA_OFFSET = 12; // in bytesconst int PACKET_LENGTH = 255;const int PACKET_HEAD_LENGTH = sizeof( packet_head_t );const int PACKET_DATA_LENGTH = PACKET_LENGTH - PACKET_HEAD_LENGTH;const int WELCOME_NUM = 3721;const int GOODBYE_NUM = 1273;const int HEARTBEAT_NUM = 56;const int HEARTBEAT_INTERVAL = 1000; // in ms;const int MAX_LOST_HEARTBEAT = 10;const int DEFAULT_TIMEOUT = 1000;   // in ms;const int DEFAULT_CONNECT_TIMES = 10;const char * const DEFAULT_IP = "127.0.0.1";const bool DEFAULT_USE_MULTICAST = false;const char * const DEFAULT_MC_ADDR = "224.0.0.1";const unsigned int USE_JPEG_BIT			= 0x01;	// 本数据包是否使用JPEGconst unsigned int USE_G723_BIT			= 0x02;	// 本数据包是否使用G723const unsigned int VIDEO_BGN_BIT		= 0x04;	// 本数据包是否是视频帧的起始包const unsigned int VIDEO_CON_BIT		= 0x08;	// 本数据包后面是否还有本帧的数据包const unsigned int VIDEO_END_BIT		= 0x10;	// 本数据包是否是本帧的最后一个数据包const unsigned int AUDIO_BGN_BIT		= 0x04;	// 本数据包是否是音频帧的起始包const unsigned int AUDIO_CON_BIT		= 0x08;	// 本数据包后面是否还有本帧的数据包const unsigned int AUDIO_END_BIT		= 0x10;	// 本数据包是否是本帧的最后一个数据包const unsigned int CTRL_SYN_BIT			= 0x20;	// 本数据包是否是SYN数据包const unsigned int CTRL_HEARTBEAT_BIT	= 0x40;	// 本数据包是否是HEARTBEAT数据包const unsigned int CTRL_GOODBYE_BIT		= 0x80;	// 本数据包是否是GOODBYE数据包#define TEST_USE_JPEG_BIT(var) ( var & USE_JPEG_BIT )#define TEST_USE_G723_BIT(var) ( var & USE_G723_BIT )#define TEST_VIDEO_BGN_BIT(var) ( var & VIDEO_BGN_BIT )#define TEST_VIDEO_CON_BIT(var) ( var & VIDEO_CON_BIT )#define TEST_VIDEO_END_BIT(var) ( var & VIDEO_END_BIT )#define TEST_AUDIO_BGN_BIT(var) ( var & AUDIO_BGN_BIT )#define TEST_AUDIO_CON_BIT(var) ( var & AUDIO_CON_BIT )#define TEST_AUDIO_END_BIT(var) ( var & AUDIO_END_BIT )#define TEST_CTRL_SYN_BIT(var) ( var & CTRL_SYN_BIT )#define TEST_CTRL_HEARTBEAT_BIT(var) ( var & CTRL_HEARTBEAT_BIT )#define TEST_CTRL_GOODBYE_BIT(var) ( var & CTRL_GOODBYE_BIT )#define SET_USE_JPEG_BIT(var) var |= USE_JPEG_BIT;#define SET_USE_G723_BIT(var) var |= USE_G723_BIT;#define SET_VIDEO_BGN_BIT(var) var |= VIDEO_BGN_BIT;#define SET_VIDEO_CON_BIT(var) var |= VIDEO_CON_BIT;#define SET_VIDEO_END_BIT(var) var |= VIDEO_END_BIT;#define SET_AUDIO_BGN_BIT(var) var |= AUDIO_BGN_BIT;#define SET_AUDIO_CON_BIT(var) var |= AUDIO_CON_BIT;#define SET_AUDIO_END_BIT(var) var |= AUDIO_END_BIT;#define SET_CTRL_SYN_BIT(var) var |= CTRL_SYN_BIT;#define SET_CTRL_HEARTBEAT_BIT(var) var |= CTRL_HEARTBEAT_BIT;#define SET_CTRL_GOODBYE_BIT(var) var |= CTRL_GOODBYE_BIT;#define CLR_USE_JPEG_BIT(var) var &= ~USE_JPEG_BIT;#define CLR_USE_G723_BIT(var) var &= ~USE_G723_BIT;#define CLR_VIDEO_BGN_BIT(var) var &= ~VIDEO_BGN_BIT;#define CLR_VIDEO_CON_BIT(var) var &= ~VIDEO_CON_BIT;#define CLR_VIDEO_END_BIT(var) var &= ~VIDEO_END_BIT;#define CLR_AUDIO_BGN_BIT(var) var &= ~AUDIO_BGN_BIT;#define CLR_AUDIO_CON_BIT(var) var &= ~AUDIO_CON_BIT;#define CLR_AUDIO_END_BIT(var) var &= ~AUDIO_END_BIT;#define CLR_CTRL_SYN_BIT(var) var &= ~CTRL_SYN_BIT;#define CLR_CTRL_HEARTBEAT_BIT(var) var &= ~CTRL_HEARTBEAT_BIT;#define CLR_CTRL_GOODBYE_BIT(var) var &= ~CTRL_GOODBYE_BIT;// 选项类型class option_t{public:	va_mode_t va_mode;	int factor;	int use_g723;	int expect_num;};// 网络模式enum network_mode_t{	STANDALONE,			//从摄像头读入,并显示,无网络模式	LISTEN,				//从摄像头读入,并显示,等待其它连入,传出到网络	CONNECT				//从网络读入,并显示};void send_data( int net_fd, sockaddr_in * addr_accept, BUFF * send_buff,		const BUFF * data, int size, int & packet_num, packet_type_t packet_type = DATA );int send_line( int net_fd, sockaddr_in * addr_accept, BUFF * send_buff,		const BUFF * data, int size, packet_head_t * packet_head );int recv_line( int net_fd, sockaddr_in * addr_accept, BUFF * recv_buff,		BUFF *& data, packet_head_t *& packet_head );#endif // _NETWORK_H_

⌨️ 快捷键说明

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