<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div><blockquote type="cite" class=""><div class=""><blockquote type="cite" class="">If VLC is not waking up periodically to<br class="">‘poll’ for this event occurring, then how does it detect it?<br class=""></blockquote></div></blockquote>[…]<br class=""><blockquote type="cite" class=""><div class="">This is all possible thanks to the ground-breaking cutting-edge technology <br class="">called The Interrupt.</div></blockquote><div><br class=""></div>Yes, of course. But interrupts are not an OS abstraction, and my question was designed to prompt you to think about how interrupt-driven events (like a mouse click on the ‘play’ button) are implemented in the QT library without polling. I don’t know (not being familiar with QT), but my guess would be that they’re probably implemented by calling “select()” or “poll()” to wait on a socket - and my point is that, if you wished, you could signal the LIVE555 event loop thread the same way (and, if you did that, you could get rid of your dreaded 10ms poll :-).</div><div><div><br class=""></div>It’s worth noting, however, that it will never be possible for VLC to consume 0% CPU during the time that it’s pausing a RTSP stream, *precisely because* it needs to periodically send “GET_PARAMETER” commands (i.e., the original subject of this email thread).</div><div><br class=""></div><div>Another thing to keep in mind is that RTSP/RTP clients are supposed to keep sending RTCP “RR” packets even when a stream is paused, and if we’re not in the LIVE555 event loop throughout the time that the stream is paused, then these RTCP packets will not get sent often enough. (In fact, if you’re not calling “doEventLoop()” at all during the time that the stream is paused, then these RTCP packets won’t be sent at all!) This is probably not a big deal, because these RTCP packets aren’t needed to tell the server that the client is still alive (the “GET_PARAMETER” commands will do that). It’s also the case, however that - if you’re not in the LIVE555 event loop during the the time that the stream is paused - RTCP “SR” packets coming from the server won’t be received and processed either. This could be more serious, because it could conceivably mess up the client’s presentation time computation (and a/v synchronization) after it resumes from the pause. I’m not sure whether or not this is really a problem, but the fact remains that - to be fully compliant - we should be executing the LIVE555 event loop all the way from the time of the first “PLAY” command, up until the final “TEARDOWN”.</div><br class=""><br class=""><div apple-content-edited="true" class="">
<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; "><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; ">Ross Finlayson<br class="">Live Networks, Inc.<br class=""><a href="http://www.live555.com/" class="">http://www.live555.com/</a></span></span>
</div>
<br class=""></body></html>