Symbian3/SDK/Source/GUID-993629CB-17B4-5E87-8DE1-06A4AC473FDD.dita
author Dominic Pinkman <dominic.pinkman@nokia.com>
Fri, 11 Jun 2010 12:39:03 +0100
changeset 8 ae94777fff8f
parent 7 51a74ef9ed63
child 13 48780e181b38
permissions -rw-r--r--
Week 23 contribution of SDK documentation content. See release notes for details. Fixes bugs Bug 2714, Bug 462.

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License 
"Eclipse Public License v1.0" which accompanies this distribution, 
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
<!-- Initial Contributors:
    Nokia Corporation - initial contribution.
Contributors: 
-->
<!DOCTYPE concept
  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept xml:lang="en" id="GUID-993629CB-17B4-5E87-8DE1-06A4AC473FDD"><title>RTP overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>The Multimedia Protocols RTP (Real-Time Transport Protocol) component provides RTP communication services. This overview shows the usage of the RTP/RTCP protocol as defined in RFC 3550. </p> </section> <section><title>Required background</title> <p>The clients that make use of this API need to be familiar with <xref scope="external" href="http://www.faqs.org/ftp/rfc/rfc3550.pdf">RFC 3550</xref> standard. </p> </section> <section><title>Key concepts</title> <p>The component has the following key concepts: </p> <dl><dlentry><dt>RTP</dt> <dd><p>RTP provides end-to-end network transport services for data with real-time characteristics, such as interactive audio and video. It is built on top of the User Datagram Protocol (UDP). </p> <p>RTP contains two closely linked parts: </p> <ul><li id="GUID-B54B151C-BEBF-5747-9FD9-C46960E81153"><p> <b>RTP:</b> Real-Time Transport Protocol to carry data that has real-time properties. </p> </li> <li id="GUID-038C9C19-BF66-51B5-AF06-06B7DF132C0D"><p> <b>RTCP:</b> RTP Control Protocol to provide feedback on the quality of service being provided by RTP. </p> </li> </ul> </dd> </dlentry> <dlentry><dt>RTCP</dt> <dd><p>RTP Control Protocol used to provide feedback on the quality of service being provided by RTP. RTP and RTCP support transmission of the data and the control packets. </p> </dd> </dlentry> </dl> </section> <section><title>Architectural Relationship</title> <p>The RTP component of MM-protocols uses the following: </p> <ul><li id="GUID-E50A8973-7050-5986-9ED2-CB4B0955F446"><p>Comms-infrasĀ ESOCKĀ  </p> </li> <li id="GUID-628BE20E-C415-52E0-B6CC-1DA781F6CF6B"><p>Networking INSOCK </p> </li> </ul> </section> <section><title>API summary</title> <p>The following are some of the main classes used for RTP communication. </p> <table id="GUID-589CE9B8-D2DF-5125-BC78-6261C6138DF0"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Class Name</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita"><apiname>RRtpSession</apiname></xref>  </p> </entry> <entry><p>A handle to an RTP session that abstracts all RTP information going to and from an RTP socket, and its corresponding RTCP data. </p> </entry> </row> <row><entry><p> <xref href="GUID-2A2D5CCF-1B51-3B68-BE48-CF2125FEA65F.dita"><apiname>RRtpPacket</apiname></xref>  </p> </entry> <entry><p>A handle to an RTP packet used to access the packet through the interface provided by this handle. </p> </entry> </row> <row><entry><p> <xref href="GUID-0720D1BD-7F73-3EF6-80A6-17127EF17C91.dita"><apiname>RRtpSendPacket</apiname></xref>  </p> </entry> <entry><p>Derived from <xref href="GUID-2A2D5CCF-1B51-3B68-BE48-CF2125FEA65F.dita"><apiname>RRtpPacket</apiname></xref> and used as a handle to an RTP send packet. </p> </entry> </row> <row><entry><p> <xref href="GUID-3E4F47A8-0432-307A-B871-A2F7F3A7505F.dita"><apiname>RRtpReceivePacket</apiname></xref>  </p> </entry> <entry><p>Derived from <xref href="GUID-2A2D5CCF-1B51-3B68-BE48-CF2125FEA65F.dita"><apiname>RRtpPacket</apiname></xref> and used as a handle to an RTP receive packet. </p> </entry> </row> <row><entry><p> <xref href="GUID-3690BFA1-A4EA-34EA-AD63-5FCC14CB67A2.dita"><apiname>RRtpReceiveSource</apiname></xref>  </p> </entry> <entry><p>A handle to a receive stream. An object of this type represents the stream of data on a single SSRC and delivers the RTP packets and RTCP information in the order they arrive. </p> </entry> </row> <row><entry><p> <xref href="GUID-EF30A0A3-612A-362D-9AC5-07FD314E5CDC.dita"><apiname>RRtpSendSource</apiname></xref>  </p> </entry> <entry><p>A handle to a send stream, used to manage the creation and sending of packets. </p> </entry> </row> </tbody> </tgroup> </table> <p>The following diagram shows the RTP classes and their relationships. </p> <fig id="GUID-BE272665-0B86-5F96-BB2D-53ADCCB1B620"><title>
             Class diagram for RTP classes 
          </title> <image href="GUID-B94B394F-E243-5AB0-BAF7-AF68982A3EA8_d0e330077_href.png" placement="inline"/></fig> </section> <section><title>Typical uses</title> <p>Any application requiring RTP as its transport protocol should use this API. RTP provides the following key services: </p> <ul><li id="GUID-7AD5E984-BD60-56A8-BDD6-2F64343B4027"><p>Payload-type identification </p> </li> <li id="GUID-CC6E6950-0A3C-54A8-8298-EBEB463536D4"><p>Sequence numbering </p> </li> <li id="GUID-9B2044AC-135E-5F9E-AF7D-E0DDED1F4FF9"><p>Time stamping </p> </li> <li id="GUID-FD863CED-3C19-5050-9E15-35758A9C18AB"><p>Delivery monitoring </p> </li> </ul> <p>The RTP API allows you to perform the following tasks: </p> <ol id="GUID-05A64980-7516-5D26-BFA0-DCD146132B40"><li id="GUID-7948F75D-8FB6-52B9-B24C-22875FC56764"><p><xref href="GUID-5287A403-1094-5682-A443-A6C2A04A1F23.dita">Creating and Managing an RTP session</xref>  </p> </li> <li id="GUID-6A5300CB-19FE-51E3-96A5-607C81EFD2CE"><p><xref href="GUID-9652782C-D5A7-584F-A61C-1340D49478A2.dita">Registering for and handling events</xref>  </p> </li> <li id="GUID-948EA33A-37BA-5233-BCC7-4066B4D2BB6F"><p><xref href="GUID-FBA52F3B-0A7A-5FE3-82CD-72F88788D432.dita">Accessing an RTP packet</xref>  </p> </li> <li id="GUID-B12DF03E-1117-5BE9-9776-B556429A042F"><p><xref href="GUID-D7A8E007-CCCD-5E4F-A7DE-4D474C864104.dita">Creating a send stream</xref>  </p> </li> <li id="GUID-F32FE481-F916-5428-8562-13B5AE73B974"><p><xref href="GUID-46047253-4471-502D-B48E-E1990E7F7962.dita">Sending an RTP packet</xref>  </p> </li> <li id="GUID-A5440B31-C0F2-567D-9647-4F8F224968C9"><p><xref href="GUID-A81854C9-25F1-5C3B-AF3F-ECB7CFA26677.dita">Creating receive stream</xref>  </p> </li> <li id="GUID-14432538-9217-5EA0-81F4-F3089DD0E5AA"><p> <xref href="GUID-765F43E2-39E8-53F5-881F-593F379623CA.dita">Sending and receiving non RTP-data</xref>  </p> </li> <li id="GUID-90AE2FC2-0ABA-5F40-A50F-7BED93BCE9F0"><p><xref href="GUID-0ACAFB87-0D45-5BAA-B40A-9A7DC1646B01.dita">Managing RTCP packets and reports</xref>  </p> </li> <li id="GUID-832ADC62-982E-5ED7-A270-74B708B706C6"><p><xref href="GUID-D5F57D81-6B59-5C7E-A2C8-A5E29873346B.dita">Managing send and receive reports</xref>  </p> </li> <li id="GUID-E07027C3-5F87-5F33-BB6B-5D5F03F8D0C2"><p> <xref href="GUID-7D1E2DBD-004B-5047-BDA5-21CD55D0A95C.dita">Securing RTP with SRTP</xref> </p> </li> </ol> <p> <b> Note:</b> Before using any of these services, a connection to the socket server must have been made and the socket must be open. </p> </section> <section><title>See also</title> <p><xref href="GUID-59230503-7E2E-505D-9BC9-C2D2DB96B3E9.dita">RTPExample: RTP packet streaming</xref>  </p> </section> </conbody></concept>