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

📄 stream_server.h

📁 1、基于韩国at2041芯片开发的Linux环境的DVR代码。 2、以原来代码进行了修改。 3、主要修改网络通讯出现异常问题处理 4、硬盘覆盖录像不起作用
💻 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 + -