Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 7c0c66d6521a2c8efa0ef6bf03291d7f > files > 654

jrtplib-devel-3.7.1-7.fc12.i686.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>jrtplib: src/rtpsources.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="jrtplib.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="dir_e5298977290e638844c8018a73ab0caf.html">src</a>
  </div>
</div>
<div class="contents">
<h1>rtpsources.h</h1><a href="rtpsources_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"></span>
<a name="l00003"></a>00003 <span class="comment">  This file is a part of JRTPLIB</span>
<a name="l00004"></a>00004 <span class="comment">  Copyright (c) 1999-2007 Jori Liesenborgs</span>
<a name="l00005"></a>00005 <span class="comment"></span>
<a name="l00006"></a>00006 <span class="comment">  Contact: jori.liesenborgs@gmail.com</span>
<a name="l00007"></a>00007 <span class="comment"></span>
<a name="l00008"></a>00008 <span class="comment">  This library was developed at the "Expertisecentrum Digitale Media"</span>
<a name="l00009"></a>00009 <span class="comment">  (http://www.edm.uhasselt.be), a research center of the Hasselt University</span>
<a name="l00010"></a>00010 <span class="comment">  (http://www.uhasselt.be). The library is based upon work done for </span>
<a name="l00011"></a>00011 <span class="comment">  my thesis at the School for Knowledge Technology (Belgium/The Netherlands).</span>
<a name="l00012"></a>00012 <span class="comment"></span>
<a name="l00013"></a>00013 <span class="comment">  Permission is hereby granted, free of charge, to any person obtaining a</span>
<a name="l00014"></a>00014 <span class="comment">  copy of this software and associated documentation files (the "Software"),</span>
<a name="l00015"></a>00015 <span class="comment">  to deal in the Software without restriction, including without limitation</span>
<a name="l00016"></a>00016 <span class="comment">  the rights to use, copy, modify, merge, publish, distribute, sublicense,</span>
<a name="l00017"></a>00017 <span class="comment">  and/or sell copies of the Software, and to permit persons to whom the</span>
<a name="l00018"></a>00018 <span class="comment">  Software is furnished to do so, subject to the following conditions:</span>
<a name="l00019"></a>00019 <span class="comment"></span>
<a name="l00020"></a>00020 <span class="comment">  The above copyright notice and this permission notice shall be included</span>
<a name="l00021"></a>00021 <span class="comment">  in all copies or substantial portions of the Software.</span>
<a name="l00022"></a>00022 <span class="comment"></span>
<a name="l00023"></a>00023 <span class="comment">  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS</span>
<a name="l00024"></a>00024 <span class="comment">  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<a name="l00025"></a>00025 <span class="comment">  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL</span>
<a name="l00026"></a>00026 <span class="comment">  THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<a name="l00027"></a>00027 <span class="comment">  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<a name="l00028"></a>00028 <span class="comment">  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span>
<a name="l00029"></a>00029 <span class="comment">  IN THE SOFTWARE.</span>
<a name="l00030"></a>00030 <span class="comment"></span>
<a name="l00031"></a>00031 <span class="comment">*/</span>
<a name="l00032"></a>00032 
<a name="l00037"></a>00037 <span class="preprocessor">#ifndef RTPSOURCES_H</span>
<a name="l00038"></a>00038 <span class="preprocessor"></span>
<a name="l00039"></a>00039 <span class="preprocessor">#define RTPSOURCES_H</span>
<a name="l00040"></a>00040 <span class="preprocessor"></span>
<a name="l00041"></a>00041 <span class="preprocessor">#include "rtpconfig.h"</span>
<a name="l00042"></a>00042 <span class="preprocessor">#include "<a class="code" href="rtpkeyhashtable_8h.html">rtpkeyhashtable.h</a>"</span>
<a name="l00043"></a>00043 <span class="preprocessor">#include "<a class="code" href="rtcpsdespacket_8h.html">rtcpsdespacket.h</a>"</span>
<a name="l00044"></a>00044 <span class="preprocessor">#include "rtptypes.h"</span>
<a name="l00045"></a>00045 <span class="preprocessor">#include "<a class="code" href="rtpmemoryobject_8h.html">rtpmemoryobject.h</a>"</span>
<a name="l00046"></a>00046 
<a name="l00047"></a>00047 <span class="preprocessor">#define RTPSOURCES_HASHSIZE                                                     8317</span>
<a name="l00048"></a>00048 <span class="preprocessor"></span>
<a name="l00049"></a>00049 <span class="keyword">class </span>RTPSources_GetHashIndex
<a name="l00050"></a>00050 {
<a name="l00051"></a>00051 <span class="keyword">public</span>:
<a name="l00052"></a>00052         <span class="keyword">static</span> <span class="keywordtype">int</span> GetIndex(<span class="keyword">const</span> uint32_t &amp;ssrc)                               { <span class="keywordflow">return</span> ssrc%RTPSOURCES_HASHSIZE; }
<a name="l00053"></a>00053 };
<a name="l00054"></a>00054         
<a name="l00055"></a>00055 <span class="keyword">class </span><a class="code" href="classRTPNTPTime.html" title="This is a simple wrapper for the most significant word (MSW) and least significant...">RTPNTPTime</a>;
<a name="l00056"></a>00056 <span class="keyword">class </span><a class="code" href="classRTPTransmitter.html" title="Abstract class from which actual transmission components should be derived.">RTPTransmitter</a>;
<a name="l00057"></a>00057 <span class="keyword">class </span><a class="code" href="classRTCPAPPPacket.html" title="Describes an RTCP APP packet.">RTCPAPPPacket</a>;
<a name="l00058"></a>00058 <span class="keyword">class </span>RTPInternalSourceData;
<a name="l00059"></a>00059 <span class="keyword">class </span><a class="code" href="classRTPRawPacket.html" title="This class is used by the transmission component to store the incoming RTP and RTCP...">RTPRawPacket</a>;
<a name="l00060"></a>00060 <span class="keyword">class </span><a class="code" href="classRTPPacket.html" title="Represents an RTP Packet.">RTPPacket</a>;
<a name="l00061"></a>00061 <span class="keyword">class </span><a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a>;
<a name="l00062"></a>00062 <span class="keyword">class </span><a class="code" href="classRTPAddress.html" title="This class is an abstract class which is used to specify destinations, multicast...">RTPAddress</a>;
<a name="l00063"></a>00063 <span class="keyword">class </span><a class="code" href="classRTPSourceData.html" title="Describes an entry in the RTPSources source table.">RTPSourceData</a>;
<a name="l00064"></a>00064 
<a name="l00071"></a><a class="code" href="classRTPSources.html">00071</a> <span class="keyword">class </span><a class="code" href="classRTPSources.html" title="Represents a table in which information about the participating sources is kept.">RTPSources</a> : <span class="keyword">public</span> RTPMemoryObject
<a name="l00072"></a>00072 {
<a name="l00073"></a>00073 <span class="keyword">public</span>:
<a name="l00075"></a><a class="code" href="classRTPSources.html#c56d7cb0238003c4e803471d1889ff35">00075</a>         <span class="keyword">enum</span> <a class="code" href="classRTPSources.html#c56d7cb0238003c4e803471d1889ff35" title="Type of probation to use for new sources.">ProbationType</a> 
<a name="l00076"></a>00076         { 
<a name="l00077"></a><a class="code" href="classRTPSources.html#c56d7cb0238003c4e803471d1889ff35ab11456c48df990fadb14e0f83c3b3f3">00077</a>                         <a class="code" href="classRTPSources.html#c56d7cb0238003c4e803471d1889ff35ab11456c48df990fadb14e0f83c3b3f3" title="Don&amp;#39;t use the probation algorithm; accept RTP packets immediately.">NoProbation</a>,            
<a name="l00078"></a><a class="code" href="classRTPSources.html#c56d7cb0238003c4e803471d1889ff350960ca55a616c9d41e66a66cfd31949f">00078</a>                         <a class="code" href="classRTPSources.html#c56d7cb0238003c4e803471d1889ff350960ca55a616c9d41e66a66cfd31949f" title="Discard incoming RTP packets originating from a source that&amp;#39;s on probation.">ProbationDiscard</a>,       
<a name="l00079"></a><a class="code" href="classRTPSources.html#c56d7cb0238003c4e803471d1889ff354bae46da9a267cb8bf2db85feb3e3e32">00079</a>                         <a class="code" href="classRTPSources.html#c56d7cb0238003c4e803471d1889ff354bae46da9a267cb8bf2db85feb3e3e32" title="Store incoming RTP packet from a source that&amp;#39;s on probation for later retrieval...">ProbationStore</a>          
<a name="l00080"></a>00080         };
<a name="l00081"></a>00081         
<a name="l00083"></a>00083         <a class="code" href="classRTPSources.html#a4d9dbcbb366052c2ca7e77f3ca086ee" title="In the constructor you can select the probation type you&amp;#39;d like to use and also...">RTPSources</a>(<a class="code" href="classRTPSources.html#c56d7cb0238003c4e803471d1889ff35" title="Type of probation to use for new sources.">ProbationType</a> = <a class="code" href="classRTPSources.html#c56d7cb0238003c4e803471d1889ff354bae46da9a267cb8bf2db85feb3e3e32" title="Store incoming RTP packet from a source that&amp;#39;s on probation for later retrieval...">ProbationStore</a>,<a class="code" href="classRTPMemoryManager.html" title="A memory manager.">RTPMemoryManager</a> *mgr = 0);
<a name="l00084"></a>00084         <span class="keyword">virtual</span> ~<a class="code" href="classRTPSources.html" title="Represents a table in which information about the participating sources is kept.">RTPSources</a>();
<a name="l00085"></a>00085 
<a name="l00087"></a>00087         <span class="keywordtype">void</span> <a class="code" href="classRTPSources.html#b27c9c6c808ffe94b45c0b6ac71b2a39" title="Clears the source table.">Clear</a>();
<a name="l00088"></a>00088 <span class="preprocessor">#ifdef RTP_SUPPORT_PROBATION</span>
<a name="l00089"></a>00089 <span class="preprocessor"></span>
<a name="l00090"></a><a class="code" href="classRTPSources.html#c3b372b90e71197d64ea6b0f5ae23abc">00090</a>         <span class="keywordtype">void</span> <a class="code" href="classRTPSources.html#c3b372b90e71197d64ea6b0f5ae23abc" title="Changes the current probation type.">SetProbationType</a>(<a class="code" href="classRTPSources.html#c56d7cb0238003c4e803471d1889ff35" title="Type of probation to use for new sources.">ProbationType</a> probtype)                                                   { probationtype = probtype; }
<a name="l00091"></a>00091 <span class="preprocessor">#endif // RTP_SUPPORT_PROBATION</span>
<a name="l00092"></a>00092 <span class="preprocessor"></span>
<a name="l00094"></a>00094         <span class="keywordtype">int</span> <a class="code" href="classRTPSources.html#ef1f2d477d997cef4ee714906739d954" title="Creates an entry for our own SSRC identifier.">CreateOwnSSRC</a>(uint32_t ssrc);
<a name="l00095"></a>00095 
<a name="l00097"></a>00097         <span class="keywordtype">int</span> <a class="code" href="classRTPSources.html#e2fba782b1e492f4148ed00647b11b7b" title="Deletes the entry for our own SSRC identifier.">DeleteOwnSSRC</a>();
<a name="l00098"></a>00098 
<a name="l00103"></a>00103         <span class="keywordtype">void</span> <a class="code" href="classRTPSources.html#c04044abff6af58d8bf53f685e7efcd4" title="This function should be called if our own session has sent an RTP packet.">SentRTPPacket</a>();
<a name="l00104"></a>00104 
<a name="l00110"></a>00110         <span class="keywordtype">int</span> <a class="code" href="classRTPSources.html#842f3450bce4d42121943ab33482f049" title="Processes a raw packet rawpack.">ProcessRawPacket</a>(<a class="code" href="classRTPRawPacket.html" title="This class is used by the transmission component to store the incoming RTP and RTCP...">RTPRawPacket</a> *rawpack,<a class="code" href="classRTPTransmitter.html" title="Abstract class from which actual transmission components should be derived.">RTPTransmitter</a> *trans,<span class="keywordtype">bool</span> acceptownpackets);
<a name="l00111"></a>00111 
<a name="l00117"></a>00117         <span class="keywordtype">int</span> <a class="code" href="classRTPSources.html#842f3450bce4d42121943ab33482f049" title="Processes a raw packet rawpack.">ProcessRawPacket</a>(<a class="code" href="classRTPRawPacket.html" title="This class is used by the transmission component to store the incoming RTP and RTCP...">RTPRawPacket</a> *rawpack,<a class="code" href="classRTPTransmitter.html" title="Abstract class from which actual transmission components should be derived.">RTPTransmitter</a> *trans[],<span class="keywordtype">int</span> numtrans,<span class="keywordtype">bool</span> acceptownpackets);
<a name="l00118"></a>00118 
<a name="l00126"></a>00126         <span class="keywordtype">int</span> <a class="code" href="classRTPSources.html#c33e6d5a854a0214683745fa4871df99" title="Processes an RTPPacket instance rtppack which was received at time receivetime and...">ProcessRTPPacket</a>(<a class="code" href="classRTPPacket.html" title="Represents an RTP Packet.">RTPPacket</a> *rtppack,<span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;receivetime,<span class="keyword">const</span> <a class="code" href="classRTPAddress.html" title="This class is an abstract class which is used to specify destinations, multicast...">RTPAddress</a> *senderaddress,<span class="keywordtype">bool</span> *stored);
<a name="l00127"></a>00127 
<a name="l00132"></a>00132         <span class="keywordtype">int</span> <a class="code" href="classRTPSources.html#98748e582443efc22af9d3703b8405e9" title="Processes the RTCP compound packet rtcpcomppack which was received at time receivetime...">ProcessRTCPCompoundPacket</a>(<a class="code" href="classRTCPCompoundPacket.html" title="Represents an RTCP compound packet.">RTCPCompoundPacket</a> *rtcpcomppack,<span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;receivetime,
<a name="l00133"></a>00133                                       <span class="keyword">const</span> <a class="code" href="classRTPAddress.html" title="This class is an abstract class which is used to specify destinations, multicast...">RTPAddress</a> *senderaddress);
<a name="l00134"></a>00134         
<a name="l00140"></a>00140         <span class="keywordtype">int</span> <a class="code" href="classRTPSources.html#7f68afa09ce20ce43981897825e6d6a8" title="Process the sender information of SSRC ssrc into the source table.">ProcessRTCPSenderInfo</a>(uint32_t ssrc,<span class="keyword">const</span> <a class="code" href="classRTPNTPTime.html" title="This is a simple wrapper for the most significant word (MSW) and least significant...">RTPNTPTime</a> &amp;ntptime,uint32_t rtptime,
<a name="l00141"></a>00141                                   uint32_t packetcount,uint32_t octetcount,<span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;receivetime,
<a name="l00142"></a>00142                                   <span class="keyword">const</span> <a class="code" href="classRTPAddress.html" title="This class is an abstract class which is used to specify destinations, multicast...">RTPAddress</a> *senderaddress);
<a name="l00143"></a>00143 
<a name="l00149"></a>00149         <span class="keywordtype">int</span> <a class="code" href="classRTPSources.html#e21e9a0131850036af1f0888e00e6939" title="Processes the report block information which was sent by participant ssrc into the...">ProcessRTCPReportBlock</a>(uint32_t ssrc,uint8_t fractionlost,int32_t lostpackets,
<a name="l00150"></a>00150                                    uint32_t exthighseqnr,uint32_t jitter,uint32_t lsr,
<a name="l00151"></a>00151                                    uint32_t dlsr,<span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;receivetime,<span class="keyword">const</span> <a class="code" href="classRTPAddress.html" title="This class is an abstract class which is used to specify destinations, multicast...">RTPAddress</a> *senderaddress);
<a name="l00152"></a>00152 
<a name="l00158"></a>00158         <span class="keywordtype">int</span> <a class="code" href="classRTPSources.html#73f660bf823c2914ae0001c760f16a58" title="Processes the non-private SDES item from source ssrc into the source table.">ProcessSDESNormalItem</a>(uint32_t ssrc,<a class="code" href="classRTCPSDESPacket.html#8f8a25695509ae0d02ad30ef8a4d8105" title="Identifies the type of an SDES item.">RTCPSDESPacket::ItemType</a> t,<span class="keywordtype">size_t</span> itemlength,
<a name="l00159"></a>00159                                   <span class="keyword">const</span> <span class="keywordtype">void</span> *itemdata,<span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;receivetime,<span class="keyword">const</span> <a class="code" href="classRTPAddress.html" title="This class is an abstract class which is used to specify destinations, multicast...">RTPAddress</a> *senderaddress);
<a name="l00160"></a>00160 <span class="preprocessor">#ifdef RTP_SUPPORT_SDESPRIV</span>
<a name="l00161"></a>00161 <span class="preprocessor"></span>
<a name="l00166"></a>00166         <span class="keywordtype">int</span> <a class="code" href="classRTPSources.html#492f8890741d46b54e439d5a467d330d" title="Processes the SDES private item from source ssrc into the source table.">ProcessSDESPrivateItem</a>(uint32_t ssrc,<span class="keywordtype">size_t</span> prefixlen,<span class="keyword">const</span> <span class="keywordtype">void</span> *prefixdata,
<a name="l00167"></a>00167                                    <span class="keywordtype">size_t</span> valuelen,<span class="keyword">const</span> <span class="keywordtype">void</span> *valuedata,<span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;receivetime,
<a name="l00168"></a>00168                                    <span class="keyword">const</span> <a class="code" href="classRTPAddress.html" title="This class is an abstract class which is used to specify destinations, multicast...">RTPAddress</a> *senderaddress);
<a name="l00169"></a>00169 <span class="preprocessor">#endif //RTP_SUPPORT_SDESPRIV</span>
<a name="l00170"></a>00170 <span class="preprocessor"></span>
<a name="l00175"></a>00175         <span class="keywordtype">int</span> <a class="code" href="classRTPSources.html#61736aa4ae81bfc81e80572cbce829f4" title="Processes the BYE message for SSRC ssrc.">ProcessBYE</a>(uint32_t ssrc,<span class="keywordtype">size_t</span> reasonlength,<span class="keyword">const</span> <span class="keywordtype">void</span> *reasondata,<span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;receivetime,
<a name="l00176"></a>00176                        <span class="keyword">const</span> <a class="code" href="classRTPAddress.html" title="This class is an abstract class which is used to specify destinations, multicast...">RTPAddress</a> *senderaddress);
<a name="l00177"></a>00177 
<a name="l00187"></a>00187         <span class="keywordtype">int</span> <a class="code" href="classRTPSources.html#e40ec5e3050fd5fd7b54747a1e820f8a" title="If we heard from source ssrc, but no actual data was added to the source table (for...">UpdateReceiveTime</a>(uint32_t ssrc,<span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;receivetime,<span class="keyword">const</span> <a class="code" href="classRTPAddress.html" title="This class is an abstract class which is used to specify destinations, multicast...">RTPAddress</a> *senderaddress);
<a name="l00188"></a>00188         
<a name="l00193"></a>00193         <span class="keywordtype">bool</span> <a class="code" href="classRTPSources.html#c8747f436086589bfee2084234defe95" title="Starts the iteration over the participants by going to the first member in the table...">GotoFirstSource</a>();
<a name="l00194"></a>00194 
<a name="l00199"></a>00199         <span class="keywordtype">bool</span> <a class="code" href="classRTPSources.html#65bd8698115d3b763b5ac38fc3b42f6c" title="Sets the current source to be the next source in the table.">GotoNextSource</a>();
<a name="l00200"></a>00200 
<a name="l00205"></a>00205         <span class="keywordtype">bool</span> <a class="code" href="classRTPSources.html#69f37b0e4d481a59f635fc1649e28e43" title="Sets the current source to be the previous source in the table.">GotoPreviousSource</a>();
<a name="l00206"></a>00206 
<a name="l00213"></a>00213         <span class="keywordtype">bool</span> <a class="code" href="classRTPSources.html#966a98e4afea3abada097c01735e4e67" title="Sets the current source to be the first source in the table which has RTPPacket instances...">GotoFirstSourceWithData</a>();
<a name="l00214"></a>00214 
<a name="l00221"></a>00221         <span class="keywordtype">bool</span> <a class="code" href="classRTPSources.html#46ddc7441d44b7227d5baf3574e1d33d" title="Sets the current source to be the next source in the table which has RTPPacket instances...">GotoNextSourceWithData</a>();
<a name="l00222"></a>00222 
<a name="l00229"></a>00229         <span class="keywordtype">bool</span> <a class="code" href="classRTPSources.html#53dc16afd0189a5b1c67426be7708386" title="Sets the current source to be the previous source in the table which has RTPPacket...">GotoPreviousSourceWithData</a>();
<a name="l00230"></a>00230 
<a name="l00232"></a>00232         <a class="code" href="classRTPSourceData.html" title="Describes an entry in the RTPSources source table.">RTPSourceData</a> *<a class="code" href="classRTPSources.html#61b84304a6410176670b5e1b00721994" title="Returns the RTPSourceData instance for the currently selected participant.">GetCurrentSourceInfo</a>();
<a name="l00233"></a>00233 
<a name="l00237"></a>00237         <a class="code" href="classRTPSourceData.html" title="Describes an entry in the RTPSources source table.">RTPSourceData</a> *<a class="code" href="classRTPSources.html#146fe59548c166cfeda6d3b8783407a9" title="Returns the RTPSourceData instance for the participant identified by ssrc, or NULL...">GetSourceInfo</a>(uint32_t ssrc);
<a name="l00238"></a>00238 
<a name="l00240"></a>00240         <a class="code" href="classRTPPacket.html" title="Represents an RTP Packet.">RTPPacket</a> *<a class="code" href="classRTPSources.html#594c99fc7a335d7e93c2ed47c1c02af0" title="Extracts the next packet from the received packets queue of the current participant...">GetNextPacket</a>();
<a name="l00241"></a>00241 
<a name="l00243"></a>00243         <span class="keywordtype">bool</span> <a class="code" href="classRTPSources.html#a75a36aab15264a90a88b0b3e36d40fa" title="Returns true if an entry for participant ssrc exists and false otherwise.">GotEntry</a>(uint32_t ssrc);
<a name="l00244"></a>00244 
<a name="l00246"></a><a class="code" href="classRTPSources.html#8e30b451ad3bfc5878039aacf948ffb1">00246</a>         <a class="code" href="classRTPSourceData.html" title="Describes an entry in the RTPSources source table.">RTPSourceData</a> *<a class="code" href="classRTPSources.html#8e30b451ad3bfc5878039aacf948ffb1" title="If present, it returns the RTPSourceData instance of the entry which was created...">GetOwnSourceInfo</a>()                                                               { <span class="keywordflow">return</span> (<a class="code" href="classRTPSourceData.html" title="Describes an entry in the RTPSources source table.">RTPSourceData</a> *)owndata; }
<a name="l00247"></a>00247 
<a name="l00251"></a>00251         <span class="keywordtype">void</span> <a class="code" href="classRTPSources.html#b1fe3bfc0a6e7b6dd7cf59f4c1a5e737" title="Assuming that the current time is curtime, time out the members from whom we haven&amp;#39;t...">Timeout</a>(<span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;curtime,<span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;timeoutdelay);
<a name="l00252"></a>00252 
<a name="l00256"></a>00256         <span class="keywordtype">void</span> <a class="code" href="classRTPSources.html#3b99c1b7677beacca83ae7c86cc23bc5" title="Assuming that the current time is curtime, remove the sender flag for senders from...">SenderTimeout</a>(<span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;curtime,<span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;timeoutdelay);
<a name="l00257"></a>00257 
<a name="l00261"></a>00261         <span class="keywordtype">void</span> <a class="code" href="classRTPSources.html#ad06efd956eb1c7f4b480923af30ab3a" title="Assuming that the current time is curtime, remove the members who sent a BYE packet...">BYETimeout</a>(<span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;curtime,<span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;timeoutdelay);
<a name="l00262"></a>00262 
<a name="l00266"></a>00266         <span class="keywordtype">void</span> <a class="code" href="classRTPSources.html#6a4c3ab017a5227c50383da61a472a26" title="Assuming that the current time is curtime, clear the SDES NOTE items which haven&amp;#39;t...">NoteTimeout</a>(<span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;curtime,<span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;timeoutdelay);
<a name="l00267"></a>00267 
<a name="l00272"></a>00272         <span class="keywordtype">void</span> <a class="code" href="classRTPSources.html#03ac395cf67ba9ce6d678469aadd1e36" title="Combines the functions SenderTimeout, BYETimeout, Timeout and NoteTimeout.">MultipleTimeouts</a>(<span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;curtime,<span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;sendertimeout,
<a name="l00273"></a>00273                               <span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;byetimeout,<span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;generaltimeout,
<a name="l00274"></a>00274                               <span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;notetimeout);
<a name="l00275"></a>00275 
<a name="l00277"></a><a class="code" href="classRTPSources.html#caaa950b9f6d8c81f750fece23bda9ac">00277</a>         <span class="keywordtype">int</span> <a class="code" href="classRTPSources.html#caaa950b9f6d8c81f750fece23bda9ac" title="Returns the number of participants which are marked as a sender.">GetSenderCount</a>()<span class="keyword"> const                                                                              </span>{ <span class="keywordflow">return</span> sendercount; }
<a name="l00278"></a>00278 
<a name="l00280"></a><a class="code" href="classRTPSources.html#e81cb87510d39dd7dbdf6ec804048dc4">00280</a>         <span class="keywordtype">int</span> <a class="code" href="classRTPSources.html#e81cb87510d39dd7dbdf6ec804048dc4" title="Returns the total number of entries in the source table.">GetTotalCount</a>()<span class="keyword"> const                                                                               </span>{ <span class="keywordflow">return</span> totalcount; }
<a name="l00281"></a>00281 
<a name="l00283"></a><a class="code" href="classRTPSources.html#24ed4bb346c0f4d2c584c4c65ce16dbd">00283</a>         <span class="keywordtype">int</span> <a class="code" href="classRTPSources.html#24ed4bb346c0f4d2c584c4c65ce16dbd" title="Returns the number of members which have been validated and which haven&amp;#39;t sent...">GetActiveMemberCount</a>()<span class="keyword"> const                                                                </span>{ <span class="keywordflow">return</span> activecount; } 
<a name="l00284"></a>00284 <span class="preprocessor">#ifdef RTPDEBUG</span>
<a name="l00285"></a>00285 <span class="preprocessor"></span>        <span class="keywordtype">void</span> Dump();
<a name="l00286"></a>00286         <span class="keywordtype">void</span> SafeCountTotal();
<a name="l00287"></a>00287         <span class="keywordtype">void</span> SafeCountSenders();
<a name="l00288"></a>00288         <span class="keywordtype">void</span> SafeCountActive();
<a name="l00289"></a>00289 <span class="preprocessor">#endif // RTPDEBUG</span>
<a name="l00290"></a>00290 <span class="preprocessor"></span><span class="keyword">protected</span>:
<a name="l00292"></a><a class="code" href="classRTPSources.html#5a1f8939650336419a0dea540677bbc7">00292</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTPSources.html#5a1f8939650336419a0dea540677bbc7" title="Is called when an RTP packet is about to be processed.">OnRTPPacket</a>(<a class="code" href="classRTPPacket.html" title="Represents an RTP Packet.">RTPPacket</a> *pack,<span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;receivetime, <span class="keyword">const</span> <a class="code" href="classRTPAddress.html" title="This class is an abstract class which is used to specify destinations, multicast...">RTPAddress</a> *senderaddress)           { }
<a name="l00293"></a>00293 
<a name="l00295"></a><a class="code" href="classRTPSources.html#f8ef83a602ead1123faa902fa6af4aaa">00295</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTPSources.html#f8ef83a602ead1123faa902fa6af4aaa" title="Is called when an RTCP compound packet is about to be processed.">OnRTCPCompoundPacket</a>(<a class="code" href="classRTCPCompoundPacket.html" title="Represents an RTCP compound packet.">RTCPCompoundPacket</a> *pack,<span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;receivetime, 
<a name="l00296"></a>00296                                           <span class="keyword">const</span> <a class="code" href="classRTPAddress.html" title="This class is an abstract class which is used to specify destinations, multicast...">RTPAddress</a> *senderaddress)                                                                                      { }
<a name="l00297"></a>00297 
<a name="l00303"></a><a class="code" href="classRTPSources.html#369b955e01936e1c49e4da8146791492">00303</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTPSources.html#369b955e01936e1c49e4da8146791492" title="Is called when an SSRC collision was detected.">OnSSRCCollision</a>(<a class="code" href="classRTPSourceData.html" title="Describes an entry in the RTPSources source table.">RTPSourceData</a> *srcdat,<span class="keyword">const</span> <a class="code" href="classRTPAddress.html" title="This class is an abstract class which is used to specify destinations, multicast...">RTPAddress</a> *senderaddress,<span class="keywordtype">bool</span> isrtp)                          { }
<a name="l00304"></a>00304 
<a name="l00306"></a><a class="code" href="classRTPSources.html#f21af9dabce2ed0deb92ee1308eb04a0">00306</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTPSources.html#f21af9dabce2ed0deb92ee1308eb04a0" title="Is called when another CNAME was received than the one already present for source...">OnCNAMECollision</a>(<a class="code" href="classRTPSourceData.html" title="Describes an entry in the RTPSources source table.">RTPSourceData</a> *srcdat,<span class="keyword">const</span> <a class="code" href="classRTPAddress.html" title="This class is an abstract class which is used to specify destinations, multicast...">RTPAddress</a> *senderaddress,
<a name="l00307"></a>00307                                       <span class="keyword">const</span> uint8_t *cname,<span class="keywordtype">size_t</span> cnamelength)                                                                          { }
<a name="l00308"></a>00308 
<a name="l00310"></a><a class="code" href="classRTPSources.html#46ab4b9c7442caa004abcff576139bb2">00310</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTPSources.html#46ab4b9c7442caa004abcff576139bb2" title="Is called when a new entry srcdat is added to the source table.">OnNewSource</a>(<a class="code" href="classRTPSourceData.html" title="Describes an entry in the RTPSources source table.">RTPSourceData</a> *srcdat)                                                                                                                         { }
<a name="l00311"></a>00311 
<a name="l00313"></a><a class="code" href="classRTPSources.html#bc3a1069ebdf73d781544530e3c5b8ca">00313</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTPSources.html#bc3a1069ebdf73d781544530e3c5b8ca" title="Is called when the entry srcdat is about to be deleted from the source table.">OnRemoveSource</a>(<a class="code" href="classRTPSourceData.html" title="Describes an entry in the RTPSources source table.">RTPSourceData</a> *srcdat)                                                                                                                      { }
<a name="l00314"></a>00314 
<a name="l00316"></a><a class="code" href="classRTPSources.html#2cd75cc3f603582a31aa99ace09dd873">00316</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTPSources.html#2cd75cc3f603582a31aa99ace09dd873" title="Is called when participant srcdat is timed out.">OnTimeout</a>(<a class="code" href="classRTPSourceData.html" title="Describes an entry in the RTPSources source table.">RTPSourceData</a> *srcdat)                                                                                                                           { }
<a name="l00317"></a>00317 
<a name="l00319"></a><a class="code" href="classRTPSources.html#1bbeddd31bac8ef75bdad69cb81ca49a">00319</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTPSources.html#1bbeddd31bac8ef75bdad69cb81ca49a" title="Is called when participant srcdat is timed after having sent a BYE packet.">OnBYETimeout</a>(<a class="code" href="classRTPSourceData.html" title="Describes an entry in the RTPSources source table.">RTPSourceData</a> *srcdat)                                                                                                                        { }
<a name="l00320"></a>00320 
<a name="l00322"></a><a class="code" href="classRTPSources.html#e04daf1b7191eb4162ce270ccd73e6a8">00322</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTPSources.html#e04daf1b7191eb4162ce270ccd73e6a8" title="Is called when a BYE packet has been processed for source srcdat.">OnBYEPacket</a>(<a class="code" href="classRTPSourceData.html" title="Describes an entry in the RTPSources source table.">RTPSourceData</a> *srcdat)                                                                                                                         { }
<a name="l00323"></a>00323 
<a name="l00327"></a><a class="code" href="classRTPSources.html#d9972da5317f73769232e3163889b66f">00327</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTPSources.html#d9972da5317f73769232e3163889b66f" title="Is called when an RTCP APP packet apppacket has been received at time receivetime...">OnAPPPacket</a>(<a class="code" href="classRTCPAPPPacket.html" title="Describes an RTCP APP packet.">RTCPAPPPacket</a> *apppacket,<span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;receivetime,
<a name="l00328"></a>00328                                  <span class="keyword">const</span> <a class="code" href="classRTPAddress.html" title="This class is an abstract class which is used to specify destinations, multicast...">RTPAddress</a> *senderaddress)                                                                                                       { }
<a name="l00329"></a>00329 
<a name="l00331"></a><a class="code" href="classRTPSources.html#bdd7d51f2587ab92fbc91eb537cb3642">00331</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTPSources.html#bdd7d51f2587ab92fbc91eb537cb3642" title="Is called when an unknown RTCP packet type was detected.">OnUnknownPacketType</a>(<a class="code" href="classRTCPPacket.html" title="Base class for specific types of RTCP packets.">RTCPPacket</a> *rtcppack,<span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;receivetime,
<a name="l00332"></a>00332                                          <span class="keyword">const</span> <a class="code" href="classRTPAddress.html" title="This class is an abstract class which is used to specify destinations, multicast...">RTPAddress</a> *senderaddress)                                                                                       { }
<a name="l00333"></a>00333 
<a name="l00335"></a><a class="code" href="classRTPSources.html#4ebaddf9449384b5f90e5bd4bcd706f1">00335</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTPSources.html#4ebaddf9449384b5f90e5bd4bcd706f1" title="Is called when an unknown packet format for a known packet type was detected.">OnUnknownPacketFormat</a>(<a class="code" href="classRTCPPacket.html" title="Base class for specific types of RTCP packets.">RTCPPacket</a> *rtcppack,<span class="keyword">const</span> <a class="code" href="classRTPTime.html" title="This class is used to specify wallclock time, delay intervals etc.">RTPTime</a> &amp;receivetime,
<a name="l00336"></a>00336                                            <span class="keyword">const</span> <a class="code" href="classRTPAddress.html" title="This class is an abstract class which is used to specify destinations, multicast...">RTPAddress</a> *senderaddress)                                                                                     { }
<a name="l00337"></a>00337 
<a name="l00339"></a><a class="code" href="classRTPSources.html#1263312e289f2221dab0af70888e706c">00339</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRTPSources.html#1263312e289f2221dab0af70888e706c" title="Is called when the SDES NOTE item for source srcdat has been timed out.">OnNoteTimeout</a>(<a class="code" href="classRTPSourceData.html" title="Describes an entry in the RTPSources source table.">RTPSourceData</a> *srcdat)                                                                                                                       { }
<a name="l00340"></a>00340 <span class="keyword">private</span>:
<a name="l00341"></a>00341         <span class="keywordtype">void</span> ClearSourceList();
<a name="l00342"></a>00342         <span class="keywordtype">int</span> ObtainSourceDataInstance(uint32_t ssrc,RTPInternalSourceData **srcdat,<span class="keywordtype">bool</span> *created);
<a name="l00343"></a>00343         <span class="keywordtype">int</span> GetRTCPSourceData(uint32_t ssrc,<span class="keyword">const</span> <a class="code" href="classRTPAddress.html" title="This class is an abstract class which is used to specify destinations, multicast...">RTPAddress</a> *senderaddress,RTPInternalSourceData **srcdat,<span class="keywordtype">bool</span> *newsource);
<a name="l00344"></a>00344         <span class="keywordtype">bool</span> CheckCollision(RTPInternalSourceData *srcdat,<span class="keyword">const</span> <a class="code" href="classRTPAddress.html" title="This class is an abstract class which is used to specify destinations, multicast...">RTPAddress</a> *senderaddress,<span class="keywordtype">bool</span> isrtp);
<a name="l00345"></a>00345         
<a name="l00346"></a>00346         RTPKeyHashTable&lt;const uint32_t,RTPInternalSourceData*,RTPSources_GetHashIndex,RTPSOURCES_HASHSIZE&gt; sourcelist;
<a name="l00347"></a>00347         
<a name="l00348"></a>00348         <span class="keywordtype">int</span> sendercount;
<a name="l00349"></a>00349         <span class="keywordtype">int</span> totalcount;
<a name="l00350"></a>00350         <span class="keywordtype">int</span> activecount;
<a name="l00351"></a>00351 
<a name="l00352"></a>00352 <span class="preprocessor">#ifdef RTP_SUPPORT_PROBATION</span>
<a name="l00353"></a>00353 <span class="preprocessor"></span>        <a class="code" href="classRTPSources.html#c56d7cb0238003c4e803471d1889ff35" title="Type of probation to use for new sources.">ProbationType</a> probationtype;
<a name="l00354"></a>00354 <span class="preprocessor">#endif // RTP_SUPPORT_PROBATION</span>
<a name="l00355"></a>00355 <span class="preprocessor"></span>
<a name="l00356"></a>00356         RTPInternalSourceData *owndata;
<a name="l00357"></a>00357 };
<a name="l00358"></a>00358 
<a name="l00359"></a>00359 <span class="preprocessor">#endif // RTPSOURCES_H</span>
<a name="l00360"></a>00360 <span class="preprocessor"></span>
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun Jul 26 09:42:08 2009 for jrtplib by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>