📄 payloads.sgml
字号:
<refentry id="ortp-RTP-payloads-and-profiles"><refmeta><refentrytitle id="top_of_page">RTP payloads and profiles</refentrytitle><manvolnum>3</manvolnum><refmiscinfo>ORTP Library</refmiscinfo></refmeta><refnamediv><refname>RTP payloads and profiles</refname><refpurpose>This section describes the way that the oRTP stack manages RTP profiles and payload types.</refpurpose><!--[<xref linkend="desc" endterm="desc.title"/>]--></refnamediv><refsynopsisdiv id="synopsis"><title id="synopsis.title">Synopsis</title><synopsis>#include <payloadtype.h> <link linkend="PayloadType">PayloadType</link>; <link linkend="RtpProfile">RtpProfile</link>;<link linkend="void">void</link> <link linkend="rtp-profile-clear-all">rtp_profile_clear_all</link> (<link linkend="RtpProfile">RtpProfile</link> *prof);#define <link linkend="rtp-profile-get-name">rtp_profile_get_name</link> (profile)<link linkend="void">void</link> <link linkend="rtp-profile-set-name">rtp_profile_set_name</link> (<link linkend="RtpProfile">RtpProfile</link> *prof, const <link linkend="char">char</link> *name);<link linkend="void">void</link> <link linkend="rtp-profile-set-payload">rtp_profile_set_payload</link> (<link linkend="RtpProfile">RtpProfile</link> *prof, <link linkend="int">int</link> index, <link linkend="PayloadType">PayloadType</link> *pt);#define <link linkend="rtp-profile-clear-payload">rtp_profile_clear_payload</link> (profile,index)</synopsis></refsynopsisdiv><refsect1 id="desc"><title id="desc.title">Description</title><para>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 <link linkend="PayloadType"><type>PayloadType</type></link> 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 <link linkend="RtpProfile"><type>RtpProfile</type></link> 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 <link linkend="rtp-session-set-profile"><function>rtp_session_set_profile()</function></link>.</para></refsect1><refsect1 id="details"><title id="details.title">Details</title><refsect2><title><anchor id="PayloadType" role="struct">PayloadType</title><indexterm><primary>PayloadType</primary></indexterm><programlisting>typedef struct { int type; #define PAYLOAD_AUDIO_CONTINUOUS 0 #define PAYLOAD_AUDIO_PACKETIZED 1 #define PAYLOAD_VIDEO 2 #define PAYLOAD_OTHER 3 /* ?? */ int clock_rate; char bits_per_sample; /* in case of continuous audio data */ char *zero_pattern; int pattern_length; /* other useful information for the application*/ int normal_bitrate; /*in bit/s */ char *mime_type; char *recv_fmtp; /* various format parameters for the incoming stream */ char *send_fmtp; /* various format parameters for the outgoing stream */ int flags; void *user_data;} PayloadType;</programlisting><para></para></refsect2><refsect2><title><anchor id="RtpProfile" role="struct">RtpProfile</title><indexterm><primary>RtpProfile</primary></indexterm><programlisting>typedef struct { char *name; PayloadType *payload[RTP_PROFILE_MAX_PAYLOADS];} RtpProfile;</programlisting><para></para></refsect2><refsect2><title><anchor id="rtp-profile-clear-all" role="function">rtp_profile_clear_all ()</title><indexterm><primary>rtp_profile_clear_all</primary></indexterm><programlisting><link linkend="void">void</link> rtp_profile_clear_all (<link linkend="RtpProfile">RtpProfile</link> *prof);</programlisting><para>Initialize the profile to the empty profile (all payload type are unassigned).</para><para></para><variablelist role="params"><varlistentry><term><parameter>prof</parameter> :</term><listitem><simpara></simpara></listitem></varlistentry></variablelist></refsect2><refsect2><title><anchor id="rtp-profile-get-name" role="macro">rtp_profile_get_name()</title><indexterm><primary>rtp_profile_get_name</primary></indexterm><programlisting>#define rtp_profile_get_name(profile) (const char*)((profile)->name)</programlisting><para></para><para></para><variablelist role="params"><varlistentry><term><parameter>profile</parameter> :</term><listitem><simpara> a rtp profile object (<link linkend="RtpProfile"><type>RtpProfile</type></link>)</simpara></listitem></varlistentry></variablelist></refsect2><refsect2><title><anchor id="rtp-profile-set-name" role="function">rtp_profile_set_name ()</title><indexterm><primary>rtp_profile_set_name</primary></indexterm><programlisting><link linkend="void">void</link> rtp_profile_set_name (<link linkend="RtpProfile">RtpProfile</link> *prof, const <link linkend="char">char</link> *name);</programlisting><para>Set a name to the rtp profile. (This is not required)</para><para></para><variablelist role="params"><varlistentry><term><parameter>prof</parameter> :</term><listitem><simpara></simpara></listitem></varlistentry><varlistentry><term><parameter>name</parameter> :</term><listitem><simpara></simpara></listitem></varlistentry></variablelist></refsect2><refsect2><title><anchor id="rtp-profile-set-payload" role="function">rtp_profile_set_payload ()</title><indexterm><primary>rtp_profile_set_payload</primary></indexterm><programlisting><link linkend="void">void</link> rtp_profile_set_payload (<link linkend="RtpProfile">RtpProfile</link> *prof, <link linkend="int">int</link> index, <link linkend="PayloadType">PayloadType</link> *pt);</programlisting><para>Assign payload type number <parameter>index</parameter> to payload type desribed in <parameter>pt</parameter> for the RTP profile<parameter>profile</parameter>.</para><para></para><variablelist role="params"><varlistentry><term><parameter>prof</parameter> :</term><listitem><simpara></simpara></listitem></varlistentry><varlistentry><term><parameter>index</parameter> :</term><listitem><simpara> the payload type number</simpara></listitem></varlistentry><varlistentry><term><parameter>pt</parameter> :</term><listitem><simpara> the payload type description (a <link linkend="PayloadType"><type>PayloadType</type></link> object )</simpara></listitem></varlistentry></variablelist></refsect2><refsect2><title><anchor id="rtp-profile-clear-payload" role="macro">rtp_profile_clear_payload()</title><indexterm><primary>rtp_profile_clear_payload</primary></indexterm><programlisting>#define rtp_profile_clear_payload(profile,index) rtp_profile_set_payload(profile,index,NULL) </programlisting><para>Set payload type number <parameter>index</parameter> unassigned in profile <parameter>profile</parameter>.</para><para></para><variablelist role="params"><varlistentry><term><parameter>profile</parameter> :</term><listitem><simpara> an RTP profile (a <link linkend="RtpProfile"><type>RtpProfile</type></link> object)</simpara></listitem></varlistentry><varlistentry><term><parameter>index</parameter> :</term><listitem><simpara> the payload type number</simpara></listitem></varlistentry></variablelist></refsect2></refsect1><refsect1><title>See Also</title><para><link linkend="rtp-session-set-profile"><function>rtp_session_set_profile()</function></link></para></refsect1></refentry>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -