GNU ccRTP is an implementation of RTP, the real-time transport protocol from the IETF (see RFC 3550, RFC 3551 and RFC 3555). ccRTP is a C++ library based on GNU Common C++ which provides a high performance, flexible and extensible standards-compliant RTP stack with full RTCP support. The design and implementation of ccRTP make it suitable for high capacity servers and gateways as well as personal client applications.
In designing ccRTP, we have taken into account that RTP has been defined as an application level protocol framework rather than a typical Internet transport protocol such as TCP and UDP. Thus, RTP is hardly ever implemented as a layer separated from the application. Consequently, RTP applications often must customize the adaptable RTP packet layout and processing rules, timing constraints, session membership rules as well as other RTP and RTCP mechanisms. ccRTP aims to provide a framework for the RTP framework, rather than being just an RTP packet manipulation library.
Support for both audio and video data is also considered in the design of ccRTP, that can do partial frame splits/re-assembly. Unicast, multi-unicast and multicast transport models are supported, as well as multiple active synchronization sources, multiple RTP sessions (SSRC spaces), and multiple RTP applications (CNAME spaces). This allows it's use for building all forms of Internet standards based audio and visual conferencing systems.
GNU ccRTP is threadsafe and high performance. It uses packet queue lists for the reception and transmission of data packets. Both inter-media and intra-media synchronization is automatically handled within the incoming and outgoing packet queues. GNU ccRTP offers support for RTCP and many other standard and extended features that are needed for both compatible and advanced streaming applications. It can mix multiple payload types in stream, and hence can be used to impliment RFC 2833 compliant signaling applications as well as other specialized things. GNU ccRTP also offers direct RTP and RTCP packet filtering.
GNU ccRTP uses templates to isolate threading and sockets related dependencies, so that it can be used to impliment realtime streaming with different threading models and underlying transport protocols, not just with IPV4 UDP sockets. For a more detailed list of ccRTP features you can have a look at the programmers' manual.
A programmers' manual and an exhaustive reference manual are distributed with the source packages of GNU ccRTP. The first is written in GNU TeXInfo, whereas the second is automatically generated from the sources through Doxygen. You can look at both online:
Starting with release 0.6.1, GNU ccRTP will be found on ftp://ftp.gnu.org/pub/gnu/ccrtp/ or one of the mirrors.
GNU ccRTP may be available from other sites in various "package" formats, including GNU/Linux "RPM" and "deb" packages, ".pkg" files under various Unix operating systems, etc. I do encourage people to distribute GNU ccRTP in a package form where convenient for installation, so long as source is also made available.
As the current GNU ccRTP maintainer, I am very open to bringing new ideas and code into GNU ccRTP. In particular, I am looking for help from contributors who have a deep expertise in Internet Audio and Visual conferencing. Anonymous cvs access is maintained for GNU ccrtp thru savannah, and I would be happy to receive and evaluate patches for inclusion in future releases.
A standard e-mail mailing list for GNU ccRTP is available at firstname.lastname@example.org. There is also a web interface for subscribing, modifying subscription options and searching the list archives. Feel free to send any bug reports, patches, and questions to this list.
Return to GNU's home page.
Please send FSF & GNU inquiries & questions to email@example.com. There are also other ways to contact the FSF.
Please send comments on these web pages to firstname.lastname@example.org, send other questions to email@example.com.
Copyright (C) 2001,2002,2003,2004 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA
Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
Updated: Last modified: Wed Apr 14 13:48:35 CEST 2004