This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
av-frag-rssb/src/AV_sendback.h
lishu e2c4b4e6a1 1. keepalive add state
2. support UDP send in SOQ
3. 上述功能写入安装使用手册
2019-03-15 16:59:18 +08:00

200 lines
6.1 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef _AV_SENDBACK_H
#define _AV_SENDBACK_H
/*魔数*/
#define AV_MAGIC_VALUE 0x8739
/*消息类型*/
#define AV_TYPE_META 0x01
#define AV_TYPE_DATA 0x02
#define AV_TYPE_RESULT 0x11
/*协议类型*/
#define PROTOCOL_DEFAULT 0x00
#define PROTOCOL_HTTP 0x01
#define PROTOCOL_SMTP 0x02
#define PROTOCOL_POP3 0x03
#define PROTOCOL_IMAP 0x04
#define PROTOCOL_FTP 0x05
#define PROTOCOL_HTTP_PIC 0x06
#define PROTOCOL_RTSP_RDT 0x07
#define PROTOCOL_RTSP_RTP 0x08
#define PROTOCOL_MMS 0x09
#define PROTOCOL_RTMP 0x0A
#define PROTOCOL_SIP 0x0B
/*媒体类型*/
#define MEDIA_TYPE_UNKNOWN 0x00
/*媒体类型:视频支持的媒体类型*/
#define MEDIA_TYPE_VIDEO 0x01
#define MEDIA_TYPE_WMV 0x02
#define MEDIA_TYPE_MPG 0x03
#define MEDIA_TYPE_FLV 0x04
#define MEDIA_TYPE_RMFF 0x05
#define MEDIA_TYPE_AVI 0x06
#define MEDIA_TYPE_SWF 0x07
#define MEDIA_TYPE_MPG4 0x08
#define MEDIA_TYPE_AIFF 0x09
#define MEDIA_TYPE_OGG 0x0A
#define MEDIA_TYPE_DRC 0x0B
#define MEDIA_TYPE_DIRECTSHOW 0x0C
#define MEDIA_TYPE_FLIC 0x0E
#define MEDIA_TYPE_INDEO 0x0F
#define MEDIA_TYPE_MKV 0x10
/*媒体类型:音频支持的媒体类型*/
#define MEDIA_TYPE_AUDIO 0x20
#define MEDIA_TYPE_MP3 0x21
/*媒体类型:图片支持的媒体类型*/
#define MEDIA_TYPE_IMAGE 0x30
#define MEDIA_TYPE_JPG 0x31
#define MEDIA_TYPE_BMP 0x32
#define MEDIA_TYPE_GIF 0x33
/*媒体类型:实时流媒体支持的媒体类型*/
#define MEDIA_TYPE_MMS 0x40
#define MEDIA_TYPE_RTSP_RDT 0x41
#define MEDIA_TYPE_RTSP_RTP 0x42
/*媒体类型:碎片化音视频支持的媒体类型*/
#define MEDIA_TYPE_OSMF 0x50
#define MEDIA_TYPE_HLS 0x51
/*媒体类型:VOIP支持的媒体类型亦即编码类型*/
#define MEDIA_TYPE_AUDIO_UNKNOWN 0x60
#define MEDIA_TYPE_AUDIO_G711_ULAW 0x61
#define MEDIA_TYPE_AUDIO_G711_ALAW 0x62
#define MEDIA_TYPE_AUDIO_G722 0x63
#define MEDIA_TYPE_AUDIO_G723 0x64
#define MEDIA_TYPE_AUDIO_G726_40 0x65
#define MEDIA_TYPE_AUDIO_G726_32 0x66
#define MEDIA_TYPE_AUDIO_G726_24 0x67
#define MEDIA_TYPE_AUDIO_G726_16 0x68
#define MEDIA_TYPE_AUDIO_AAL2_G726_40 0x69
#define MEDIA_TYPE_AUDIO_AAL2_G726_32 0x6A
#define MEDIA_TYPE_AUDIO_AAL2_G726_24 0x6B
#define MEDIA_TYPE_AUDIO_AAL2_G726_16 0x6C
#define MEDIA_TYPE_AUDIO_G728 0x6D
#define MEDIA_TYPE_AUDIO_G729D 0x6E
#define MEDIA_TYPE_AUDIO_G729E 0x6F
#define MEDIA_TYPE_AUDIO_GSM 0x70
#define MEDIA_TYPE_AUDIO_GSM_EFR 0x71
#define MEDIA_TYPE_AUDIO_ILBC 0x72
#define MEDIA_TYPE_AUDIO_AMR 0x73
#define MEDIA_TYPE_AUDIO_AMR_WB 0x74
#define MEDIA_TYPE_AUDIO_SILK 0x75
#define MEDIA_TYPE_AUDIO_LPC 0x76
#define MEDIA_TYPE_AUDIO_LPC1016 0x77
#define MEDIA_TYPE_AUDIO_LPC1015 0x78
#define MEDIA_TYPE_AUDIO_L16 0x79
#define MEDIA_TYPE_AUDIO_SPEEX 0x7A
#define MEDIA_TYPE_AUDIO_L8 0x7B
#define MEDIA_TYPE_AUDIO_MPA 0x7C
#define MEDIA_TYPE_AUDIO_DVI4 0x7D
#define MEDIA_TYPE_AUDIO_VDVI 0x7E
#define MEDIA_TYPE_AUDIO_CN 0x7F
#define MEDIA_TYPE_AUDIO_RED 0x80
#define MEDIA_TYPE_AUDIO_QCELP 0x81
#define MEDIA_TYPE_AUDIO_EVRC0 0x82
#define MEDIA_TYPE_AUDIO_EVRCB0 0x83
#define MEDIA_TYPE_AUDIO_G729 0x84
#define MEDIA_TYPE_AUDIO_VIVOX 0x85
/*指导消息体选项类型*/
/*指导消息体选项类型-VOIP选项类型*/
#define OPT_SIP_SEND_RATE_INFO 0x71 /*VOIP编码参数信息*/
/*==================================消息头部==============================================*/
typedef struct msg_head_s
{
uint16_t magic;
uint16_t m_type;
uint32_t c_len; //消息体长度(不包括消息头部)
}msg_head_t;
/*==================================指导消息体==============================================*/
typedef struct msg_meta_s
{
char pid[8]; //ID由数据获取节点生成
uint64_t proglen; //流文件的总字节长度为0表示长度未知
uint32_t capip; // 获取节点的IP
uint8_t protocol; // 承载协议类型
uint8_t mediatype; // 可能的媒体类型
uint8_t data_flag; // 数据标志
uint8_t opt_num; // 选项个数
}msg_meta_t;
/*已经在其他文件里面定义过
struct opt_unit_t
{
uint32_t opt_len; //包括opt_len、opt_type、opt_value
uint8_t opt_type;
char* opt_value;
};
*/
/*==================================流数据消息体==============================================*/
typedef struct av_data_s
{
char pid[8]; // 流文件的ID由数据获取节点生成
uint16_t frag_seq; // 音视频碎片:片段序号 VOIP:主被叫
int64_t offset:48; // 本次数据在整个流文件中的偏移位置
//char* avs; // 多媒体流数据
}av_data_t;
/*VOIP多媒体流数据格式*/
struct voip_header_t
{
uint32_t time_stamp; // 语音帧的时间戳, 网络序。
uint32_t sequence;
//char* data; //VOIP的语音数据
};
/*RTSP/RTMP多媒体流数据格式*/
struct sdp_data_packet
{
char sdp[8]; // 恒为"RTSP_SDP"
uint32_t sdp_len; // 为sdp的数据长度
//char * data; // sdp数据内容
};
/*RTSP sdp数据内容格式*/
struct rtsp_data_packet
{
uint32_t flag; // RTSP数据头开头标志 0x46464646 "FFFF"
uint8_t type; // 数据类型1 for RDT2 for RTP
uint8_t channel; // 数据的通道号
uint16_t len; // 数据长度
//char * data; // 数据内容
};
/*RTMP sdp数据内容格式*/
struct rtmp_data_packet
{
uint32_t flag; // RTMP数据头开头标志 0x52544D50"RTMP"
uint32_t av_type:8; // 音视频类型8 for Audio, 9 for Video
uint32_t cs_id:24; // Chunk Stream ID
uint32_t timestamp; // 时间戳
uint32_t len; // 总数据长度(包括本头部字段长度20字节)
uint32_t stream_id; // 流ID
//char * data; // 数据内容
};
/*MMS多媒体流数据格式*/
struct mms_data_packet
{
uint32_t frame_flag; // 恒为0x46464646 "FFFF"
uint32_t data_len; // 为数据长度
//char * data; // 数据内容H包数据内容或者D包数据内容
};
/*==================================结果消息体==================================================*/
typedef struct msg_result_s
{
char pid[8]; // 本流文件的ID由数据获取节点生成
int servicetype; // 业务类型
uint32_t cfgid; // 命中的配置ID值为0表示命中未知配置
int8_t level; // 检测结果置信度, [0, 100]
uint8_t pad[7]; // 预留必须填0值
//char* logindex; // 访问现场数据文件的存储路径URL以"/0"结束
}msg_result_t;
#endif