VSM 20视频告警模块详细设计说明书Word文件下载.docx
《VSM 20视频告警模块详细设计说明书Word文件下载.docx》由会员分享,可在线阅读,更多相关《VSM 20视频告警模块详细设计说明书Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
(A-添加,M-修改,D-删除)
目录
1.引言4
1.1目的4
1.2背景4
1.3范围4
2.使用说明5
2.1需求概述5
2.2目标读者5
3.功能说明5
3.1videomon模块示意图5
3.2功能概述6
3.3告警等级划分6
3.4告警策略6
3.5主线程流程图7
4.数据结构7
4.1全局变量7
5.接口说明9
5.1告警接口9
5.2视频质量接口9
5.3Mdi接口10
5.4Tr101290接口11
5.5内容层接口11
1.引言
1.1目的
该模块主要接收VQMonService(分析视频质量模块)和CAnalyzeServie(内容层分析模块)发过来的视频质量参数,从而判断是否有视频流告警事件发生,如果有,则根据告警策略处理告警事件。
1.2背景
IPTV使用MPEGTS传输码流在IP网络上承载和传送视频基本流(ES),TS码流中包含了各种用于视频流解码所必须的信息内容。
由于MPEGTS流的损伤会直接影响机顶盒的正常解码和视频质量,因此TS流的健康状况监测对保障IPTV用户体验质量十分重要。
MDI(df和mlr)、TR101290、静帧、彩条、马赛克等都是对视频流质量的监控.
本模块通过对告警划分等级,优先级高的告警抑制优先级低的告警,同时为了减少告警的频繁上报,采用了计数和抑制时间方法。
1.3范围
该文档对VMS2.0视频告警模块的内容功能、数据结构和接口方面进行了详细描述,供后继开发维护人员使用。
2.使用说明
2.1需求概述
《IPTV视频分析设备》
《IPTV质量保障系统技术建议书》
2.2目标读者
公司内部后继开发维护人员。
3.功能说明
3.1videomon模块示意图
Videomon模块是一个独立进程,里面包含很多服务模块。
VideoService:
负责视频流的转发和http通信。
AlarmService:
负责接收视频质量参数,判断告警和视频录制功能。
VQMonService:
负责接收视频流,产生视频质量参数。
CAnalyzeService:
负责接收VideoService转发的视频流,并产生内容层视频质量参数。
DAccessService:
负责和QCS进行通信,还有下发配置信息,比如频道信息。
3.2功能概述
本模块运行于VSM2.0里面的(VideoMon)模块中,VideoMon是一个独立的进程,当VideoMon启动时,会自动加载AlarmServie模块。
AlarmService模块初始化的时候,会注册两个线程,一个是视频质量接收线程,一个是检测断流线程(每隔5s检测一次)。
视频质量接收线程,主要负责接收其它服务模块发过来的视频质量参数,然后对这些数据进行处理,比如(达标率统计,滑动窗口处理),判断是否有告警事件发生,如果有,则根据告警类型,获得相应的告警策略,处理告警事件。
检测断流线程,主要定时检测(每隔5s检测一次)是否有频道断流事件,判断断流的方法是(当前时间–上次窗口时间>
3个滑动窗口时间),如果有断流时间发生,就发送断流告警给DAccessService模块。
3.3告警类型
传输层告警:
DF、MLR、传输质量、编码质量
内容层告警:
静帧、黑屏、彩条、BLOCKNESS、语法错误、LOSS_CHROMA、LUMI、RGB、马赛克
TR101290告警
断流告警
以下是具体告警类型,红色为1级告警,紫色为2级告警,蓝色为3级告警,其它待定
CHANNEL_ALARM_TYPE_UNKNOW=0,
CHANNEL_ALARM_TYPE_NOSTREAM=0x00000001,
CHANNEL_ALARM_TYPE_RECUR_STREAM=0x00000002,
CHANNEL_ALARM_TYPE_TRANS_ERR=0x00000004,
CHANNEL_ALARM_TYPE_MEDIARATE_ASTATICISM=0x00000008,
CHANNEL_ALARM_TYPE_PAT_ERR=0x00000010,
CHANNEL_ALARM_TYPE_CONT_ERR=0x00000020,
CHANNEL_ALARM_TYPE_PMT_ERR=0x00000040,
CHANNEL_ALARM_TYPE_PID_ERR=0x00000080,
CHANNEL_ALARM_TYPE_CRC_ERR=0x00000100,
CHANNEL_ALARM_TYPE_PCR_ERR=0x00000200,
CHANNEL_ALARM_TYPE_PTS_ERR=0x00000400,
CHANNEL_ALARM_TYPE_CAT_ERR=0x00000800,
CHANNEL_ALARM_TYPE_MDIDF_ERR=0x00001000,
CHANNEL_ALARM_TYPE_MDIMLR_ERR=0x00002000,
CHANNEL_ALARM_TYPE_FROZEN_FRAME=0x00004000,
CHANNEL_ALARM_TYPE_BLACK__SCREEN=0x00008000,
CHANNEL_ALARM_TYPE_COLOR_BAR=0x00010000,
CHANNEL_ALARM_TYPE_BLOCKNESS=0x00020000,
CHANNEL_ALARM_TYPE_UNICAST_START=0x00040000,
CHANNEL_ALARM_TYPE_UNICAST_END=0x00080000,
CHANNEL_ALARM_TYPE_SYNTAX_ERROR=0x00100000,
CHANNEL_ALARM_TYPE_LOSS_CHROMA=0x00200000,
CHANNEL_ALARM_TYPE_LUMI_ERROR=0x00400000,
CHANNEL_ALARM_TYPE_RGB_ERROR=0x00800000,
CHANNEL_ALARM_TYPE_MOSAIC_ERROR=0x01000000,
CHANNEL_ALARM_TYPE_OTHER_CODEC_ERR=0x10000000,
CHANNEL_ALARM_TYPE_LAST=0x80000000,
CHANNEL_ALARM_TYPE_DEFAULT=0xffffffff
3.4告警策略
告警主要采用以下几个策略:
1:
一种或者几种告警类型,可以配置成一种告警策略,告警策略里面可以配置告警否录制,录制时长,告警抑制时间,告警抑制计数。
2:
不包含在告警策略里面的告警,组成一个默认告警策略
3:
告警恢复,也是单独一种告警策略,用来恢复告警
4:
所有告警策略组成一个告警列表,某种告警通过告警列表,处理告警。
3.5流程图
3.5.1MSG_NOTIFY_EXTERN消息流程图
初始i=0;
MSG_NOTIFY_EXTERN消息里面会判断视频是否已经衰减和在衰减时间内,如果在,就衰减视频质量的mos和codecQuant,否则就恢复ca_flag衰减标志和衰减时间。
3.5.1MSG_NOTIFY_EXTERN消息流程图
3.5.2MSG_NOTIFY_TR101290消息流程图
3.5.3MSG_NOTIFY_CA_QUAL消息流程图
Ca_flag:
视频质量衰减标志false:
没有衰减true:
已经衰减
3.5.3MSG_NOTIFY_CA_QUAL消息流程图
备注:
MSG_NOTIFY_EXTERN消息里面会判断视频是否已经衰减和在衰减时间内,如果在,就衰减视频质量的mos和codecQuant,否则就恢复ca_flag衰减标志和衰减时间。
3.5.4告警策略流程图
3.5.4.1告警策略流程图
4.数据结构
4.1全局变量
#defineMAX_VIDEO_RECORD_BUF_LEN2*1024*1024//2M
typedefstruct
{
boolisalarm;
ACE_UINT32alarm_level;
ACE_UINT32count;
time_ttime;
time_tlasttime;
}VQMonAlarm;
typedefstruct
ACE_Thread_Mutexmylock_;
NotifSlideWindowCellnotifSWList[SLIDE_WINDOW_SIZE];
ACE_UINT32sWCurPointer;
ACE_UINT32sWUseNum;
time_tlastMetricsGetTime;
time_tstattime;
ACE_UINT32exist;
//streamflag
VideoQualityNotifnotifVal;
VQMonStatisticstatInfo;
doublelastMediaRate[2];
Tr101290tr;
boolisTRInit;
ACE_INET_Addrsrc_addr_;
ACE_INET_Addrdst_addr_;
VQMonAlarmalarm[VQMON_ALARM_SIZE];
//alarmarray
//Listlist;
ACE_HANDLEhfile;
void*deliver;
boolrecord_flag_;
ACE_UINT32bind_count;
//绑定计数
time_trecode_start_time;
//视频录制开始时间
ACE_TCHARrecord_file_name_[MAX_FILENAME_LEN+1];
//视频录制文件名称
ACE_UINT32position;
//视频录制缓冲区位置
ACE_TCHARrecord_buf[MAX_VIDEO_RECORD_BUF_LEN+1];
//视频录制缓冲区
}StreamNode;
#defineALARM_LEVEL11
#defineALARM_LEVEL22
#defineALARM_LEVEL33
#defineALARM_TYPE1(CHANNEL_ALARM_TYPE_MDIDF_ERR|\
CHANNEL_ALARM_TYPE_MDIMLR_ERR|\
CHANNEL_ALARM_TYPE_NOSTREAM)
#defineALARM_TYPE2(CHANNEL_ALARM_TYPE_FROZEN_FRAME|\
CHANNEL_ALARM_TYPE_BLACK__SCREEN|\
CHANNEL_ALARM_TYPE_COLOR_BAR|\
CHANNEL_ALARM_TYPE_BLOCKNESS|\
CHANNEL_ALARM_TYPE_SYNTAX_ERROR|\
CHANNEL_ALARM_TYPE_LOSS_CHROMA|\
CHANNEL_ALARM_TYPE_LUMI_ERROR|\
CHANNEL_ALARM_TYPE_RGB_ERROR)
#defineALARM_TYPE3(CHANNEL_ALARM_TYPE_PAT_ERR|\
CHANNEL_ALARM_TYPE_PCR_ERR|\
CHANNEL_ALARM_TYPE_PID_ERR|\
CHANNEL_ALARM_TYPE_PMT_ERR|\
CHANNEL_ALARM_TYPE_PTS_ERR|\
CHANNEL_ALARM_TYPE_CRC_ERR|\
CHANNEL_ALARM_TYPE_CONT_ERR|\
CHANNEL_ALARM_TYPE_CAT_ERR|\
CHANNEL_ALARM_TYPE_TRANS_ERR|\
CHANNEL_ALARM_TYPE_OTHER_CODEC_ERR)
5.接口说明
5.1告警接口
classVM_Message_Alarm_Notify:
publicVM_Message_Notify
public:
VM_Message_Alarm_Notify(inttype=
VM_Message_Notify:
:
MSG_NOTIFY_ALARM);
ACE_UINT32alarm_type_;
ACE_UINT16is_alarm_;
ACE_UINT16alarm_level_;
ACE_TCHARalarm_time_[MAX_TIME_FORMAT_LEN];
ALARM_DESCalarm_desc_;
ACE_TCHARrecord_file_name_[MAX_FILENAME_LEN];
};
5.2视频质量接口
classVM_Message_Extern_Notify:
VM_Message_Extern_Notify(inttype=
MSG_NOTIFY_EXTERN);
///Externalquality.
ACE_INT32mos_;
ACE_UINT32vstq_;
ACE_UINT32codec_;
floatloss_rate_;
floatmdi_df_;
floatmdi_mlr_;
floatmedia_rate_;
5.3Mdi接口
classVM_Message_Mdi_Notify:
{
structMdi_Qual
{
floatdf_;
floatmlr_;
ACE_UINT32mr_;
//mediarate
};
VM_Message_Mdi_Notify(inttype=
MSG_NOTIFY_MDI);
///Mdiquality.
ACE_UINT32qual_sec_num_;
Mdi_Qualqual_;
Mdi_Qualqual_sec_[2*CONFIG_QUALITY_CALCULATE_INTERVAL];
ACE_UINT32mlt15_;
ACE_UINT32mlt24_;
ACE_UINT32pkts_recv_;
ACE_UINT32pkts_lost_;
ACE_UINT32pkts_ooseq_;
5.4Tr101290接口
classVM_Message_TR101290_Notify:
VM_Message_TR101290_Notify(inttype=
MSG_NOTIFY_TR101290);
///Video/AudioTR101290.
vqmon_streammetrics_mp2tstr101290P1_tmp2ts_tr101290p1_;
vqmon_streammetrics_mp2tstr101290P2_tmp2ts_tr101290p2_;
5.5内容层告警接口
classCA_Message_Qual_Notify:
enum
CA_ALARM_TYPE_UNKNOW=0,
CA_ALARM_TYPE_FROZEN_FRAME,
CA_ALARM_TYPE_BLACK_SCREEN,
CA_ALARM_TYPE_COLOR_BAR,
CA_ALARM_TYPE_BLOCKNESS,
CA_ALARM_TYPE_SYNTAX_ERROR,
CA_ALARM_TYPE_LOSS_CHROMA,
CA_ALARM_TYPE_LUMI_ERROR,
CA_ALARM_TYPE_RGB_ERROR,
CA_ALARM_TYPE_MOSAIC_ERROR
CA_Message_Qual_Notify(inttype=
MSG_NOTIFY_CA_QUAL);
intalarm_type_;
charalarm_desc_[1024];
5.6和DataAccess层接口
classVM_Message_Qual_Notify:
VM_Message_Qual_Notify(inttype=
MSG_NOTIFY_QUAL);
floatmos_;
floatvstq_;