protected virtual QualityData GetAggregatedData() { bool emptyConfig = (QualityConfig == null); QualityData qualityData = new QualityData(); if (emptyConfig || QualityConfig.Bitrate || QualityConfig.BitrateChangeCount || QualityConfig.BitrateMax || QualityConfig.BitrateMaxDuration) { var agg = aggregators[EventType.BitrateChanged]; if (emptyConfig || QualityConfig.Bitrate) { qualityData.Bitrate = agg.GetAverageOverTime(); } if (emptyConfig || QualityConfig.BitrateChangeCount) { qualityData.BitrateChangeCount = agg.GetCount(); } if (emptyConfig || QualityConfig.BitrateMax || QualityConfig.BitrateMaxDuration) { double maxBitrate = agg.GetMax(); if (emptyConfig || QualityConfig.BitrateMax) { qualityData.BitrateMax = Convert.ToInt32(maxBitrate); } if (emptyConfig || QualityConfig.BitrateMaxDuration) { qualityData.BitrateMaxMilliseconds = agg.GetTotalTime(v => v == maxBitrate).TotalMilliseconds; } } } if (emptyConfig || QualityConfig.Buffering) { qualityData.BufferingMilliseconds = aggregators[EventType.BufferingStateChanged].GetTotalTime(v => v > 0).TotalMilliseconds; } if (emptyConfig || QualityConfig.ProcessCpuLoad) { qualityData.ProcessCpuLoad = aggregators[EventType.ProcessCpuLoad].GetAverage(); } if (emptyConfig || QualityConfig.SystemCpuLoad) { qualityData.SystemCpuLoad = aggregators[EventType.SystemCpuLoad].GetAverage(); } if (emptyConfig || QualityConfig.DroppedFrames) { qualityData.DroppedFrames = aggregators[EventType.DroppedFramesPerSecond].GetAverage(); } if (emptyConfig || QualityConfig.RenderedFrames) { qualityData.RenderedFrames = aggregators[EventType.RenderedFramesPerSecond].GetAverage(); } if (emptyConfig || QualityConfig.PerceivedBandwidth) { qualityData.PerceivedBandwidth = Convert.ToInt64(aggregators[EventType.PerceivedBandwidth].GetAverageOverTime()); } if (emptyConfig || QualityConfig.VideoBufferSize) { qualityData.VideoBufferSize = aggregators[EventType.VideoBufferSize].GetAverage(); } if (emptyConfig || QualityConfig.AudioBufferSize) { qualityData.AudioBufferSize = aggregators[EventType.AudioBufferSize].GetAverage(); } if (emptyConfig || QualityConfig.VideoDownloadLatency) { qualityData.VideoDownloadLatencyMilliseconds = aggregators[EventType.VideoChunkDownload].GetAverage(); } if (emptyConfig || QualityConfig.AudioDownloadLatency) { qualityData.AudioDownloadLatencyMilliseconds = aggregators[EventType.AudioChunkDownload].GetAverage(); } if (emptyConfig || QualityConfig.DvrOperationCount) { qualityData.DvrOperationCount = aggregators[EventType.DvrOperation].GetCount(); } if (emptyConfig || QualityConfig.FullScreenChangeCount) { qualityData.FullScreenChangeCount = aggregators[EventType.FullScreenChanged].GetCount(); } if (emptyConfig || QualityConfig.HttpErrorCount) { qualityData.HttpErrorCount = aggregators[EventType.HttpError].GetCount(); } if (base.reportDataWhenDisabled) { qualityData.SampleSizeMilliseconds = Convert.ToInt32(SlidingWindowInterval.TotalMilliseconds); } else { qualityData.SampleSizeMilliseconds = Convert.ToInt32(base.sampleSizeAggregator.GetWindowSize().TotalMilliseconds); } return(qualityData); }
private void PopulateQualityLog(QualityData data, VideoQualityBaseLog qualityLog) { PopulateVideoEventLog(qualityLog); qualityLog.VideoUrl = data.CurrentStreamUrl; qualityLog.EdgeIP = healthMonitor.EdgeServer; qualityLog.ClientIP = healthMonitor.ClientIP; qualityLog.MediaElementId = data.MediaElementId; qualityLog.SamplingFrequencySeconds = data.SampleSizeMilliseconds / 1000; qualityLog.IsLive = data.IsLive; qualityLog.TotalElapsedTime = healthMonitor.VideoSessionTotalTime.TotalSeconds; if (data.Bitrate.HasValue) qualityLog.BitRate = Convert.ToInt32(data.Bitrate.Value); if (data.BitrateChangeCount.HasValue) qualityLog.BitRateChangeCount = data.BitrateChangeCount.Value; if (data.BitrateMax.HasValue) qualityLog.MaxBitRate = data.BitrateMax.Value; if (data.BitrateMaxMilliseconds.HasValue) qualityLog.MaxBitRateMilliseconds = Convert.ToInt32(data.BitrateMaxMilliseconds.Value); if (data.BufferingMilliseconds.HasValue) qualityLog.BufferingMilliseconds = Convert.ToInt32(data.BufferingMilliseconds.Value); if (data.ProcessCpuLoad.HasValue) qualityLog.ProcessCPULoad = Convert.ToInt16(data.ProcessCpuLoad.Value); if (data.SystemCpuLoad.HasValue) qualityLog.SystemCPULoad = Convert.ToInt16(data.SystemCpuLoad.Value); if (data.DroppedFrames.HasValue) qualityLog.DroppedFrames = Convert.ToInt16(data.DroppedFrames.Value); if (data.RenderedFrames.HasValue) qualityLog.RenderedFrames = Convert.ToInt16(data.RenderedFrames.Value); if (data.HttpErrorCount.HasValue) qualityLog.HttpErrorCount = data.HttpErrorCount.Value; if (data.AudioBufferSize.HasValue) qualityLog.AudioBufferSize = Convert.ToInt32(data.AudioBufferSize.Value); if (data.VideoBufferSize.HasValue) qualityLog.VideoBufferSize = Convert.ToInt32(data.VideoBufferSize.Value); if (data.PerceivedBandwidth.HasValue) qualityLog.PerceivedBandwidth = Convert.ToInt64(data.PerceivedBandwidth.Value); if (data.DvrOperationCount.HasValue) qualityLog.DVRUseCount = Convert.ToInt32(data.DvrOperationCount.Value); if (data.FullScreenChangeCount.HasValue) qualityLog.FullScreenChangeCount = data.FullScreenChangeCount.Value; if (data.VideoDownloadLatencyMilliseconds.HasValue) { if (!Double.IsInfinity(data.VideoDownloadLatencyMilliseconds.Value)) { qualityLog.VideoDownloadLatencyMilliseconds = Convert.ToInt32(data.VideoDownloadLatencyMilliseconds.Value); } } if (data.AudioDownloadLatencyMilliseconds.HasValue) { if (!Double.IsInfinity(data.AudioDownloadLatencyMilliseconds.Value)) { qualityLog.AudioDownloadLatencyMilliseconds = Convert.ToInt32(data.AudioDownloadLatencyMilliseconds.Value); } } //qualityLog.Data[VideoLogAttributes.CDNBlocked] = healthMonitor.AnonymousProxy; }
protected virtual QualityData GetAggregatedData() { bool emptyConfig = (QualityConfig == null); QualityData qualityData = new QualityData(); if (emptyConfig || QualityConfig.Bitrate || QualityConfig.BitrateChangeCount || QualityConfig.BitrateMax || QualityConfig.BitrateMaxDuration) { var agg = aggregators[EventType.BitrateChanged]; if (emptyConfig || QualityConfig.Bitrate) qualityData.Bitrate = agg.GetAverageOverTime(); if (emptyConfig || QualityConfig.BitrateChangeCount) qualityData.BitrateChangeCount = agg.GetCount(); if (emptyConfig || QualityConfig.BitrateMax || QualityConfig.BitrateMaxDuration) { double maxBitrate = agg.GetMax(); if (emptyConfig || QualityConfig.BitrateMax) qualityData.BitrateMax = Convert.ToInt32(maxBitrate); if (emptyConfig || QualityConfig.BitrateMaxDuration) qualityData.BitrateMaxMilliseconds = agg.GetTotalTime(v => v == maxBitrate).TotalMilliseconds; } } if (emptyConfig || QualityConfig.Buffering) qualityData.BufferingMilliseconds = aggregators[EventType.BufferingStateChanged].GetTotalTime(v => v > 0).TotalMilliseconds; if (emptyConfig || QualityConfig.ProcessCpuLoad) qualityData.ProcessCpuLoad = aggregators[EventType.ProcessCpuLoad].GetAverage(); if (emptyConfig || QualityConfig.SystemCpuLoad) qualityData.SystemCpuLoad = aggregators[EventType.SystemCpuLoad].GetAverage(); if (emptyConfig || QualityConfig.DroppedFrames) qualityData.DroppedFrames = aggregators[EventType.DroppedFramesPerSecond].GetAverage(); if (emptyConfig || QualityConfig.RenderedFrames) qualityData.RenderedFrames = aggregators[EventType.RenderedFramesPerSecond].GetAverage(); if (emptyConfig || QualityConfig.PerceivedBandwidth) qualityData.PerceivedBandwidth = Convert.ToInt64(aggregators[EventType.PerceivedBandwidth].GetAverageOverTime()); if (emptyConfig || QualityConfig.VideoBufferSize) qualityData.VideoBufferSize = aggregators[EventType.VideoBufferSize].GetAverage(); if (emptyConfig || QualityConfig.AudioBufferSize) qualityData.AudioBufferSize = aggregators[EventType.AudioBufferSize].GetAverage(); if (emptyConfig || QualityConfig.VideoDownloadLatency) qualityData.VideoDownloadLatencyMilliseconds = aggregators[EventType.VideoChunkDownload].GetAverage(); if (emptyConfig || QualityConfig.AudioDownloadLatency) qualityData.AudioDownloadLatencyMilliseconds = aggregators[EventType.AudioChunkDownload].GetAverage(); if (emptyConfig || QualityConfig.DvrOperationCount) qualityData.DvrOperationCount = aggregators[EventType.DvrOperation].GetCount(); if (emptyConfig || QualityConfig.FullScreenChangeCount) qualityData.FullScreenChangeCount = aggregators[EventType.FullScreenChanged].GetCount(); if (emptyConfig || QualityConfig.HttpErrorCount) qualityData.HttpErrorCount = aggregators[EventType.HttpError].GetCount(); if (base.reportDataWhenDisabled) qualityData.SampleSizeMilliseconds = Convert.ToInt32(SlidingWindowInterval.TotalMilliseconds); else qualityData.SampleSizeMilliseconds = Convert.ToInt32(base.sampleSizeAggregator.GetWindowSize().TotalMilliseconds); return qualityData; }
void ReportSnapshotData(QualityData data) { VideoQualitySnapshotLog qualityLog = new VideoQualitySnapshotLog(); PopulateQualityLog(data, qualityLog); SendLog(qualityLog); }