📄 rtsp_func.h
字号:
#define RTSP_BUFFERSIZE 4096
#define MAX_DESCR_LENGTH 4096
#define RTP_DEFAULT_PORT 5004
#define RTCP_BUFFERSIZE 1024
/************************* RTP ******************************/
typedef struct _RTCP_stats {
unsigned int RR_received;
unsigned int SR_received;
unsigned long dest_SSRC;
unsigned int pkt_count;
unsigned int octet_count;
int pkt_lost;
unsigned char fract_lost;
unsigned int highest_seq_no;
unsigned int jitter;
unsigned int last_SR;
unsigned int delay_since_last_SR;
} RTCP_stats;
typedef struct _RTP_transport {
enum {
RTP_no_transport=0,
RTP_rtp_avp,
RTP_rtp_avp_tcp
} type;
tsocket rtp_fd;
tsocket rtcp_fd_out;
tsocket rtcp_fd_in;
union {
struct {
struct sockaddr rtp_peer;
struct sockaddr rtcp_in_peer;
struct sockaddr rtcp_out_peer;
port_pair cli_ports;
port_pair ser_ports;
unsigned char is_multicast;
} udp;
struct {
port_pair interleaved;
} tcp;
// other trasports here
} u;
} RTP_transport;
typedef struct _RTP_session {
RTP_transport transport;
unsigned char rtcp_inbuffer[RTCP_BUFFERSIZE];
int rtcp_insize;
unsigned char rtcp_outbuffer[RTCP_BUFFERSIZE];
uint32 rtcp_outsize;
double mprev_tx_time;
unsigned int PreviousCount;
short MinimumReached;
short MaximumReached;
// Back references
int sched_id;
unsigned int start_seq;
unsigned int start_rtptime;
unsigned char pause;
//this var is in media_entry structure
unsigned char started;
unsigned int seq;
unsigned int ssrc;
char sd_filename[255];
media_entry *current_media;
SD_descr *sd_descr;
//Consumer has transferred itself here
OMSConsumer *cons;
RTCP_stats rtcp_stats[2]; //client e server
struct _RTP_session *next;
unsigned char is_multicast_dad;/*if is it an multicast son it cannot do TEARDOWN etc...*/
} RTP_session;
typedef struct _RTP_header {
/* byte 0 */
#if (BYTE_ORDER == LITTLE_ENDIAN)
unsigned char csrc_len:4; /* expect 0 */
unsigned char extension:1; /* expect 1, see RTP_OP below */
unsigned char padding:1; /* expect 0 */
unsigned char version:2; /* expect 2 */
#elif (BYTE_ORDER == BIG_ENDIAN)
unsigned char version:2;
unsigned char padding:1;
unsigned char extension:1;
unsigned char csrc_len:4;
#else
#error Neither big nor little
#endif
/* byte 1 */
#if (BYTE_ORDER == LITTLE_ENDIAN)
unsigned char payload:7; /* RTP_PAYLOAD_RTSP */
unsigned char marker:1; /* expect 1 */
#elif (BYTE_ORDER == BIG_ENDIAN)
unsigned char marker:1;
unsigned char payload:7;
#endif
/* bytes 2, 3 */
unsigned short seq_no;
/* bytes 4-7 */
unsigned int timestamp;
/* bytes 8-11 */
unsigned int ssrc; /* stream number is used here. */
} RTP_header;
/************************* RTSP ******************************/
typedef struct _RTSP_session {
int cur_state;
int session_id;
RTP_session *rtp_session;
struct _RTSP_session *next;
} RTSP_session;
typedef struct _RTSP_buffer {
tsocket fd;
unsigned int port;
// Buffers
char in_buffer[RTSP_BUFFERSIZE];
unsigned int in_size;
char out_buffer[RTSP_BUFFERSIZE+MAX_DESCR_LENGTH];
int out_size;
// Run-Time
unsigned int rtsp_cseq;
char descr[MAX_DESCR_LENGTH]; // La descrizione
RTSP_session *session_list;
struct _RTSP_buffer *next;
} RTSP_buffer;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -