/usr/share/doc/libortp8-dev/html/rtp_8h_source.html is in libortp-dev 3.3.2-4.1ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>oRTP: include/ortp/rtp.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">oRTP
 <span id="projectnumber">0.16.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Generated by Doxygen 1.7.6.1 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="annotated.html"><span>Data Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">include/ortp/rtp.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> The oRTP library is an RTP (Realtime Transport Protocol - rfc3550) stack.</span>
<a name="l00003"></a>00003 <span class="comment"> Copyright (C) 2001 Simon MORLAT simon.morlat@linphone.org</span>
<a name="l00004"></a>00004 <span class="comment"></span>
<a name="l00005"></a>00005 <span class="comment"> This library is free software; you can redistribute it and/or</span>
<a name="l00006"></a>00006 <span class="comment"> modify it under the terms of the GNU Lesser General Public</span>
<a name="l00007"></a>00007 <span class="comment"> License as published by the Free Software Foundation; either</span>
<a name="l00008"></a>00008 <span class="comment"> version 2.1 of the License, or (at your option) any later version.</span>
<a name="l00009"></a>00009 <span class="comment"></span>
<a name="l00010"></a>00010 <span class="comment"> This library is distributed in the hope that it will be useful,</span>
<a name="l00011"></a>00011 <span class="comment"> but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00012"></a>00012 <span class="comment"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span>
<a name="l00013"></a>00013 <span class="comment"> Lesser General Public License for more details.</span>
<a name="l00014"></a>00014 <span class="comment"></span>
<a name="l00015"></a>00015 <span class="comment"> You should have received a copy of the GNU Lesser General Public</span>
<a name="l00016"></a>00016 <span class="comment"> License along with this library; if not, write to the Free Software</span>
<a name="l00017"></a>00017 <span class="comment"> Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</span>
<a name="l00018"></a>00018 <span class="comment">*/</span>
<a name="l00019"></a>00019
<a name="l00020"></a>00020
<a name="l00021"></a>00021 <span class="preprocessor">#ifndef RTP_H</span>
<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define RTP_H</span>
<a name="l00023"></a>00023 <span class="preprocessor"></span>
<a name="l00024"></a>00024 <span class="preprocessor">#include <ortp/port.h></span>
<a name="l00025"></a>00025 <span class="preprocessor">#include <ortp/str_utils.h></span>
<a name="l00026"></a>00026
<a name="l00027"></a>00027 <span class="preprocessor">#define IPMAXLEN 20</span>
<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#define UDP_MAX_SIZE 1500</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#define RTP_FIXED_HEADER_SIZE 12</span>
<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#define RTP_DEFAULT_JITTER_TIME 80 </span><span class="comment">/*miliseconds*/</span>
<a name="l00031"></a>00031 <span class="preprocessor">#define RTP_DEFAULT_MULTICAST_TTL 5 </span><span class="comment">/*hops*/</span>
<a name="l00032"></a>00032 <span class="preprocessor">#define RTP_DEFAULT_MULTICAST_LOOPBACK 0 </span><span class="comment">/*false*/</span>
<a name="l00033"></a>00033 <span class="preprocessor">#define RTP_DEFAULT_DSCP 0x00 </span><span class="comment">/*best effort*/</span>
<a name="l00034"></a>00034
<a name="l00035"></a>00035
<a name="l00036"></a>00036
<a name="l00037"></a><a class="code" href="structrtp__header.html">00037</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structrtp__header.html">rtp_header</a>
<a name="l00038"></a>00038 {
<a name="l00039"></a>00039 <span class="preprocessor">#ifdef ORTP_BIGENDIAN</span>
<a name="l00040"></a>00040 <span class="preprocessor"></span> uint16_t version:2;
<a name="l00041"></a>00041 uint16_t padbit:1;
<a name="l00042"></a>00042 uint16_t extbit:1;
<a name="l00043"></a>00043 uint16_t cc:4;
<a name="l00044"></a>00044 uint16_t markbit:1;
<a name="l00045"></a>00045 uint16_t paytype:7;
<a name="l00046"></a>00046 <span class="preprocessor">#else</span>
<a name="l00047"></a>00047 <span class="preprocessor"></span> uint16_t cc:4;
<a name="l00048"></a>00048 uint16_t extbit:1;
<a name="l00049"></a>00049 uint16_t padbit:1;
<a name="l00050"></a>00050 uint16_t version:2;
<a name="l00051"></a>00051 uint16_t paytype:7;
<a name="l00052"></a>00052 uint16_t markbit:1;
<a name="l00053"></a>00053 <span class="preprocessor">#endif</span>
<a name="l00054"></a>00054 <span class="preprocessor"></span> uint16_t seq_number;
<a name="l00055"></a>00055 uint32_t timestamp;
<a name="l00056"></a>00056 uint32_t ssrc;
<a name="l00057"></a>00057 uint32_t csrc[16];
<a name="l00058"></a>00058 } <a class="code" href="structrtp__header.html">rtp_header_t</a>;
<a name="l00059"></a>00059
<a name="l00060"></a>00060
<a name="l00061"></a>00061
<a name="l00062"></a>00062
<a name="l00063"></a><a class="code" href="structrtp__stats.html">00063</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structrtp__stats.html">rtp_stats</a>
<a name="l00064"></a>00064 {
<a name="l00065"></a>00065 uint64_t packet_sent;
<a name="l00066"></a>00066 uint64_t sent; <span class="comment">/* bytes sent */</span>
<a name="l00067"></a>00067 uint64_t recv; <span class="comment">/* bytes of payload received and delivered in time to the application */</span>
<a name="l00068"></a>00068 uint64_t hw_recv; <span class="comment">/* bytes of payload received */</span>
<a name="l00069"></a>00069 uint64_t packet_recv; <span class="comment">/* number of packets received */</span>
<a name="l00070"></a>00070 uint64_t unavaillable; <span class="comment">/* totally useless*/</span>
<a name="l00071"></a>00071 uint64_t outoftime; <span class="comment">/* number of packets that were received too late */</span>
<a name="l00072"></a>00072 uint64_t cum_packet_loss; <span class="comment">/* cumulative number of packet lost */</span>
<a name="l00073"></a>00073 uint64_t bad; <span class="comment">/* packets that did not appear to be RTP */</span>
<a name="l00074"></a>00074 uint64_t discarded; <span class="comment">/* incoming packets discarded because the queue exceeds its max size */</span>
<a name="l00075"></a>00075 } <a class="code" href="structrtp__stats.html">rtp_stats_t</a>;
<a name="l00076"></a>00076
<a name="l00077"></a>00077 <span class="preprocessor">#define RTP_TIMESTAMP_IS_NEWER_THAN(ts1,ts2) \</span>
<a name="l00078"></a>00078 <span class="preprocessor"> ((uint32_t)((uint32_t)(ts1) - (uint32_t)(ts2))< (uint32_t)(1<<31))</span>
<a name="l00079"></a>00079 <span class="preprocessor"></span>
<a name="l00080"></a>00080 <span class="preprocessor">#define RTP_TIMESTAMP_IS_STRICTLY_NEWER_THAN(ts1,ts2) \</span>
<a name="l00081"></a>00081 <span class="preprocessor"> ( ((uint32_t)((uint32_t)(ts1) - (uint32_t)(ts2))< (uint32_t)(1<<31)) && (ts1)!=(ts2) )</span>
<a name="l00082"></a>00082 <span class="preprocessor"></span>
<a name="l00083"></a>00083 <span class="preprocessor">#define TIME_IS_NEWER_THAN(t1,t2) RTP_TIMESTAMP_IS_NEWER_THAN(t1,t2)</span>
<a name="l00084"></a>00084 <span class="preprocessor"></span>
<a name="l00085"></a>00085 <span class="preprocessor">#define TIME_IS_STRICTLY_NEWER_THAN(t1,t2) RTP_TIMESTAMP_IS_STRICTLY_NEWER_THAN(t1,t2)</span>
<a name="l00086"></a>00086 <span class="preprocessor"></span>
<a name="l00087"></a>00087
<a name="l00088"></a>00088 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00089"></a>00089 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span>{
<a name="l00090"></a>00090 <span class="preprocessor">#endif</span>
<a name="l00091"></a>00091 <span class="preprocessor"></span>
<a name="l00092"></a>00092 <span class="comment">/* packet api */</span>
<a name="l00093"></a>00093 <span class="comment">/* the first argument is a mblk_t. The header is supposed to be not splitted */</span>
<a name="l00094"></a>00094 <span class="preprocessor">#define rtp_set_markbit(mp,value) ((rtp_header_t*)((mp)->b_rptr))->markbit=(value)</span>
<a name="l00095"></a>00095 <span class="preprocessor"></span><span class="preprocessor">#define rtp_set_seqnumber(mp,seq) ((rtp_header_t*)((mp)->b_rptr))->seq_number=(seq)</span>
<a name="l00096"></a>00096 <span class="preprocessor"></span><span class="preprocessor">#define rtp_set_timestamp(mp,ts) ((rtp_header_t*)((mp)->b_rptr))->timestamp=(ts)</span>
<a name="l00097"></a>00097 <span class="preprocessor"></span><span class="preprocessor">#define rtp_set_ssrc(mp,_ssrc) ((rtp_header_t*)((mp)->b_rptr))->ssrc=(_ssrc)</span>
<a name="l00098"></a>00098 <span class="preprocessor"></span><span class="keywordtype">void</span> rtp_add_csrc(<a class="code" href="structmsgb.html">mblk_t</a> *mp ,uint32_t csrc);
<a name="l00099"></a>00099 <span class="preprocessor">#define rtp_set_payload_type(mp,pt) ((rtp_header_t*)((mp)->b_rptr))->paytype=(pt)</span>
<a name="l00100"></a>00100 <span class="preprocessor"></span>
<a name="l00101"></a>00101 <span class="preprocessor">#define rtp_get_markbit(mp) (((rtp_header_t*)((mp)->b_rptr))->markbit) </span>
<a name="l00102"></a>00102 <span class="preprocessor"></span><span class="preprocessor">#define rtp_get_timestamp(mp) (((rtp_header_t*)((mp)->b_rptr))->timestamp) </span>
<a name="l00103"></a>00103 <span class="preprocessor"></span><span class="preprocessor">#define rtp_get_seqnumber(mp) (((rtp_header_t*)((mp)->b_rptr))->seq_number)</span>
<a name="l00104"></a>00104 <span class="preprocessor"></span><span class="preprocessor">#define rtp_get_payload_type(mp) (((rtp_header_t*)((mp)->b_rptr))->paytype)</span>
<a name="l00105"></a>00105 <span class="preprocessor"></span><span class="preprocessor">#define rtp_get_ssrc(mp) (((rtp_header_t*)((mp)->b_rptr))->ssrc)</span>
<a name="l00106"></a>00106 <span class="preprocessor"></span><span class="preprocessor">#define rtp_get_cc(mp) (((rtp_header_t*)((mp)->b_rptr))->cc)</span>
<a name="l00107"></a>00107 <span class="preprocessor"></span><span class="preprocessor">#define rtp_get_csrc(mp, idx) (((rtp_header_t*)((mp)->b_rptr))->csrc[idx])</span>
<a name="l00108"></a>00108 <span class="preprocessor"></span>
<a name="l00109"></a>00109 <span class="keywordtype">int</span> rtp_get_payload(<a class="code" href="structmsgb.html">mblk_t</a> *packet, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> **start);
<a name="l00110"></a>00110
<a name="l00111"></a>00111 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00112"></a>00112 <span class="preprocessor"></span>}
<a name="l00113"></a>00113 <span class="preprocessor">#endif</span>
<a name="l00114"></a>00114 <span class="preprocessor"></span>
<a name="l00115"></a>00115 <span class="preprocessor">#endif</span>
</pre></div></div><!-- contents -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Mar 9 2012 18:31:57 for oRTP by  <a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.6.1
</small></address>
</body>
</html>
|