public void Read2() { using (var sdpFile = selfAssembly.GetManifestResourceStream("Rtsp.Tests.Sdp.Data.test2.sdp")) using (TextReader testReader = new StreamReader(sdpFile)) { SdpFile readenSDP = SdpFile.Read(testReader); Assert.AreEqual(0, readenSDP.Version); Assert.AreEqual("Teleste", readenSDP.Origin.Username); Assert.AreEqual("749719680", readenSDP.Origin.SessionId); Assert.AreEqual(2684264576, readenSDP.Origin.SessionVersion); Assert.AreEqual("IN", readenSDP.Origin.NetType); Assert.AreEqual("IP4", readenSDP.Origin.AddressType); Assert.AreEqual("172.16.200.193", readenSDP.Origin.UnicastAddress); Assert.AreEqual("COD_9003-P2-0", readenSDP.Session); Assert.AreEqual("Teleste MPH H.264 Encoder - HK01121135", readenSDP.SessionInformation); Assert.AreEqual(1, readenSDP.Connection.NumberOfAddress, "Number of address"); Assert.IsInstanceOf <ConnectionIP4>(readenSDP.Connection); Assert.AreEqual(16, (readenSDP.Connection as ConnectionIP4).Ttl); Assert.AreEqual(1, readenSDP.Timings.Count); //Assert.Fail("Timing not well implemented..."); Assert.AreEqual(1, readenSDP.Medias.Count); Media media = readenSDP.Medias[0]; Assert.AreEqual(3, media.Attributs.Count); // Check the reader have read everything Assert.AreEqual(string.Empty, testReader.ReadToEnd()); } }
public void Read3() { using (var sdpFile = selfAssembly.GetManifestResourceStream("Rtsp.Tests.Sdp.Data.test3.sdp")) using (TextReader testReader = new StreamReader(sdpFile)) { SdpFile readenSDP = SdpFile.Read(testReader); // Check the reader have read everything Assert.AreEqual(string.Empty, testReader.ReadToEnd()); } }
public void Read2() { using (var sdpFile = selfAssembly.GetManifestResourceStream("Rtsp.Tests.Sdp.Data.test2.sdp")) using (TextReader testReader = new StreamReader(sdpFile)) { SdpFile readenSDP = SdpFile.Read(testReader); Assert.AreEqual(0, readenSDP.Version); Assert.AreEqual("Teleste", readenSDP.Origin.Username); Assert.AreEqual("749719680", readenSDP.Origin.SessionId); Assert.AreEqual(2684264576, readenSDP.Origin.SessionVersion); Assert.AreEqual("IN", readenSDP.Origin.NetType); Assert.AreEqual("IP4", readenSDP.Origin.AddressType); Assert.AreEqual("172.16.200.193", readenSDP.Origin.UnicastAddress); Assert.AreEqual("COD_9003-P2-0", readenSDP.Session); Assert.AreEqual("Teleste MPH H.264 Encoder - HK01121135", readenSDP.SessionInformation); Assert.AreEqual(1, readenSDP.Connection.NumberOfAddress, "Number of address"); Assert.IsInstanceOfType(typeof(ConnectionIP4), readenSDP.Connection); Assert.AreEqual(16, (readenSDP.Connection as ConnectionIP4).Ttl); Assert.AreEqual(1, readenSDP.Timings.Count); //Assert.Fail("Timing not well implemented..."); Assert.AreEqual(1, readenSDP.Medias.Count); Media media = readenSDP.Medias[0]; Assert.AreEqual(3, media.Attributs.Count); var rtpmaps = media.Attributs.Where(x => x.Key == AttributRtpMap.NAME).ToList(); Assert.AreEqual(1, rtpmaps.Count); Assert.AreEqual("98 H264/90000", rtpmaps[0].Value); Assert.IsInstanceOfType(typeof(AttributRtpMap), rtpmaps[0]); Assert.AreEqual(98, (rtpmaps[0] as AttributRtpMap).PayloadNumber); var fmtps = media.Attributs.Where(x => x.Key == AttributFmtp.NAME).ToList(); Assert.AreEqual(1, rtpmaps.Count); Assert.AreEqual("98 profile-level-id=42A01E; sprop-parameter-sets=Z01AH/QFgJP6,aP48gA==; packetization-mode=1;", fmtps[0].Value); Assert.IsInstanceOfType(typeof(AttributFmtp), fmtps[0]); Assert.AreEqual(98, (fmtps[0] as AttributFmtp).PayloadNumber); Assert.AreEqual("profile-level-id=42A01E; sprop-parameter-sets=Z01AH/QFgJP6,aP48gA==; packetization-mode=1;", (fmtps[0] as AttributFmtp).FormatParameter); // Check the reader have read everything Assert.AreEqual(string.Empty, testReader.ReadToEnd()); } }
private void RTSP_ProcessDescribeRequest(RtspRequestDescribe message, RtspListener listener) { String requested_url = message.RtspUri.ToString(); Task <byte[]> sdpDataTask = _videoSource != null? OnProvideSdpData?.Invoke(Id, _videoSource) : Task.FromResult <byte[]>(null); byte[] sdpData = sdpDataTask.Result; if (sdpData != null) { Rtsp.Messages.RtspResponse describe_response = message.CreateResponse(_logger); describe_response.AddHeader("Content-Base: " + requested_url); describe_response.AddHeader("Content-Type: application/sdp"); describe_response.Data = sdpData; describe_response.AdjustContentLength(); // Create the reponse to DESCRIBE // This must include the Session Description Protocol (SDP) describe_response.Headers.TryGetValue(RtspHeaderNames.ContentBase, out contentBase); using (StreamReader sdp_stream = new StreamReader(new MemoryStream(describe_response.Data))) { _sdpFile = Rtsp.Sdp.SdpFile.Read(sdp_stream); } listener.SendMessage(describe_response); } else { Rtsp.Messages.RtspResponse describe_response = (message as Rtsp.Messages.RtspRequestDescribe).CreateResponse(_logger); //Method Not Valid In This State" describe_response.ReturnCode = 455; listener.SendMessage(describe_response); } }