123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306 |
- /*
- * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
- * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
- /**
- * @file doxygen.h
- * @brief PJSIP Doxygen's mainpage.
- */
- /*////////////////////////////////////////////////////////////////////////// */
- /*
- INTRODUCTION PAGE
- */
- /**
- \n
- @mainpage PJSIP - Open Source SIP Stack
- \n
- \n
- @section pjsip_intro_sec Introduction
- PJSIP is an Open Source SIP prototol stack, designed to be very small in
- footprint, have high performance, and very flexible.
- @subsection hist_sec History
- PJSIP has been actively developed since 2003, but its history goes well
- beyond that. The author has been developing SIP stack since 1999 during
- RFC 2543 era, and after several experimentation with different approaches
- in the programming (the first stack actually was in C++!), and also with
- the evolution of the SIP protocol itself, the current/third generation
- of PJSIP (the 0.2.9 version is the second generation) can be considered
- as pretty stable in term of design, and should
- incorporate all design considerations (and implementation tricks!) that
- have been learned over the years. Of course only time will tell if this
- statement can still be held true in the future.
- \n
- \n
- @section pjsipgetting_started Getting Started
- PJSIP consists of multiple levels of APIs, which each of them layered on
- top of another. Because of this, new readers may find it a bit difficult
- to find the place to start.
- In general, I think perhaps I can recommend two approaches on using PJSIP.
- \n
- @subsection getting_started_high Using PJSUA API
- @ref PJSUA_LIB wraps together all SIP components and media into a high level
- API, suitable for creating typical SIP user agent applications. It
- features easy to use API for:
- - multiple client registration (accounts),
- - high level SIP and media session (calls),
- - buddy list, presence and instant messaging,
- - powerful and very easy to use media manipulation,
- while maintaining some space for customization (custom SIP
- transport, custom SIP media, etc.) needed by some types of applications.
- @ref PJSUA_LIB is also aimed to be able to run on devices such as PDA
- or mobile phones, by carefully allowing application to set the appropriate
- threading strategy and memory limits (number of calls, media ports, etc.).
- However, @ref PJSUA_LIB may not be the most suitable API for some types
- of applications, since it is directed towards an easy to use API. For
- more more advanced use, you may better implement the application by using
- PJSIP + PJMEDIA directly, as described below.
- \n
- @subsection getting_started_pjsip_pjmedia Using PJSIP and PJMEDIA Directly
- For the ultimate flexibility and power, using PJSIP and PJMEDIA directly
- is the way to go. The drawback will be, of course, steeper learning curve.
- However, the following links may provide some useful information:
- - <A HREF="/docs.htm">PJSIP Developer's Guide</A> PDF
- document is the ultimate guide to understand PJSIP design concept.
- - there are some samples in <A HREF="/cgi-bin/viewcvs.cgi/pjproject/trunk/pjsip-apps/src/samples/">
- <b>pjsip-apps/src/samples</b></A> directory.
- - @ref PJSUA_LIB source code may also be useful to see how high level
- API are implemented with PJSIP/PJMEDIA.
- - and finally, you can always <b>Use the Source</b>!
- \n
- \n
- @section this_doc About This Document
- This document contains the reference information about PJSIP. For
- more in-depth guide (and information in general), readers are
- encouraged to read the <A HREF="/docs.htm">
- <b>PJSIP Developer's Guide</b></A> PDF document
- which can be downloaded from http://www.pjsip.org/docs.htm.
- \n
- @subsection doc_how_to_read How to Read This Document
- For main navigation, please go to <A HREF="modules.htm"><b>Modules</b></A>
- link on top of this page.
- This document was generated with <A HREF="http://www.doxygen.org">Doxygen</A>
- from PJSIP header files.
- \n
- \n
- @section pjsip_toc Documentation Contents
- Click on <A HREF="modules.htm"><b>Modules</b></A> link on top of this page
- to get the detailed table of contents.
- The following are top level sections in the <A HREF="modules.htm">
- <b>Modules</b></A>, as laid out in the following diagram:
- \image html pjsip-arch.jpg "Static Library Layout"
- Enumerating the static libraries from the bottom:
- - <A HREF="/pjlib/docs/main.htm">PJLIB</A>, is the platform abstraction
- and framework library, on which all other libraries depend,
- - PJLIB-UTIL, provides auxiliary functions such as text scanning,
- XML, and STUN,
- - PJMEDIA is the multimedia framework,
- - PJMEDIA-CODEC is the placeholder for media codecs,
- - @ref PJSIP_CORE (<b>PJSIP-CORE</b>) is the very core of the PJSIP library,
- and contains the SIP @ref PJSIP_ENDPT, which is the owner/manager for all
- SIP objects in the application, messaging elements, parsing, transport
- management, module management, and stateless operations, and also
- contains:
- - The @ref PJSIP_TRANSACT module inside <b>PJSIP-CORE</b> provides
- stateful operation, and is the base for higher layer features such as
- dialogs,
- - The @ref PJSIP_UA module inside <b>PJSIP-CORE</b> manages dialogs, and supports dialog
- usages,
- - @ref PJSIP_SIMPLE (<b>PJSIP-SIMPLE</b>) provides the base SIP event framework
- (which uses the common/base dialog framework) and implements presence
- on top of it, and is also used by call transfer functions,
- - @ref PJSIP_HIGH_UA (<b>PJSIP-UA</b>) is the high level abstraction of INVITE sessions
- (using the common/base dialog framework). This library also provides
- SIP client registration and call transfer functionality,
- - and finally, @ref PJSUA_LIB (<b>PJSUA-LIB</b>) is the highest level of abstraction,
- which wraps together all above functionalities into high level, easy to
- use API.
- */
- /**
- @page page_pjsip_samples PJSIP Samples
- I wish I could write more samples, but for now here are some samples or
- working applications that are available from the source tree:
- - @ref page_pjsip_sample_sipstateless_c \n
- This is about the simplest SIP application with PJSIP, all it does is
- respond all incoming requests with 501 (Not Implemented) response
- statelessly.
- - @ref page_pjsip_sample_simple_ua_c \n
- This is a very simple SIP User Agent application that only use PJSIP
- (without PJSIP-UA). It's able to make and receive call, and play
- media to the sound device.
-
- - @ref page_pjsip_sample_simple_pjsuaua_c \n
- Very simple SIP User Agent with registration, call, and media, using
- PJSUA-API, all in under 200 lines of code.
- - @ref page_pjsip_samples_pjsua \n
- This is the reference implementation for PJSIP and PJMEDIA.
- PJSUA is a console based application, designed to be simple enough
- to be readble, but powerful enough to demonstrate all features
- available in PJSIP and PJMEDIA.\n
- Screenshot on WinXP: \image html pjsua.jpg "pjsua on WinXP"
- - @ref page_pjmedia_samples_siprtp_c \n
- This is a useful program (integrated with PJSIP) to actively measure
- the network quality/impairment parameters by making one or more SIP
- calls (or receiving one or more SIP calls) and display the network
- impairment of each stream direction at the end of the call.
- The program is able to measure network quality parameters such as
- jitter, packet lost/reorder/duplicate, round trip time, etc.\n
- Note that the remote peer MUST support RTCP so that network quality
- of each direction can be calculated. Using siprtp for both endpoints
- is recommended.\n
- Screenshots on WinXP: \image html siprtp.jpg "siprtp screenshot on WinXP"
- - @ref page_pjsip_perf_c \n
- This sample contains a complete implementation of a SIP performance
- measurement tool. Unlike other tool such SIPp, pjsip-perf is geared
- more towards finding the performance of an endpoint by flooding the
- endpoint with some requests and time the completion of the requests.\n
- Screenshots on Linux console: \image html pjsip-perf.jpg "pjsip-perf screenshot on Linux"
- */
- /**
- * \page page_pjsip_samples_pjsua PJSUA
- *
- * This is the reference implementation for PJSIP and PJMEDIA.
- * PJSUA is a console based application, designed to be simple enough
- * to be readble, but powerful enough to demonstrate all features
- * available in PJSIP and PJMEDIA.
- *
- * This file is pjsip-apps/src/pjsua/pjsua_app.c
- *
- * Screenshot on WinXP: \image html pjsua.jpg "pjsua on WinXP"
- *
- * \includelineno pjsua_app.c
- */
- /**
- * \page page_pjsip_sample_simple_ua_c Samples: Simple UA
- *
- * This is a very simple SIP User Agent application that only use PJSIP
- * (without PJSIP-UA). It's able to make and receive call, and play
- * media to the sound device.
- *
- * \includelineno simpleua.c
- */
- /**
- * \page page_pjsip_sample_simple_pjsuaua_c Samples: Simple PJSUA
- *
- * Very simple SIP User Agent with registration, call, and media, all
- * in under 200 lines of code.
- *
- * \includelineno simple_pjsua.c
- */
- /**
- * \page page_pjsip_sample_sipstateless_c Samples: Stateless SIP Endpoint
- *
- * This is about the simplest SIP application with PJSIP, all it does is
- * respond all incoming requests with 501 (Not Implemented) response
- * statelessly.
- *
- * \includelineno sipstateless.c
- */
- /**
- * \page page_pjsip_samples_siprtp_c Samples: siprtp - SIP with RTCP Quality Monitoring
- *
- * This source is an example to demonstrate using SIP and RTP/RTCP framework
- * to measure the network quality/impairment from the SIP call. This
- * program can be used to make calls or to receive calls from other
- * SIP endpoint (or other siprtp program), and to display the media
- * quality statistics at the end of the call.
- *
- * Note that the remote peer must support RTCP.
- *
- * The layout of the program has been designed so that custom reporting
- * can be generated instead of plain human readable text.
- *
- * The source code of the file is pjsip-apps/src/samples/siprtp.c
- *
- * Screenshots on WinXP: \image html siprtp.jpg
- *
- * \includelineno siprtp.c
- */
- /**
- * \page page_pjsip_perf_c Samples: pjsip-perf - SIP Performance Benchmarking Tool
- *
- * This sample contains a complete implementation of a SIP performance
- * measurement tool. Unlike other tool such SIPp, pjsip-perf is geared
- * more towards finding the performance of an endpoint by flooding the
- * endpoint with some requests and time the completion of the requests.
- *
- * The source code of the file is pjsip-apps/src/samples/pjsip-perf.c
- *
- * Screenshots on Linux console: \image html pjsip-perf.jpg
- *
- * \includelineno pjsip-perf.c
- */
|