📄 stream_server.h
字号:
/***
** stream.h
***/
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <sys/ipc.h>
#include <netdb.h>
#include <sys/msg.h>
#include <sys/shm.h>
#include <pthread.h>
#include <signal.h>
#include <unistd.h>
#include <sys/time.h>
#define DEV_LEVEL0(fmt,args...) {printf("[%s,%s,%d]"fmt,__FILE__,__FUNCTION__,__LINE__,## args);fflush(stdout);}
#define DEV_LEVEL1(fmt, args...) {printf(fmt,## args);fflush(stdout);}
#define DEV_LEVEL2(fmt, args...) {}
int QUIT_SDVR_MAIN;
#define AUTH_LOOP//Enable Authencication Loop
//#define SERVER_THREAD//Listen Socket Thread
//#define CONTROL_THREAD//Video Display Control Thread
#define SERVER_PORT 40001
#define FTP_PORT 40005
#define PTZ_PORT 40006
#define LISTENQ 100//MAX Listen Queue Size
#define MAX_STREAM_SLICE 1400//MAX Slice Size
#define MAX_DATA 100
#define CH_ON 1
#define CH_OFF 0
#define MAX_CH 4
#define MAXCMD 40
#define MAX_LOG_SIZE 16
#define SUPER_USER 0
#define NORMAL_USER 1
#define SUPER_GROUP "root"
#define NORMAL_GROUP "users"
//#define MAX_CMD 100
#if 0 /*2004-09-30 frame_number ,frame_gop : short=>long*/
typedef struct strdata {
long tv_sec; /* seconds */
long tv_usec; /* microseconds */
unsigned short frame_id;
unsigned short frame_number;
unsigned short frame_size;
unsigned short frame_type;
unsigned short frame_gop;
unsigned short frame_gop_num;
unsigned short frame_crc;
unsigned short frame_nm;
unsigned short dummy0;
unsigned short dummy1;
} STRDATA ;
typedef struct strhdr {
unsigned char start_code[6];
unsigned short frame_num;
unsigned short frame_size;
unsigned short slice_num;
unsigned short slice_size;
unsigned short frame_id;
unsigned short frame_gop;
unsigned short frame_gop_num;
unsigned short frame_type;
unsigned char frame_data[MAX_STREAM_SLICE];
unsigned char end_code[6];
} STRHDR;
#else
typedef struct strdata {
long tv_sec; /* seconds */
long tv_usec; /* microseconds */
unsigned short frame_id;
unsigned long frame_number;
unsigned short frame_size;
unsigned short frame_type;
unsigned long frame_gop;
unsigned short frame_gop_num;
unsigned short frame_crc;
unsigned short frame_nm;
unsigned short dummy0;
unsigned short dummy1;
} STRDATA ;
typedef struct strhdr {
unsigned char start_code[6];
unsigned long frame_num;
unsigned short frame_size;
unsigned short slice_num;
unsigned short slice_size;
unsigned short frame_id;
unsigned long frame_gop;
unsigned short frame_gop_num;
unsigned short frame_type;
unsigned char frame_data[MAX_STREAM_SLICE];
unsigned char end_code[6];
} STRHDR;
#endif
typedef struct chcmd {
unsigned short chn_cont;//Display:1
unsigned short chn_cmd;//On:1/Off:2
unsigned short chn_num;//Channel Number 1,2,3,4
} _chcmd_ ;
typedef struct loginfo {
unsigned char user_id[16];
unsigned char user_pass[16];
unsigned char group_id[16];
} _loginfo_ ;
typedef struct serverparams{
int server_ch;
int server_sock;
} _serverparams_ ;
typedef struct streamparams{
int client_sock;
int client_addr;
char client_ip[16];
int client_port;
} _streamparams_ ;
unsigned short *frame_cmd;
#if 1//xchannel modify
/* encoding max output data size add */
#define BUFFER_LEN ((64*1024)+sizeof(STRDATA))
#else//org
#define BUFFER_LEN ((100*1024)+sizeof(STRDATA))
#endif
#define MAX_FRAME_IPB 30
/*For Test*/
//#define MAX_STREAM_NUM 0x000000ff
#define MAX_STREAM_NUM 0xffffff00/0x00000002
#define INIT_STREAM_NUM 0x00000001
// Channel 1
unsigned char *ch_buff_0_ipb[MAX_FRAME_IPB];
key_t shm_key_0_ipb[MAX_FRAME_IPB];
int shm_vid_0_ipb[MAX_FRAME_IPB];
// Channel 2
unsigned char *ch_buff_1_ipb[MAX_FRAME_IPB];
key_t shm_key_1_ipb[MAX_FRAME_IPB];
int shm_vid_1_ipb[MAX_FRAME_IPB];
// Channel 3
unsigned char *ch_buff_2_ipb[MAX_FRAME_IPB];
key_t shm_key_2_ipb[MAX_FRAME_IPB];
int shm_vid_2_ipb[MAX_FRAME_IPB];
// Channel 4
unsigned char *ch_buff_3_ipb[MAX_FRAME_IPB];
key_t shm_key_3_ipb[MAX_FRAME_IPB];
int shm_vid_3_ipb[MAX_FRAME_IPB];
#if 0
typedef struct
{
unsigned char head;
unsigned char cmd;
unsigned long data;
} __attribute__ ((packed)) packet2_t;
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -