<div>I have a similar use case in which the application has to start and stop the OnDemandRTSPServer before the EOF without the process being killed.</div><div><br></div><div>I am using the code of h264ESVideoTest of testOnDemandRTSPServer</div>
<div><br></div><div>To stop the server i set the watchVariable to a non null value. </div><div>when the  doEventLoop(&watchVariable); returns</div><div><br></div><div>I am doing the following. </div><div>      rtspServer->removeServerMediaSession(sms);</div>
<div><div>      delete sms;</div><div>      env->reclaim();</div><div>      delete scheduler;</div></div><div><br></div><div>Next time when I start the server, port binding is failing. </div><div>Anything I am missing here ?</div>
<div><br></div><br><div class="gmail_quote">On Tue, Nov 15, 2011 at 9:03 AM, Ross Finlayson <span dir="ltr"><<a href="mailto:finlayson@live555.com">finlayson@live555.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div style="word-wrap:break-word"><div><div class="im"><blockquote type="cite"><div>I'm streaming an MPEG-2 TS file using code very similar to testMPEG2TransportStreamer.cpp. In one of my use cases, I need to stop the stream immediately instead of allowing it to complete. I'm doing this currently by passing a watch variable to the taskScheduler().doEventLoop() call and allowing another thread to set that variable when I need to stop playback.<br>
</div></blockquote><div><br></div></div>FYI (and this is unrelated to your question below), you might find it simpler to use the new 'event trigger' mechanism instead; see "UsageEnvironment/include/UsageEnvironment.hh"</div>
<div class="im"><div><br></div><div><br><blockquote type="cite"><div>My question is what do I need to do after that to safely stop and delete my related objects (UsageEnvironment, RTPSink, etc) if I leave the doEventLoop() early?</div>
</blockquote><br></div></div><div>First, you can always just call "exit(0)" to leave and destroy the process (i.e., address space, i.e., application).  The OS will take care of closing/reclaiming its sockets.  This is by far the simplest thing to do, and it's what you should do - unless you have a very good reason for wanting to keep the process around.</div>
<div><br></div><div>But, if you really want to keep the process around, you can reclaim the LIVE555 objects by doing the following (generally speaking, you're reclaiming objects in the reverse order from the order that you created them):</div>
<div><br></div><div><div>  videoSink->stopPlaying();</div><div>  Medium::close(videoSource);</div></div><div>  Medium::close(videoSink);</div><div>  delete rtpGroupsock;</div><div>  delete rtcpGroupsock;</div><div>  env->reclaim();</div>
<div>  delete scheduler;</div><div><br></div><div>(I'm basing this on the "testMPEG2TransportStreamer" code, because you said you used that code as a model.)</div><div>  </div><div><br></div><div><div><div class="im">
<blockquote type="cite"><div>I'd like to reuse the RTPsink but give it different parameters on a subsequent use.<br></div></blockquote><div><br></div></div>No, you can't do that.  Just delete it (using "Medium::close()"), and create a new one next time.</div>
<div><br></div><div>But again, why not just exit the process (application), and launch a new one next time?</div></div><span class="HOEnZb"><font color="#888888"><br><br><div>
<span style="border-collapse:separate;color:rgb(0, 0, 0);font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-size:medium"><span style="border-collapse:separate;color:rgb(0, 0, 0);font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-size:medium">Ross Finlayson<br>
Live Networks, Inc.<br><a href="http://www.live555.com/" target="_blank">http://www.live555.com/</a></span></span>
</div>
<br></font></span></div><br>_______________________________________________<br>
live-devel mailing list<br>
<a href="mailto:live-devel@lists.live555.com">live-devel@lists.live555.com</a><br>
<a href="http://lists.live555.com/mailman/listinfo/live-devel" target="_blank">http://lists.live555.com/mailman/listinfo/live-devel</a><br>
<br></blockquote></div><br>