<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div><blockquote type="cite"><div ocsi="0" fpstyle="1" 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; -webkit-text-stroke-width: 0px; word-wrap: break-word;"><div style="direction: ltr; font-family: Tahoma; font-size: 10pt;"><div style="font-family: 'Times New Roman'; font-size: 16px;"><div><div><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;">Could it be that calling deliverFrame() multiple times might be wrong?<br></div></div></blockquote><div><br></div>Yes, that's wrong.  Your "doGetNextFrame()" function should deliver one, and only one, H.264 NAL unit (note, not a H.264 'frame') each time it's called.<span class="Apple-converted-space"> </span><br><font color="008000">[Fabrice] All right, that's good to know. From time to time, the encoder sends an SPS and a PPS NALU before the data NALU (all in one "frame"). So when that's the case, I need to somehow have the doGetNextFrame() method being called a 2nd and a 3rd time... What's the best way to do this?</font><br></div></div></div></div></div></blockquote><div><br></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.</div><div><br></div><div><br><blockquote type="cite"><div ocsi="0" fpstyle="1" 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; -webkit-text-stroke-width: 0px; word-wrap: break-word;"><div style="direction: ltr; font-family: Tahoma; font-size: 10pt;"><div style="font-family: 'Times New Roman'; font-size: 16px;"><div><div><font color="008000">BT<font color="008000">W<font color="008000">,</font><span class="Apple-converted-space"> </span>what<span class="Apple-converted-space"> </span></font>would happen<span class="Apple-converted-space"> </span><font color="008000">if the monitor t<font color="008000">h<font color="008000">read signal the trigger twice because 2 frames arrive<font color="008000">d<span class="Apple-converted-space"> </span><font color="008000">almost simul<font color="008000">taneously (and<span class="Apple-converted-space"> </span><font color="008000"><font color="008000">doGetNextFrame()</font></font></font></font></font></font></font></font><span class="Apple-converted-space"> </span>hadn't been called yet for the first frame)?</font><br></div></div></div></div></div></blockquote><div><br></div>The triggered event might end up getting handled just once.  But that should be OK, as long as you are enqueuing incoming NAL units.  (The next time "doGetNextFrame()" gets called, it'll see whatever NAL unit(s) are left in the queue.)</div><div><br></div><div><br><blockquote type="cite"><div ocsi="0" fpstyle="1" 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; -webkit-text-stroke-width: 0px; word-wrap: break-word;"><div style="direction: ltr; font-family: Tahoma; font-size: 10pt;"><div style="font-family: 'Times New Roman'; font-size: 16px;"><div><div><span style="color: rgb(0, 128, 0);">[Fabrice] I am using an MPEG4VideoStreamDiscreteFramer, as in wis-streamer. Is that wrong?</span></div></div></div></div></div></blockquote><div><br></div>No, that's right.  Just make sure that the NAL units that you feed to it do *not* begin with a 0x00 0x00 0x00 0x01 start code.</div><div><br></div><div><br><blockquote type="cite"><div ocsi="0" fpstyle="1" 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; -webkit-text-stroke-width: 0px; word-wrap: break-word;"><div style="direction: ltr; font-family: Tahoma; font-size: 10pt;"><div style="font-family: 'Times New Roman'; font-size: 16px;"><div><div>Finally, because you're delivering from a live source (rather than a prerecorded source like a file), you don't need to set "fDurationInMicroseconds".</div><div><font color="008000">[Fabrice] Is is bad if I do?</font><br></div></div></div></div></div></blockquote><div><br></div>No, as long as you're not setting it to a value that's larger than it should be.<br><blockquote type="cite"></blockquote></div><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;  "><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>Live Networks, Inc.<br><a href="http://www.live555.com/">http://www.live555.com/</a></span></span>
</div>
<br></body></html>