<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:odc="urn:schemas-microsoft-com:office:odc" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rtc="http://microsoft.com/officenet/conferencing" xmlns:D="DAV:" xmlns:Repl="http://schemas.microsoft.com/repl/" xmlns:mt="http://schemas.microsoft.com/sharepoint/soap/meetings/" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ppda="http://www.passport.com/NameSpace.xsd" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" xmlns:ec="http://www.w3.org/2001/04/xmlenc#" xmlns:sp="http://schemas.microsoft.com/sharepoint/" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcs="http://schemas.microsoft.com/data/udc/soap" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:udcp2p="http://schemas.microsoft.com/data/udc/parttopart" xmlns:wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:dsss="http://schemas.microsoft.com/office/2006/digsig-setup" xmlns:dssi="http://schemas.microsoft.com/office/2006/digsig" xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" xmlns:mver="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mrels="http://schemas.openxmlformats.org/package/2006/relationships" xmlns:spwp="http://microsoft.com/sharepoint/webpartpages" xmlns:ex12t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:pptsl="http://schemas.microsoft.com/sharepoint/soap/SlideLibrary/" xmlns:spsl="http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService" xmlns:Z="urn:schemas-microsoft-com:" xmlns:st="" xmlns="http://www.w3.org/TR/REC-html40"><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        text-align:right;
        direction:rtl;
        unicode-bidi:embed;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
h2
        {mso-style-priority:9;
        mso-style-link:"Heading 2 Char";
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:18.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:36.0pt;
        margin-bottom:0cm;
        margin-left:0cm;
        margin-bottom:.0001pt;
        text-align:right;
        direction:rtl;
        unicode-bidi:embed;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.Heading2Char
        {mso-style-name:"Heading 2 Char";
        mso-style-priority:9;
        mso-style-link:"Heading 2";
        font-family:"Times New Roman","serif";
        font-weight:bold;}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.apple-style-span
        {mso-style-name:apple-style-span;}
span.EmailStyle21
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#1F497D'>Hi ,<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#1F497D'>Sending again ,<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#1F497D'>Did it get anywhere? I'm kind of stack now in Developing process.<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#1F497D'>Please help.<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#1F497D'>Eyal<o:p></o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Eyal Shveky <br><b>Sent:</b> Thursday, November 25, 2010 5:22 PM<br><b>To:</b> 'live-devel@lists.live555.com'<br><b>Subject:</b> LiveMedia in a Directshow Filter<o:p></o:p></span></p></div></div><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><o:p> </o:p></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'>Hi,<o:p></o:p></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'>I'm trying to write a DirectShow(DS <span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>acronyms</span>) Source Filter that will send the test.m4e (from live tests) over RTSP to VLC player.<o:p></o:p></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><o:p> </o:p></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'>In my CRTSPFilter::Run DS method of my DirectShow filter I'm creating a   new thread that follows  testOnDemandRTSPServer.cpp<o:p></o:p></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'>Except it <span style='color:#0070C0'>addSubsession</span> my <span style='color:#0070C0'>MPEG4VideoLiveServerMediaSubsession </span>subsession<o:p></o:p></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><o:p> </o:p></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>char const* streamName = "mpeg4ESVideoTest";</span><span style='font-family:"Arial","sans-serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>ServerMediaSession* sms = ServerMediaSession::createNew(*env, streamName, streamName, descriptionString);</span><span lang=HE dir=RTL style='font-family:"Times New Roman","serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>MPEG4VideoLiveServerMediaSubsession* mP4LiveSms = MPEG4VideoLiveServerMediaSubsession::createNew(*env, streamName, reuseFirstSource);</span><span style='font-family:"Arial","sans-serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>sms->addSubsession(mP4LiveSms);</span><span lang=HE dir=RTL style='font-family:"Times New Roman","serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>rtspServer->addServerMediaSession(sms);</span><span style='font-family:"Arial","sans-serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>announceStreamLive(rtspServer, sms, streamName);</span><span lang=HE dir=RTL style='font-family:"Times New Roman","serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='font-family:"Arial","sans-serif";color:#0070C0'><o:p> </o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'>also instead of <span style='color:#0070C0'>env->taskScheduler().doEventLoop(); // does not return</span><span lang=HE dir=RTL style='font-family:"Times New Roman","serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'>Tried to use the <span style='color:#0070C0'>fWatchVariable</span> the synchronized between 2 threads(1) DS Graph,2) My <span style='color:#0070C0'>testOnDemandRTSPServer</span>  ) when I'm getting new data (<span style='color:#0070C0'>IMediaSample</span>) from the DS Filter I'm setting <span style='color:#0070C0'>WatchVariable=1.<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:red'>Question #1:  How should  <b><u>Notify</u></b> MPEG4LiveSource::doGetNextFrame ? </span><span style='font-family:"Arial","sans-serif";color:red'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span  style='color:#0070C0'>while(true)</span><span lang=HE dir=RTL style='font-family:"Times New Roman","serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span dir=LTR></span><span style='color:#0070C0'><span dir=LTR></span>{</span><span style='font-family:"Arial","sans-serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;text-indent:36.0pt;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>fWatchVariable = 0;</span><span lang=HE dir=RTL style='font-family:"Times New Roman","serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;text-indent:36.0pt;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>dummyTask(NULL);  // 100 ms to awake a sleeping server.<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;text-indent:36.0pt;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>env->taskScheduler().doEventLoop(&fWatchVariable);<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;text-indent:36.0pt;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>if (fWatchVariable =1)<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;text-indent:36.0pt;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>{<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;text-indent:36.0pt;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>                // How to Invoke MPEG4LiveSource::doGetNextFrame? </span><span style='font-family:"Arial","sans-serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='margin-left:36.0pt;text-align:left;text-indent:36.0pt;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>printf("\nEventThrown=%d,",fWatchVariable); </span><span lang=HE dir=RTL style='font-family:"Arial","sans-serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;text-indent:36.0pt;direction:ltr;unicode-bidi:embed'><span dir=LTR></span><span style='color:#0070C0'><span dir=LTR></span>}</span><span lang=HE dir=RTL style='font-family:"Arial","sans-serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span dir=LTR></span><span style='color:#0070C0'><span dir=LTR></span>}</span><span lang=HE dir=RTL style='font-family:"Times New Roman","serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><o:p> </o:p></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'>Following live FAQ and <span style='color:#0070C0'>testOnDemandRTSPServer</span> I subclass the following classes: <o:p></o:p></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'>MPEG4LiveServerMediaSubsession : public <span style='color:#0070C0'>OnDemandServerMediaSubsession</span>  and MPEG4LiveSource : public <span style='color:#0070C0'>FramedSource</span>.<o:p></o:p></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'>Observing <span style='color:#0070C0'>MPEG4VideoFileServerMediaSubsession</span> I Implement <span style='color:#0070C0'>createNewStreamSource</span> :<o:p></o:p></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><o:p> </o:p></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'><a href="http://www.live555.com/liveMedia/doxygen/html/classFramedSource.html"><span style='color:#0070C0;text-decoration:none'>FramedSource</span></a>* <a href="http://www.live555.com/liveMedia/doxygen/html/classMPEG4VideoFileServerMediaSubsession.html#dea3048c120932abeac4c9ffd7fc2fa4"><span style='color:#0070C0;text-decoration:none'>MPEG4VideoFileServerMediaSubsession</span></a><a href="http://www.live555.com/liveMedia/doxygen/html/classMPEG4VideoFileServerMediaSubsession.html#dea3048c120932abeac4c9ffd7fc2fa4"><span style='color:#0070C0;text-decoration:none'>::createNewStreamSource</span></a>(unsigned /*clientSessionId*/, unsigned& estBitrate)<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>{<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>  estBitrate = 500; // kbps, estimate<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>  DeviceParamters *params = new DeviceParamters(); // Empty not uses<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>   // Create the video source:<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>  MPEG4LiveSource * mpeg4LiveSource    = <a href="http://www.live555.com/liveMedia/doxygen/html/classByteStreamFileSource.html#56c59cbcdf5c0bda78ece747037c6ff0"><span style='color:#0070C0;text-decoration:none'> MPEG4LiveSource::createNew</span></a>(<a href="http://www.live555.com/liveMedia/doxygen/html/classMedium.html#df197ac43716f54ffaa5c30c282cf767"><span style='color:#0070C0;text-decoration:none'>envir</span></a>(),params);<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>  if (mpeg4LiveSource    == <a href="http://www.live555.com/liveMedia/doxygen/html/UsageEnvironment_8hh.html#070d2ce7b6bb7e5c05602aa8c308d0c4"><span style='color:#0070C0;text-decoration:none'>NULL</span></a>) return <a href="http://www.live555.com/liveMedia/doxygen/html/UsageEnvironment_8hh.html#070d2ce7b6bb7e5c05602aa8c308d0c4"><span style='color:#0070C0;text-decoration:none'>NULL</span></a>;<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>  //  <a href="http://www.live555.com/liveMedia/doxygen/html/classFileServerMediaSubsession.html#cb1211712e0a6328f2acad830d898bf6"><span style='color:#0070C0;text-decoration:none'>fFileSize</span></a> = fileSource-><a href="http://www.live555.com/liveMedia/doxygen/html/classByteStreamFileSource.html#bca441959007427a78e9d802e3bf2d16"><span style='color:#0070C0;text-decoration:none'>fileSize</span></a>();  Not used getting frames from DS filter<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>  // Create a framer for the Video Elementary Stream:<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>  return <a href="http://www.live555.com/liveMedia/doxygen/html/classMPEG4VideoStreamFramer.html#d9e0d387596bc7c94591b9c0b25a2b06"><span style='color:#0070C0;text-decoration:none'>MPEG4VideoStreamFramer::createNew</span></a>(<a href="http://www.live555.com/liveMedia/doxygen/html/classMedium.html#df197ac43716f54ffaa5c30c282cf767"><span style='color:#0070C0;text-decoration:none'>envir</span></a>(),mpeg4LiveSource);<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>}<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><o:p> </o:p></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'>Is the same in MPEG4VideoFileServerMediaSubsession:<span style='font-family:"Arial","sans-serif"'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span lang=HE dir=RTL style='font-family:"Arial","sans-serif"'><o:p> </o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>RTPSink* MPEG4VideoLiveServerMediaSubsession::createNewRTPSink(Groupsock* rtpGroupsock,</span><span lang=HE dir=RTL style='font-family:"Times New Roman","serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span dir=LTR></span><span style='color:#0070C0'><span dir=LTR></span>                                   unsigned char rtpPayloadTypeIfDynamic,<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>                                   FramedSource* /*inputSource*/) {<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>  return MPEG4ESVideoRTPSink::createNew(envir(), rtpGroupsock,<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>                                                                                rtpPayloadTypeIfDynamic);<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>}<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><o:p> </o:p></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:red'>Question #2: Is It ok to use MPEG4VideoStreamFramer or should I use MPEG4VideoStreamDiscreteFramer in order to parse test.m4e file.?<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='font-family:"Arial","sans-serif"'><o:p> </o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>void MPEG4LiveSource::doGetNextFrame() {</span><span lang=HE dir=RTL style='font-family:"Times New Roman","serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span dir=LTR></span><span style='color:#0070C0'><span dir=LTR></span>                </span><span style='font-family:"Arial","sans-serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>                if (!isCurrentlyAwaitingData()) </span><span lang=HE dir=RTL style='font-family:"Times New Roman","serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span dir=LTR></span><span style='color:#0070C0'><span dir=LTR></span>                                  return; // we're not ready for the data yet<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>                </span><span style='font-family:"Arial","sans-serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>                // WaitForSingleObject( hEvent, INFINITE ); </span><span style='color:red'>// Question #3:  Try to sync both thread Ignoring <a href="http://www.live555.com/liveMedia/doxygen/html/classTaskScheduler.html"><span style='color:red;text-decoration:none'>TaskScheduler::doEventLoop()</span></a> , is that recommendable?</span><span lang=HE dir=RTL style='font-family:"Times New Roman","serif";color:red'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='font-family:"Arial","sans-serif";color:#0070C0'><o:p> </o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>                if (lGActualDataLength < fMaxSize)         {</span><span lang=HE dir=RTL style='font-family:"Arial","sans-serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span dir=LTR></span><span style='color:#0070C0'><span dir=LTR></span>                   memcpy(fTo,pbGReadBuffer,lGActualDataLength);</span><span lang=HE dir=RTL style='font-family:"Times New Roman","serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span dir=LTR></span><span style='color:#0070C0'><span dir=LTR></span>                }</span><span style='font-family:"Arial","sans-serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>                else        {              </span><span lang=HE dir=RTL style='font-family:"Arial","sans-serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span dir=LTR></span><span style='color:#0070C0'><span dir=LTR></span>                                fNumTruncatedBytes = lGActualDataLength - fMaxSize;</span><span lang=HE dir=RTL style='font-family:"Times New Roman","serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span dir=LTR></span><span style='color:#0070C0'><span dir=LTR></span>                }</span><span style='font-family:"Arial","sans-serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span lang=HE dir=RTL style='font-family:"Arial","sans-serif";color:#0070C0'><o:p> </o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span dir=LTR></span><span style='color:#0070C0'><span dir=LTR></span>                fFrameSize = lGActualDataLength;</span><span lang=HE dir=RTL style='font-family:"Times New Roman","serif";color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span dir=LTR></span><span style='color:#0070C0'><span dir=LTR></span>                gettimeofday(&fPresentationTime,NULL);<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>                fDurationInMicroseconds = 1000000 / 25; // 25 fps <o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>                                <o:p></o:p></span></p><p class=MsoNormal style='text-align:left;text-indent:36.0pt;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>nextTask() = envir().taskScheduler().scheduleDelayedTask(0,(TaskFunc*)FramedSource::afterGetting, this);     </span><span style='color:red'>// Question #4:  Is that good to call suitable here?</span><span style='color:#0070C0'><o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'>}<o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:red'>Question #5:  Run over the Mailing list I could not found any example of streaming from DirectShopw filter, Is there a problem with that approach? <o:p></o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><span style='color:#0070C0'><o:p> </o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'>Thanks,<o:p></o:p></p><p class=MsoNormal dir=RTL><span dir=LTR><o:p> </o:p></span></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><b><i><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#0070C0'>    S</span></i></b><b><i><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>hveky <span style='color:#0070C0'>E</span>yal<o:p></o:p></span></i></b></p><p class=MsoNormal style='text-align:left;direction:ltr;unicode-bidi:embed'><b><i><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>Software Engineer at Aeronautics</span></i></b><i><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'><o:p></o:p></span></i></p><p class=MsoNormal style='text-align:left;line-height:150%;text-autospace:none;direction:ltr;unicode-bidi:embed'><b><i><u><span style='font-size:10.0pt;line-height:150%;font-family:"Arial","sans-serif"'>E-Mail</span></u></i></b><b><i><span style='font-size:10.0pt;line-height:150%;font-family:"Arial","sans-serif"'>:<span style='color:blue'> <a href="mailto:eyals@aeronautics-sys.com">eyals@aeronautics-sys.com</a><span lang=HE dir=RTL><o:p></o:p></span></span></span></i></b></p><p class=MsoNormal style='text-align:left;line-height:150%;text-autospace:none;direction:ltr;unicode-bidi:embed'><b><i><u><span style='font-size:10.0pt;line-height:150%;font-family:"Arial","sans-serif"'>Ext:</span></u></i></b><b><i><span style='font-size:10.0pt;line-height:150%;font-family:"Arial","sans-serif";color:blue'> +972-8-9433600 #731<o:p></o:p></span></i></b></p><p class=MsoNormal dir=RTL><span dir=LTR><o:p> </o:p></span></p></div>
<HR><Font face=arial size=2 color=black><I>

LEGAL NOTICE - Unless expressly stated otherwise, this message, its annexes, attachments, appendixes, 
<BR>any subsequent correspondence, and any document, data, sketches, plans and/or other material 
that<BR> is hereby attached, are proprietary confidential and may be legally privileged.<BR>
Nothing in this e-mail is intended to conclude a contract on behalf of Aeronautics or 
<BR>make it subject to any other legally binding commitments, unless the e-mail <BR>
contains an express statement to the contrary or incorporates a formal Purchase Order.<BR>
This transmission is intended for the named addressee only. Unless you are the named addressee (or 
<BR>authorised to receive it for the addressee) you may not copy or use it, or disclose it to anyone else, any 
<BR>disclosure or copying of the contents of this e-mail or any action taken (or not taken) in reliance on it is 
<BR>unauthorised and may be unlawful. If you are not an addressee, please inform the sender 
immediately.<BR>



</body></html>