Exemple #1
0
        public override RtspResponse SetUp(RtspRequest request)
        {
            var builder = RtspResponse.CreateBuilder().Status(RtspResponse.Status.Ok);

            var transport = request.Transport;

            if (transport == null)
            {
                return(builder.Status(RtspResponse.Status.BadRequest).Build());
            }
            else if (transport.Type != TransportType.RtspInterleaved)
            {
                return(builder.Status(RtspResponse.Status.UnsupportedTransport).Build());
            }

            lock (this)
            {
                PortPair channels = new PortPair(_currentChannel, _currentChannel + 1);
                _currentChannel += 2;

                var session = new InterleavedTestSession(request.Context, _spy, channels, PAYLOAD_TYPE);
                _sessionManager.RegisterSession(session);

                transport = TransportHeader.CreateBuilder()
                            .Type(TransportType.RtspInterleaved)
                            .InterleavedChannels(channels)
                            .Build();

                return(builder.AddHeader(RtspHeaders.Names.TRANSPORT, transport.ToString())
                       .AddHeader(RtspHeaders.Names.SESSION, session.Id)
                       .Build());
            }
        }
 public InterleavedTestSession(RequestContext context, SessionSpy spy, PortPair ports, byte payloadType)
 {
     _payloadType = payloadType;
     _src         = new TestSource(FRAMES_TO_SEND);
     _spy         = spy ?? throw new ArgumentNullException("Spy cannot be null");
     _ports       = ports ?? throw new ArgumentNullException("Ports cannot be null");
     _context     = context ?? throw new ArgumentNullException("Context cannot be null");
 }