<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7652.24">
<TITLE>Re: How do I get the data from the lower levels..... Another DoGetNextFrame question (Ross Finlayson)</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P><FONT SIZE=2 FACE="Arial">Hi Ross,</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">Thanks for the response. I'm sorry that I didn't ask my question in a simpler manner. I hope this email helps. Please remember that I am a novice at Live555, so I cannot see from your deeply experienced eyes.</FONT></P>

<P><FONT SIZE=2 FACE="Arial">Assumption: Live555 has raw RTP video and audio packets coming in, and it re-assembles these into a framed video for output.</FONT></P>

<P><FONT SIZE=2 FACE="Arial">&nbsp;</FONT>

<BR><FONT SIZE=2 FACE="Arial">Question: How do I get the data, from a higher level task, suck as PollTask (below) that is the re-assembled video payload. Video packets may be created from re-assembled RTP packets, or the video packets can be decomposed</FONT></P>

<P><FONT SIZE=2 FACE="Arial">From 1 RTP packet into many video packets.</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">I need to get this video frame data.</FONT>
</P>

<P><FONT SIZE=2 FACE="Courier New">Real Question: How do I get at the processed packets of (video frame) data, say from a MPEG4 or H.264 source, from a background PollTask?</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">Do I use the solution that you gave? &quot;The alternative is to write a static member function that then calls &quot;doGetNextFrame()&quot;, and have &quot;scheduleDelayedTask()&quot; arrange to call the static member function.&nbsp; There are several examples of this in the code already.&quot; Or is that for the incoming, unprocessed RTP data?</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">Or do I use something that calls afterGettingFrame from the sink? I think this is more likely.</FONT>
</P>
<BR>

<P><FONT SIZE=2 FACE="Courier New">I need to call the &quot;thing&quot; that gets me processed data from something like this:</FONT>
</P>

<P><FONT SIZE=2 FACE="Courier New">//=====================================================================</FONT>

<BR><FONT SIZE=2 FACE="Courier New">// This polls the event loop every so often to check for events</FONT>

<BR><FONT SIZE=2 FACE="Courier New">//=====================================================================</FONT>

<BR><FONT SIZE=2 FACE="Courier New">void RtspClientPrivate::PollTask(void* pArgs) {</FONT>
</P>

<P><FONT SIZE=2 FACE="Courier New">&nbsp; //ACE_TRACE( ACE_TEXT(&quot;RtspClientPrivate::PollTask()&quot;) );</FONT>
</P>
<BR>

<P><FONT SIZE=2 FACE="Courier New">&nbsp; RtspClientPrivate *pThis = reinterpret_cast&lt;RtspClientPrivate *&gt;(pArgs);</FONT>
</P>

<P><FONT SIZE=2 FACE="Courier New">&nbsp; if(NULL != pThis){</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Courier New">// Call this again, after a brief delay:</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Courier New">int uSecsToDelay = 100000; // 100 ms</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Courier New">TaskFunc *pFunc = reinterpret_cast&lt;TaskFunc*&gt;(RtspClientPrivate::PollTask);</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Courier New">// HOW DO I GET THE DATA THAT I NEED HERE? (the upper layer)</FONT>
</P>

<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Courier New">pThis-&gt;m_pEnv-&gt;taskScheduler().scheduleDelayedTask(uSecsToDelay, pFunc,</FONT>

<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Courier New">&nbsp; pArgs);</FONT>

<BR><FONT SIZE=2 FACE="Courier New">&nbsp; }</FONT>

<BR><FONT SIZE=2 FACE="Courier New">}</FONT>
</P>

<P><FONT SIZE=2 FACE="Courier New">Thanks, Rusty</FONT>
</P>


<BR>
- ------------------------------------------------------------------------------<BR>
Confidentiality Notice: The information contained in this transmission is legally privileged and confidential, intended only for the use of the individual(s) or entities named above. This email and any files transmitted with it are the property of Pelco. If the reader of this message is not the intended recipient, or an employee or agent responsible for delivering this message to the intended recipient, you are hereby notified that any review, disclosure, copying, distribution, retention, or any action taken or omitted to be taken in reliance on it is prohibited and may be unlawful. If you receive this communication in error, please notify us immediately by telephone call to +1-559-292-1981 or forward the e-mail to administrator@pelco.com and then permanently delete the e-mail and destroy all soft and hard copies of the message and any attachments. Thank you for your cooperation. <BR>
- ------------------------------------------------------------------------------<BR>
</BODY>
</HTML>