Next: Using ccRTP, Previous: Distribution, Up: Top
At its highest level, ccRTP provides classes for the real-time transport of data through RTP sessions, as well as the control functions of RTCP.
The main concept in the ccRTP implementation of RTP sessions is the use of packet queues to handle transmission and reception of RTP data packets/application data units. In ccRTP, a data block is transmitted by putting it into the transmission (outgoing packets) queue, and received by getting it from the reception (incoming packets) queue.
Starting with 1.0 releases, ccRTP fully supports RTP and RTCP. Here is a brief list of some features of ccRTP:
There are several levels of interface (public interface, public or
protected inheritance, etc) in ccRTP. For instance, the
rtphello
demo program distributed with ccRTP just uses the
public interface of the RTPSession
class and does not redefine
the virtual method onGotSR
, thus what this program knows about
SR reports is the information conveyed in the last sender report from
any source, which can be retrieved via the getMRSenderInfo
method of the SyncSource
class. On the contrary, the
rtplisten
demo program redefines onGotSR
by means of
inheritance and could do specialized processing of these RTCP
packets. Generally, both data and control packets are not directly
accessible through the most external interface.
All this functions are performed through a few essential classes and
types. The most basic ones are the enumerated type
StaticPayloadType
, and the classes StaticPayloadFormat
and DynamicPayloadFormat
. The most important ones are the
classes RTPSession
, SyncSource
, Participant
and
AppDataUnit
, that represent RTP sessions,
synchronization sources, participants in an RTP application,
and application data units conveyed in RTP data packets,
respectively.
In the next sections, two basic examples are presented. These examples are intended to provide a concrete idea of what the code of a ccRTP based application looks like, they are not complete or compilable programs. You can find some real examples under the demo directory in the source distribution of ccRTP.