?? network.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 + -