<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><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>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><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>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><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>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><br><br><div apple-content-edited="true">
<span class="Apple-style-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; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-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; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; ">Ross Finlayson<br>Live Networks, Inc.<br><a href="http://www.live555.com/">http://www.live555.com/</a></span></span>
</div>
<br></body></html>