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

📄 stream_server.h

📁 这个是Linux下的应用程序
💻 H
字号:
/***
** stream_server.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 STR_LEVEL0(fmt,args...) {printf("[%s,%s,%d]"fmt,__FILE__,__FUNCTION__,__LINE__,## args);fflush(stdout);}
#define STR_LEVEL1(fmt, args...)	{printf(fmt,## args);fflush(stdout);}
#define STR_LEVEL2(fmt, args...)	{}

int QUIT_IPCAM_MAIN;
int BASE_PORT;
unsigned short QUIT_STREAM;

#define AUTH_LOOP//Enable Authencication Loop
//#define SERVER_THREAD//Listen Socket Thread
//#define CONTROL_THREAD//Video Display Control Thread

#define SERVER_PORT 		40001
/*2005-04-15 netbsd*/
#define SERVER_PORT_JPEG 		40002

#define SERVER_PORT_UDP 	40001
#define PTZ_PORT			40005
#define CFG_PORT_UDP 		40005
#define FTP_PORT 			40006
#define AO_PORT				40008
#define AI_PORT				40007
#define CAST_PORT 			40011 	/* the port will be sendto */

#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
/*2005-04-15 netbsd*/
//#define __JPEG_TEST__
//#define __2CH_JPEG__

#define MAX_CH 	1

#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
#if 0
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 ; 
#else	/*2005-03-09*/
typedef struct strdata {
	long tv_sec;        /* seconds */
   	long tv_usec;  /* microseconds */
	unsigned short frame_id;
	unsigned long frame_number;
	unsigned long 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 ; 
#endif

#if 0
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;	/*I-reference MODE : 1 , Standard :0*/
 	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;
#else
#if 0		/*2005-03-09 netbsd*/
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;	/*I-reference MODE : 1 , Standard :0*/
 	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];
} __attribute__ ((packed)) STRHDR;
#else
typedef struct strhdr {
	unsigned char start_code[6];
	unsigned long frame_num;
	unsigned long frame_size;
	unsigned short slice_num;
	unsigned short slice_size;
 	unsigned short frame_id;	/*I-reference MODE : 1 , Standard :0*/
 	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];
} __attribute__ ((packed)) STRHDR;
#endif

#endif

#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;

#define __SELECT__	1

#define MIN_DELAY 10000
#define MIN_DELAY2 	100000


#define BUFFER_LEN (120*1024)	/*2005-02-07 netbsd*/

#define MAX_FRAME_IPB	15		/*IPPPPPPPPPPPPPP*/
#if 0
#define MAX_FRAME_AO	8
#define MAX_FRAME_AI	8
#else
#define MAX_FRAME_AO	2
#define MAX_FRAME_AI	2
#endif

/*For Test*/
//#define MAX_STREAM_NUM	0x000000ff
//#define MAX_STREAM_NUM		0xffffff00/0x00000002
/*2005-02-03 netbsd*/
#define MAX_STREAM_NUM		0xfffffff0
#define INIT_STREAM_NUM		0x00000001

typedef struct ncam_str {
	STRDATA str_dat;
	unsigned char str_buf[BUFFER_LEN];	
}NCAM_STR;

/* OUT video*/
NCAM_STR *ncam_str_0[MAX_CH][MAX_FRAME_IPB];

/*OUT audio*/
NCAM_STR *ncam_str_4[MAX_FRAME_AO];
/*IN audio*/
NCAM_STR *ncam_str_5[MAX_FRAME_AI];

#define	VIDEO_CH	0
#define	AUDIO_CH_OUT	4
#define	AUDIO_CH_IN	5
#define 	MAX_MUTEX		8
#define 	MAX_MUTEX_SUB	80

pthread_mutex_t ncam_mutex[MAX_MUTEX][MAX_MUTEX_SUB];
pthread_cond_t ncam_cond[MAX_MUTEX][MAX_MUTEX_SUB];

#if 0
typedef struct 
{ 
unsigned char head; 
unsigned char cmd; 
unsigned long data; 
} __attribute__ ((packed)) packet2_t; 
#endif

//#define START_STOP_ENC  3	/*Encoder Video/Audio*/
//#define START_STOP_DEC  3	/*Decoder Video/Audio*/
#define VIDEO_ONLY		0x0001	/*VIDEO ENC/DEC*/
#define AUDIO_ONLY		0x0002	/*AUDIO ENC/DEC*/

#define STANDARD_MODE		0
#define  I_REFENCE_MODE		1

int REC_OPT_MODE;

#define MAX_CLIENT_UDP		10

typedef struct CONNECTION_DB {
       char client_ip[16];
       int client_port;
	int is_alive;
} CON_DB;

#define STATIC_IP		0
#define NORMAL_DHCP 	1
#define PPPOE_DHCP		2

#define MAX_ALIVE_CNT	300
int audio_client_ip;

typedef struct __SESSION_MANAGER__ {
	char ss_id[16];
	int perm;
       char client_ip[16];
       int client_port;
	int alive;
	char dummy[32];
}SESSION_MANAGER;
SESSION_MANAGER SS_MAN[MAX_CLIENT_UDP];

int DEC_CLIENT;
int QUIT_DEC_CLIENT;
void *at2041_start_vdec(void *args);
void *at2041_start_adec(void *args);

#define PM_QUERY_FLAG		1L
#define PM_SETTING_FLAG	2L
#define PM_SUCCEED_FLAG	1L
#define PM_ERROR_FLAG		2L
#define PM_IGNORE_FLAG		3L

#define NET_STATIC			0L
#define NET_DHCP			1L
#define NET_PPPOE			2L

/*Send broadcast packet*/
typedef struct __QUERY_TYPE__ {
	unsigned long query_flag;
	unsigned long reply_flag;
	unsigned long net_type;
	unsigned char	host_name[24];
	unsigned char	mac_addr[24];
	unsigned char	ip_addr[4];
	unsigned char	net_mask[4];
	unsigned char	gw_addr[4];
	unsigned char	reserv0[16];
	unsigned char	reserv1[16];
	unsigned long dummy0;
	unsigned long dummy1;
	unsigned long dummy2;
	unsigned long dummy3;
}__attribute__ ((packed)) PM_QUERY_TYPE;

unsigned short keypad_val;
pthread_mutex_t key_mutex;
pthread_cond_t   key_cond;

#define SW2 	0xC0	/*SW2 SETUP*/                  
#define SW3 	0x40	/*SW3 OSD*/                    
#define SW4 	0x82	/*SW4 PTZ F2*/                 
                                              
#define SW5 	0x02	/*SW5 RECSET F1*/              
#define SW6 	0x42	/*SW6 F3 step rew */           
#define SW7 	0xc2	/*SW7 PIP_QUAD F4*/            
                                               
#define SW8 	0x22	/*SW8 F5*/                     
#define SW9 	0x20	/*SW9  SUB+*/                  
#define SW10	0xA0	/*SW10 SUB-*/                  
                                               
#define SW11	0x38	/*SW11 REW*/                   
#define SW12	0x18	/*SW12 + */                    
#define SW13	0xE8	/*SW13 - */                    
                                               
#define SW14	0xB8	/*SW14 PLAY*/                  
#define SW15	0x98	/*SW15 LIST*/                  
#define SW16	0x58	/*SW16 REC*/                   
                                               
#define SW17	0x78	/*SW17 FAST	FORWARD*/      
#define SW18	0xD8	/*SW18 SLOW*/                  
#define SW19	0xFF	/*SW19 */                      
                                               
                                               
#define SW20	0x60	/*SW20 LEFT*/                  
#define SW21	0xE0	/*SW21 UP*/                    
#define SW22	0x30	/*SW22 SELECT*/                
#define SW23	0x10	/*SW23 DOWN*/                  
#define SW24	0x90	/*SW24 RIGHT*/                 

#define SW25	0x80	/*SW25 POWER*/

char ip0_set[20], ip1_set[20];


#if 1
typedef struct __RTP_HEADER__ {
#ifdef __BIG_ENDIAN__
  unsigned int version:2;       /* protocol version */
  unsigned int padding:1;       /* padding flag */
  unsigned int extension:1;     /* header extension flag */
  unsigned int csrc_count:4;    /* CSRC count */
  unsigned int marker:1;        /* marker bit */
  unsigned int payload_type:7;  /* payload type */
#else /*__LITTLE_ENDIAN__*/
  unsigned int csrc_count:4;    /* CSRC count */
  unsigned int extension:1;     /* header extension flag */
  unsigned int padding:1;       /* padding flag */
  unsigned int version:2;       /* protocol version */
  unsigned int payload_type:7;  /* payload type */
  unsigned int marker:1;        /* marker bit */
#endif
  unsigned short seq;                  /* sequence number */
  unsigned long timestamp;            /* timestamp */
  unsigned long ssrc;                 /* synchronization source */
  unsigned long csrc[1];              /* optional CSRC list */
}__attribute__ ((packed)) RTP_HEADER;
#endif

/*2005-03-09 netbsd*/
#define HIGH_QUALITY	4
#define HIGH_RATE		170
int ACTIVE_QL;

⌨️ 快捷键说明

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