public void RoundtripRTCPReceiverResportUnitTest() { logger.LogDebug("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name); logger.BeginScope(System.Reflection.MethodBase.GetCurrentMethod().Name); uint ssrc = 1; uint rrSsrc = 5; byte fractionLost = 6; int packetsLost = 7; uint highestSeqNum = 8; uint jitter = 9; uint lastSRTimestamp = 10; uint delaySinceLastSR = 11; var rr = new ReceptionReportSample(rrSsrc, fractionLost, packetsLost, highestSeqNum, jitter, lastSRTimestamp, delaySinceLastSR); var receiverReport = new RTCPReceiverReport(ssrc, new List <ReceptionReportSample> { rr }); byte[] buffer = receiverReport.GetBytes(); RTCPReceiverReport parsedRR = new RTCPReceiverReport(buffer); Assert.Equal(ssrc, parsedRR.SSRC); Assert.Equal(rrSsrc, parsedRR.ReceptionReports.First().SSRC); Assert.Equal(fractionLost, parsedRR.ReceptionReports.First().FractionLost); Assert.Equal(packetsLost, parsedRR.ReceptionReports.First().PacketsLost); Assert.Equal(highestSeqNum, parsedRR.ReceptionReports.First().ExtendedHighestSequenceNumber); Assert.Equal(jitter, parsedRR.ReceptionReports.First().Jitter); Assert.Equal(lastSRTimestamp, parsedRR.ReceptionReports.First().LastSenderReportTimestamp); Assert.Equal(delaySinceLastSR, parsedRR.ReceptionReports.First().DelaySinceLastSenderReport); }
public void RoundtripRTCPCompoundPacketUnitTest() { logger.LogDebug("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name); logger.BeginScope(System.Reflection.MethodBase.GetCurrentMethod().Name); uint ssrc = 23; ulong ntpTs = 1; uint rtpTs = 2; uint packetCount = 3; uint octetCount = 4; uint rrSsrc = 5; byte fractionLost = 6; int packetsLost = 7; uint highestSeqNum = 8; uint jitter = 9; uint lastSRTimestamp = 10; uint delaySinceLastSR = 11; string cname = "dummy"; ReceptionReportSample rr = new ReceptionReportSample(rrSsrc, fractionLost, packetsLost, highestSeqNum, jitter, lastSRTimestamp, delaySinceLastSR); var sr = new RTCPSenderReport(ssrc, ntpTs, rtpTs, packetCount, octetCount, new List <ReceptionReportSample> { rr }); RTCPSDesReport sdesReport = new RTCPSDesReport(ssrc, cname); RTCPCompoundPacket compoundPacket = new RTCPCompoundPacket(sr, sdesReport); byte[] buffer = compoundPacket.GetBytes(); RTCPCompoundPacket parsedCP = new RTCPCompoundPacket(buffer); RTCPSenderReport parsedSR = parsedCP.SenderReport; Assert.Equal(ssrc, parsedSR.SSRC); Assert.Equal(ntpTs, parsedSR.NtpTimestamp); Assert.Equal(rtpTs, parsedSR.RtpTimestamp); Assert.Equal(packetCount, parsedSR.PacketCount); Assert.Equal(octetCount, parsedSR.OctetCount); Assert.True(parsedSR.ReceptionReports.Count == 1); Assert.Equal(rrSsrc, parsedSR.ReceptionReports.First().SSRC); Assert.Equal(fractionLost, parsedSR.ReceptionReports.First().FractionLost); Assert.Equal(packetsLost, parsedSR.ReceptionReports.First().PacketsLost); Assert.Equal(highestSeqNum, parsedSR.ReceptionReports.First().ExtendedHighestSequenceNumber); Assert.Equal(jitter, parsedSR.ReceptionReports.First().Jitter); Assert.Equal(lastSRTimestamp, parsedSR.ReceptionReports.First().LastSenderReportTimestamp); Assert.Equal(delaySinceLastSR, parsedSR.ReceptionReports.First().DelaySinceLastSenderReport); Assert.Equal(cname, parsedCP.SDesReport.CNAME); }
/// <summary> /// Diagnostic handler to print out our RTCP reports from the remote WebRTC peer. /// </summary> private static void RtpSession_OnReceiveReport(SDPMediaTypesEnum mediaType, RTCPCompoundPacket report) { //var rr = recvRtcpReport.ReceiverReport.ReceptionReports.FirstOrDefault(); //if (rr != null) //{ // Console.WriteLine($"RTCP {mediaType} Receiver Report: SSRC {rr.SSRC}, pkts lost {rr.PacketsLost}, delay since SR {rr.DelaySinceLastSenderReport}."); //} //else //{ // Console.WriteLine($"RTCP {mediaType} Receiver Report: empty."); //} ReceptionReportSample rrs = null; string cname = null; if (report.SDesReport != null) { cname = report.SDesReport.CNAME; } if (report.SenderReport != null) { var sr = report.SenderReport; rrs = report.SenderReport.ReceptionReports.FirstOrDefault(); Console.WriteLine($"RTCP recv SR {mediaType}, ssrc {sr.SSRC}, packets sent {sr.PacketCount}, bytes sent {sr.OctetCount}, (cname={cname})."); } if (report.ReceiverReport != null) { rrs = report.ReceiverReport.ReceptionReports.FirstOrDefault(); } if (rrs != null) { Console.WriteLine($"RTCP recv RR {mediaType}, ssrc {rrs.SSRC}, pkts lost {rrs.PacketsLost}, delay since SR {rrs.DelaySinceLastSenderReport}, (cname={cname})."); } if (report.Bye != null) { Console.WriteLine($"RTCP recv BYE {mediaType}, reason {report.Bye.Reason}, (cname={cname})."); } }