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_interface.h
2019-01-28 14:44:15 +08:00

225 lines
6.7 KiB
C
Raw 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_INTERFACE_H
#define _AV_INTERFACE_H
#define PROTO_VERSION 3
#define PROTO_MAGICNUM 0x5641
/*META_OPT_* same with av_master 来自前端*/
#define META_OPT_LAYER_ADDR 0x52 //META_OPT_LAYER_ADDR
#define META_OPT_SINGLE_KEY 0x68
#define META_OPT_LAYER_URL 0x61
#define META_OPT_ETAG 0x62
#define META_OPT_LAST_MODIFY 0x63
#define META_OPT_REFERER 0x64 //AV_IdentifyFormatDoc
#define META_OPT_USER_AGENT 0x65
#define META_OPT_C2S_CONT_TYPE 0x66 //cache and send because of boundary
#define META_OPT_S2C_CONT_TYPE 0x67 //cache and send because of boundary
#define META_OPT_SERVICE_ID 0x71 /*碎片化使用,自用*/
#define META_OPT_C2S_CONT 0x72 /*碎片化使用,自用*/
#define META_OPT_S2C_CONT 0x73 /*碎片化使用,自用*/
#define META_OPT_CONT_DISPOSITION 0x74 /*碎片化使用,自用*/
#define META_OPT_SIP_DIADATA_ID 0x81 /*VOIP使用*/
#define META_OPT_SIP_DATA_DIR 0x82
#define META_OPT_SIP_RATE_INFO 0x83
#define META_OPT_OFFSET 0x69 /*offset的选项,与前端一致*/
#define META_OPT_SERVER 0x6A
/*发送给内容分析程序的选项*/
#define OPT_SOURCE_IP 0x41 /*localIP选项*/
#define META_OPT_SIP_SEND_RATE_INFO 0x71 /*VOIP业务*/
/*多源情况下,粗瓶装发送给其他粗瓶装的选项*/
#define META_OPT_INFO_BEFORE_MULTISRC 0x91 /*多源汇聚之前的节目信息包括MID和capIP内部自用*/
#define FILE_OSMF 0xA1
#define FILE_HLS 0xA2
#define FILE_IOS 0xA3
#define FILE_ANDRIOD 0xA4
#define FILE_APP 0xA5
#define FILE_REQ_FRAG 0xA6 /*碎片预告识别的,例如url里面带有偏移量的例如iqiyi*/
#define FILE_MAYBE_FRAG 0xA7 /*前端回传的可能是碎片的音视频*/
#define FILE_AV 0x00 /*碎片预告识别的媒体类型转换为0x00*/
#define VOIP_UNKNOWN_MEDIA_TYPE 0xB0
/*from papp*/
#define MSG_DATA_META 0x31
#define MSG_DATA_BODY 0x32
#define MSG_DATA_TAIL 0x33
/*live*/
#define MSG_LIVE_CHECK 0x41 //from sapp
#define MSG_LIVE_RESPONS 0x42 //to sapp
/*from av_analyse*/
#define MSG_RESP_CHECKRESULT 0x11 // Check Result notification
#define MSG_RESP_REJECT 0x12 // Reject Message notification, not proc now
#define MSG_RESP_CHARACTER 0x13 // Character notification, 1. wins ack, 2. send to sapp
#define MSG_RESP_CHECKRESULT_ACK 0x14 //not send now
#define MSG_PROG_SYNC 0x15 //
/*prog sync*/
#define SYNC_SENDER_VIDEO_ANALYZER 0x01
#define SYNC_SENDER_AUDIO_ANALYZER 0x02
#define SYNC_ACTION_STOP_TO_SUBSYSTEM 0x01
#define SYNC_ACTION_STOP_TO_MAINSYSTEM 0x02
#define SYNC_ACTION_ELIMINATE_PROGRAM 0x03
/*FD建议碎片化GK特征选项*/
#define OPT_FRAG_ORIGIN_URL 0x11
#define OPT_FRAG_CTRL_SUBSTR 0x12
#define OPT_FRAG_INDEX_URL 0x13
/*FD建议: 图片建议set opt_num=0*/
#define SURVEY_PIC_TYPE 0x31
#define SURVEY_PIC_MONITOR_TYPE 0xB1
#define SURVEY_PIC_KEYWORD_TYPE 0xB2
#define SURVER_VOIP_COLLECT_TPYE 0xA4//for K voip_collect
// FD类型, 0表示blacklist1表示static configures2表示content hit。
#define FD_TYPE_DYNAMIC_LIST 0
#define FD_TYPE_STATIC_CONF 1
#define FD_TYPE_ANALYSE 2
/*=================================monitor service===============================================*/
#define SERVICE_AUDIO_LANG 0x97 //声学所产生的语种识别建议
#define SERVICE_AUDIO_LANG_FULL 0x98 //粗拼装根据上述建议产生的全文件JC日志
/*=================================ack msg===============================================*/
typedef struct msg_data_ack_s
{
char prog_id[8];
uint16_t pad;
uint64_t ack_offset:48;
}msg_data_ack_t;
/*=================================data msg===============================================*/
#define MSG_HEADER_LEN sizeof(msg_header_t)
typedef struct msg_header_s
{
uint16_t magic_num;
uint8_t version;
uint8_t msg_type; // msg data type
uint32_t cont_len;
}msg_header_t; /* sizeof = 8B */
#define MSG_MEDIAINFO_HEAD_LEN (sizeof(msg_metainfo_t))
/*Data_flag defination*/
typedef struct msg_metainfo_s
{
char prog_id[8];
char flag;
#if K_PROJECT
uint8_t pad[3];
int hitservice;
uint64_t prog_len;
#else
uint8_t hitservice;
uint64_t prog_len:48;
#endif
uint32_t cap_IP;
uint8_t protocol;
uint8_t media_type;
uint8_t data_flag;
uint8_t opt_num;
}msg_metainfo_t;
typedef struct msg_data_s
{
char prog_id[8];
union
{
struct
{
uint8_t pad;
uint8_t flags;
};
uint16_t frag_seq;
};
uint64_t offset:48;
}msg_data_t;
#define MSG_DATA_HEAD_LEN (sizeof(msg_data_t))
/*==============================response msg==================================================*/
typedef struct msg_prog_sync_s
{
char prog_id[8];
uint8_t sender; //0:reserved,1: video analyzer,2:audio analyzer
char action; //0:reserved,1:stop send to subsystem,2:stop send to main system,3:eliminate this programm
}msg_prog_sync_t;
#define MSG_RESP_CHECKRESULT_LEN (sizeof(resp_checkresult_t))
typedef struct resp_checkresult_s
{
char prog_id[8];
#if K_PROJECT
int service;
char level; //the level of check result
uint8_t opt_num; // 包含的选项数
uint8_t pad[6]; // 预留必须填0值
#else
uint8_t service;
char level; //the level of check result
uint8_t opt_num; // 包含的选项数
uint8_t pad; // 预留必须填0值
#endif
uint32_t cfg_id; //config ID
uint32_t file_header_size;
uint32_t file_packet_size;
}resp_checkresult_t;
typedef struct msg_log_s
{
char prog_id[8]; // program rule id;
uint32_t cfg_id; // hitted rule id;
uint32_t fount_time; // found time
uint32_t server_ip; // server ip;
uint32_t client_ip; // client ip;
uint16_t server_port; // server port;
uint16_t client_port; // client port;
uint8_t protocol; // translation protocol num;
uint8_t service; // service type;
uint8_t level; // result level;
uint8_t fd_type;
}msg_log_t;
typedef enum
{
RECV_RESP=0,
RECV_RESP_WHITELIST,
RESP_MEDIA_NOFOUND,
RESP_REPEAT,
RESP_AUDIO_LANG_MONITOR_NEW,
RESP_AUDIO_LANG_MONITOR_OLD,
RESP_SEND_BLOCK,
RESP_SEND_BLOCK_MULTI,
RECV_PROG_SYNC,
RECV_PROG_SYNC_NOFOUND,
RECV_PROG_SYNC_AUDIO_STOP,
RECV_PROG_SYNC_VIDEO_STOP,
RECV_PROG_SYNC_UNKNOW,
SEND_CONFIG_MONITOR,
SEND_LANG_MONITOR,
}RESP_LOG_TYPE;
/*VOIP 监测日志地址格式*/
typedef struct layer_addr_v4_s
{
uint8_t layer_cnt;
uint8_t reserved[3];
uint32_t client_addr; /* network order, client IP */
uint32_t server_addr; /* network order, server IP */
uint16_t client_port; /* network order */
uint16_t server_port; /* network order */
}layer_addr_v4_t;
void resp_write_to_log(int type, resp_checkresult_t* check_res, void* param1, void* param2, uint64_t param3);
#endif