📄 payloads.sgml
字号:
<refentry id="ortp-RTP-payloads-and-profiles"><refmeta><refentrytitle>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></refnamediv><refsynopsisdiv><title>Synopsis</title><synopsis>#include <payloadtype.h> <link linkend="PayloadType">PayloadType</link>; <link linkend="RtpProfile">RtpProfile</link>;extern RtpProfile <link linkend="av-profile">av_profile</link>;#define <link linkend="rtp-profile-clear-all">rtp_profile_clear_all</link> (profile)#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);#define <link linkend="rtp-profile-set-payload">rtp_profile_set_payload</link> (profile,index,pt)#define <link linkend="rtp-profile-get-payload">rtp_profile_get_payload</link> (profile,index)#define <link linkend="rtp-profile-clear-payload">rtp_profile_clear_payload</link> (profile,index)</synopsis></refsynopsisdiv><refsect1><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><title>Details</title><refsect2><title><anchor id="PayloadType">PayloadType</title><indexterm><primary>PayloadType</primary></indexterm><programlisting>typedef struct { gint type; #define PAYLOAD_AUDIO_CONTINUOUS 0 #define PAYLOAD_AUDIO_PACKETIZED 1 #define PAYLOAD_VIDEO 2 #define PAYLOAD_OTHER 3 /* ?? */ gint clock_rate; char bits_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; char *fmtp; /*various parameters, as a string */ PayloadTypeFlags flags; void *user_data;} PayloadType;</programlisting><para></para></refsect2><refsect2><title><anchor id="RtpProfile">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="av-profile">av_profile</title><indexterm><primary>av_profile</primary></indexterm><programlisting>extern RtpProfile av_profile;</programlisting><para>This is the Audio Video profile defined in RFC1890.</para></refsect2><refsect2><title><anchor id="rtp-profile-clear-all">rtp_profile_clear_all()</title><indexterm><primary>rtp_profile_clear_all</primary></indexterm><programlisting>#define rtp_profile_clear_all(profile) memset((void*)(profile),0,sizeof(RtpProfile))</programlisting><para>Initialize the profile to the empty profile (all payload type are unassigned).</para><para></para><variablelist role="params"><varlistentry><term><parameter>profile</parameter> :</term><listitem><simpara> an RTP profile (<link linkend="RtpProfile"><type>RtpProfile</type></link> object)</simpara></listitem></varlistentry></variablelist></refsect2><refsect2><title><anchor id="rtp-profile-get-name">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">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">rtp_profile_set_payload()</title><indexterm><primary>rtp_profile_set_payload</primary></indexterm><programlisting>#define rtp_profile_set_payload(profile,index,pt) (profile)->payload[(index)]=(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>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><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-get-payload">rtp_profile_get_payload()</title><indexterm><primary>rtp_profile_get_payload</primary></indexterm><programlisting>#define rtp_profile_get_payload(profile,index) ((profile)->payload[(index)])</programlisting><para>Gets the payload description of the payload type <parameter>index</parameter> in the 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><refsect2><title><anchor id="rtp-profile-clear-payload">rtp_profile_clear_payload()</title><indexterm><primary>rtp_profile_clear_payload</primary></indexterm><programlisting>#define rtp_profile_clear_payload(profile,index) (profile)->payload[(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 + -