private void ProcessReports(IList<RTCStatsReport> reports)
{
foreach (var report in reports)
{
if (report.StatsType == RTCStatsType.StatsReportTypeSsrc) {
IDictionary<RTCStatsValueName, Object> statValues = report.Values;
if (statValues.Keys.Contains(RTCStatsValueName.StatsValueNameTrackId))
{
string trackId = statValues[RTCStatsValueName.StatsValueNameTrackId].ToString();
if (trackId.StartsWith("audio_label"))
{
if (statValues.Keys.Contains(RTCStatsValueName.StatsValueNamePacketsSent)) {
_metricsCollector._audioPacketsSent += Convert.ToInt32(statValues[RTCStatsValueName.StatsValueNamePacketsSent]);
}
if (statValues.Keys.Contains(RTCStatsValueName.StatsValueNamePacketsLost))
{
_metricsCollector._audioPacketsLost += Convert.ToInt32(statValues[RTCStatsValueName.StatsValueNamePacketsLost]);
}
if (statValues.Keys.Contains(RTCStatsValueName.StatsValueNameCurrentDelayMs))
{
_metricsCollector._audioCurrentDelayMs += Convert.ToDouble(statValues[RTCStatsValueName.StatsValueNameCurrentDelayMs]);
_metricsCollector._audioDelayCount++;
}
if (statValues.Keys.Contains(RTCStatsValueName.StatsValueNameCodecName))
{
_metricsCollector.AudioCodec = statValues[RTCStatsValueName.StatsValueNameCodecName].ToString();
}
}
else if (trackId.StartsWith("video_label"))
{
if (statValues.Keys.Contains(RTCStatsValueName.StatsValueNamePacketsSent))
{
_metricsCollector._videoPacketsSent += Convert.ToInt32(statValues[RTCStatsValueName.StatsValueNamePacketsSent]);
}
if (statValues.Keys.Contains(RTCStatsValueName.StatsValueNamePacketsLost))
{
_metricsCollector._videoPacketsLost += Convert.ToInt32(statValues[RTCStatsValueName.StatsValueNamePacketsLost]);
}
if (statValues.Keys.Contains(RTCStatsValueName.StatsValueNameCurrentDelayMs))
{
_metricsCollector._videoCurrentDelayMs += Convert.ToDouble(statValues[RTCStatsValueName.StatsValueNameCurrentDelayMs]);
_metricsCollector._videoDelayCount++;
}
if (statValues.Keys.Contains(RTCStatsValueName.StatsValueNameFrameHeightSent))
{
_metricsCollector.FrameHeight = Convert.ToInt32(statValues[RTCStatsValueName.StatsValueNameFrameHeightSent]);
}
if (statValues.Keys.Contains(RTCStatsValueName.StatsValueNameFrameWidthSent))
{
_metricsCollector.FrameWidth = Convert.ToInt32(statValues[RTCStatsValueName.StatsValueNameFrameWidthSent]);
}
if (statValues.Keys.Contains(RTCStatsValueName.StatsValueNameCodecName))
{
_metricsCollector.VideoCodec = statValues[RTCStatsValueName.StatsValueNameCodecName].ToString();
}
}
}
}
}
}