private DummySink(UsageEnvironment env, MediaSubsession subsession, string streamId) : base(env) { fSubsession = subsession; fStreamId = streamId; fReceiveBuffer = new string('\0', RECEIVE_BUFFER_SIZE); }
private void subsessionByeHandler(IntPtr clientData) { var subsession = new MediaSubsession(clientData); var rtspClient = new RTSPClient(subsession.miscPtr); Console.Error.WriteLine(rtspClient + "Received RTCP \"BYE\" on \"" + subsession + "\" subsession"); // Now act as if the subsession had closed: SubsessionAfterPlaying(subsession.Native.Native); }
private void SubsessionAfterPlaying(IntPtr clientData) { var subsession = new MediaSubsession(clientData); var rtspClient = new RTSPClient(subsession.miscPtr); // Begin by closing this subsession's stream: Medium.Close(subsession.sink); subsession.sink = null; // Next, check whether *all* subsessions' streams have now been closed: var session = subsession.ParentSession(); var iter = new MediaSubsessionIterator(session); while ((subsession = iter.Next()) != null) { if (subsession.sink != null) { return; // this subsession is still active } } // All subsessions' streams have now been closed, so shutdown the client: ShutdownStream(rtspClient); }
private void subsessionByeHandler(IntPtr clientData) { var subsession = new MediaSubsession (clientData); var rtspClient = new RTSPClient (subsession.miscPtr); Console.Error.WriteLine (rtspClient + "Received RTCP \"BYE\" on \"" + subsession + "\" subsession"); // Now act as if the subsession had closed: SubsessionAfterPlaying (subsession.Native.Native); }
private void SubsessionAfterPlaying(IntPtr clientData) { var subsession = new MediaSubsession (clientData); var rtspClient = new RTSPClient (subsession.miscPtr); // Begin by closing this subsession's stream: Medium.Close (subsession.sink); subsession.sink = null; // Next, check whether *all* subsessions' streams have now been closed: var session = subsession.ParentSession (); var iter = new MediaSubsessionIterator (session); while ((subsession = iter.Next ()) != null) { if (subsession.sink != null) return; // this subsession is still active } // All subsessions' streams have now been closed, so shutdown the client: ShutdownStream (rtspClient); }
public static MediaSink CreateNew(UsageEnvironment env, MediaSubsession subsession, string streamId) { return(new DummySink(env, subsession, streamId)); }