Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 598246a3099b0106d22dd5249478d3b7 > files > 72

ccrtp-devel-1.7.1-2.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>ccRTP: OutgoingDataQueue Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.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="modules.html"><span>Modules</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="classes.html"><span>Class&nbsp;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>OutgoingDataQueue Class Reference<br>
<small>
[<a class="el" href="group__oqueue.html">Generic RTP output queues.</a>]</small>
</h1><!-- doxytag: class="OutgoingDataQueue" --><!-- doxytag: inherits="OutgoingDataQueueBase,DestinationListHandler" -->A generic outgoing RTP data queue supporting multiple destinations.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="oqueue_8h_source.html">oqueue.h</a>&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for OutgoingDataQueue:</div>
<div class="dynsection">

<p><center><img src="class_outgoing_data_queue.png" usemap="#OutgoingDataQueue_map" border="0" alt=""></center>
<map name="OutgoingDataQueue_map">
<area href="class_outgoing_data_queue_base.html" alt="OutgoingDataQueueBase" shape="rect" coords="0,56,155,80">
<area href="class_destination_list_handler.html" alt="DestinationListHandler" shape="rect" coords="165,56,320,80">
<area href="class_r_t_p_queue_base.html" alt="RTPQueueBase" shape="rect" coords="0,0,155,24">
<area href="class_r_t_p_data_queue.html" alt="RTPDataQueue" shape="rect" coords="82,168,237,192">
<area href="class_queue_r_t_c_p_manager.html" alt="QueueRTCPManager" shape="rect" coords="0,224,155,248">
<area href="class_r_t_p_duplex.html" alt="RTPDuplex" shape="rect" coords="165,224,320,248">
<area href="class_a_v_p_queue.html" alt="AVPQueue" shape="rect" coords="0,280,155,304">
</map>
</div>

<p>
<a href="class_outgoing_data_queue-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_outgoing_data_queue_1_1_outgoing_r_t_p_pkt_link.html">OutgoingRTPPktLink</a></td></tr>

<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#c2c71f392728ae9de338111359f88578">addDestination</a> (const InetHostAddress &amp;ia, tpport_t dataPort=<a class="el" href="base_8h.html#d4ff4b9421fd67733fa3ee452c8ee268">DefaultRTPDataPort</a>, tpport_t controlPort=0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#a4807728f2ca11d8ff2d88afb28a3616">addDestination</a> (const InetMcastAddress &amp;ia, tpport_t dataPort=<a class="el" href="base_8h.html#d4ff4b9421fd67733fa3ee452c8ee268">DefaultRTPDataPort</a>, tpport_t controlPort=0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#3cf81fcf6d5fead2a255edf2373eed1c">forgetDestination</a> (const InetHostAddress &amp;ia, tpport_t dataPort=<a class="el" href="base_8h.html#d4ff4b9421fd67733fa3ee452c8ee268">DefaultRTPDataPort</a>, tpport_t controlPort=0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#e7aba5c5562904544357176efb370288">forgetDestination</a> (const InetMcastAddress &amp;ia, tpport_t dataPort=<a class="el" href="base_8h.html#d4ff4b9421fd67733fa3ee452c8ee268">DefaultRTPDataPort</a>, tpport_t controlPort=0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#13be6767f69c52af0f2a68479dcd909d">addContributor</a> (uint32 csrc)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add csrc as the CSRC identifier of a new contributor.  <a href="#13be6767f69c52af0f2a68479dcd909d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#45ae1eff3e686051276c0c9ebff6a571">removeContributor</a> (uint32 csrc)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove CSRC from the list of contributors.  <a href="#45ae1eff3e686051276c0c9ebff6a571"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#d0765c29117efa73574876c5c167abdf">isSending</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determine if outgoing packets are waiting to send.  <a href="#d0765c29117efa73574876c5c167abdf"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#c47cec242d96bc326f0292890e570d64">putData</a> (uint32 stamp, const unsigned char *data=NULL, size_t len=0)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This is used to create a data packet in the send queue.  <a href="#c47cec242d96bc326f0292890e570d64"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#fbfaacb5036a1a94de7834791d50c5bb">sendImmediate</a> (uint32 stamp, const unsigned char *data=NULL, size_t len=0)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This is used to create a data packet and send it immediately.  <a href="#fbfaacb5036a1a94de7834791d50c5bb"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#774ad65daf2bcd1ecb6423036212e20d">setPadding</a> (uint8 <a class="el" href="class_outgoing_data_queue.html#b219ff2ba9ba7781b8e4fc80eae0d574">paddinglen</a>)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set padding.  <a href="#774ad65daf2bcd1ecb6423036212e20d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#d4df9079d56ce32ecbe50d17ef52743f">setMark</a> (bool mark)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set marker bit for the packet in which the next data provided will be send.  <a href="#d4df9079d56ce32ecbe50d17ef52743f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#2743c338ca9b19f4eeb4438132dd0cee">getMark</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get wheter the mark bit will be set in the next packet.  <a href="#2743c338ca9b19f4eeb4438132dd0cee"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#a8026456d9be68a8cb1a83f49758d8e6">setPartial</a> (uint32 timestamp, unsigned char *data, size_t offset, size_t max)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set partial data for an already queued packet.  <a href="#a8026456d9be68a8cb1a83f49758d8e6"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="base_8h.html#c16d853255145e6a903914eb376a84bb">microtimeout_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#d7b9ea7183b6d26cff42979ee06a49ad">getDefaultSchedulingTimeout</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#a602fdcd5d4d21b54eb31c7dc526bc39">setSchedulingTimeout</a> (<a class="el" href="base_8h.html#c16d853255145e6a903914eb376a84bb">microtimeout_t</a> to)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the default scheduling timeout to use when no data packets are waiting to be sent.  <a href="#a602fdcd5d4d21b54eb31c7dc526bc39"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="base_8h.html#c16d853255145e6a903914eb376a84bb">microtimeout_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#94cd08580f0146b14e43c0ed59114f27">getDefaultExpireTimeout</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#e35a0ebe6fd9da0f0cf9504319bd5c1c">setExpireTimeout</a> (<a class="el" href="base_8h.html#c16d853255145e6a903914eb376a84bb">microtimeout_t</a> to)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the "expired" timer for expiring packets pending in the send queue which have gone unsent and are already "too late" to be sent now.  <a href="#e35a0ebe6fd9da0f0cf9504319bd5c1c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="base_8h.html#c16d853255145e6a903914eb376a84bb">microtimeout_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#2a79e1fa3458d3164b60b62cc9955adc">getExpireTimeout</a> () const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">uint32&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#6a8ab8b1dbe72f629d7e736dc3e42a89">getSendPacketCount</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the total number of packets sent so far.  <a href="#6a8ab8b1dbe72f629d7e736dc3e42a89"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">uint32&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#84a52a59e2ef84b6021013776efdf756">getSendOctetCount</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the total number of octets (payload only) sent so far.  <a href="#84a52a59e2ef84b6021013776efdf756"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">uint16&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#6352eb8f6480b25c8e338549bada0012">getSequenceNumber</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the sequence number of the next outgoing packet.  <a href="#6352eb8f6480b25c8e338549bada0012"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#faf07aef8d0fdf2135725f769524eb09">setOutQueueCryptoContext</a> (<a class="el" href="class_crypto_context.html">CryptoContext</a> *cc)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set ouput queue <a class="el" href="class_crypto_context.html" title="The implementation for a SRTP cryptographic context.">CryptoContext</a>.  <a href="#faf07aef8d0fdf2135725f769524eb09"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#c6685ffa2c370144d5008e1d64f5d32e">removeOutQueueCryptoContext</a> (<a class="el" href="class_crypto_context.html">CryptoContext</a> *cc)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove output queue <a class="el" href="class_crypto_context.html" title="The implementation for a SRTP cryptographic context.">CryptoContext</a>.  <a href="#c6685ffa2c370144d5008e1d64f5d32e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_crypto_context.html">CryptoContext</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#5b8edb2a94bd36095509f94d212ef1bf">getOutQueueCryptoContext</a> (uint32 ssrc)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get an output queue <a class="el" href="class_crypto_context.html" title="The implementation for a SRTP cryptographic context.">CryptoContext</a> identified by SSRC.  <a href="#5b8edb2a94bd36095509f94d212ef1bf"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#8e4e2b915de7f4b96ed89b10a97604cb">OutgoingDataQueue</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#38db013dc101861a7507a008b71101e8">~OutgoingDataQueue</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#6ce370ad408d4d06af68dbab51dd0c0c">dispatchImmediate</a> (<a class="el" href="class_outgoing_r_t_p_pkt.html">OutgoingRTPPkt</a> *packet)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This is used to write the RTP data packet to one or more destinations.  <a href="#6ce370ad408d4d06af68dbab51dd0c0c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="base_8h.html#c16d853255145e6a903914eb376a84bb">microtimeout_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#112beed1f3f71c49cc798e99814e58c7">getSchedulingTimeout</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This computes the timeout period for scheduling transmission of the next packet at the "head" of the send buffer.  <a href="#112beed1f3f71c49cc798e99814e58c7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#a1fe37a6312d8111ba9574a1efc65ea5">dispatchDataPacket</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function is used by the service thread to process the next outgoing packet pending in the sending queue.  <a href="#a1fe37a6312d8111ba9574a1efc65ea5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#6ed1a1e41346d284bc8e0d43b5a77e8e">setNextSeqNum</a> (uint32 seqNum)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">For thoses cases in which the application requires a method to set the sequence number for the outgoing stream (such as for implementing the RTSP PLAY command).  <a href="#6ed1a1e41346d284bc8e0d43b5a77e8e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">uint32&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#29de91e1313c732f47d74cf9bd136fe3">getCurrentSeqNum</a> (void)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#062033407b73fab8e40ccc9533a13957">setInitialTimestamp</a> (uint32 ts)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">uint32&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#2b21f2a6e408c9712fc9f087969df51f">getInitialTimestamp</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#52a0b8b62ddc5917d487413ae6234ad5">purgeOutgoingQueue</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#122915159f16fa0aa269c7408b1094f7">setControlPeer</a> (const InetAddress &amp;host, tpport_t port)</td></tr>

<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">Mutex&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#5bf1a4845a5a0d029d08a40905c5d22b">cryptoMutex</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">std::list&lt; <a class="el" href="class_crypto_context.html">CryptoContext</a> * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_outgoing_data_queue.html#f73cab813f65783125b654db509799eb">cryptoContexts</a></td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
A generic outgoing RTP data queue supporting multiple destinations. 
<p>
<dl class="author" compact><dt><b>Author:</b></dt><dd>Federico Montesino Pouzols &lt;<a href="mailto:fedemp@altern.org">fedemp@altern.org</a>&gt; </dd></dl>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="8e4e2b915de7f4b96ed89b10a97604cb"></a><!-- doxytag: member="OutgoingDataQueue::OutgoingDataQueue" ref="8e4e2b915de7f4b96ed89b10a97604cb" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">OutgoingDataQueue::OutgoingDataQueue           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="38db013dc101861a7507a008b71101e8"></a><!-- doxytag: member="OutgoingDataQueue::~OutgoingDataQueue" ref="38db013dc101861a7507a008b71101e8" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual OutgoingDataQueue::~OutgoingDataQueue           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="13be6767f69c52af0f2a68479dcd909d"></a><!-- doxytag: member="OutgoingDataQueue::addContributor" ref="13be6767f69c52af0f2a68479dcd909d" args="(uint32 csrc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void OutgoingDataQueue::addContributor           </td>
          <td>(</td>
          <td class="paramtype">uint32&nbsp;</td>
          <td class="paramname"> <em>csrc</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add csrc as the CSRC identifier of a new contributor. 
<p>
This method adds the CSRC identifier to a list of contributors that will be inserted in every packet enqueued from now on. 
</div>
</div><p>
<a class="anchor" name="a4807728f2ca11d8ff2d88afb28a3616"></a><!-- doxytag: member="OutgoingDataQueue::addDestination" ref="a4807728f2ca11d8ff2d88afb28a3616" args="(const InetMcastAddress &amp;ia, tpport_t dataPort=DefaultRTPDataPort, tpport_t controlPort=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool OutgoingDataQueue::addDestination           </td>
          <td>(</td>
          <td class="paramtype">const InetMcastAddress &amp;&nbsp;</td>
          <td class="paramname"> <em>ia</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tpport_t&nbsp;</td>
          <td class="paramname"> <em>dataPort</em> = <code><a class="el" href="base_8h.html#d4ff4b9421fd67733fa3ee452c8ee268">DefaultRTPDataPort</a></code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tpport_t&nbsp;</td>
          <td class="paramname"> <em>controlPort</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="c2c71f392728ae9de338111359f88578"></a><!-- doxytag: member="OutgoingDataQueue::addDestination" ref="c2c71f392728ae9de338111359f88578" args="(const InetHostAddress &amp;ia, tpport_t dataPort=DefaultRTPDataPort, tpport_t controlPort=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool OutgoingDataQueue::addDestination           </td>
          <td>(</td>
          <td class="paramtype">const InetHostAddress &amp;&nbsp;</td>
          <td class="paramname"> <em>ia</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tpport_t&nbsp;</td>
          <td class="paramname"> <em>dataPort</em> = <code><a class="el" href="base_8h.html#d4ff4b9421fd67733fa3ee452c8ee268">DefaultRTPDataPort</a></code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tpport_t&nbsp;</td>
          <td class="paramname"> <em>controlPort</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="a1fe37a6312d8111ba9574a1efc65ea5"></a><!-- doxytag: member="OutgoingDataQueue::dispatchDataPacket" ref="a1fe37a6312d8111ba9574a1efc65ea5" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t OutgoingDataQueue::dispatchDataPacket           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This function is used by the service thread to process the next outgoing packet pending in the sending queue. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>number of bytes sent. 0 if silent, &lt;0 if error. </dd></dl>

</div>
</div><p>
<a class="anchor" name="6ce370ad408d4d06af68dbab51dd0c0c"></a><!-- doxytag: member="OutgoingDataQueue::dispatchImmediate" ref="6ce370ad408d4d06af68dbab51dd0c0c" args="(OutgoingRTPPkt *packet)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void OutgoingDataQueue::dispatchImmediate           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_outgoing_r_t_p_pkt.html">OutgoingRTPPkt</a> *&nbsp;</td>
          <td class="paramname"> <em>packet</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This is used to write the RTP data packet to one or more destinations. 
<p>
It is used by both sendImmediate and by dispatchDataPacket.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>RTP</em>&nbsp;</td><td>packet to send. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="e7aba5c5562904544357176efb370288"></a><!-- doxytag: member="OutgoingDataQueue::forgetDestination" ref="e7aba5c5562904544357176efb370288" args="(const InetMcastAddress &amp;ia, tpport_t dataPort=DefaultRTPDataPort, tpport_t controlPort=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool OutgoingDataQueue::forgetDestination           </td>
          <td>(</td>
          <td class="paramtype">const InetMcastAddress &amp;&nbsp;</td>
          <td class="paramname"> <em>ia</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tpport_t&nbsp;</td>
          <td class="paramname"> <em>dataPort</em> = <code><a class="el" href="base_8h.html#d4ff4b9421fd67733fa3ee452c8ee268">DefaultRTPDataPort</a></code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tpport_t&nbsp;</td>
          <td class="paramname"> <em>controlPort</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="3cf81fcf6d5fead2a255edf2373eed1c"></a><!-- doxytag: member="OutgoingDataQueue::forgetDestination" ref="3cf81fcf6d5fead2a255edf2373eed1c" args="(const InetHostAddress &amp;ia, tpport_t dataPort=DefaultRTPDataPort, tpport_t controlPort=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool OutgoingDataQueue::forgetDestination           </td>
          <td>(</td>
          <td class="paramtype">const InetHostAddress &amp;&nbsp;</td>
          <td class="paramname"> <em>ia</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tpport_t&nbsp;</td>
          <td class="paramname"> <em>dataPort</em> = <code><a class="el" href="base_8h.html#d4ff4b9421fd67733fa3ee452c8ee268">DefaultRTPDataPort</a></code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tpport_t&nbsp;</td>
          <td class="paramname"> <em>controlPort</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="29de91e1313c732f47d74cf9bd136fe3"></a><!-- doxytag: member="OutgoingDataQueue::getCurrentSeqNum" ref="29de91e1313c732f47d74cf9bd136fe3" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32 OutgoingDataQueue::getCurrentSeqNum           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="94cd08580f0146b14e43c0ed59114f27"></a><!-- doxytag: member="OutgoingDataQueue::getDefaultExpireTimeout" ref="94cd08580f0146b14e43c0ed59114f27" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="base_8h.html#c16d853255145e6a903914eb376a84bb">microtimeout_t</a> OutgoingDataQueue::getDefaultExpireTimeout           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="d7b9ea7183b6d26cff42979ee06a49ad"></a><!-- doxytag: member="OutgoingDataQueue::getDefaultSchedulingTimeout" ref="d7b9ea7183b6d26cff42979ee06a49ad" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="base_8h.html#c16d853255145e6a903914eb376a84bb">microtimeout_t</a> OutgoingDataQueue::getDefaultSchedulingTimeout           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="2a79e1fa3458d3164b60b62cc9955adc"></a><!-- doxytag: member="OutgoingDataQueue::getExpireTimeout" ref="2a79e1fa3458d3164b60b62cc9955adc" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="base_8h.html#c16d853255145e6a903914eb376a84bb">microtimeout_t</a> OutgoingDataQueue::getExpireTimeout           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="2b21f2a6e408c9712fc9f087969df51f"></a><!-- doxytag: member="OutgoingDataQueue::getInitialTimestamp" ref="2b21f2a6e408c9712fc9f087969df51f" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32 OutgoingDataQueue::getInitialTimestamp           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="2743c338ca9b19f4eeb4438132dd0cee"></a><!-- doxytag: member="OutgoingDataQueue::getMark" ref="2743c338ca9b19f4eeb4438132dd0cee" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool OutgoingDataQueue::getMark           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get wheter the mark bit will be set in the next packet. 
<p>

</div>
</div><p>
<a class="anchor" name="5b8edb2a94bd36095509f94d212ef1bf"></a><!-- doxytag: member="OutgoingDataQueue::getOutQueueCryptoContext" ref="5b8edb2a94bd36095509f94d212ef1bf" args="(uint32 ssrc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_crypto_context.html">CryptoContext</a>* OutgoingDataQueue::getOutQueueCryptoContext           </td>
          <td>(</td>
          <td class="paramtype">uint32&nbsp;</td>
          <td class="paramname"> <em>ssrc</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get an output queue <a class="el" href="class_crypto_context.html" title="The implementation for a SRTP cryptographic context.">CryptoContext</a> identified by SSRC. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ssrc</em>&nbsp;</td><td>Request <a class="el" href="class_crypto_context.html" title="The implementation for a SRTP cryptographic context.">CryptoContext</a> for this incoming SSRC </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Pointer to <a class="el" href="class_crypto_context.html" title="The implementation for a SRTP cryptographic context.">CryptoContext</a> of the SSRC of NULL if no context available for this SSRC. </dd></dl>

</div>
</div><p>
<a class="anchor" name="112beed1f3f71c49cc798e99814e58c7"></a><!-- doxytag: member="OutgoingDataQueue::getSchedulingTimeout" ref="112beed1f3f71c49cc798e99814e58c7" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="base_8h.html#c16d853255145e6a903914eb376a84bb">microtimeout_t</a> OutgoingDataQueue::getSchedulingTimeout           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This computes the timeout period for scheduling transmission of the next packet at the "head" of the send buffer. 
<p>
If no packets are waiting, a default timeout is used. This actually forms the "isPending()" timeout of the rtp receiver in the service thread.<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>timeout until next packet is scheduled to send. </dd></dl>

</div>
</div><p>
<a class="anchor" name="84a52a59e2ef84b6021013776efdf756"></a><!-- doxytag: member="OutgoingDataQueue::getSendOctetCount" ref="84a52a59e2ef84b6021013776efdf756" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32 OutgoingDataQueue::getSendOctetCount           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the total number of octets (payload only) sent so far. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>total number of payload octets sent in RTP packets. </dd></dl>

</div>
</div><p>
<a class="anchor" name="6a8ab8b1dbe72f629d7e736dc3e42a89"></a><!-- doxytag: member="OutgoingDataQueue::getSendPacketCount" ref="6a8ab8b1dbe72f629d7e736dc3e42a89" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32 OutgoingDataQueue::getSendPacketCount           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the total number of packets sent so far. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>total number of packets sent </dd></dl>

</div>
</div><p>
<a class="anchor" name="6352eb8f6480b25c8e338549bada0012"></a><!-- doxytag: member="OutgoingDataQueue::getSequenceNumber" ref="6352eb8f6480b25c8e338549bada0012" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint16 OutgoingDataQueue::getSequenceNumber           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the sequence number of the next outgoing packet. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the 16 bit sequence number. </dd></dl>

</div>
</div><p>
<a class="anchor" name="d0765c29117efa73574876c5c167abdf"></a><!-- doxytag: member="OutgoingDataQueue::isSending" ref="d0765c29117efa73574876c5c167abdf" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool OutgoingDataQueue::isSending           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Determine if outgoing packets are waiting to send. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>true if there are packets waiting to be send. </dd></dl>

</div>
</div><p>
<a class="anchor" name="52a0b8b62ddc5917d487413ae6234ad5"></a><!-- doxytag: member="OutgoingDataQueue::purgeOutgoingQueue" ref="52a0b8b62ddc5917d487413ae6234ad5" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void OutgoingDataQueue::purgeOutgoingQueue           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="c47cec242d96bc326f0292890e570d64"></a><!-- doxytag: member="OutgoingDataQueue::putData" ref="c47cec242d96bc326f0292890e570d64" args="(uint32 stamp, const unsigned char *data=NULL, size_t len=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void OutgoingDataQueue::putData           </td>
          <td>(</td>
          <td class="paramtype">uint32&nbsp;</td>
          <td class="paramname"> <em>stamp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&nbsp;</td>
          <td class="paramname"> <em>data</em> = <code>NULL</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>len</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This is used to create a data packet in the send queue. 
<p>
Sometimes a "NULL" or empty packet will be used instead, and these are known as "silent" packets. "Silent" packets are used simply to "push" the scheduler along more accurately by giving the appearence that a next packet is waiting to be sent and to provide a valid timestamp for that packet.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>stamp</em>&nbsp;</td><td>Timestamp for expected send time of packet. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>Value or NULL if special "silent" packet. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>May be 0 to indicate a default by payload type. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="45ae1eff3e686051276c0c9ebff6a571"></a><!-- doxytag: member="OutgoingDataQueue::removeContributor" ref="45ae1eff3e686051276c0c9ebff6a571" args="(uint32 csrc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool OutgoingDataQueue::removeContributor           </td>
          <td>(</td>
          <td class="paramtype">uint32&nbsp;</td>
          <td class="paramname"> <em>csrc</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Remove CSRC from the list of contributors. 
<p>

</div>
</div><p>
<a class="anchor" name="c6685ffa2c370144d5008e1d64f5d32e"></a><!-- doxytag: member="OutgoingDataQueue::removeOutQueueCryptoContext" ref="c6685ffa2c370144d5008e1d64f5d32e" args="(CryptoContext *cc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void OutgoingDataQueue::removeOutQueueCryptoContext           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_crypto_context.html">CryptoContext</a> *&nbsp;</td>
          <td class="paramname"> <em>cc</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Remove output queue <a class="el" href="class_crypto_context.html" title="The implementation for a SRTP cryptographic context.">CryptoContext</a>. 
<p>
The endQueue method (provided by RTPQueue) also deletes all registered CryptoContexts.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>cc</em>&nbsp;</td><td>Pointer to initialized <a class="el" href="class_crypto_context.html" title="The implementation for a SRTP cryptographic context.">CryptoContext</a> to remove. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="fbfaacb5036a1a94de7834791d50c5bb"></a><!-- doxytag: member="OutgoingDataQueue::sendImmediate" ref="fbfaacb5036a1a94de7834791d50c5bb" args="(uint32 stamp, const unsigned char *data=NULL, size_t len=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void OutgoingDataQueue::sendImmediate           </td>
          <td>(</td>
          <td class="paramtype">uint32&nbsp;</td>
          <td class="paramname"> <em>stamp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&nbsp;</td>
          <td class="paramname"> <em>data</em> = <code>NULL</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>len</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This is used to create a data packet and send it immediately. 
<p>
Sometimes a "NULL" or empty packet will be used instead, and these are known as "silent" packets. "Silent" packets are used simply to "push" the scheduler along more accurately by giving the appearence that a next packet is waiting to be sent and to provide a valid timestamp for that packet.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>stamp</em>&nbsp;</td><td>Timestamp immediate send time of packet. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>Value or NULL if special "silent" packet. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>May be 0 to indicate a default by payload type. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="122915159f16fa0aa269c7408b1094f7"></a><!-- doxytag: member="OutgoingDataQueue::setControlPeer" ref="122915159f16fa0aa269c7408b1094f7" args="(const InetAddress &amp;host, tpport_t port)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void OutgoingDataQueue::setControlPeer           </td>
          <td>(</td>
          <td class="paramtype">const InetAddress &amp;&nbsp;</td>
          <td class="paramname"> <em>host</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tpport_t&nbsp;</td>
          <td class="paramname"> <em>port</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline, protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Reimplemented in <a class="el" href="class_r_t_p_duplex.html#5ff45b797428c956156a4a965f318d03">RTPDuplex</a>.</p>

</div>
</div><p>
<a class="anchor" name="e35a0ebe6fd9da0f0cf9504319bd5c1c"></a><!-- doxytag: member="OutgoingDataQueue::setExpireTimeout" ref="e35a0ebe6fd9da0f0cf9504319bd5c1c" args="(microtimeout_t to)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void OutgoingDataQueue::setExpireTimeout           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="base_8h.html#c16d853255145e6a903914eb376a84bb">microtimeout_t</a>&nbsp;</td>
          <td class="paramname"> <em>to</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set the "expired" timer for expiring packets pending in the send queue which have gone unsent and are already "too late" to be sent now. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>to</em>&nbsp;</td><td>timeout to expire unsent packets in milliseconds. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="062033407b73fab8e40ccc9533a13957"></a><!-- doxytag: member="OutgoingDataQueue::setInitialTimestamp" ref="062033407b73fab8e40ccc9533a13957" args="(uint32 ts)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void OutgoingDataQueue::setInitialTimestamp           </td>
          <td>(</td>
          <td class="paramtype">uint32&nbsp;</td>
          <td class="paramname"> <em>ts</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="d4df9079d56ce32ecbe50d17ef52743f"></a><!-- doxytag: member="OutgoingDataQueue::setMark" ref="d4df9079d56ce32ecbe50d17ef52743f" args="(bool mark)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void OutgoingDataQueue::setMark           </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>mark</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set marker bit for the packet in which the next data provided will be send. 
<p>
When transmitting audio, should be set for the first packet of a talk spurt. When transmitting video, should be set for the last packet for a video frame.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>mark</em>&nbsp;</td><td>Marker bit value for next packet. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="6ed1a1e41346d284bc8e0d43b5a77e8e"></a><!-- doxytag: member="OutgoingDataQueue::setNextSeqNum" ref="6ed1a1e41346d284bc8e0d43b5a77e8e" args="(uint32 seqNum)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void OutgoingDataQueue::setNextSeqNum           </td>
          <td>(</td>
          <td class="paramtype">uint32&nbsp;</td>
          <td class="paramname"> <em>seqNum</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
For thoses cases in which the application requires a method to set the sequence number for the outgoing stream (such as for implementing the RTSP PLAY command). 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>seqNum</em>&nbsp;</td><td>next sequence number to be used for outgoing packets. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="faf07aef8d0fdf2135725f769524eb09"></a><!-- doxytag: member="OutgoingDataQueue::setOutQueueCryptoContext" ref="faf07aef8d0fdf2135725f769524eb09" args="(CryptoContext *cc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void OutgoingDataQueue::setOutQueueCryptoContext           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_crypto_context.html">CryptoContext</a> *&nbsp;</td>
          <td class="paramname"> <em>cc</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set ouput queue <a class="el" href="class_crypto_context.html" title="The implementation for a SRTP cryptographic context.">CryptoContext</a>. 
<p>
The endQueue method (provided by RTPQueue) deletes all registered CryptoContexts.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>cc</em>&nbsp;</td><td>Pointer to initialized <a class="el" href="class_crypto_context.html" title="The implementation for a SRTP cryptographic context.">CryptoContext</a>. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="774ad65daf2bcd1ecb6423036212e20d"></a><!-- doxytag: member="OutgoingDataQueue::setPadding" ref="774ad65daf2bcd1ecb6423036212e20d" args="(uint8 paddinglen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void OutgoingDataQueue::setPadding           </td>
          <td>(</td>
          <td class="paramtype">uint8&nbsp;</td>
          <td class="paramname"> <em>paddinglen</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set padding. 
<p>
All outgoing packets will be transparently padded to a multiple of paddinglen.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>paddinglen</em>&nbsp;</td><td>pad packets to a length multiple of paddinglen. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="a8026456d9be68a8cb1a83f49758d8e6"></a><!-- doxytag: member="OutgoingDataQueue::setPartial" ref="a8026456d9be68a8cb1a83f49758d8e6" args="(uint32 timestamp, unsigned char *data, size_t offset, size_t max)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t OutgoingDataQueue::setPartial           </td>
          <td>(</td>
          <td class="paramtype">uint32&nbsp;</td>
          <td class="paramname"> <em>timestamp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&nbsp;</td>
          <td class="paramname"> <em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>offset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>max</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set partial data for an already queued packet. 
<p>
This is often used for multichannel data.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>timestamp</em>&nbsp;</td><td>Timestamp of packet. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>Buffer to copy from. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>offset</em>&nbsp;</td><td>Offset to copy from. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>max</em>&nbsp;</td><td>Maximum data size. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Number of packet data bytes set. </dd></dl>

</div>
</div><p>
<a class="anchor" name="a602fdcd5d4d21b54eb31c7dc526bc39"></a><!-- doxytag: member="OutgoingDataQueue::setSchedulingTimeout" ref="a602fdcd5d4d21b54eb31c7dc526bc39" args="(microtimeout_t to)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void OutgoingDataQueue::setSchedulingTimeout           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="base_8h.html#c16d853255145e6a903914eb376a84bb">microtimeout_t</a>&nbsp;</td>
          <td class="paramname"> <em>to</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set the default scheduling timeout to use when no data packets are waiting to be sent. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>to</em>&nbsp;</td><td>timeout in milliseconds. </td></tr>
  </table>
</dl>

</div>
</div><p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="a9a056c68557ca6fc8da1d95107c6145"></a><!-- doxytag: member="OutgoingDataQueue::complete" ref="a9a056c68557ca6fc8da1d95107c6145" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="class_outgoing_data_queue.html#a9a056c68557ca6fc8da1d95107c6145">OutgoingDataQueue::complete</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="f73cab813f65783125b654db509799eb"></a><!-- doxytag: member="OutgoingDataQueue::cryptoContexts" ref="f73cab813f65783125b654db509799eb" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::list&lt;<a class="el" href="class_crypto_context.html">CryptoContext</a> *&gt; <a class="el" href="class_outgoing_data_queue.html#f73cab813f65783125b654db509799eb">OutgoingDataQueue::cryptoContexts</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="5bf1a4845a5a0d029d08a40905c5d22b"></a><!-- doxytag: member="OutgoingDataQueue::cryptoMutex" ref="5bf1a4845a5a0d029d08a40905c5d22b" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Mutex <a class="el" href="class_outgoing_data_queue.html#5bf1a4845a5a0d029d08a40905c5d22b">OutgoingDataQueue::cryptoMutex</a><code> [mutable, protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="eb285cb0c04acaf302e481f826ac1c75"></a><!-- doxytag: member="OutgoingDataQueue::marked" ref="eb285cb0c04acaf302e481f826ac1c75" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="class_outgoing_data_queue.html#eb285cb0c04acaf302e481f826ac1c75">OutgoingDataQueue::marked</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="398bb8b58fa2bb0c50587fa05000c963"></a><!-- doxytag: member="OutgoingDataQueue::octetCount" ref="398bb8b58fa2bb0c50587fa05000c963" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32 <a class="el" href="class_outgoing_data_queue.html#398bb8b58fa2bb0c50587fa05000c963">OutgoingDataQueue::octetCount</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="b7ec7c4334179365fc1b4b3999ad3e34"></a><!-- doxytag: member="OutgoingDataQueue::overflowTime" ref="b7ec7c4334179365fc1b4b3999ad3e34" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">timeval <a class="el" href="class_outgoing_data_queue.html#b7ec7c4334179365fc1b4b3999ad3e34">OutgoingDataQueue::overflowTime</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="b9fdb3961410b1697375c69cc8d73c8c"></a><!-- doxytag: member="OutgoingDataQueue::packetCount" ref="b9fdb3961410b1697375c69cc8d73c8c" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32 <a class="el" href="class_outgoing_data_queue.html#b9fdb3961410b1697375c69cc8d73c8c">OutgoingDataQueue::packetCount</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="b219ff2ba9ba7781b8e4fc80eae0d574"></a><!-- doxytag: member="OutgoingDataQueue::paddinglen" ref="b219ff2ba9ba7781b8e4fc80eae0d574" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint8 <a class="el" href="class_outgoing_data_queue.html#b219ff2ba9ba7781b8e4fc80eae0d574">OutgoingDataQueue::paddinglen</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="bb80d80c2d64012132033962df4cd49a"></a><!-- doxytag: member="OutgoingDataQueue::sendCC" ref="bb80d80c2d64012132033962df4cd49a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint16 <a class="el" href="class_outgoing_data_queue.html#bb80d80c2d64012132033962df4cd49a">OutgoingDataQueue::sendCC</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="78d98ca365a23ca42189687fa4dacbcc"></a><!-- doxytag: member="OutgoingDataQueue::sendSeq" ref="78d98ca365a23ca42189687fa4dacbcc" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint16 <a class="el" href="class_outgoing_data_queue.html#78d98ca365a23ca42189687fa4dacbcc">OutgoingDataQueue::sendSeq</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="72f53548019b51735cc5cf6cbb3e7fec"></a><!-- doxytag: member="OutgoingDataQueue::sendSources" ref="72f53548019b51735cc5cf6cbb3e7fec" args="[16]" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32 <a class="el" href="class_outgoing_data_queue.html#72f53548019b51735cc5cf6cbb3e7fec">OutgoingDataQueue::sendSources</a>[16]          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="oqueue_8h_source.html">oqueue.h</a></ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jul 24 21:42:25 2009 for ccRTP 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>