Changeset 551

Show
Ignore:
Timestamp:
03/19/01 14:26:03 (13 years ago)
Author:
ucacoxh
Message:

Filled in some gaps, nearly have something for each function and
enumeration and type.

Location:
common/trunk
Files:
6 modified

Legend:

Unmodified
Added
Removed
  • common/trunk/doc/html/uclmmbase-rtp.html

    r546 r551  
    140140> 
    141141#define     <A 
    142 HREF="uclmmbase-rtp.html#RTP-PACKET-HEADER-SIZE-CAPS" 
    143 >RTP_PACKET_HEADER_SIZE</A 
    144 > 
    145 #define     <A 
    146142HREF="uclmmbase-rtp.html#RTP-MAX-PACKET-LEN-CAPS" 
    147143>RTP_MAX_PACKET_LEN</A 
     
    151147>rtp_packet</A 
    152148>; 
     149#define     <A 
     150HREF="uclmmbase-rtp.html#RTP-PACKET-HEADER-SIZE-CAPS" 
     151>RTP_PACKET_HEADER_SIZE</A 
     152> 
    153153typedef     <A 
    154154HREF="uclmmbase-rtp.html#RTCP-SR" 
     
    158158HREF="uclmmbase-rtp.html#RTCP-RR" 
    159159>rtcp_rr</A 
     160>; 
     161enum        <A 
     162HREF="uclmmbase-rtp.html#RTCP-SDES-TYPE" 
     163>rtcp_sdes_type</A 
    160164>; 
    161165typedef     <A 
     
    205209>rtp_option</A 
    206210>; 
    207 enum        <A 
    208 HREF="uclmmbase-rtp.html#RTCP-SDES-TYPE" 
    209 >rtcp_sdes_type</A 
    210 >; 
     211<GTKDOCLINK 
     212HREF="RTP-T" 
     213>rtp_t</GTKDOCLINK 
     214>       <A 
     215HREF="uclmmbase-rtp.html#RTP-INIT" 
     216>rtp_init</A 
     217>                        (const char *addr, 
     218                                             <GTKDOCLINK 
     219HREF="UINT16-T" 
     220>uint16_t</GTKDOCLINK 
     221> rx_port, 
     222                                             <GTKDOCLINK 
     223HREF="UINT16-T" 
     224>uint16_t</GTKDOCLINK 
     225> tx_port, 
     226                                             int ttl, 
     227                                             <GTKDOCLINK 
     228HREF="DOUBLE" 
     229>double</GTKDOCLINK 
     230> rtcp_bw, 
     231                                             <A 
     232HREF="uclmmbase-rtp.html#RTP-CALLBACK" 
     233>rtp_callback</A 
     234> callback, 
     235                                             void *userdata); 
     236<GTKDOCLINK 
     237HREF="RTP-T" 
     238>rtp_t</GTKDOCLINK 
     239>       <A 
     240HREF="uclmmbase-rtp.html#RTP-INIT-IF" 
     241>rtp_init_if</A 
     242>                     (const char *addr, 
     243                                             char *iface, 
     244                                             <GTKDOCLINK 
     245HREF="UINT16-T" 
     246>uint16_t</GTKDOCLINK 
     247> rx_port, 
     248                                             <GTKDOCLINK 
     249HREF="UINT16-T" 
     250>uint16_t</GTKDOCLINK 
     251> tx_port, 
     252                                             int ttl, 
     253                                             <GTKDOCLINK 
     254HREF="DOUBLE" 
     255>double</GTKDOCLINK 
     256> rtcp_bw, 
     257                                             <A 
     258HREF="uclmmbase-rtp.html#RTP-CALLBACK" 
     259>rtp_callback</A 
     260> callback, 
     261                                             void *userdata); 
    211262void        <A 
    212263HREF="uclmmbase-rtp.html#RTP-SEND-BYE" 
     
    305356HREF="uclmmbase-rtp.html#RTCP-APP-CALLBACK" 
    306357>rtcp_app_callback</A 
    307 > callback); 
     358> appcallback); 
    308359void        <A 
    309360HREF="uclmmbase-rtp.html#RTP-UPDATE" 
     
    345396>uint32_t</GTKDOCLINK 
    346397> csrc); 
    347 int         <A 
    348 HREF="uclmmbase-rtp.html#RTP-VALID-SSRC" 
    349 >rtp_valid_ssrc</A 
    350 >                  (struct <GTKDOCLINK 
    351 HREF="RTP" 
    352 >rtp</GTKDOCLINK 
    353 > *session, 
    354                                              <GTKDOCLINK 
    355 HREF="UINT32-T" 
    356 >uint32_t</GTKDOCLINK 
    357 > ssrc); 
    358398int         <A 
    359399HREF="uclmmbase-rtp.html#RTP-SET-SDES" 
     
    487527CLASS="REFSECT1" 
    488528><A 
    489 NAME="AEN586" 
     529NAME="AEN595" 
    490530></A 
    491531><H2 
     
    498538CLASS="REFSECT1" 
    499539><A 
    500 NAME="AEN589" 
     540NAME="AEN598" 
    501541></A 
    502542><H2 
     
    505545CLASS="REFSECT2" 
    506546><A 
    507 NAME="AEN591" 
     547NAME="AEN600" 
    508548></A 
    509549><H3 
     
    531571CLASS="REFSECT2" 
    532572><A 
    533 NAME="AEN596" 
    534 ></A 
    535 ><H3 
    536 ><A 
    537 NAME="RTP-PACKET-HEADER-SIZE-CAPS" 
    538 ></A 
    539 >RTP_PACKET_HEADER_SIZE</H3 
    540 ><TABLE 
    541 BORDER="0" 
    542 BGCOLOR="#D6E8FF" 
    543 WIDTH="100%" 
    544 CELLPADDING="6" 
    545 ><TR 
    546 ><TD 
    547 ><PRE 
    548 CLASS="PROGRAMLISTING" 
    549 >#define RTP_PACKET_HEADER_SIZE ((sizeof(char *) * 2) + sizeof(uint32_t *) + (2 * sizeof(int)))</PRE 
    550 ></TD 
    551 ></TR 
    552 ></TABLE 
    553 ><P 
    554 ></P 
    555 ></DIV 
    556 ><HR><DIV 
    557 CLASS="REFSECT2" 
    558 ><A 
    559 NAME="AEN601" 
     573NAME="AEN605" 
    560574></A 
    561575><H3 
     
    583597CLASS="REFSECT2" 
    584598><A 
    585 NAME="AEN606" 
     599NAME="AEN610" 
    586600></A 
    587601><H3 
     
    640654></TABLE 
    641655><P 
    642 ></P 
     656>The struct begins with pointers to the data in the packet as 
     657it came off the wire. The packet is read in such that the 
     658header maps onto the latter part of this struct, and the 
     659fields in this first part of the struct point into it. The 
     660entire packet can be freed by freeing this struct, without 
     661having to free the csrc, data and extn blocks separately. 
     662WARNING: Don't change the size of the first portion of the 
     663struct without changing RTP_PACKET_HEADER_SIZE to match.</P 
    643664></DIV 
    644665><HR><DIV 
    645666CLASS="REFSECT2" 
    646667><A 
    647 NAME="AEN611" 
     668NAME="AEN615" 
     669></A 
     670><H3 
     671><A 
     672NAME="RTP-PACKET-HEADER-SIZE-CAPS" 
     673></A 
     674>RTP_PACKET_HEADER_SIZE</H3 
     675><TABLE 
     676BORDER="0" 
     677BGCOLOR="#D6E8FF" 
     678WIDTH="100%" 
     679CELLPADDING="6" 
     680><TR 
     681><TD 
     682><PRE 
     683CLASS="PROGRAMLISTING" 
     684>#define RTP_PACKET_HEADER_SIZE ((sizeof(char *) * 2) + sizeof(uint32_t *) + (2 * sizeof(int)))</PRE 
     685></TD 
     686></TR 
     687></TABLE 
     688><P 
     689>This macro MUST resolve to the offset of the first packet 
     690field in the <A 
     691HREF="uclmmbase-rtp.html#RTP-PACKET" 
     692>rtp_packet</A 
     693> struct, including all padding. 
     694If you change rtp_packet, make sure to change this too.</P 
     695></DIV 
     696><HR><DIV 
     697CLASS="REFSECT2" 
     698><A 
     699NAME="AEN621" 
    648700></A 
    649701><H3 
     
    678730CLASS="REFSECT2" 
    679731><A 
    680 NAME="AEN616" 
     732NAME="AEN626" 
    681733></A 
    682734><H3 
     
    717769CLASS="REFSECT2" 
    718770><A 
    719 NAME="AEN621" 
     771NAME="AEN631" 
     772></A 
     773><H3 
     774><A 
     775NAME="RTCP-SDES-TYPE" 
     776></A 
     777>enum rtcp_sdes_type</H3 
     778><TABLE 
     779BORDER="0" 
     780BGCOLOR="#D6E8FF" 
     781WIDTH="100%" 
     782CELLPADDING="6" 
     783><TR 
     784><TD 
     785><PRE 
     786CLASS="PROGRAMLISTING" 
     787>typedef enum { 
     788        RTCP_SDES_END   = 0, 
     789        RTCP_SDES_CNAME = 1, 
     790        RTCP_SDES_NAME  = 2, 
     791        RTCP_SDES_EMAIL = 3, 
     792        RTCP_SDES_PHONE = 4, 
     793        RTCP_SDES_LOC   = 5, 
     794        RTCP_SDES_TOOL  = 6, 
     795        RTCP_SDES_NOTE  = 7, 
     796        RTCP_SDES_PRIV  = 8 
     797} rtcp_sdes_type;</PRE 
     798></TD 
     799></TR 
     800></TABLE 
     801><P 
     802>Possible values of Session Description (SDES) identifiers.  SDES items 
     803are announced via <A 
     804HREF="uclmmbase-rtp.html#RTP-CALLBACK" 
     805>rtp_callback</A 
     806> (with RX_SDES events) when they are 
     807received.  SDES items may be configured and queried with <A 
     808HREF="uclmmbase-rtp.html#RTP-SET-SDES" 
     809>rtp_set_sdes</A 
     810> 
     811and <A 
     812HREF="uclmmbase-rtp.html#RTP-GET-SDES" 
     813>rtp_get_sdes</A 
     814>.  The RTP guidelines recommend keeping SDES items 
     815constant during an RTP session to avoid confusing end users.</P 
     816><DIV 
     817CLASS="INFORMALTABLE" 
     818><A 
     819NAME="AEN639" 
     820></A 
     821><P 
     822></P 
     823><TABLE 
     824BORDER="0" 
     825WIDTH="100%" 
     826BGCOLOR="#F0F0D0" 
     827CELLSPACING="0" 
     828CELLPADDING="4" 
     829CLASS="CALSTABLE" 
     830><TBODY 
     831><TR 
     832><TD 
     833WIDTH="20%" 
     834ALIGN="LEFT" 
     835VALIGN="TOP" 
     836><TT 
     837CLASS="LITERAL" 
     838>RTCP_SDES_END</TT 
     839></TD 
     840><TD 
     841WIDTH="80%" 
     842ALIGN="LEFT" 
     843VALIGN="TOP" 
     844>Indicates the end of SDES item processing when SDES data is received.  Has no meaning with <A 
     845HREF="uclmmbase-rtp.html#RTP-SET-SDES" 
     846>rtp_set_sdes</A 
     847> and <A 
     848HREF="uclmmbase-rtp.html#RTP-GET-SDES" 
     849>rtp_get_sdes</A 
     850>.</TD 
     851></TR 
     852><TR 
     853><TD 
     854WIDTH="20%" 
     855ALIGN="LEFT" 
     856VALIGN="TOP" 
     857><TT 
     858CLASS="LITERAL" 
     859>RTCP_SDES_CNAME</TT 
     860></TD 
     861><TD 
     862WIDTH="80%" 
     863ALIGN="LEFT" 
     864VALIGN="TOP" 
     865>The canonical name associated with participant. It is algorithmically derived and should never be changed.</TD 
     866></TR 
     867><TR 
     868><TD 
     869WIDTH="20%" 
     870ALIGN="LEFT" 
     871VALIGN="TOP" 
     872><TT 
     873CLASS="LITERAL" 
     874>RTCP_SDES_NAME</TT 
     875></TD 
     876><TD 
     877WIDTH="80%" 
     878ALIGN="LEFT" 
     879VALIGN="TOP" 
     880>The local participant's name, typically displayed in RTP session participant list. The name can take any form, and should remain constant during a session to avoid confusion.</TD 
     881></TR 
     882><TR 
     883><TD 
     884WIDTH="20%" 
     885ALIGN="LEFT" 
     886VALIGN="TOP" 
     887><TT 
     888CLASS="LITERAL" 
     889>RTCP_SDES_EMAIL</TT 
     890></TD 
     891><TD 
     892WIDTH="80%" 
     893ALIGN="LEFT" 
     894VALIGN="TOP" 
     895>The local participant's email address (optional).</TD 
     896></TR 
     897><TR 
     898><TD 
     899WIDTH="20%" 
     900ALIGN="LEFT" 
     901VALIGN="TOP" 
     902><TT 
     903CLASS="LITERAL" 
     904>RTCP_SDES_PHONE</TT 
     905></TD 
     906><TD 
     907WIDTH="80%" 
     908ALIGN="LEFT" 
     909VALIGN="TOP" 
     910>The local participant's telephone number (optional).</TD 
     911></TR 
     912><TR 
     913><TD 
     914WIDTH="20%" 
     915ALIGN="LEFT" 
     916VALIGN="TOP" 
     917><TT 
     918CLASS="LITERAL" 
     919>RTCP_SDES_LOC</TT 
     920></TD 
     921><TD 
     922WIDTH="80%" 
     923ALIGN="LEFT" 
     924VALIGN="TOP" 
     925>The local participant's geographic location (optional).</TD 
     926></TR 
     927><TR 
     928><TD 
     929WIDTH="20%" 
     930ALIGN="LEFT" 
     931VALIGN="TOP" 
     932><TT 
     933CLASS="LITERAL" 
     934>RTCP_SDES_TOOL</TT 
     935></TD 
     936><TD 
     937WIDTH="80%" 
     938ALIGN="LEFT" 
     939VALIGN="TOP" 
     940>The local participant's tool (optional).</TD 
     941></TR 
     942><TR 
     943><TD 
     944WIDTH="20%" 
     945ALIGN="LEFT" 
     946VALIGN="TOP" 
     947><TT 
     948CLASS="LITERAL" 
     949>RTCP_SDES_NOTE</TT 
     950></TD 
     951><TD 
     952WIDTH="80%" 
     953ALIGN="LEFT" 
     954VALIGN="TOP" 
     955>Any additional information the local participant wishes to communicate about themselves (optional).</TD 
     956></TR 
     957><TR 
     958><TD 
     959WIDTH="20%" 
     960ALIGN="LEFT" 
     961VALIGN="TOP" 
     962><TT 
     963CLASS="LITERAL" 
     964>RTCP_SDES_PRIV</TT 
     965></TD 
     966><TD 
     967WIDTH="80%" 
     968ALIGN="LEFT" 
     969VALIGN="TOP" 
     970>Private extension SDES item see <A 
     971HREF="http://www.ietf.org/rfc/rfc1889.txt" 
     972TARGET="_top" 
     973>RFC1889</A 
     974> for details.&#13;</TD 
     975></TR 
     976></TBODY 
     977></TABLE 
     978><P 
     979></P 
     980></DIV 
     981></DIV 
     982><HR><DIV 
     983CLASS="REFSECT2" 
     984><A 
     985NAME="AEN683" 
    720986></A 
    721987><H3 
     
    7471013CLASS="REFSECT2" 
    7481014><A 
    749 NAME="AEN626" 
     1015NAME="AEN688" 
    7501016></A 
    7511017><H3 
     
    7881054CLASS="REFSECT2" 
    7891055><A 
    790 NAME="AEN631" 
     1056NAME="AEN693" 
    7911057></A 
    7921058><H3 
     
    8201086></TABLE 
    8211087><P 
    822 ></P 
     1088>This callback function crafts an RTCP APP packet to be sent with 
     1089an RTCP RR.</P 
    8231090><DIV 
    8241091CLASS="INFORMALTABLE" 
    8251092><A 
    826 NAME="AEN639" 
     1093NAME="AEN701" 
    8271094></A 
    8281095><P 
     
    8511118ALIGN="LEFT" 
    8521119VALIGN="TOP" 
    853 >&nbsp;</TD 
     1120>the session pointer (returned by <A 
     1121HREF="uclmmbase-rtp.html#RTP-INIT" 
     1122>rtp_init</A 
     1123>())</TD 
    8541124></TR 
    8551125><TR 
     
    8681138ALIGN="LEFT" 
    8691139VALIGN="TOP" 
    870 >&nbsp;</TD 
     1140>the current time expressed in units of the media timestamp.</TD 
    8711141></TR 
    8721142><TR 
     
    8851155ALIGN="LEFT" 
    8861156VALIGN="TOP" 
    887 >&nbsp;</TD 
     1157>the max allowed size of an APP packet.</TD 
    8881158></TR 
    8891159><TR 
     
    9001170ALIGN="LEFT" 
    9011171VALIGN="TOP" 
    902 >&nbsp;</TD 
     1172>A fully-formed RTCP APP packet as an <A 
     1173HREF="uclmmbase-rtp.html#RTCP-APP" 
     1174>rtcp_app</A 
     1175>, or NULL (???) 
     1176if no APP packet needs to be sent at this time. 
     1177&#13;</TD 
    9031178></TR 
    9041179></TBODY 
     
    9111186CLASS="REFSECT2" 
    9121187><A 
    913 NAME="AEN660" 
     1188NAME="AEN724" 
    9141189></A 
    9151190><H3 
     
    9451220></TABLE 
    9461221><P 
    947 ></P 
     1222>The possible values for the type field in <A 
     1223HREF="uclmmbase-rtp.html#RTP-EVENT" 
     1224>rtp_event</A 
     1225>. 
     1226Each value represents an event in RTP or RTCP processing.</P 
     1227><DIV 
     1228CLASS="INFORMALTABLE" 
     1229><A 
     1230NAME="AEN730" 
     1231></A 
     1232><P 
     1233></P 
     1234><TABLE 
     1235BORDER="0" 
     1236WIDTH="100%" 
     1237BGCOLOR="#F0F0D0" 
     1238CELLSPACING="0" 
     1239CELLPADDING="4" 
     1240CLASS="CALSTABLE" 
     1241><TBODY 
     1242><TR 
     1243><TD 
     1244WIDTH="20%" 
     1245ALIGN="LEFT" 
     1246VALIGN="TOP" 
     1247><TT 
     1248CLASS="LITERAL" 
     1249>RX_RTP</TT 
     1250></TD 
     1251><TD 
     1252WIDTH="80%" 
     1253ALIGN="LEFT" 
     1254VALIGN="TOP" 
     1255>An RTP data packet was received. 
     1256The ssrc field contains the RTP data packet's SSRC. 
     1257The data field points to a <A 
     1258HREF="uclmmbase-rtp.html#RTP-PACKET" 
     1259>rtp_packet</A 
     1260> containing the RTP data packet. 
     1261The callback must free the rtp_packet when it's done with it.</TD 
     1262></TR 
     1263><TR 
     1264><TD 
     1265WIDTH="20%" 
     1266ALIGN="LEFT" 
     1267VALIGN="TOP" 
     1268><TT 
     1269CLASS="LITERAL" 
     1270>RX_SR</TT 
     1271></TD 
     1272><TD 
     1273WIDTH="80%" 
     1274ALIGN="LEFT" 
     1275VALIGN="TOP" 
     1276>An RTCP SR packet was received. 
     1277The ssrc field contains the SR packet's SSRC. 
     1278The data field points to an <A 
     1279HREF="uclmmbase-rtp.html#RTCP-SR" 
     1280>rtcp_sr</A 
     1281>.</TD 
     1282></TR 
     1283><TR 
     1284><TD 
     1285WIDTH="20%" 
     1286ALIGN="LEFT" 
     1287VALIGN="TOP" 
     1288><TT 
     1289CLASS="LITERAL" 
     1290>RX_RR</TT 
     1291></TD 
     1292><TD 
     1293WIDTH="80%" 
     1294ALIGN="LEFT" 
     1295VALIGN="TOP" 
     1296>An RTCP RR packet was received. 
     1297The ssrc field contains the RR packet's SSRC. 
     1298The data field points to an <A 
     1299HREF="uclmmbase-rtp.html#RTCP-RR" 
     1300>rtcp_rr</A 
     1301>.</TD 
     1302></TR 
     1303><TR 
     1304><TD 
     1305WIDTH="20%" 
     1306ALIGN="LEFT" 
     1307VALIGN="TOP" 
     1308><TT 
     1309CLASS="LITERAL" 
     1310>RX_SDES</TT 
     1311></TD 
     1312><TD 
     1313WIDTH="80%" 
     1314ALIGN="LEFT" 
     1315VALIGN="TOP" 
     1316>An RTCP SDES packet was received. 
     1317The ssrc field contains the SDES packet's SSRC. 
     1318The data field points to an <A 
     1319HREF="uclmmbase-rtp.html#RTCP-SDES-ITEM" 
     1320>rtcp_sdes_item</A 
     1321>.</TD 
     1322></TR 
     1323><TR 
     1324><TD 
     1325WIDTH="20%" 
     1326ALIGN="LEFT" 
     1327VALIGN="TOP" 
     1328><TT 
     1329CLASS="LITERAL" 
     1330>RX_BYE</TT 
     1331></TD 
     1332><TD 
     1333WIDTH="80%" 
     1334ALIGN="LEFT" 
     1335VALIGN="TOP" 
     1336>An RTCP BYE packet was received. 
     1337The ssrc field contains the BYE packet's SSRC.</TD 
     1338></TR 
     1339><TR 
     1340><TD 
     1341WIDTH="20%" 
     1342ALIGN="LEFT" 
     1343VALIGN="TOP" 
     1344><TT 
     1345CLASS="LITERAL" 
     1346>SOURCE_CREATED</TT 
     1347></TD 
     1348><TD 
     1349WIDTH="80%" 
     1350ALIGN="LEFT" 
     1351VALIGN="TOP" 
     1352>A new session participant was heard from. 
     1353The ssrc field contains the new participant's SSRC.</TD 
     1354></TR 
     1355><TR 
     1356><TD 
     1357WIDTH="20%" 
     1358ALIGN="LEFT" 
     1359VALIGN="TOP" 
     1360><TT 
     1361CLASS="LITERAL" 
     1362>SOURCE_DELETED</TT 
     1363></TD 
     1364><TD 
     1365WIDTH="80%" 
     1366ALIGN="LEFT" 
     1367VALIGN="TOP" 
     1368>A source was deleted from the database. 
     1369The ssrc field contains the ex-participant's SSRC.</TD 
     1370></TR 
     1371><TR 
     1372><TD 
     1373WIDTH="20%" 
     1374ALIGN="LEFT" 
     1375VALIGN="TOP" 
     1376><TT 
     1377CLASS="LITERAL" 
     1378>RX_RR_EMPTY</TT 
     1379></TD 
     1380><TD 
     1381WIDTH="80%" 
     1382ALIGN="LEFT" 
     1383VALIGN="TOP" 
     1384>An RTCP RR packet with no sources listed was received. 
     1385The ssrc field contains the RR packet's SSRC.</TD 
     1386></TR 
     1387><TR 
     1388><TD 
     1389WIDTH="20%" 
     1390ALIGN="LEFT" 
     1391VALIGN="TOP" 
     1392><TT 
     1393CLASS="LITERAL" 
     1394>RX_RTCP_START</TT 
     1395></TD 
     1396><TD 
     1397WIDTH="80%" 
     1398ALIGN="LEFT" 
     1399VALIGN="TOP" 
     1400>Called at the start of parsing an RTCP packet. 
     1401Neither the ssrc nor data fields are valid.</TD 
     1402></TR 
     1403><TR 
     1404><TD 
     1405WIDTH="20%" 
     1406ALIGN="LEFT" 
     1407VALIGN="TOP" 
     1408><TT 
     1409CLASS="LITERAL" 
     1410>RX_RTCP_FINISH</TT 
     1411></TD 
     1412><TD 
     1413WIDTH="80%" 
     1414ALIGN="LEFT" 
     1415VALIGN="TOP" 
     1416>Called at the end of parsing an RTCP packet. 
     1417Neither the ssrc nor data fields are valid.</TD 
     1418></TR 
     1419><TR 
     1420><TD 
     1421WIDTH="20%" 
     1422ALIGN="LEFT" 
     1423VALIGN="TOP" 
     1424><TT 
     1425CLASS="LITERAL" 
     1426>RR_TIMEOUT</TT 
     1427></TD 
     1428><TD 
     1429WIDTH="80%" 
     1430ALIGN="LEFT" 
     1431VALIGN="TOP" 
     1432>An RR from the given receiver has not been refreshed recently enough. 
     1433The ssrc field contains the RR packet's SSRC. 
     1434The data field points to the expiring <A 
     1435HREF="uclmmbase-rtp.html#RTCP-RR" 
     1436>rtcp_rr</A 
     1437>.</TD 
     1438></TR 
     1439><TR 
     1440><TD 
     1441WIDTH="20%" 
     1442ALIGN="LEFT" 
     1443VALIGN="TOP" 
     1444><TT 
     1445CLASS="LITERAL" 
     1446>RX_APP</TT 
     1447></TD 
     1448><TD 
     1449WIDTH="80%" 
     1450ALIGN="LEFT" 
     1451VALIGN="TOP" 
     1452>An APP packet was received. 
     1453The ssrc field contains the APP packet's SSRC. 
     1454The data field points to an <A 
     1455HREF="uclmmbase-rtp.html#RTCP-APP" 
     1456>rtcp_app</A 
     1457>. 
     1458The callback must free the app packet when it's done with it.&#13;</TD 
     1459></TR 
     1460></TBODY 
     1461></TABLE 
     1462><P 
     1463></P 
     1464></DIV 
    9481465></DIV 
    9491466><HR><DIV 
    9501467CLASS="REFSECT2" 
    9511468><A 
    952 NAME="AEN665" 
     1469NAME="AEN789" 
    9531470></A 
    9541471><H3 
     
    9761493></TABLE 
    9771494><P 
    978 ></P 
     1495>The event structure as passed to <A 
     1496HREF="uclmmbase-rtp.html#RTP-CALLBACK" 
     1497>rtp_callback</A 
     1498>(). 
     1499The callback type is carried in the type field; see <A 
     1500HREF="uclmmbase-rtp.html#RTP-EVENT-TYPE" 
     1501>rtp_event_type</A 
     1502> 
     1503for a description of each callback. 
     1504Unless otherwise noted, the ssrc field contains the SSRC of the participant 
     1505triggering this callback.  The data field points to any data contained in 
     1506this callback; it must be cast to the appropriate type.  The ts field 
     1507contains the timestamp of the packet reception that caused this event.</P 
    9791508></DIV 
    9801509><HR><DIV 
    9811510CLASS="REFSECT2" 
    9821511><A 
    983 NAME="AEN670" 
     1512NAME="AEN796" 
    9841513></A 
    9851514><H3 
     
    10091538></TABLE 
    10101539><P 
    1011 ></P 
     1540>Handles RTP events in an application-specific way. 
     1541See <A 
     1542HREF="uclmmbase-rtp.html#RTP-EVENT" 
     1543>rtp_event</A 
     1544> for a description of the possible events and 
     1545how <A 
     1546HREF="uclmmbase-rtp.html#RTP-CALLBACK" 
     1547>rtp_callback</A 
     1548>() should handle each.&#13;</P 
    10121549><DIV 
    10131550CLASS="INFORMALTABLE" 
    10141551><A 
    1015 NAME="AEN677" 
     1552NAME="AEN805" 
    10161553></A 
    10171554><P 
     
    10401577ALIGN="LEFT" 
    10411578VALIGN="TOP" 
    1042 >&nbsp;</TD 
     1579>The RTP Session.</TD 
    10431580></TR 
    10441581><TR 
     
    10571594ALIGN="LEFT" 
    10581595VALIGN="TOP" 
    1059 >&nbsp;</TD 
     1596>The RTP Event information.  See <A 
     1597HREF="uclmmbase-rtp.html#RTP-EVENT" 
     1598>rtp_event</A 
     1599>. 
     1600&#13;</TD 
    10601601></TR 
    10611602></TBODY 
     
    10681609CLASS="REFSECT2" 
    10691610><A 
    1070 NAME="AEN690" 
     1611NAME="AEN819" 
    10711612></A 
    10721613><H3 
     
    10931634></TABLE 
    10941635><P 
    1095 ></P 
     1636>The possible options for a session that affect which RTP packets are 
     1637passed to the application and when internal state for sources is created.</P 
     1638><DIV 
     1639CLASS="INFORMALTABLE" 
     1640><A 
     1641NAME="AEN824" 
     1642></A 
     1643><P 
     1644></P 
     1645><TABLE 
     1646BORDER="0" 
     1647WIDTH="100%" 
     1648BGCOLOR="#F0F0D0" 
     1649CELLSPACING="0" 
     1650CELLPADDING="4" 
     1651CLASS="CALSTABLE" 
     1652><TBODY 
     1653><TR 
     1654><TD 
     1655WIDTH="20%" 
     1656ALIGN="LEFT" 
     1657VALIGN="TOP" 
     1658><TT 
     1659CLASS="LITERAL" 
     1660>RTP_OPT_PROMISC</TT 
     1661></TD 
     1662><TD 
     1663WIDTH="80%" 
     1664ALIGN="LEFT" 
     1665VALIGN="TOP" 
     1666>Pass RTP packets to application irrespective of 
     1667whether a sender report has been received.  Normally, participant 
     1668state is created when a sender report is received and RTP packets that 
     1669arrive prior to the sender report are discarded.</TD 
     1670></TR 
     1671><TR 
     1672><TD 
     1673WIDTH="20%" 
     1674ALIGN="LEFT" 
     1675VALIGN="TOP" 
     1676><TT 
     1677CLASS="LITERAL" 
     1678>RTP_OPT_WEAK_VALIDATION</TT 
     1679></TD 
     1680><TD 
     1681WIDTH="80%" 
     1682ALIGN="LEFT" 
     1683VALIGN="TOP" 
     1684>Create source state when RTP packets arrive 
     1685if none exists.  This option is set by default.  Disabling the option 
     1686means source state is only created when sender reports are received.</TD 
     1687></TR 
     1688><TR 
     1689><TD 
     1690WIDTH="20%" 
     1691ALIGN="LEFT" 
     1692VALIGN="TOP" 
     1693><TT 
     1694CLASS="LITERAL" 
     1695>RTP_OPT_FILTER_MY_PACKETS</TT 
     1696></TD 
     1697><TD 
     1698WIDTH="80%" 
     1699ALIGN="LEFT" 
     1700VALIGN="TOP" 
     1701>Filter out packets from local participant 
     1702if they are received.  With multicast sessions, packets may be looped 
     1703back, causing senders packets to be received locally.  This may be 
     1704filtered out with this option.&#13;</TD 
     1705></TR 
     1706></TBODY 
     1707></TABLE 
     1708><P 
     1709></P 
     1710></DIV 
    10961711></DIV 
    10971712><HR><DIV 
    10981713CLASS="REFSECT2" 
    10991714><A 
    1100 NAME="AEN695" 
     1715NAME="AEN841" 
    11011716></A 
    11021717><H3 
    11031718><A 
    1104 NAME="RTCP-SDES-TYPE" 
    1105 ></A 
    1106 >enum rtcp_sdes_type</H3 
     1719NAME="RTP-INIT" 
     1720></A 
     1721>rtp_init ()</H3 
    11071722><TABLE 
    11081723BORDER="0" 
     
    11141729><PRE 
    11151730CLASS="PROGRAMLISTING" 
    1116 >typedef enum { 
    1117         RTCP_SDES_END   = 0, 
    1118         RTCP_SDES_CNAME = 1, 
    1119         RTCP_SDES_NAME  = 2, 
    1120         RTCP_SDES_EMAIL = 3, 
    1121         RTCP_SDES_PHONE = 4, 
    1122         RTCP_SDES_LOC   = 5, 
    1123         RTCP_SDES_TOOL  = 6, 
    1124         RTCP_SDES_NOTE  = 7, 
    1125         RTCP_SDES_PRIV  = 8 
    1126 } rtcp_sdes_type;</PRE 
    1127 ></TD 
    1128 ></TR 
    1129 ></TABLE 
    1130 ><P 
    1131 ></P 
     1731><GTKDOCLINK 
     1732HREF="RTP-T" 
     1733>rtp_t</GTKDOCLINK 
     1734>       rtp_init                        (const char *addr, 
     1735                                             <GTKDOCLINK 
     1736HREF="UINT16-T" 
     1737>uint16_t</GTKDOCLINK 
     1738> rx_port, 
     1739                                             <GTKDOCLINK 
     1740HREF="UINT16-T" 
     1741>uint16_t</GTKDOCLINK 
     1742> tx_port, 
     1743                                             int ttl, 
     1744                                             <GTKDOCLINK 
     1745HREF="DOUBLE" 
     1746>double</GTKDOCLINK 
     1747> rtcp_bw, 
     1748                                             <A 
     1749HREF="uclmmbase-rtp.html#RTP-CALLBACK" 
     1750>rtp_callback</A 
     1751> callback, 
     1752                                             void *userdata);</PRE 
     1753></TD 
     1754></TR 
     1755></TABLE 
     1756><P 
     1757></P 
     1758><P 
     1759></P 
     1760><DIV 
     1761CLASS="INFORMALTABLE" 
     1762><A 
     1763NAME="AEN852" 
     1764></A 
     1765><P 
     1766></P 
     1767><TABLE 
     1768BORDER="0" 
     1769WIDTH="100%" 
     1770BGCOLOR="#FFD0D0" 
     1771CELLSPACING="0" 
     1772CELLPADDING="4" 
     1773CLASS="CALSTABLE" 
     1774><TBODY 
     1775><TR 
     1776><TD 
     1777WIDTH="20%" 
     1778ALIGN="RIGHT" 
     1779VALIGN="TOP" 
     1780><TT 
     1781CLASS="PARAMETER" 
     1782><I 
     1783>addr</I 
     1784></TT 
     1785>&nbsp;:</TD 
     1786><TD 
     1787WIDTH="80%" 
     1788ALIGN="LEFT" 
     1789VALIGN="TOP" 
     1790> IP destination of this session (unicast or multicast), 
     1791as an ASCII string.  May be a host name, which will be looked up, 
     1792or may be an IPv4 dotted quad or IPv6 literal adddress.</TD 
     1793></TR 
     1794><TR 
     1795><TD 
     1796WIDTH="20%" 
     1797ALIGN="RIGHT" 
     1798VALIGN="TOP" 
     1799><TT 
     1800CLASS="PARAMETER" 
     1801><I 
     1802>rx_port</I 
     1803></TT 
     1804>&nbsp;:</TD 
     1805><TD 
     1806WIDTH="80%" 
     1807ALIGN="LEFT" 
     1808VALIGN="TOP" 
     1809> The port to which to bind the UDP socket</TD 
     1810></TR 
     1811><TR 
     1812><TD 
     1813WIDTH="20%" 
     1814ALIGN="RIGHT" 
     1815VALIGN="TOP" 
     1816><TT 
     1817CLASS="PARAMETER" 
     1818><I 
     1819>tx_port</I 
     1820></TT 
     1821>&nbsp;:</TD 
     1822><TD 
     1823WIDTH="80%" 
     1824ALIGN="LEFT" 
     1825VALIGN="TOP" 
     1826> The port to which to send UDP packets</TD 
     1827></TR 
     1828><TR 
     1829><TD 
     1830WIDTH="20%" 
     1831ALIGN="RIGHT" 
     1832VALIGN="TOP" 
     1833><TT 
     1834CLASS="PARAMETER" 
     1835><I 
     1836>ttl</I 
     1837></TT 
     1838>&nbsp;:</TD 
     1839><TD 
     1840WIDTH="80%" 
     1841ALIGN="LEFT" 
     1842VALIGN="TOP" 
     1843> The TTL with which to send multicasts</TD 
     1844></TR 
     1845><TR 
     1846><TD 
     1847WIDTH="20%" 
     1848ALIGN="RIGHT" 
     1849VALIGN="TOP" 
     1850><TT 
     1851CLASS="PARAMETER" 
     1852><I 
     1853>rtcp_bw</I 
     1854></TT 
     1855>&nbsp;:</TD 
     1856><TD 
     1857WIDTH="80%" 
     1858ALIGN="LEFT" 
     1859VALIGN="TOP" 
     1860> The total bandwidth (in units of bytes per second) that is 
     1861allocated to RTCP.</TD 
     1862></TR 
     1863><TR 
     1864><TD 
     1865WIDTH="20%" 
     1866ALIGN="RIGHT" 
     1867VALIGN="TOP" 
     1868><TT 
     1869CLASS="PARAMETER" 
     1870><I 
     1871>callback</I 
     1872></TT 
     1873>&nbsp;:</TD 
     1874><TD 
     1875WIDTH="80%" 
     1876ALIGN="LEFT" 
     1877VALIGN="TOP" 
     1878> See section on <A 
     1879HREF="uclmmbase-rtp.html#RTP-CALLBACK" 
     1880>rtp_callback</A 
     1881>.</TD 
     1882></TR 
     1883><TR 
     1884><TD 
     1885WIDTH="20%" 
     1886ALIGN="RIGHT" 
     1887VALIGN="TOP" 
     1888><TT 
     1889CLASS="PARAMETER" 
     1890><I 
     1891>userdata</I 
     1892></TT 
     1893>&nbsp;:</TD 
     1894><TD 
     1895WIDTH="80%" 
     1896ALIGN="LEFT" 
     1897VALIGN="TOP" 
     1898> Opaque data associated with the session.  See 
     1899<A 
     1900HREF="uclmmbase-rtp.html#RTP-GET-USERDATA" 
     1901>rtp_get_userdata</A 
     1902>().</TD 
     1903></TR 
     1904><TR 
     1905><TD 
     1906WIDTH="20%" 
     1907ALIGN="RIGHT" 
     1908VALIGN="TOP" 
     1909><I 
     1910CLASS="EMPHASIS" 
     1911>Returns</I 
     1912> :</TD 
     1913><TD 
     1914WIDTH="80%" 
     1915ALIGN="LEFT" 
     1916VALIGN="TOP" 
     1917> An opaque session identifier to be used in future calls to 
     1918the RTP library functions, or NULL on failure.</TD 
     1919></TR 
     1920></TBODY 
     1921></TABLE 
     1922><P 
     1923></P 
     1924></DIV 
    11321925></DIV 
    11331926><HR><DIV 
    11341927CLASS="REFSECT2" 
    11351928><A 
    1136 NAME="AEN700" 
     1929NAME="AEN891" 
     1930></A 
     1931><H3 
     1932><A 
     1933NAME="RTP-INIT-IF" 
     1934></A 
     1935>rtp_init_if ()</H3 
     1936><TABLE 
     1937BORDER="0" 
     1938BGCOLOR="#D6E8FF" 
     1939WIDTH="100%" 
     1940CELLPADDING="6" 
     1941><TR 
     1942><TD 
     1943><PRE 
     1944CLASS="PROGRAMLISTING" 
     1945><GTKDOCLINK 
     1946HREF="RTP-T" 
     1947>rtp_t</GTKDOCLINK 
     1948>       rtp_init_if                     (const char *addr, 
     1949                                             char *iface, 
     1950                                             <GTKDOCLINK 
     1951HREF="UINT16-T" 
     1952>uint16_t</GTKDOCLINK 
     1953> rx_port, 
     1954                                             <GTKDOCLINK 
     1955HREF="UINT16-T" 
     1956>uint16_t</GTKDOCLINK 
     1957> tx_port, 
     1958                                             int ttl, 
     1959                                             <GTKDOCLINK 
     1960HREF="DOUBLE" 
     1961>double</GTKDOCLINK 
     1962> rtcp_bw, 
     1963                                             <A 
     1964HREF="uclmmbase-rtp.html#RTP-CALLBACK" 
     1965>rtp_callback</A 
     1966> callback, 
     1967                                             void *userdata);</PRE 
     1968></TD 
     1969></TR 
     1970></TABLE 
     1971><P 
     1972>Creates and initializes an RTP session.</P 
     1973><P 
     1974></P 
     1975><DIV 
     1976CLASS="INFORMALTABLE" 
     1977><A 
     1978NAME="AEN902" 
     1979></A 
     1980><P 
     1981></P 
     1982><TABLE 
     1983BORDER="0" 
     1984WIDTH="100%" 
     1985BGCOLOR="#FFD0D0" 
     1986CELLSPACING="0" 
     1987CELLPADDING="4" 
     1988CLASS="CALSTABLE" 
     1989><TBODY 
     1990><TR 
     1991><TD 
     1992WIDTH="20%" 
     1993ALIGN="RIGHT" 
     1994VALIGN="TOP" 
     1995><TT 
     1996CLASS="PARAMETER" 
     1997><I 
     1998>addr</I 
     1999></TT 
     2000>&nbsp;:</TD 
     2001><TD 
     2002WIDTH="80%" 
     2003ALIGN="LEFT" 
     2004VALIGN="TOP" 
     2005> IP destination of this session (unicast or multicast), 
     2006as an ASCII string.  May be a host name, which will be looked up, 
     2007or may be an IPv4 dotted quad or IPv6 literal adddress.</TD 
     2008></TR 
     2009><TR 
     2010><TD 
     2011WIDTH="20%" 
     2012ALIGN="RIGHT" 
     2013VALIGN="TOP" 
     2014><TT 
     2015CLASS="PARAMETER" 
     2016><I 
     2017>iface</I 
     2018></TT 
     2019>&nbsp;:</TD 
     2020><TD 
     2021WIDTH="80%" 
     2022ALIGN="LEFT" 
     2023VALIGN="TOP" 
     2024> If the destination of the session is multicast, 
     2025the optional interface to bind to.  May be NULL, in which case 
     2026the default multicast interface as determined by the system 
     2027will be used.</TD 
     2028></TR 
     2029><TR 
     2030><TD 
     2031WIDTH="20%" 
     2032ALIGN="RIGHT" 
     2033VALIGN="TOP" 
     2034><TT 
     2035CLASS="PARAMETER" 
     2036><I 
     2037>rx_port</I 
     2038></TT 
     2039>&nbsp;:</TD 
     2040><TD 
     2041WIDTH="80%" 
     2042ALIGN="LEFT" 
     2043VALIGN="TOP" 
     2044> The port to which to bind the UDP socket</TD 
     2045></TR 
     2046><TR 
     2047><TD 
     2048WIDTH="20%" 
     2049ALIGN="RIGHT" 
     2050VALIGN="TOP" 
     2051><TT 
     2052CLASS="PARAMETER" 
     2053><I 
     2054>tx_port</I 
     2055></TT 
     2056>&nbsp;:</TD 
     2057><TD 
     2058WIDTH="80%" 
     2059ALIGN="LEFT" 
     2060VALIGN="TOP" 
     2061> The port to which to send UDP packets</TD 
     2062></TR 
     2063><TR 
     2064><TD 
     2065WIDTH="20%" 
     2066ALIGN="RIGHT" 
     2067VALIGN="TOP" 
     2068><TT 
     2069CLASS="PARAMETER" 
     2070><I 
     2071>ttl</I 
     2072></TT 
     2073>&nbsp;:</TD 
     2074><TD 
     2075WIDTH="80%" 
     2076ALIGN="LEFT" 
     2077VALIGN="TOP" 
     2078> The TTL with which to send multicasts</TD 
     2079></TR 
     2080><TR 
     2081><TD 
     2082WIDTH="20%" 
     2083ALIGN="RIGHT" 
     2084VALIGN="TOP" 
     2085><TT 
     2086CLASS="PARAMETER" 
     2087><I 
     2088>rtcp_bw</I 
     2089></TT 
     2090>&nbsp;:</TD 
     2091><TD 
     2092WIDTH="80%" 
     2093ALIGN="LEFT" 
     2094VALIGN="TOP" 
     2095> The total bandwidth (in units of ___) that is 
     2096allocated to RTCP.</TD 
     2097></TR 
     2098><TR 
     2099><TD 
     2100WIDTH="20%" 
     2101ALIGN="RIGHT" 
     2102VALIGN="TOP" 
     2103><TT 
     2104CLASS="PARAMETER" 
     2105><I 
     2106>callback</I 
     2107></TT 
     2108>&nbsp;:</TD 
     2109><TD 
     2110WIDTH="80%" 
     2111ALIGN="LEFT" 
     2112VALIGN="TOP" 
     2113> See section on <A 
     2114HREF="uclmmbase-rtp.html#RTP-CALLBACK" 
     2115>rtp_callback</A 
     2116>.</TD 
     2117></TR 
     2118><TR 
     2119><TD 
     2120WIDTH="20%" 
     2121ALIGN="RIGHT" 
     2122VALIGN="TOP" 
     2123><TT 
     2124CLASS="PARAMETER" 
     2125><I 
     2126>userdata</I 
     2127></TT 
     2128>&nbsp;:</TD 
     2129><TD 
     2130WIDTH="80%" 
     2131ALIGN="LEFT" 
     2132VALIGN="TOP" 
     2133> Opaque data associated with the session.  See 
     2134<A 
     2135HREF="uclmmbase-rtp.html#RTP-GET-USERDATA" 
     2136>rtp_get_userdata</A 
     2137>().</TD 
     2138></TR 
     2139><TR 
     2140><TD 
     2141WIDTH="20%" 
     2142ALIGN="RIGHT" 
     2143VALIGN="TOP" 
     2144><I 
     2145CLASS="EMPHASIS" 
     2146>Returns</I 
     2147> :</TD 
     2148><TD 
     2149WIDTH="80%" 
     2150ALIGN="LEFT" 
     2151VALIGN="TOP" 
     2152> An opaque session identifier to be used in future calls to 
     2153the RTP library functions, or NULL on failure.</TD 
     2154></TR 
     2155></TBODY 
     2156></TABLE 
     2157><P 
     2158></P 
     2159></DIV 
     2160></DIV 
     2161><HR><DIV 
     2162CLASS="REFSECT2" 
     2163><A 
     2164NAME="AEN945" 
    11372165></A 
    11382166><H3 
     
    11582186></TABLE 
    11592187><P 
     2188>Sends a BYE message on the RTP session, indicating that this 
     2189system is leaving the session. 
     2190Should implement reverse reconsideration; right now it sends a 
     2191BYE if there are less than 50 members and sends nothing otherwise.</P 
     2192><P 
    11602193></P 
    11612194><DIV 
    11622195CLASS="INFORMALTABLE" 
    11632196><A 
    1164 NAME="AEN706" 
     2197NAME="AEN952" 
    11652198></A 
    11662199><P 
     
    11892222ALIGN="LEFT" 
    11902223VALIGN="TOP" 
    1191 >&nbsp;</TD 
     2224> The RTP session</TD 
    11922225></TR 
    11932226></TBODY 
     
    12002233CLASS="REFSECT2" 
    12012234><A 
    1202 NAME="AEN715" 
     2235NAME="AEN961" 
    12032236></A 
    12042237><H3 
     
    12242257></TABLE 
    12252258><P 
    1226 >Frees state associated with given RTP session</P 
     2259>Frees state associated with given RTP session.  Should be called 
     2260after <A 
     2261HREF="uclmmbase-rtp.html#RTP-SEND-BYE" 
     2262>rtp_send_bye</A 
     2263>().</P 
    12272264><P 
    12282265></P 
     
    12302267CLASS="INFORMALTABLE" 
    12312268><A 
    1232 NAME="AEN722" 
     2269NAME="AEN969" 
    12332270></A 
    12342271><P 
     
    12682305CLASS="REFSECT2" 
    12692306><A 
    1270 NAME="AEN731" 
     2307NAME="AEN978" 
    12712308></A 
    12722309><H3 
     
    12972334></TABLE 
    12982335><P 
     2336>Sets the value of a session option.  See <A 
     2337HREF="uclmmbase-rtp.html#RTP-OPTION" 
     2338>rtp_option</A 
     2339> for 
     2340documentation on the options and their legal values.</P 
     2341><P 
    12992342></P 
    13002343><DIV 
    13012344CLASS="INFORMALTABLE" 
    13022345><A 
    1303 NAME="AEN738" 
     2346NAME="AEN987" 
    13042347></A 
    13052348><P 
     
    13282371ALIGN="LEFT" 
    13292372VALIGN="TOP" 
    1330 >&nbsp;</TD 
     2373> The RTP session.</TD 
    13312374></TR 
    13322375><TR 
     
    13452388ALIGN="LEFT" 
    13462389VALIGN="TOP" 
    1347 >&nbsp;</TD 
     2390> The option name, see <A 
     2391HREF="uclmmbase-rtp.html#RTP-OPTION" 
     2392>rtp_option</A 
     2393>.</TD 
    13482394></TR 
    13492395><TR 
     
    13622408ALIGN="LEFT" 
    13632409VALIGN="TOP" 
    1364 >&nbsp;</TD 
     2410> The value to set.</TD 
    13652411></TR 
    13662412><TR 
     
    13772423ALIGN="LEFT" 
    13782424VALIGN="TOP" 
    1379 >&nbsp;</TD 
     2425> TRUE on success, else FALSE.</TD 
    13802426></TR 
    13812427></TBODY 
     
    13882434CLASS="REFSECT2" 
    13892435><A 
    1390 NAME="AEN759" 
     2436NAME="AEN1009" 
    13912437></A 
    13922438><H3 
     
    14172463></TABLE 
    14182464><P 
     2465>Retrieves the value of a session option.  See <A 
     2466HREF="uclmmbase-rtp.html#RTP-OPTION" 
     2467>rtp_option</A 
     2468> for 
     2469documentation on the options and their legal values.</P 
     2470><P 
    14192471></P 
    14202472><DIV 
    14212473CLASS="INFORMALTABLE" 
    14222474><A 
    1423 NAME="AEN766" 
     2475NAME="AEN1018" 
    14242476></A 
    14252477><P 
     
    14482500ALIGN="LEFT" 
    14492501VALIGN="TOP" 
    1450 >&nbsp;</TD 
     2502> The RTP session.</TD 
    14512503></TR 
    14522504><TR 
     
    14652517ALIGN="LEFT" 
    14662518VALIGN="TOP" 
    1467 >&nbsp;</TD 
     2519> The option name, see <A 
     2520HREF="uclmmbase-rtp.html#RTP-OPTION" 
     2521>rtp_option</A 
     2522>.</TD 
    14682523></TR 
    14692524><TR 
     
    14822537ALIGN="LEFT" 
    14832538VALIGN="TOP" 
    1484 >&nbsp;</TD 
     2539> The return value.</TD 
    14852540></TR 
    14862541><TR 
     
    14972552ALIGN="LEFT" 
    14982553VALIGN="TOP" 
    1499 >&nbsp;</TD 
     2554> TRUE and the value of the option in optval on success, else FALSE.</TD 
    15002555></TR 
    15012556></TBODY 
     
    15082563CLASS="REFSECT2" 
    15092564><A 
    1510 NAME="AEN787" 
     2565NAME="AEN1040" 
    15112566></A 
    15122567><H3 
     
    15402595></TABLE 
    15412596><P 
     2597>Receive RTP packets and dispatch them.</P 
     2598><P 
    15422599></P 
    15432600><DIV 
    15442601CLASS="INFORMALTABLE" 
    15452602><A 
    1546 NAME="AEN795" 
     2603NAME="AEN1049" 
    15472604></A 
    15482605><P 
     
    15712628ALIGN="LEFT" 
    15722629VALIGN="TOP" 
    1573 >&nbsp;</TD 
     2630> the session pointer (returned by <A 
     2631HREF="uclmmbase-rtp.html#RTP-INIT" 
     2632>rtp_init</A 
     2633>())</TD 
    15742634></TR 
    15752635><TR 
     
    15882648ALIGN="LEFT" 
    15892649VALIGN="TOP" 
    1590 >&nbsp;</TD 
     2650> the amount of time that <GTKDOCLINK 
     2651HREF="RTCP-RECV" 
     2652>rtcp_recv</GTKDOCLINK 
     2653>() is allowed to block</TD 
    15912654></TR 
    15922655><TR 
     
    16052668ALIGN="LEFT" 
    16062669VALIGN="TOP" 
    1607 >&nbsp;</TD 
     2670> the current time expressed in units of the media 
     2671timestamp.</TD 
    16082672></TR 
    16092673><TR 
     
    16202684ALIGN="LEFT" 
    16212685VALIGN="TOP" 
    1622 >&nbsp;</TD 
     2686> TRUE if data received, FALSE if the timeout occurred.</TD 
    16232687></TR 
    16242688></TBODY 
     
    16312695CLASS="REFSECT2" 
    16322696><A 
    1633 NAME="AEN816" 
     2697NAME="AEN1072" 
    16342698></A 
    16352699><H3 
     
    16772741></TABLE 
    16782742><P 
     2743>Send an RTP packet.  Most media applications will only set the 
     2744<TT 
     2745CLASS="PARAMETER" 
     2746><I 
     2747>session</I 
     2748></TT 
     2749>, <TT 
     2750CLASS="PARAMETER" 
     2751><I 
     2752>rtp_ts</I 
     2753></TT 
     2754>, <TT 
     2755CLASS="PARAMETER" 
     2756><I 
     2757>pt</I 
     2758></TT 
     2759>, <TT 
     2760CLASS="PARAMETER" 
     2761><I 
     2762>m</I 
     2763></TT 
     2764>, <TT 
     2765CLASS="PARAMETER" 
     2766><I 
     2767>data</I 
     2768></TT 
     2769>, <TT 
     2770CLASS="PARAMETER" 
     2771><I 
     2772>data_len</I 
     2773></TT 
     2774> arguments.</P 
     2775><P 
     2776>Mixers and translators typically set additional contributing sources  
     2777arguments (<TT 
     2778CLASS="PARAMETER" 
     2779><I 
     2780>cc</I 
     2781></TT 
     2782>, <TT 
     2783CLASS="PARAMETER" 
     2784><I 
     2785>csrc</I 
     2786></TT 
     2787>).</P 
     2788><P 
     2789>Extensions fields (<TT 
     2790CLASS="PARAMETER" 
     2791><I 
     2792>extn</I 
     2793></TT 
     2794>, <TT 
     2795CLASS="PARAMETER" 
     2796><I 
     2797>extn_len</I 
     2798></TT 
     2799>, <TT 
     2800CLASS="PARAMETER" 
     2801><I 
     2802>extn_type</I 
     2803></TT 
     2804>) are for including 
     2805application specific information.  When the widest amount of 
     2806inter-operability is required these fields should be avoided as 
     2807some applications discard packets with extensions they do not 
     2808recognize.</P 
     2809><P 
    16792810></P 
    16802811><DIV 
    16812812CLASS="INFORMALTABLE" 
    16822813><A 
    1683 NAME="AEN826" 
     2814NAME="AEN1096" 
    16842815></A 
    16852816><P 
     
    17082839ALIGN="LEFT" 
    17092840VALIGN="TOP" 
    1710 >&nbsp;</TD 
     2841> the session pointer (returned by <A 
     2842HREF="uclmmbase-rtp.html#RTP-INIT" 
     2843>rtp_init</A 
     2844>())</TD 
    17112845></TR 
    17122846><TR 
     
    17252859ALIGN="LEFT" 
    17262860VALIGN="TOP" 
    1727 >&nbsp;</TD 
     2861> The timestamp reflects the sampling instant of the first octet of the RTP data to be sent.  The timestamp is expressed in media units.</TD 
    17282862></TR 
    17292863><TR 
     
    17422876ALIGN="LEFT" 
    17432877VALIGN="TOP" 
    1744 >&nbsp;</TD 
     2878> The payload type identifying the format of the data.</TD 
    17452879></TR 
    17462880><TR 
     
    17592893ALIGN="LEFT" 
    17602894VALIGN="TOP" 
    1761 >&nbsp;</TD 
     2895> Marker bit, interpretation defined by media profile of payload.</TD 
    17622896></TR 
    17632897><TR 
     
    17762910ALIGN="LEFT" 
    17772911VALIGN="TOP" 
    1778 >&nbsp;</TD 
     2912> Number of contributing sources (excluding local participant)</TD 
    17792913></TR 
    17802914><TR 
     
    17932927ALIGN="LEFT" 
    17942928VALIGN="TOP" 
    1795 >&nbsp;</TD 
     2929> Array of SSRC identifiers for contributing sources.</TD 
    17962930></TR 
    17972931><TR 
     
    18102944ALIGN="LEFT" 
    18112945VALIGN="TOP" 
    1812 >&nbsp;</TD 
     2946> The RTP data to be sent.</TD 
    18132947></TR 
    18142948><TR 
     
    18272961ALIGN="LEFT" 
    18282962VALIGN="TOP" 
    1829 >&nbsp;</TD 
     2963> The size <TT 
     2964CLASS="PARAMETER" 
     2965><I 
     2966>data</I 
     2967></TT 
     2968> in bytes.</TD 
    18302969></TR 
    18312970><TR 
     
    18442983ALIGN="LEFT" 
    18452984VALIGN="TOP" 
    1846 >&nbsp;</TD 
     2985> Extension data (if present).</TD 
    18472986></TR 
    18482987><TR 
     
    18613000ALIGN="LEFT" 
    18623001VALIGN="TOP" 
    1863 >&nbsp;</TD 
     3002> size of <TT 
     3003CLASS="PARAMETER" 
     3004><I 
     3005>extn</I 
     3006></TT 
     3007> in bytes.</TD 
    18643008></TR 
    18653009><TR 
     
    18783022ALIGN="LEFT" 
    18793023VALIGN="TOP" 
    1880 >&nbsp;</TD 
     3024> extension type indicator.</TD 
    18813025></TR 
    18823026><TR 
     
    18933037ALIGN="LEFT" 
    18943038VALIGN="TOP" 
    1895 >&nbsp;</TD 
     3039> Number of bytes transmitted.</TD 
    18963040></TR 
    18973041></TBODY 
     
    19043048CLASS="REFSECT2" 
    19053049><A 
    1906 NAME="AEN879" 
     3050NAME="AEN1152" 
    19073051></A 
    19083052><H3 
     
    19313075HREF="uclmmbase-rtp.html#RTCP-APP-CALLBACK" 
    19323076>rtcp_app_callback</A 
    1933 > callback);</PRE 
    1934 ></TD 
    1935 ></TR 
    1936 ></TABLE 
     3077> appcallback);</PRE 
     3078></TD 
     3079></TR 
     3080></TABLE 
     3081><P 
     3082>Checks RTCP timer and sends RTCP data when nececessary.  The 
     3083interval between RTCP packets is randomized over an interval that 
     3084depends on the session bandwidth, the number of participants, and 
     3085whether the local participant is a sender.  This function should be 
     3086called at least once per second, and can be safely called more 
     3087frequently.</P 
    19373088><P 
    19383089></P 
     
    19403091CLASS="INFORMALTABLE" 
    19413092><A 
    1942 NAME="AEN887" 
     3093NAME="AEN1161" 
    19433094></A 
    19443095><P 
     
    19673118ALIGN="LEFT" 
    19683119VALIGN="TOP" 
    1969 >&nbsp;</TD 
     3120> the session pointer (returned by <A 
     3121HREF="uclmmbase-rtp.html#RTP-INIT" 
     3122>rtp_init</A 
     3123>())</TD 
    19703124></TR 
    19713125><TR 
     
    19843138ALIGN="LEFT" 
    19853139VALIGN="TOP" 
    1986 >&nbsp;</TD 
    1987 ></TR 
    1988 ><TR 
    1989 ><TD 
    1990 WIDTH="20%" 
    1991 ALIGN="RIGHT" 
    1992 VALIGN="TOP" 
    1993 ><TT 
    1994 CLASS="PARAMETER" 
    1995 ><I 
    1996 >callback</I 
    1997 ></TT 
    1998 >&nbsp;:</TD 
    1999 ><TD 
    2000 WIDTH="80%" 
    2001 ALIGN="LEFT" 
    2002 VALIGN="TOP" 
    2003 >&nbsp;</TD 
     3140> the current time expressed in units of the media timestamp.</TD 
     3141></TR 
     3142><TR 
     3143><TD 
     3144WIDTH="20%" 
     3145ALIGN="RIGHT" 
     3146VALIGN="TOP" 
     3147><TT 
     3148CLASS="PARAMETER" 
     3149><I 
     3150>appcallback</I 
     3151></TT 
     3152>&nbsp;:</TD 
     3153><TD 
     3154WIDTH="80%" 
     3155ALIGN="LEFT" 
     3156VALIGN="TOP" 
     3157> a callback to create an APP RTCP packet, if needed.</TD 
    20043158></TR 
    20053159></TBODY 
     
    20123166CLASS="REFSECT2" 
    20133167><A 
    2014 NAME="AEN904" 
     3168NAME="AEN1179" 
    20153169></A 
    20163170><H3 
     
    20363190></TABLE 
    20373191><P 
     3192>Trawls through the internal data structures and performs 
     3193housekeeping.  This function should be called at least once per 
     3194second.  It uses an internal timer to limit the number of passes 
     3195through the data structures to once per second, it can be safely 
     3196called more frequently.</P 
     3197><P 
    20383198></P 
    20393199><DIV 
    20403200CLASS="INFORMALTABLE" 
    20413201><A 
    2042 NAME="AEN910" 
     3202NAME="AEN1186" 
    20433203></A 
    20443204><P 
     
    20673227ALIGN="LEFT" 
    20683228VALIGN="TOP" 
    2069 >&nbsp;</TD 
     3229> the session pointer (returned by <A 
     3230HREF="uclmmbase-rtp.html#RTP-INIT" 
     3231>rtp_init</A 
     3232>())</TD 
    20703233></TR 
    20713234></TBODY 
     
    20783241CLASS="REFSECT2" 
    20793242><A 
    2080 NAME="AEN919" 
     3243NAME="AEN1196" 
    20813244></A 
    20823245><H3 
     
    21063269><P 
    21073270></P 
     3271><P 
     3272></P 
    21083273><DIV 
    21093274CLASS="INFORMALTABLE" 
    21103275><A 
    2111 NAME="AEN926" 
     3276NAME="AEN1204" 
    21123277></A 
    21133278><P 
     
    21363301ALIGN="LEFT" 
    21373302VALIGN="TOP" 
    2138 >&nbsp;</TD 
     3303> The RTP Session.</TD 
    21393304></TR 
    21403305><TR 
     
    21513316ALIGN="LEFT" 
    21523317VALIGN="TOP" 
    2153 >&nbsp;</TD 
     3318> My SSRC for this session.</TD 
    21543319></TR 
    21553320></TBODY 
     
    21623327CLASS="REFSECT2" 
    21633328><A 
    2164 NAME="AEN939" 
     3329NAME="AEN1217" 
    21653330></A 
    21663331><H3 
     
    21903355></TABLE 
    21913356><P 
     3357>Adds <TT 
     3358CLASS="PARAMETER" 
     3359><I 
     3360>csrc</I 
     3361></TT 
     3362> to list of contributing sources used in SDES items. 
     3363Used by mixers and transcoders.</P 
     3364><P 
    21923365></P 
    21933366><DIV 
    21943367CLASS="INFORMALTABLE" 
    21953368><A 
    2196 NAME="AEN946" 
     3369NAME="AEN1226" 
    21973370></A 
    21983371><P 
     
    22213394ALIGN="LEFT" 
    22223395VALIGN="TOP" 
    2223 >&nbsp;</TD 
     3396> the session pointer (returned by <A 
     3397HREF="uclmmbase-rtp.html#RTP-INIT" 
     3398>rtp_init</A 
     3399>()) </TD 
    22243400></TR 
    22253401><TR 
     
    22383414ALIGN="LEFT" 
    22393415VALIGN="TOP" 
    2240 >&nbsp;</TD 
     3416> Constributing SSRC identifier</TD 
    22413417></TR 
    22423418><TR 
     
    22533429ALIGN="LEFT" 
    22543430VALIGN="TOP" 
    2255 >&nbsp;</TD 
     3431> TRUE.</TD 
    22563432></TR 
    22573433></TBODY 
     
    22643440CLASS="REFSECT2" 
    22653441><A 
    2266 NAME="AEN963" 
     3442NAME="AEN1244" 
    22673443></A 
    22683444><H3 
     
    22923468></TABLE 
    22933469><P 
     3470>Removes <TT 
     3471CLASS="PARAMETER" 
     3472><I 
     3473>csrc</I 
     3474></TT 
     3475> from list of contributing sources used in SDES items. 
     3476Used by mixers and transcoders.</P 
     3477><P 
    22943478></P 
    22953479><DIV 
    22963480CLASS="INFORMALTABLE" 
    22973481><A 
    2298 NAME="AEN970" 
     3482NAME="AEN1253" 
    22993483></A 
    23003484><P 
     
    23233507ALIGN="LEFT" 
    23243508VALIGN="TOP" 
    2325 >&nbsp;</TD 
     3509> the session pointer (returned by <A 
     3510HREF="uclmmbase-rtp.html#RTP-INIT" 
     3511>rtp_init</A 
     3512>()) </TD 
    23263513></TR 
    23273514><TR 
     
    23403527ALIGN="LEFT" 
    23413528VALIGN="TOP" 
    2342 >&nbsp;</TD 
     3529> Constributing SSRC identifier</TD 
    23433530></TR 
    23443531><TR 
     
    23553542ALIGN="LEFT" 
    23563543VALIGN="TOP" 
    2357 >&nbsp;</TD 
     3544> TRUE on success, FALSE if <TT 
     3545CLASS="PARAMETER" 
     3546><I 
     3547>csrc</I 
     3548></TT 
     3549> is not a valid source.</TD 
    23583550></TR 
    23593551></TBODY 
     
    23663558CLASS="REFSECT2" 
    23673559><A 
    2368 NAME="AEN987" 
    2369 ></A 
    2370 ><H3 
    2371 ><A 
    2372 NAME="RTP-VALID-SSRC" 
    2373 ></A 
    2374 >rtp_valid_ssrc ()</H3 
    2375 ><TABLE 
    2376 BORDER="0" 
    2377 BGCOLOR="#D6E8FF" 
    2378 WIDTH="100%" 
    2379 CELLPADDING="6" 
    2380 ><TR 
    2381 ><TD 
    2382 ><PRE 
    2383 CLASS="PROGRAMLISTING" 
    2384 >int         rtp_valid_ssrc                  (struct <GTKDOCLINK 
    2385 HREF="RTP" 
    2386 >rtp</GTKDOCLINK 
    2387 > *session, 
    2388                                              <GTKDOCLINK 
    2389 HREF="UINT32-T" 
    2390 >uint32_t</GTKDOCLINK 
    2391 > ssrc);</PRE 
    2392 ></TD 
    2393 ></TR 
    2394 ></TABLE 
    2395 ><P 
    2396 ></P 
    2397 ><DIV 
    2398 CLASS="INFORMALTABLE" 
    2399 ><A 
    2400 NAME="AEN994" 
    2401 ></A 
    2402 ><P 
    2403 ></P 
    2404 ><TABLE 
    2405 BORDER="0" 
    2406 WIDTH="100%" 
    2407 BGCOLOR="#FFD0D0" 
    2408 CELLSPACING="0" 
    2409 CELLPADDING="4" 
    2410 CLASS="CALSTABLE" 
    2411 ><TBODY 
    2412 ><TR 
    2413 ><TD 
    2414 WIDTH="20%" 
    2415 ALIGN="RIGHT" 
    2416 VALIGN="TOP" 
    2417 ><TT 
    2418 CLASS="PARAMETER" 
    2419 ><I 
    2420 >session</I 
    2421 ></TT 
    2422 >&nbsp;:</TD 
    2423 ><TD 
    2424 WIDTH="80%" 
    2425 ALIGN="LEFT" 
    2426 VALIGN="TOP" 
    2427 >&nbsp;</TD 
    2428 ></TR 
    2429 ><TR 
    2430 ><TD 
    2431 WIDTH="20%" 
    2432 ALIGN="RIGHT" 
    2433 VALIGN="TOP" 
    2434 ><TT 
    2435 CLASS="PARAMETER" 
    2436 ><I 
    2437 >ssrc</I 
    2438 ></TT 
    2439 >&nbsp;:</TD 
    2440 ><TD 
    2441 WIDTH="80%" 
    2442 ALIGN="LEFT" 
    2443 VALIGN="TOP" 
    2444 >&nbsp;</TD 
    2445 ></TR 
    2446 ><TR 
    2447 ><TD 
    2448 WIDTH="20%" 
    2449 ALIGN="RIGHT" 
    2450 VALIGN="TOP" 
    2451 ><I 
    2452 CLASS="EMPHASIS" 
    2453 >Returns</I 
    2454 > :</TD 
    2455 ><TD 
    2456 WIDTH="80%" 
    2457 ALIGN="LEFT" 
    2458 VALIGN="TOP" 
    2459 >&nbsp;</TD 
    2460 ></TR 
    2461 ></TBODY 
    2462 ></TABLE 
    2463 ><P 
    2464 ></P 
    2465 ></DIV 
    2466 ></DIV 
    2467 ><HR><DIV 
    2468 CLASS="REFSECT2" 
    2469 ><A 
    2470 NAME="AEN1011" 
     3560NAME="AEN1272" 
    24713561></A 
    24723562><H3 
     
    25023592></TABLE 
    25033593><P 
     3594>Sets session description information associated with participant 
     3595<TT 
     3596CLASS="PARAMETER" 
     3597><I 
     3598>ssrc</I 
     3599></TT 
     3600>.  Under normal circumstances applications always use the 
     3601<TT 
     3602CLASS="PARAMETER" 
     3603><I 
     3604>ssrc</I 
     3605></TT 
     3606> of the local participant, this SDES information is 
     3607transmitted in receiver reports.  Setting SDES information for 
     3608other participants affects the local SDES entries, but are not 
     3609transmitted onto the network.</P 
     3610><P 
    25043611></P 
    25053612><DIV 
    25063613CLASS="INFORMALTABLE" 
    25073614><A 
    2508 NAME="AEN1019" 
     3615NAME="AEN1283" 
    25093616></A 
    25103617><P 
     
    25333640ALIGN="LEFT" 
    25343641VALIGN="TOP" 
    2535 >&nbsp;</TD 
     3642> the session pointer (returned by <A 
     3643HREF="uclmmbase-rtp.html#RTP-INIT" 
     3644>rtp_init</A 
     3645>()) </TD 
    25363646></TR 
    25373647><TR 
     
    25503660ALIGN="LEFT" 
    25513661VALIGN="TOP" 
    2552 >&nbsp;</TD 
     3662> the SSRC identifier of a participant</TD 
    25533663></TR 
    25543664><TR 
     
    25673677ALIGN="LEFT" 
    25683678VALIGN="TOP" 
    2569 >&nbsp;</TD 
    2570 ></TR 
    2571 ><TR 
    2572 ><TD 
    2573 WIDTH="20%" 
    2574 ALIGN="RIGHT" 
    2575 VALIGN="TOP" 
    2576 ><TT 
     3679> the SDES type represented by <TT 
    25773680CLASS="PARAMETER" 
    25783681><I 
    25793682>value</I 
    25803683></TT 
    2581 >&nbsp;:</TD 
    2582 ><TD 
    2583 WIDTH="80%" 
    2584 ALIGN="LEFT" 
    2585 VALIGN="TOP" 
    2586 >&nbsp;</TD 
     3684></TD 
     3685></TR 
     3686><TR 
     3687><TD 
     3688WIDTH="20%" 
     3689ALIGN="RIGHT" 
     3690VALIGN="TOP" 
     3691><TT 
     3692CLASS="PARAMETER" 
     3693><I 
     3694>value</I 
     3695></TT 
     3696>&nbsp;:</TD 
     3697><TD 
     3698WIDTH="80%" 
     3699ALIGN="LEFT" 
     3700VALIGN="TOP" 
     3701> the SDES description</TD 
    25873702></TR 
    25883703><TR 
     
    26013716ALIGN="LEFT" 
    26023717VALIGN="TOP" 
    2603 >&nbsp;</TD 
     3718> the length of the description</TD 
    26043719></TR 
    26053720><TR 
     
    26163731ALIGN="LEFT" 
    26173732VALIGN="TOP" 
    2618 >&nbsp;</TD 
     3733> Returns TRUE if participant exists, FALSE otherwise.</TD 
    26193734></TR 
    26203735></TBODY 
     
    26273742CLASS="REFSECT2" 
    26283743><A 
    2629 NAME="AEN1048" 
     3744NAME="AEN1314" 
    26303745></A 
    26313746><H3 
     
    26593774></TABLE 
    26603775><P 
     3776>Recovers session description (SDES) information on participant 
     3777identified with <TT 
     3778CLASS="PARAMETER" 
     3779><I 
     3780>ssrc</I 
     3781></TT 
     3782>.  The SDES information associated with a 
     3783source is updated when receiver reports are received.  There are 
     3784several different types of SDES information, e.g. username, 
     3785location, phone, email.  These are enumerated by <A 
     3786HREF="uclmmbase-rtp.html#RTCP-SDES-TYPE" 
     3787>rtcp_sdes_type</A 
     3788>.</P 
     3789><P 
    26613790></P 
    26623791><DIV 
    26633792CLASS="INFORMALTABLE" 
    26643793><A 
    2665 NAME="AEN1056" 
     3794NAME="AEN1325" 
    26663795></A 
    26673796><P 
     
    26903819ALIGN="LEFT" 
    26913820VALIGN="TOP" 
    2692 >&nbsp;</TD 
     3821> the session pointer (returned by <A 
     3822HREF="uclmmbase-rtp.html#RTP-INIT" 
     3823>rtp_init</A 
     3824>()) </TD 
    26933825></TR 
    26943826><TR 
     
    27073839ALIGN="LEFT" 
    27083840VALIGN="TOP" 
    2709 >&nbsp;</TD 
     3841> the SSRC identifier of a participant</TD 
    27103842></TR 
    27113843><TR 
     
    27243856ALIGN="LEFT" 
    27253857VALIGN="TOP" 
    2726 >&nbsp;</TD 
     3858> the SDES information to retrieve</TD 
    27273859></TR 
    27283860><TR 
     
    27393871ALIGN="LEFT" 
    27403872VALIGN="TOP" 
    2741 >&nbsp;</TD 
     3873> pointer to string containing SDES description if 
     3874received, NULL otherwise.  </TD 
    27423875></TR 
    27433876></TBODY 
     
    27503883CLASS="REFSECT2" 
    27513884><A 
    2752 NAME="AEN1077" 
     3885NAME="AEN1347" 
    27533886></A 
    27543887><H3 
     
    27813914></TABLE 
    27823915><P 
     3916>Retrieve the latest sender report made by sender with <TT 
     3917CLASS="PARAMETER" 
     3918><I 
     3919>ssrc</I 
     3920></TT 
     3921> identifier.</P 
     3922><P 
    27833923></P 
    27843924><DIV 
    27853925CLASS="INFORMALTABLE" 
    27863926><A 
    2787 NAME="AEN1085" 
     3927NAME="AEN1357" 
    27883928></A 
    27893929><P 
     
    28123952ALIGN="LEFT" 
    28133953VALIGN="TOP" 
    2814 >&nbsp;</TD 
     3954> the session pointer (returned by <A 
     3955HREF="uclmmbase-rtp.html#RTP-INIT" 
     3956>rtp_init</A 
     3957>()) </TD 
    28153958></TR 
    28163959><TR 
     
    28293972ALIGN="LEFT" 
    28303973VALIGN="TOP" 
    2831 >&nbsp;</TD 
     3974> identifier of source</TD 
    28323975></TR 
    28333976><TR 
     
    28443987ALIGN="LEFT" 
    28453988VALIGN="TOP" 
    2846 >&nbsp;</TD 
     3989> A pointer to an rtcp_sr structure on success, NULL 
     3990otherwise.  The pointer must not be freed.</TD 
    28473991></TR 
    28483992></TBODY 
     
    28553999CLASS="REFSECT2" 
    28564000><A 
    2857 NAME="AEN1102" 
     4001NAME="AEN1375" 
    28584002></A 
    28594003><H3 
     
    28904034></TABLE 
    28914035><P 
     4036>Retrieve the latest receiver report on <TT 
     4037CLASS="PARAMETER" 
     4038><I 
     4039>reportee</I 
     4040></TT 
     4041> made by <TT 
     4042CLASS="PARAMETER" 
     4043><I 
     4044>reporter</I 
     4045></TT 
     4046>. 
     4047Provides an indication of other receivers reception service.</P 
     4048><P 
    28924049></P 
    28934050><DIV 
    28944051CLASS="INFORMALTABLE" 
    28954052><A 
    2896 NAME="AEN1111" 
     4053NAME="AEN1387" 
    28974054></A 
    28984055><P 
     
    29214078ALIGN="LEFT" 
    29224079VALIGN="TOP" 
    2923 >&nbsp;</TD 
     4080> the session pointer (returned by <A 
     4081HREF="uclmmbase-rtp.html#RTP-INIT" 
     4082>rtp_init</A 
     4083>())</TD 
    29244084></TR 
    29254085><TR 
     
    29384098ALIGN="LEFT" 
    29394099VALIGN="TOP" 
    2940 >&nbsp;</TD 
     4100> participant originating receiver report</TD 
    29414101></TR 
    29424102><TR 
     
    29554115ALIGN="LEFT" 
    29564116VALIGN="TOP" 
    2957 >&nbsp;</TD 
     4117> participant included in receiver report</TD 
    29584118></TR 
    29594119><TR 
     
    29704130ALIGN="LEFT" 
    29714131VALIGN="TOP" 
    2972 >&nbsp;</TD 
     4132> A pointer to a rtcp_rr structure on success, NULL 
     4133otherwise.  The pointer must not be freed.</TD 
    29734134></TR 
    29744135></TBODY 
     
    29814142CLASS="REFSECT2" 
    29824143><A 
    2983 NAME="AEN1132" 
     4144NAME="AEN1409" 
    29844145></A 
    29854146><H3 
     
    30064167></TABLE 
    30074168><P 
     4169>Converts the user supplied key into a form suitable for use with RTP 
     4170and install it as the active key. Passing in NULL as the passphrase 
     4171disables encryption. The passphrase is converted into a DES key as 
     4172specified in RFC1890, that is:</P 
     4173><P 
     4174>- convert to canonical form</P 
     4175><P 
     4176>- derive an MD5 hash of the canonical form</P 
     4177><P 
     4178>- take the first 56 bits of the MD5 hash</P 
     4179><P 
     4180>- add parity bits to form a 64 bit key</P 
     4181><P 
     4182>Note that versions of rat prior to 4.1.2 do not convert the passphrase 
     4183to canonical form before taking the MD5 hash, and so will 
     4184not be compatible for keys which are non-invarient under this step.</P 
     4185><P 
    30084186></P 
    30094187><DIV 
    30104188CLASS="INFORMALTABLE" 
    30114189><A 
    3012 NAME="AEN1138" 
     4190NAME="AEN1421" 
    30134191></A 
    30144192><P 
     
    30374215ALIGN="LEFT" 
    30384216VALIGN="TOP" 
    3039 >&nbsp;</TD 
     4217> The RTP session.</TD 
    30404218></TR 
    30414219><TR 
     
    30544232ALIGN="LEFT" 
    30554233VALIGN="TOP" 
    3056 >&nbsp;</TD 
     4234> The user-provided "pass phrase" to map to an encryption key.</TD 
    30574235></TR 
    30584236><TR 
     
    30694247ALIGN="LEFT" 
    30704248VALIGN="TOP" 
    3071 >&nbsp;</TD 
     4249> TRUE on success, FALSE on failure.</TD 
    30724250></TR 
    30734251></TBODY 
     
    30804258CLASS="REFSECT2" 
    30814259><A 
    3082 NAME="AEN1155" 
     4260NAME="AEN1438" 
    30834261></A 
    30844262><H3 
     
    31184296CLASS="INFORMALTABLE" 
    31194297><A 
    3120 NAME="AEN1163" 
     4298NAME="AEN1446" 
    31214299></A 
    31224300><P 
     
    31884366CLASS="REFSECT2" 
    31894367><A 
    3190 NAME="AEN1180" 
     4368NAME="AEN1463" 
    31914369></A 
    31924370><H3 
     
    32134391><P 
    32144392></P 
     4393><P 
     4394></P 
    32154395><DIV 
    32164396CLASS="INFORMALTABLE" 
    32174397><A 
    3218 NAME="AEN1186" 
     4398NAME="AEN1470" 
    32194399></A 
    32204400><P 
     
    32434423ALIGN="LEFT" 
    32444424VALIGN="TOP" 
    3245 >&nbsp;</TD 
     4425> The RTP Session.</TD 
    32464426></TR 
    32474427><TR 
     
    32584438ALIGN="LEFT" 
    32594439VALIGN="TOP" 
    3260 >&nbsp;</TD 
     4440> The session's destination address, as set when creating the 
     4441session with <A 
     4442HREF="uclmmbase-rtp.html#RTP-INIT" 
     4443>rtp_init</A 
     4444>() or <A 
     4445HREF="uclmmbase-rtp.html#RTP-INIT-IF" 
     4446>rtp_init_if</A 
     4447>().</TD 
    32614448></TR 
    32624449></TBODY 
     
    32694456CLASS="REFSECT2" 
    32704457><A 
    3271 NAME="AEN1199" 
     4458NAME="AEN1485" 
    32724459></A 
    32734460><H3 
     
    32974484><P 
    32984485></P 
     4486><P 
     4487></P 
    32994488><DIV 
    33004489CLASS="INFORMALTABLE" 
    33014490><A 
    3302 NAME="AEN1206" 
     4491NAME="AEN1493" 
    33034492></A 
    33044493><P 
     
    33274516ALIGN="LEFT" 
    33284517VALIGN="TOP" 
    3329 >&nbsp;</TD 
     4518> The RTP Session.</TD 
    33304519></TR 
    33314520><TR 
     
    33424531ALIGN="LEFT" 
    33434532VALIGN="TOP" 
    3344 >&nbsp;</TD 
     4533> The UDP port to which this session is bound, as set when 
     4534creating the session with <A 
     4535HREF="uclmmbase-rtp.html#RTP-INIT" 
     4536>rtp_init</A 
     4537>() or <A 
     4538HREF="uclmmbase-rtp.html#RTP-INIT-IF" 
     4539>rtp_init_if</A 
     4540>().</TD 
    33454541></TR 
    33464542></TBODY 
     
    33534549CLASS="REFSECT2" 
    33544550><A 
    3355 NAME="AEN1219" 
     4551NAME="AEN1508" 
    33564552></A 
    33574553><H3 
     
    33814577><P 
    33824578></P 
     4579><P 
     4580></P 
    33834581><DIV 
    33844582CLASS="INFORMALTABLE" 
    33854583><A 
    3386 NAME="AEN1226" 
     4584NAME="AEN1516" 
    33874585></A 
    33884586><P 
     
    34114609ALIGN="LEFT" 
    34124610VALIGN="TOP" 
    3413 >&nbsp;</TD 
     4611> The RTP Session.</TD 
    34144612></TR 
    34154613><TR 
     
    34264624ALIGN="LEFT" 
    34274625VALIGN="TOP" 
    3428 >&nbsp;</TD 
     4626> The UDP port to which RTP packets are transmitted, as set 
     4627when creating the session with <A 
     4628HREF="uclmmbase-rtp.html#RTP-INIT" 
     4629>rtp_init</A 
     4630>() or <A 
     4631HREF="uclmmbase-rtp.html#RTP-INIT-IF" 
     4632>rtp_init_if</A 
     4633>().</TD 
    34294634></TR 
    34304635></TBODY 
     
    34374642CLASS="REFSECT2" 
    34384643><A 
    3439 NAME="AEN1239" 
     4644NAME="AEN1531" 
    34404645></A 
    34414646><H3 
     
    34624667><P 
    34634668></P 
     4669><P 
     4670></P 
    34644671><DIV 
    34654672CLASS="INFORMALTABLE" 
    34664673><A 
    3467 NAME="AEN1245" 
     4674NAME="AEN1538" 
    34684675></A 
    34694676><P 
     
    34924699ALIGN="LEFT" 
    34934700VALIGN="TOP" 
    3494 >&nbsp;</TD 
     4701> The RTP Session.</TD 
    34954702></TR 
    34964703><TR 
     
    35074714ALIGN="LEFT" 
    35084715VALIGN="TOP" 
    3509 >&nbsp;</TD 
     4716> The session's TTL, as set when creating the session with 
     4717<A 
     4718HREF="uclmmbase-rtp.html#RTP-INIT" 
     4719>rtp_init</A 
     4720>() or <A 
     4721HREF="uclmmbase-rtp.html#RTP-INIT-IF" 
     4722>rtp_init_if</A 
     4723>().</TD 
    35104724></TR 
    35114725></TBODY 
     
    35184732CLASS="REFSECT2" 
    35194733><A 
    3520 NAME="AEN1258" 
     4734NAME="AEN1553" 
    35214735></A 
    35224736><H3 
     
    35424756></TABLE 
    35434757><P 
     4758>This function returns the userdata pointer that was passed to the 
     4759<A 
     4760HREF="uclmmbase-rtp.html#RTP-INIT" 
     4761>rtp_init</A 
     4762>() or <A 
     4763HREF="uclmmbase-rtp.html#RTP-INIT-IF" 
     4764>rtp_init_if</A 
     4765>() function when creating this session. 
     4766XXX (Note that gtkdoc thinks that it returns void, not void*, so 
     4767ignores the "Returns:" block here)</P 
     4768><P 
    35444769></P 
    35454770><DIV 
    35464771CLASS="INFORMALTABLE" 
    35474772><A 
    3548 NAME="AEN1264" 
     4773NAME="AEN1562" 
    35494774></A 
    35504775><P 
     
    35734798ALIGN="LEFT" 
    35744799VALIGN="TOP" 
    3575 >&nbsp;</TD 
     4800> The RTP session.</TD 
    35764801></TR 
    35774802></TBODY 
     
    35854810CLASS="REFSECT1" 
    35864811><A 
    3587 NAME="AEN1273" 
     4812NAME="AEN1571" 
    35884813></A 
    35894814><H2 
  • common/trunk/doc/tmpl/rtp.sgml

    r549 r551  
    4242</para> 
    4343 
    44  
    45  
    46 <!-- ##### FUNCTION rtp_init ##### --> 
    47 <para> 
    48  
    49 </para> 
    50  
    51 @addr:  
    52 @rx_port:  
    53 @tx_port:  
    54 @ttl:  
    55 @rtcp_bw:  
    56 @callback:  
    57 @userdata:  
    58 @Returns:  
    59  
    60  
    61 <!-- ##### FUNCTION rtp_init_if ##### --> 
    62 <para> 
    63  
    64 </para> 
    65  
    66 @addr:  
    67 @iface:  
    68 @rx_port:  
    69 @tx_port:  
    70 @ttl:  
    71 @rtcp_bw:  
    72 @callback:  
    73 @userdata:  
    74 @Returns:  
    7544 
    7645 
     
    11180<!-- ##### ENUM rtcp_sdes_type ##### --> 
    11281<para> 
    113  
    114 </para> 
    115  
    116 @RTCP_SDES_END:  
    117 @RTCP_SDES_CNAME:  
    118 @RTCP_SDES_NAME:  
    119 @RTCP_SDES_EMAIL:  
    120 @RTCP_SDES_PHONE:  
    121 @RTCP_SDES_LOC:  
    122 @RTCP_SDES_TOOL:  
    123 @RTCP_SDES_NOTE:  
    124 @RTCP_SDES_PRIV:  
     82Possible values of Session Description (SDES) identifiers.  SDES items 
     83are announced via #rtp_callback (with RX_SDES events) when they are 
     84received.  SDES items may be configured and queried with #rtp_set_sdes 
     85and #rtp_get_sdes.  The RTP guidelines recommend keeping SDES items 
     86constant during an RTP session to avoid confusing end users. 
     87</para> 
     88 
     89@RTCP_SDES_END: Indicates the end of SDES item processing when SDES data is received.  Has no meaning with #rtp_set_sdes and #rtp_get_sdes. 
     90@RTCP_SDES_CNAME: The canonical name associated with participant. It is algorithmically derived and should never be changed. 
     91@RTCP_SDES_NAME: The local participant's name, typically displayed in RTP session participant list. The name can take any form, and should remain constant during a session to avoid confusion. 
     92@RTCP_SDES_EMAIL: The local participant's email address (optional). 
     93@RTCP_SDES_PHONE: The local participant's telephone number (optional). 
     94@RTCP_SDES_LOC: The local participant's geographic location (optional). 
     95@RTCP_SDES_TOOL: The local participant's tool (optional). 
     96@RTCP_SDES_NOTE: Any additional information the local participant wishes to communicate about themselves (optional). 
     97@RTCP_SDES_PRIV: Private extension SDES item see <ulink url="http://www.ietf.org/rfc/rfc1889.txt">RFC1889</ulink> for details. 
    12598 
    12699<!-- ##### TYPEDEF rtcp_sdes_item ##### --> 
     
    212185 
    213186 
     187<!-- ##### ENUM rtp_option ##### --> 
     188<para> 
     189The possible options for a session that affect which RTP packets are 
     190passed to the application and when internal state for sources is created. 
     191</para> 
     192 
     193@RTP_OPT_PROMISC: Pass RTP packets to application irrespective of 
     194whether a sender report has been received.  Normally, participant 
     195state is created when a sender report is received and RTP packets that 
     196arrive prior to the sender report are discarded. 
     197@RTP_OPT_WEAK_VALIDATION: Create source state when RTP packets arrive 
     198if none exists.  This option is set by default.  Disabling the option 
     199means source state is only created when sender reports are received. 
     200@RTP_OPT_FILTER_MY_PACKETS: Filter out packets from local participant 
     201if they are received.  With multicast sessions, packets may be looped 
     202back, causing senders packets to be received locally.  This may be 
     203filtered out with this option. 
     204 
     205<!-- ##### FUNCTION rtp_init ##### --> 
     206<para> 
     207 
     208</para> 
     209 
     210@addr:  
     211@rx_port:  
     212@tx_port:  
     213@ttl:  
     214@rtcp_bw:  
     215@callback:  
     216@userdata:  
     217@Returns:  
     218 
     219 
     220<!-- ##### FUNCTION rtp_init_if ##### --> 
     221<para> 
     222 
     223</para> 
     224 
     225@addr:  
     226@iface:  
     227@rx_port:  
     228@tx_port:  
     229@ttl:  
     230@rtcp_bw:  
     231@callback:  
     232@userdata:  
     233@Returns:  
     234 
     235 
    214236<!-- ##### FUNCTION rtp_send_bye ##### --> 
    215237<para> 
     
    227249@session:  
    228250 
    229  
    230 <!-- ##### ENUM rtp_option ##### --> 
    231 <para> 
    232  
    233 </para> 
    234  
    235 @RTP_OPT_PROMISC:  
    236 @RTP_OPT_WEAK_VALIDATION:  
    237 @RTP_OPT_FILTER_MY_PACKETS:  
    238251 
    239252<!-- ##### FUNCTION rtp_set_option ##### --> 
     
    336349 
    337350 
    338 <!-- ##### FUNCTION rtp_valid_ssrc ##### --> 
    339 <para> 
    340  
    341 </para> 
    342  
    343 @session:  
    344 @ssrc:  
    345 @Returns:  
    346  
    347  
    348351<!-- ##### FUNCTION rtp_set_sdes ##### --> 
    349352<para> 
  • common/trunk/doc/tmpl/uclmmbase-unused.sgml

    r546 r551  
    112112 
    113113 
     114 
     115<!-- ##### FUNCTION rtp_valid_ssrc ##### --> 
     116<para> 
     117 
     118</para> 
     119 
     120@session:  
     121@ssrc:  
     122@Returns:  
    114123 
    115124<!-- ##### SECTION ./tmpl/test_mbus_parser.sgml:Long_Description ##### --> 
  • common/trunk/doc/uclmmbase-sections.txt

    r549 r551  
    342342RTP_VERSION 
    343343RTP_MAX_PACKET_LEN 
    344 rtp_init 
    345 rtp_init_if 
    346344rtp_packet 
    347345RTP_PACKET_HEADER_SIZE 
     
    355353rtp_event 
    356354rtp_callback 
     355rtp_option 
     356rtp_init 
     357rtp_init_if 
    357358rtp_send_bye 
    358359rtp_done 
    359 rtp_option 
    360360rtp_set_option 
    361361rtp_get_option 
     
    367367rtp_add_csrc 
    368368rtp_del_csrc 
    369 rtp_valid_ssrc 
    370369rtp_set_sdes 
    371370rtp_get_sdes 
  • common/trunk/src/rtp.c

    r550 r551  
    893893} 
    894894 
     895/* See rtp_init_if(); calling rtp_init() is just like calling 
     896 * rtp_init_if() with a NULL interface argument. 
     897 */ 
     898 
    895899/** 
    896900 * rtp_init: 
     
    901905 * @tx_port: The port to which to send UDP packets 
    902906 * @ttl: The TTL with which to send multicasts 
    903  * @rtcp_bw: The total bandwidth (in units of ___) that is 
     907 * @rtcp_bw: The total bandwidth (in units of bytes per second) that is 
    904908 * allocated to RTCP. 
    905909 * @callback: See section on #rtp_callback. 
     
    907911 * rtp_get_userdata(). 
    908912 * 
    909  * See rtp_init_if(); calling rtp_init() is just like calling 
    910  * rtp_init_if() with a NULL interface argument. 
    911913 * 
    912914 * Returns: An opaque session identifier to be used in future calls to 
     
    17391741 * rtp_recv: 
    17401742 * @session: the session pointer (returned by rtp_init()) 
    1741  * @timeout: the amount of time that rtcp_recv() is allowed to block. 
     1743 * @timeout: the amount of time that rtcp_recv() is allowed to block 
    17421744 * @curr_rtp_ts: the current time expressed in units of the media 
    17431745 * timestamp. 
     
    17701772} 
    17711773 
     1774 
     1775 
     1776/** 
     1777 * rtp_add_csrc: 
     1778 * @session: the session pointer (returned by rtp_init())  
     1779 * @csrc: Constributing SSRC identifier 
     1780 *  
     1781 * Adds @csrc to list of contributing sources used in SDES items. 
     1782 * Used by mixers and transcoders. 
     1783 *  
     1784 * Return value: TRUE. 
     1785 **/ 
    17721786int rtp_add_csrc(struct rtp *session, uint32_t csrc) 
    17731787{ 
     
    17891803} 
    17901804 
     1805/** 
     1806 * rtp_del_csrc: 
     1807 * @session: the session pointer (returned by rtp_init())  
     1808 * @csrc: Constributing SSRC identifier 
     1809 *  
     1810 * Removes @csrc from list of contributing sources used in SDES items. 
     1811 * Used by mixers and transcoders. 
     1812 *  
     1813 * Return value: TRUE on success, FALSE if @csrc is not a valid source. 
     1814 **/ 
    17911815int rtp_del_csrc(struct rtp *session, uint32_t csrc) 
    17921816{ 
     
    18081832} 
    18091833 
     1834/** 
     1835 * rtp_set_sdes: 
     1836 * @session: the session pointer (returned by rtp_init())  
     1837 * @ssrc: the SSRC identifier of a participant 
     1838 * @type: the SDES type represented by @value 
     1839 * @value: the SDES description 
     1840 * @length: the length of the description 
     1841 *  
     1842 * Sets session description information associated with participant 
     1843 * @ssrc.  Under normal circumstances applications always use the 
     1844 * @ssrc of the local participant, this SDES information is 
     1845 * transmitted in receiver reports.  Setting SDES information for 
     1846 * other participants affects the local SDES entries, but are not 
     1847 * transmitted onto the network. 
     1848 *  
     1849 * Return value: Returns TRUE if participant exists, FALSE otherwise. 
     1850 **/ 
    18101851int rtp_set_sdes(struct rtp *session, uint32_t ssrc, rtcp_sdes_type type, char *value, int length) 
    18111852{ 
     
    18691910} 
    18701911 
     1912/** 
     1913 * rtp_get_sdes: 
     1914 * @session: the session pointer (returned by rtp_init())  
     1915 * @ssrc: the SSRC identifier of a participant 
     1916 * @type: the SDES information to retrieve 
     1917 *  
     1918 * Recovers session description (SDES) information on participant 
     1919 * identified with @ssrc.  The SDES information associated with a 
     1920 * source is updated when receiver reports are received.  There are 
     1921 * several different types of SDES information, e.g. username, 
     1922 * location, phone, email.  These are enumerated by #rtcp_sdes_type. 
     1923 *  
     1924 * Return value: pointer to string containing SDES description if 
     1925 * received, NULL otherwise.   
     1926 */ 
    18711927const char *rtp_get_sdes(struct rtp *session, uint32_t ssrc, rtcp_sdes_type type) 
    18721928{ 
     
    19061962} 
    19071963 
     1964/** 
     1965 * rtp_get_sr: 
     1966 * @session: the session pointer (returned by rtp_init())  
     1967 * @ssrc: identifier of source 
     1968 *  
     1969 * Retrieve the latest sender report made by sender with @ssrc identifier. 
     1970 *  
     1971 * Return value: A pointer to an rtcp_sr structure on success, NULL 
     1972 * otherwise.  The pointer must not be freed. 
     1973 **/ 
    19081974const rtcp_sr *rtp_get_sr(struct rtp *session, uint32_t ssrc) 
    19091975{ 
     
    19221988} 
    19231989 
     1990/** 
     1991 * rtp_get_rr: 
     1992 * @session: the session pointer (returned by rtp_init()) 
     1993 * @reporter: participant originating receiver report 
     1994 * @reportee: participant included in receiver report 
     1995 *  
     1996 * Retrieve the latest receiver report on @reportee made by @reporter. 
     1997 * Provides an indication of other receivers reception service. 
     1998 *  
     1999 * Return value: A pointer to a rtcp_rr structure on success, NULL 
     2000 * otherwise.  The pointer must not be freed. 
     2001 **/ 
    19242002const rtcp_rr *rtp_get_rr(struct rtp *session, uint32_t reporter, uint32_t reportee) 
    19252003{ 
     
    19282006} 
    19292007 
    1930 int rtp_send_data(struct rtp *session, uint32_t rtp_ts, char pt, int m, int cc, uint32_t csrc[],  
    1931                   char *data, int data_len, char *extn, uint16_t extn_len, uint16_t extn_type) 
     2008/** 
     2009 * rtp_send_data: 
     2010 * @session: the session pointer (returned by rtp_init()) 
     2011 * @rtp_ts: The timestamp reflects the sampling instant of the first octet of the RTP data to be sent.  The timestamp is expressed in media units. 
     2012 * @pt: The payload type identifying the format of the data. 
     2013 * @m: Marker bit, interpretation defined by media profile of payload. 
     2014 * @cc: Number of contributing sources (excluding local participant) 
     2015 * @csrc: Array of SSRC identifiers for contributing sources. 
     2016 * @data: The RTP data to be sent. 
     2017 * @data_len: The size @data in bytes. 
     2018 * @extn: Extension data (if present). 
     2019 * @extn_len: size of @extn in bytes. 
     2020 * @extn_type: extension type indicator. 
     2021 *  
     2022 * Send an RTP packet.  Most media applications will only set the 
     2023 * @session, @rtp_ts, @pt, @m, @data, @data_len arguments. 
     2024 * 
     2025 * Mixers and translators typically set additional contributing sources  
     2026 * arguments (@cc, @csrc). 
     2027 * 
     2028 * Extensions fields (@extn, @extn_len, @extn_type) are for including 
     2029 * application specific information.  When the widest amount of 
     2030 * inter-operability is required these fields should be avoided as 
     2031 * some applications discard packets with extensions they do not 
     2032 * recognize. 
     2033 *  
     2034 * Return value: Number of bytes transmitted. 
     2035 **/ 
     2036int rtp_send_data(struct rtp *session, uint32_t rtp_ts, char pt, int m,  
     2037                  int cc, uint32_t* csrc,  
     2038                  char *data, int data_len,  
     2039                  char *extn, uint16_t extn_len, uint16_t extn_type) 
    19322040{ 
    19332041        int              buffer_len, i, rc, pad, pad_len; 
     
    23762484 * @appcallback: a callback to create an APP RTCP packet, if needed. 
    23772485 * 
    2378  * Sends RTCP if it's time to send RTCP.  Must be called 
    2379  * "often enough".  (XXX Say something more here?) 
     2486 * Checks RTCP timer and sends RTCP data when nececessary.  The 
     2487 * interval between RTCP packets is randomized over an interval that 
     2488 * depends on the session bandwidth, the number of participants, and 
     2489 * whether the local participant is a sender.  This function should be 
     2490 * called at least once per second, and can be safely called more 
     2491 * frequently.   
    23802492 */ 
    23812493void rtp_send_ctrl(struct rtp *session, uint32_t rtp_ts, 
     
    24272539 * @session: the session pointer (returned by rtp_init()) 
    24282540 * 
    2429  * Performs housekeeping. 
    2430  * Must be called ???how often??? 
    2431  * No need to call more than once per second. 
     2541 * Trawls through the internal data structures and performs 
     2542 * housekeeping.  This function should be called at least once per 
     2543 * second.  It uses an internal timer to limit the number of passes 
     2544 * through the data structures to once per second, it can be safely 
     2545 * called more frequently. 
    24322546 */ 
    24332547void rtp_update(struct rtp *session) 
     
    25542668 * @session: the RTP session to finish 
    25552669 * 
    2556  * Frees state associated with given RTP session.  Does not send 
    2557  * any packets (e.g. BYE). 
     2670 * Frees state associated with given RTP session.  Should be called 
     2671 * after rtp_send_bye().   
    25582672 */ 
    25592673void rtp_done(struct rtp *session) 
  • common/trunk/src/rtp.h

    r549 r551  
    5050struct rtp; 
    5151 
     52/* XXX gtkdoc doesn't seem to be able to handle functions that return 
     53 * struct *'s. */ 
     54typedef struct rtp *rtp_t; 
     55 
    5256typedef struct { 
    5357        /* The following are pointers to the data in the packet as    */ 
     
    182186} rtcp_sdes_type; 
    183187 
    184 /* XXX gtkdoc doesn't seem to be able to handle functions that return 
    185  * struct *'s. */ 
    186 typedef struct rtp *rtp_t; 
    187  
    188188rtp_t           rtp_init(const char *addr,  
    189189                          uint16_t rx_port, uint16_t tx_port,  
     
    217217int              rtp_add_csrc(struct rtp *session, uint32_t csrc); 
    218218int              rtp_del_csrc(struct rtp *session, uint32_t csrc); 
    219 int              rtp_valid_ssrc(struct rtp *session, uint32_t ssrc); 
    220219 
    221220int              rtp_set_sdes(struct rtp *session, uint32_t ssrc,  
     
    235234void            *rtp_get_userdata(struct rtp *session); 
    236235 
    237  
    238  
    239236#endif /* __RTP_H__ */