<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style id="owaParaStyle" type="text/css">P {margin-top:0;margin-bottom:0;}</style>
</head>
<body ocsi="0" fpstyle="1" style="word-wrap:break-word">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">Hi Ross,<br>
<br>
Thanks a lot for these details, that makes things a lot clearer.<br>
One last question: Let's assume fDurationInMicroseconds is 0; if the transmitting object immediately requests the next frame and doGetNextFrame() returns immediately because no frame is available, isn't there a risk that the application will use 100% of CPU?
 How does the transmitting object avoid using 100% CPU?<br>
<br>
Best regards,<br>
<br>
  Fabrice<br>
<br>
<div style="font-family: Times New Roman; color: #000000; font-size: 16px">
<hr tabindex="-1">
<div style="direction: ltr;" id="divRpF158831"><font color="#000000" face="Tahoma" size="2"><b>From:</b> live-devel [live-devel-bounces@ns.live555.com] on behalf of Ross Finlayson [finlayson@live555.com]<br>
<b>Sent:</b> 05 September 2014 16:38<br>
<b>To:</b> LIVE555 Streaming Media - development & use<br>
<b>Subject:</b> Re: [Live-devel] Please help: I have difficulties implementing the right classes<br>
</font><br>
</div>
<div></div>
<div><br>
<div>
<div>On Sep 5, 2014, at 1:14 AM, Fabrice Triboix <<a href="mailto:fabricet@ovation.co.uk" target="_blank">fabricet@ovation.co.uk</a>> wrote:</div>
<br class="Apple-interchange-newline">
<blockquote type="cite">
<div style="font-family:Helvetica; font-size:14px; font-style:normal; font-variant:normal; font-weight:normal; letter-spacing:normal; line-height:normal; orphans:auto; text-align:start; text-indent:0px; text-transform:none; white-space:normal; widows:auto; word-spacing:0px; word-wrap:break-word">
<div style="direction:ltr; font-family:Tahoma; font-size:10pt">
<div style="">
<div>You're thinking about this the wrong way.  "doGetNextFrame()" gets called automatically (by the downstream, 'transmitting' object) whenever it needs a new NAL unit to transmit.  So you should just deliver the next NAL unit (just one!) whenever "doGetNextFrame()"
 is called.  If your encoder can generate more than one NAL unit at a time, then you'll need to enqueue them in some way.<br>
<font color="008000">[Fabrice] I would be interested in understanding a bit more here. Is live555 is a pull model?</font></div>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
Yes.</div>
<div><br>
<blockquote type="cite">
<div style="font-family:Helvetica; font-size:14px; font-style:normal; font-variant:normal; font-weight:normal; letter-spacing:normal; line-height:normal; orphans:auto; text-align:start; text-indent:0px; text-transform:none; white-space:normal; widows:auto; word-spacing:0px; word-wrap:break-word">
<div style="direction:ltr; font-family:Tahoma; font-size:10pt">
<div style="">
<div><font color="008000">How does the transmitting object knows when to send the next frame? Who/what decides to call doGetNextFrame() and when?<br>
</font></div>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
</div>
The transmitting object (a "MultiFramedRTPSink" subclass) uses the frame duration parameter ("fDurationInMicroseconds") to figure out how long to wait - after transmitting a RTP packet - before requesting another 'frame' from the upstream object.  (I put 'frame'
 in quotes here, because - for H.264 streaming - the piece of data being delivered is actually a H.264 NAL unit.)  If "fDurationInMicroseconds" is 0 (its default value), then the transmitting object will request another 'frame' immediately after transmitting
 a RTP packet.  If data is being delivered from a live encoder - as in your case - then that's OK, because the encoder won't actually deliver data until it becomes available.
<div><br>
</div>
<div>That's why you don't need to set "fDurationInMicroseconds" if your data comes from a live source.</div>
<br>
<br>
<div><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-indent:0px; text-transform:none; white-space:normal; widows:2; word-spacing: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-indent:0px; text-transform:none; white-space:normal; widows:2; word-spacing:0px">Ross
 Finlayson<br>
Live Networks, Inc.<br>
<a href="http://www.live555.com/" target="_blank">http://www.live555.com/</a></span></span>
</div>
<br>
</div>
</div>
</div>
</body>
</html>