📄 ortp-rtp-payloads-and-profiles.html
字号:
<HTML><HEAD><TITLE>RTP payloads and profiles</TITLE><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+"><LINKREL="HOME"TITLE="oRTP Reference Manual"HREF="book1.html"><LINKREL="UP"TITLE="oRTP API"HREF="ortpapi.html"><LINKREL="PREVIOUS"TITLE="RtpSession API"HREF="ortp-rtpsession-api.html"><LINKREL="NEXT"TITLE="Multiplexing sessions (in a one thread design)"HREF="ortp-multiplexing-sessions-(in-a-one-thread-design).html"></HEAD><BODYCLASS="REFENTRY"BGCOLOR="#FFFFFF"TEXT="#000000"LINK="#0000FF"VLINK="#840084"ALINK="#0000FF"><DIVCLASS="NAVHEADER"><TABLEWIDTH="100%"BORDER="0"BGCOLOR="#000000"CELLPADDING="1"CELLSPACING="0"><TR><THCOLSPAN="4"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="5">oRTP Reference Manual</FONT></TH></TR><TR><TDWIDTH="25%"BGCOLOR="#C00000"ALIGN="left"><AHREF="ortp-rtpsession-api.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B><<< Previous Page</B></FONT></A></TD><TDWIDTH="25%"BGCOLOR="#0000C0"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="3"><B><AHREF="book1.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Home</B></FONT></A></B></FONT></TD><TDWIDTH="25%"BGCOLOR="#00C000"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="3"><B><AHREF="ortpapi.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Up</B></FONT></A></B></FONT></TD><TDWIDTH="25%"BGCOLOR="#C00000"ALIGN="right"><AHREF="ortp-multiplexing-sessions-(in-a-one-thread-design).html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Next Page >>></B></FONT></A></TD></TR></TABLE></DIV><H1><ANAME="ORTP-RTP-PAYLOADS-AND-PROFILES">RTP payloads and profiles</H1><DIVCLASS="REFNAMEDIV"><ANAME="AEN632"></A><H2>Name</H2>RTP payloads and profiles -- This section describes the way that the oRTP stack manages RTP profiles and payload types.</DIV><DIVCLASS="REFSYNOPSISDIV"><ANAME="AEN635"><H2>Synopsis</H2><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="SYNOPSIS"> #include <payloadtype.h>struct <AHREF="ortp-rtp-payloads-and-profiles.html#PAYLOADTYPE">PayloadType</A>;struct <AHREF="ortp-rtp-payloads-and-profiles.html#RTPPROFILE">RtpProfile</A>;extern RtpProfile <AHREF="ortp-rtp-payloads-and-profiles.html#AV-PROFILE">av_profile</A>;#define <AHREF="ortp-rtp-payloads-and-profiles.html#RTP-PROFILE-CLEAR-ALL">rtp_profile_clear_all</A> (profile)#define <AHREF="ortp-rtp-payloads-and-profiles.html#RTP-PROFILE-GET-NAME">rtp_profile_get_name</A> (profile)#define <AHREF="ortp-rtp-payloads-and-profiles.html#RTP-PROFILE-SET-NAME">rtp_profile_set_name</A> (profile,nm)#define <AHREF="ortp-rtp-payloads-and-profiles.html#RTP-PROFILE-SET-PAYLOAD">rtp_profile_set_payload</A> (profile,index,pt)#define <AHREF="ortp-rtp-payloads-and-profiles.html#RTP-PROFILE-GET-PAYLOAD">rtp_profile_get_payload</A> (profile,index)#define <AHREF="ortp-rtp-payloads-and-profiles.html#RTP-PROFILE-CLEAR-PAYLOAD">rtp_profile_clear_payload</A> (profile,index)#define <AHREF="ortp-rtp-payloads-and-profiles.html#RTP-PROFILE-CLEAR-ALL">rtp_profile_clear_all</A> (profile)</PRE></TD></TR></TABLE></DIV><DIVCLASS="REFSECT1"><ANAME="AEN648"></A><H2>Description</H2><P>A rtp payload type is a number between 0 and 127 that identifies a particular payload (GSM, PCMU, MPEG,...) within a given rtp profile. The <AHREF="ortp-rtp-payloads-and-profiles.html#PAYLOADTYPE">PayloadType</A> object in oRTP describesa payload.An RTP profile is a table that assigns particular payloads (GSM, MPEG...) to a payload typenumber within the range 0..127. In oRTP, profiles are represented by the <AHREF="ortp-rtp-payloads-and-profiles.html#RTPPROFILE">RtpProfile</A> object.For example in the AV profile (Audio Video profile, defined in RFC1890), often used by telephony applications, the payload type number 8 is assigned to PCMA (A-law compressed audio) at sampling frequency 8000 Hz, mono.By default, all RTP sessions created by oRTP use the AV profile, but you can change the profileof an RTP session using <AHREF="ortp-rtpsession-api.html#RTP-SESSION-SET-PROFILE">rtp_session_set_profile</A>().</P></DIV><DIVCLASS="REFSECT1"><ANAME="AEN654"></A><H2>Details</H2><DIVCLASS="REFSECT2"><ANAME="AEN656"></A><H3><ANAME="PAYLOADTYPE"></A>struct PayloadType</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">struct PayloadType{ gint type; #define PAYLOAD_AUDIO_CONTINUOUS 0 #define PAYLOAD_AUDIO_PACKETIZED 1 #define PAYLOAD_VIDEO 2 #define PAYLOAD_OTHER 3 /* ?? */ gint clock_rate; double bytes_per_sample; /* in case of continuous audio data */ char *zero_pattern; gint pattern_length; /* other usefull information */ gint normal_bitrate; /*in bit/s */ char *mime_type; guint32 flags;};</PRE></TD></TR></TABLE><P></P></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN661"></A><H3><ANAME="RTPPROFILE"></A>struct RtpProfile</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">struct RtpProfile{ char *name; PayloadType *payload[127];};</PRE></TD></TR></TABLE><P></P></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN666"></A><H3><ANAME="AV-PROFILE"></A>av_profile</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">extern RtpProfile av_profile;</PRE></TD></TR></TABLE><P>This is the Audio Video profile defined in RFC1890.</P></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN671"></A><H3><ANAME="RTP-PROFILE-CLEAR-ALL"></A>rtp_profile_clear_all()</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">#define rtp_profile_clear_all(profile) memset((void*)(profile),0,sizeof(RtpProfile))</PRE></TD></TR></TABLE><P>Initialize the profile to the empty profile (all payload type are unassigned).</P><P></P><DIVCLASS="INFORMALTABLE"><ANAME="AEN677"><P></P><TABLEBORDER="0"WIDTH="100%"BGCOLOR="#FFD0D0"CELLSPACING="0"CELLPADDING="4"CLASS="CALSTABLE"><TBODY><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>profile</I></TT> :</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP"> an RTP profile (<AHREF="ortp-rtp-payloads-and-profiles.html#RTPPROFILE">RtpProfile</A> object)</TD></TR></TBODY></TABLE><P></P></DIV></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN687"></A><H3><ANAME="RTP-PROFILE-GET-NAME"></A>rtp_profile_get_name()</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">#define rtp_profile_get_name(profile) (profile)->name</PRE></TD></TR></TABLE><P></P><P></P><DIVCLASS="INFORMALTABLE"><ANAME="AEN693"><P></P><TABLEBORDER="0"WIDTH="100%"BGCOLOR="#FFD0D0"CELLSPACING="0"CELLPADDING="4"CLASS="CALSTABLE"><TBODY><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>profile</I></TT> :</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP"> a rtp profile object (<AHREF="ortp-rtp-payloads-and-profiles.html#RTPPROFILE">RtpProfile</A>)</TD></TR></TBODY></TABLE><P></P></DIV></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN703"></A><H3><ANAME="RTP-PROFILE-SET-NAME"></A>rtp_profile_set_name()</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">#define rtp_profile_set_name(profile,nm) (profile)->name=(nm)</PRE></TD></TR></TABLE><P>Set a name to the rtp profile. (This is not required)</P><P></P><DIVCLASS="INFORMALTABLE"><ANAME="AEN709"><P></P><TABLEBORDER="0"WIDTH="100%"BGCOLOR="#FFD0D0"CELLSPACING="0"CELLPADDING="4"CLASS="CALSTABLE"><TBODY><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>profile</I></TT> :</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP"> a rtp profile object (<AHREF="ortp-rtp-payloads-and-profiles.html#RTPPROFILE">RtpProfile</A>)</TD></TR><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>nm</I></TT> :</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP"> a string</TD></TR></TBODY></TABLE><P></P></DIV></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN723"></A><H3><ANAME="RTP-PROFILE-SET-PAYLOAD"></A>rtp_profile_set_payload()</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">#define rtp_profile_set_payload(profile,index,pt) (profile)->payload[(index)]=(pt)</PRE></TD></TR></TABLE><P>Assign payload type number <TTCLASS="PARAMETER"><I>index</I></TT> to payload type desribed in <TTCLASS="PARAMETER"><I>pt</I></TT> for the RTP profile<TTCLASS="PARAMETER"><I>profile</I></TT>.</P><P></P><DIVCLASS="INFORMALTABLE"><ANAME="AEN732"><P></P><TABLEBORDER="0"WIDTH="100%"BGCOLOR="#FFD0D0"CELLSPACING="0"CELLPADDING="4"CLASS="CALSTABLE"><TBODY><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>profile</I></TT> :</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP"> an RTP profile (a <AHREF="ortp-rtp-payloads-and-profiles.html#RTPPROFILE">RtpProfile</A> object)</TD></TR><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>index</I></TT> :</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP"> the payload type number</TD></TR><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>pt</I></TT> :</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP"> the payload type description (a <AHREF="ortp-rtp-payloads-and-profiles.html#PAYLOADTYPE">PayloadType</A> object )</TD></TR></TBODY></TABLE><P></P></DIV></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN751"></A><H3><ANAME="RTP-PROFILE-GET-PAYLOAD"></A>rtp_profile_get_payload()</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">#define rtp_profile_get_payload(profile,index) ((profile)->payload[(index)])</PRE></TD></TR></TABLE><P>Gets the payload description of the payload type <TTCLASS="PARAMETER"><I>index</I></TT> in the profile <TTCLASS="PARAMETER"><I>profile</I></TT>.</P><P></P><DIVCLASS="INFORMALTABLE"><ANAME="AEN759"><P></P><TABLEBORDER="0"WIDTH="100%"BGCOLOR="#FFD0D0"CELLSPACING="0"CELLPADDING="4"CLASS="CALSTABLE"><TBODY><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>profile</I></TT> :</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP"> an RTP profile (a <AHREF="ortp-rtp-payloads-and-profiles.html#RTPPROFILE">RtpProfile</A> object)</TD></TR><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>index</I></TT> :</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP"> the payload type number</TD></TR></TBODY></TABLE><P></P></DIV></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN773"></A><H3><ANAME="RTP-PROFILE-CLEAR-PAYLOAD"></A>rtp_profile_clear_payload()</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">#define rtp_profile_clear_payload(profile,index) (profile)->payload[(index)]=NULL</PRE></TD></TR></TABLE><P>Set payload type number <TTCLASS="PARAMETER"><I>index</I></TT> unassigned in profile <TTCLASS="PARAMETER"><I>profile</I></TT>.</P><P></P><DIVCLASS="INFORMALTABLE"><ANAME="AEN781"><P></P><TABLEBORDER="0"WIDTH="100%"BGCOLOR="#FFD0D0"CELLSPACING="0"CELLPADDING="4"CLASS="CALSTABLE"><TBODY><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>profile</I></TT> :</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP"> an RTP profile (a <AHREF="ortp-rtp-payloads-and-profiles.html#RTPPROFILE">RtpProfile</A> object)</TD></TR><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>index</I></TT> :</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP"> the payload type number</TD></TR></TBODY></TABLE><P></P></DIV></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN795"></A><H3><ANAME="RTP-PROFILE-CLEAR-ALL"></A>rtp_profile_clear_all()</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">#define rtp_profile_clear_all(profile) memset((void*)(profile),0,sizeof(RtpProfile))</PRE></TD></TR></TABLE><P>Initialize the profile to the empty profile (all payload type are unassigned).</P><P></P><DIVCLASS="INFORMALTABLE"><ANAME="AEN801"><P></P><TABLEBORDER="0"WIDTH="100%"BGCOLOR="#FFD0D0"CELLSPACING="0"CELLPADDING="4"CLASS="CALSTABLE"><TBODY><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>profile</I></TT> :</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP"> an RTP profile (<AHREF="ortp-rtp-payloads-and-profiles.html#RTPPROFILE">RtpProfile</A> object)</TD></TR></TBODY></TABLE><P></P></DIV></DIV></DIV><DIVCLASS="REFSECT1"><ANAME="AEN811"></A><H2>See Also</H2><P><AHREF="ortp-rtpsession-api.html#RTP-SESSION-SET-PROFILE">rtp_session_set_profile</A>()</P></DIV><DIVCLASS="NAVFOOTER"><BRCLEAR="all"><BR><TABLEWIDTH="100%"BORDER="0"BGCOLOR="#000000"CELLPADDING="1"CELLSPACING="0"><TR><TDWIDTH="25%"BGCOLOR="#C00000"ALIGN="left"><AHREF="ortp-rtpsession-api.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B><<< Previous Page</B></FONT></A></TD><TDWIDTH="25%"BGCOLOR="#0000C0"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="3"><B><AHREF="book1.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Home</B></FONT></A></B></FONT></TD><TDWIDTH="25%"BGCOLOR="#00C000"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="3"><B><AHREF="ortpapi.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Up</B></FONT></A></B></FONT></TD><TDWIDTH="25%"BGCOLOR="#C00000"ALIGN="right"><AHREF="ortp-multiplexing-sessions-(in-a-one-thread-design).html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Next Page >>></B></FONT></A></TD></TR><TR><TDCOLSPAN="2"ALIGN="left"><FONTCOLOR="#FFFFFF"SIZE="3"><B>RtpSession API</B></FONT></TD><TDCOLSPAN="2"ALIGN="right"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Multiplexing sessions (in a one thread design)</B></FONT></TD></TR></TABLE></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -