Hello Ross,<br><br>This email is a bit long. Please bear with me for a moment. <br>After going through your 2 excellent faqs and Elphel source, am I correct to say the quickest way to build a MJPEG streamer (from JPEG files in prototype) would be to modify ElphelJPEGDeviceSource.cpp only? <br>
<br>Please help me understand the execution flow of your ElphelJPEGDeviceSource.cpp:<br><ul><li>main() in ElphelStreamer.cpp calls through to createNew() to constructor to startCapture(), which issues JPEG_CMD_ACQUIRE to get a new frame. </li>
</ul><ul><li>A callback is setup in constructor. If newFrameHandler() is called back after doGetNextFrame(), the captured frame will be read out and sent out by deliverFrameToClient() immediately. Otherwise, till JPEGVideoRTPSink calls doGetNextFrame(), the captured frame will then be read and sent. Then deliverFrameToClient() calls startCapture() to get next new frame.</li>
</ul><br>Questions here (just try to understand how it works):<br><ul><li>What is the cmd JPEG_CMD_CATCHUP doing? </li><li>It seems the 1st frame sent out in a stream "may" be obsolete -- captured a long time ago and left in camera when first time doGetNextFrame() is called. Is this true?</li>
</ul><br>In my own version: <br><ul><li>In constructor: since I'll read JPEG files, the callback newFrameHandler cannot be set as no socket.</li><li>In deliverFrameToClient(): I will also need following statement to notice JPEGVideoRTPSink:</li>
</ul>          // Switch to another task, and inform the reader that he has data:<br>          nextTask() = envir().taskScheduler().scheduleDelayedTask(0,<br>               (TaskFunc*)FramedSource::afterGetting, this);<br>
<br>Any other suggestions or comment?<br><br>Thanks  a lot,<br>Imin<br><br><br><br><div class="gmail_quote">On Sun, Jan 15, 2012 at 11:33 PM, Ross Finlayson <span dir="ltr"><<a href="mailto:finlayson@live555.com" target="_blank">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><blockquote type="cite"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin-top:0pt;margin-right:0pt;margin-bottom:0pt;margin-left:0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">


<div style="word-wrap:break-word"><div>However, our RTSP server implementation *can* be used - with some additional programming - to stream motion JPEG. </div>
</div></blockquote><div> <br>I'm a newbie on RTP. Could you please detail the additional programming?<br></div></div></blockquote><div><br></div></div>The two links in the FAQ entry that I showed you should give you the information that you need.  In fact, I recommend that you read the entire FAQ.</div>


<div><br></div></div></blockquote><br>
</div><br>