Beispiel #1
0
        public void ParseTest1()
        {
            int startIndex = 0;
            List <RtcpMessage> messages = RtcpMessage.Parse(rawMessage1, ref startIndex, rawMessage1.Length);

            Assert.AreEqual(rawMessage1.Length, startIndex);
            Assert.AreEqual(false, messages[0].Padding);
            Assert.AreEqual(false, messages[1].Padding);

            Assert.AreEqual(2, messages.Count);

            Assert.AreEqual(RtcpMessageType.SenderReport, messages[0].MessageType);
            Assert.AreEqual(RtcpMessageType.SourceDescription, messages[1].MessageType);

            Assert.AreEqual((UInt32)0x15061, messages[0].SenderReport.Ssrc);
            Assert.AreEqual((UInt64)0xCEA3F3344AE04C05, messages[0].SenderReport.NtpTimestamp);
            Assert.AreEqual((UInt32)0x6E04447, messages[0].SenderReport.RtpTimestamp);
            Assert.AreEqual((UInt32)0x00000023, messages[0].SenderReport.PacketCount);
            Assert.AreEqual((UInt32)0x00000835, messages[0].SenderReport.OctetCount);

            Assert.AreEqual(1, messages[0].SenderReport.ReportBlocks.Length);
            Assert.AreEqual((UInt32)0xEA70896C, messages[0].SenderReport.ReportBlocks[0].SsrcN);
            Assert.AreEqual((Byte)0x13, messages[0].SenderReport.ReportBlocks[0].FractionLost);
            Assert.AreEqual((UInt32)0x3, messages[0].SenderReport.ReportBlocks[0].PacketsLost);
            Assert.AreEqual((UInt32)0xBD47, messages[0].SenderReport.ReportBlocks[0].HighestSequence);
            Assert.AreEqual((UInt32)0x30, messages[0].SenderReport.ReportBlocks[0].InterarrivalJitter);
            Assert.AreEqual((UInt32)0x01020304, messages[0].SenderReport.ReportBlocks[0].LastSrTimestamp);
            Assert.AreEqual((UInt32)0x01020304, messages[0].SenderReport.ReportBlocks[0].DelaySinceLastSr);

            Assert.AreEqual(1, messages[1].SourceDescription.Chunks.Length);
            Assert.AreEqual((UInt32)0x15061, messages[1].SourceDescription.Chunks[0].Ssrc);
            Assert.AreEqual(SourceDescriptionPacketChunk.ItemType.Cname, messages[1].SourceDescription.Chunks[0].Type);
            Assert.AreEqual(@"user@gizmoproject", messages[1].SourceDescription.Chunks[0].Value);
            Assert.AreEqual(0, messages[1].SourceDescription.Chunks[0].PrefixLength);
        }
Beispiel #2
0
        public void IsRtcpMessageTest()
        {
            byte[] bytes1 = new byte[]
            {
                0xff, 0xff, 0xff, 0xff,
                0xb2, 0xEA, 0x46, 0x5C,
            };

            byte[] bytes2 = new byte[]
            {
                0xb2, 0xC8, 0x46, 0x5C,
            };

            byte[] bytes3 = new byte[]
            {
                0xb2, 0xC9, 0x46, 0x5C,
            };

            byte[] bytes4 = new byte[]
            {
                0x02, 0xEA, 0x46, 0x5C,
            };

            Assert.IsFalse(RtcpMessage.IsRtcpMessage(bytes1, 4, bytes1.Length));
            Assert.IsTrue(RtcpMessage.IsRtcpMessage(bytes2, 0, bytes2.Length));
            Assert.IsTrue(RtcpMessage.IsRtcpMessage(bytes3, 0, bytes3.Length));
            Assert.IsFalse(RtcpMessage.IsRtcpMessage(bytes4, 0, bytes4.Length));
        }
Beispiel #3
0
        public void ParseTest2()
        {
            int startIndex = 0;
            List <RtcpMessage> messages = RtcpMessage.Parse(rawMessage2, ref startIndex, rawMessage2.Length);

            Assert.AreEqual(rawMessage2.Length, startIndex);
            Assert.AreEqual(3, messages.Count);
            Assert.AreEqual(false, messages[0].Padding);
            Assert.AreEqual(false, messages[1].Padding);
            Assert.AreEqual(false, messages[2].Padding);

            Assert.AreEqual(RtcpMessageType.SenderReport, messages[0].MessageType);
            Assert.AreEqual(RtcpMessageType.SourceDescription, messages[1].MessageType);
            Assert.AreEqual(RtcpMessageType.Goodbye, messages[2].MessageType);

            Assert.AreEqual((UInt32)0x15061, messages[0].SenderReport.Ssrc);
            Assert.AreEqual((UInt64)0xCEA3F3722B21D53C, messages[0].SenderReport.NtpTimestamp);
            Assert.AreEqual((UInt32)0x8377AFC3, messages[0].SenderReport.RtpTimestamp);
            Assert.AreEqual((UInt32)0x0000002E, messages[0].SenderReport.PacketCount);
            Assert.AreEqual((UInt32)0x000008B9, messages[0].SenderReport.OctetCount);

            Assert.AreEqual(1, messages[0].SenderReport.ReportBlocks.Length);
            Assert.AreEqual((UInt32)0x3B5B229E, messages[0].SenderReport.ReportBlocks[0].SsrcN);
            Assert.AreEqual((Byte)0x0, messages[0].SenderReport.ReportBlocks[0].FractionLost);
            Assert.AreEqual((UInt32)0x0, messages[0].SenderReport.ReportBlocks[0].PacketsLost);
            Assert.AreEqual((UInt32)0x8362, messages[0].SenderReport.ReportBlocks[0].HighestSequence);
            Assert.AreEqual((UInt32)0xFFD253F, messages[0].SenderReport.ReportBlocks[0].InterarrivalJitter);
            Assert.AreEqual((UInt32)0x0, messages[0].SenderReport.ReportBlocks[0].LastSrTimestamp);
            Assert.AreEqual((UInt32)0x0, messages[0].SenderReport.ReportBlocks[0].DelaySinceLastSr);

            Assert.AreEqual(1, messages[1].SourceDescription.Chunks.Length);
            Assert.AreEqual((UInt32)0x15061, messages[1].SourceDescription.Chunks[0].Ssrc);
            Assert.AreEqual(SourceDescriptionPacketChunk.ItemType.Cname, messages[1].SourceDescription.Chunks[0].Type);
            Assert.AreEqual(@"user@gizmoproject", messages[1].SourceDescription.Chunks[0].Value);
            Assert.AreEqual(0, messages[1].SourceDescription.Chunks[0].PrefixLength);

            Assert.AreEqual(1, messages[2].Goodbye.Ssrcs.Length);
            Assert.AreEqual((UInt32)0x15061, messages[2].Goodbye.Ssrcs[0]);
            Assert.IsNull(messages[2].Goodbye.Reason);
        }