doxygen.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  1. /*
  2. * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  3. * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
  4. *
  5. * This program is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License as published by
  7. * the Free Software Foundation; either version 2 of the License, or
  8. * (at your option) any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU General Public License
  16. * along with this program; if not, write to the Free Software
  17. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  18. */
  19. /**
  20. * @file doxygen.h
  21. * @brief PJSIP Doxygen's mainpage.
  22. */
  23. /*////////////////////////////////////////////////////////////////////////// */
  24. /*
  25. INTRODUCTION PAGE
  26. */
  27. /**
  28. \n
  29. @mainpage PJSIP - Open Source SIP Stack
  30. \n
  31. \n
  32. @section pjsip_intro_sec Introduction
  33. PJSIP is an Open Source SIP prototol stack, designed to be very small in
  34. footprint, have high performance, and very flexible.
  35. @subsection hist_sec History
  36. PJSIP has been actively developed since 2003, but its history goes well
  37. beyond that. The author has been developing SIP stack since 1999 during
  38. RFC 2543 era, and after several experimentation with different approaches
  39. in the programming (the first stack actually was in C++!), and also with
  40. the evolution of the SIP protocol itself, the current/third generation
  41. of PJSIP (the 0.2.9 version is the second generation) can be considered
  42. as pretty stable in term of design, and should
  43. incorporate all design considerations (and implementation tricks!) that
  44. have been learned over the years. Of course only time will tell if this
  45. statement can still be held true in the future.
  46. \n
  47. \n
  48. @section pjsipgetting_started Getting Started
  49. PJSIP consists of multiple levels of APIs, which each of them layered on
  50. top of another. Because of this, new readers may find it a bit difficult
  51. to find the place to start.
  52. In general, I think perhaps I can recommend two approaches on using PJSIP.
  53. \n
  54. @subsection getting_started_high Using PJSUA API
  55. @ref PJSUA_LIB wraps together all SIP components and media into a high level
  56. API, suitable for creating typical SIP user agent applications. It
  57. features easy to use API for:
  58. - multiple client registration (accounts),
  59. - high level SIP and media session (calls),
  60. - buddy list, presence and instant messaging,
  61. - powerful and very easy to use media manipulation,
  62. while maintaining some space for customization (custom SIP
  63. transport, custom SIP media, etc.) needed by some types of applications.
  64. @ref PJSUA_LIB is also aimed to be able to run on devices such as PDA
  65. or mobile phones, by carefully allowing application to set the appropriate
  66. threading strategy and memory limits (number of calls, media ports, etc.).
  67. However, @ref PJSUA_LIB may not be the most suitable API for some types
  68. of applications, since it is directed towards an easy to use API. For
  69. more more advanced use, you may better implement the application by using
  70. PJSIP + PJMEDIA directly, as described below.
  71. \n
  72. @subsection getting_started_pjsip_pjmedia Using PJSIP and PJMEDIA Directly
  73. For the ultimate flexibility and power, using PJSIP and PJMEDIA directly
  74. is the way to go. The drawback will be, of course, steeper learning curve.
  75. However, the following links may provide some useful information:
  76. - <A HREF="/docs.htm">PJSIP Developer's Guide</A> PDF
  77. document is the ultimate guide to understand PJSIP design concept.
  78. - there are some samples in <A HREF="/cgi-bin/viewcvs.cgi/pjproject/trunk/pjsip-apps/src/samples/">
  79. <b>pjsip-apps/src/samples</b></A> directory.
  80. - @ref PJSUA_LIB source code may also be useful to see how high level
  81. API are implemented with PJSIP/PJMEDIA.
  82. - and finally, you can always <b>Use the Source</b>!
  83. \n
  84. \n
  85. @section this_doc About This Document
  86. This document contains the reference information about PJSIP. For
  87. more in-depth guide (and information in general), readers are
  88. encouraged to read the <A HREF="/docs.htm">
  89. <b>PJSIP Developer's Guide</b></A> PDF document
  90. which can be downloaded from http://www.pjsip.org/docs.htm.
  91. \n
  92. @subsection doc_how_to_read How to Read This Document
  93. For main navigation, please go to <A HREF="modules.htm"><b>Modules</b></A>
  94. link on top of this page.
  95. This document was generated with <A HREF="http://www.doxygen.org">Doxygen</A>
  96. from PJSIP header files.
  97. \n
  98. \n
  99. @section pjsip_toc Documentation Contents
  100. Click on <A HREF="modules.htm"><b>Modules</b></A> link on top of this page
  101. to get the detailed table of contents.
  102. The following are top level sections in the <A HREF="modules.htm">
  103. <b>Modules</b></A>, as laid out in the following diagram:
  104. \image html pjsip-arch.jpg "Static Library Layout"
  105. Enumerating the static libraries from the bottom:
  106. - <A HREF="/pjlib/docs/main.htm">PJLIB</A>, is the platform abstraction
  107. and framework library, on which all other libraries depend,
  108. - PJLIB-UTIL, provides auxiliary functions such as text scanning,
  109. XML, and STUN,
  110. - PJMEDIA is the multimedia framework,
  111. - PJMEDIA-CODEC is the placeholder for media codecs,
  112. - @ref PJSIP_CORE (<b>PJSIP-CORE</b>) is the very core of the PJSIP library,
  113. and contains the SIP @ref PJSIP_ENDPT, which is the owner/manager for all
  114. SIP objects in the application, messaging elements, parsing, transport
  115. management, module management, and stateless operations, and also
  116. contains:
  117. - The @ref PJSIP_TRANSACT module inside <b>PJSIP-CORE</b> provides
  118. stateful operation, and is the base for higher layer features such as
  119. dialogs,
  120. - The @ref PJSIP_UA module inside <b>PJSIP-CORE</b> manages dialogs, and supports dialog
  121. usages,
  122. - @ref PJSIP_SIMPLE (<b>PJSIP-SIMPLE</b>) provides the base SIP event framework
  123. (which uses the common/base dialog framework) and implements presence
  124. on top of it, and is also used by call transfer functions,
  125. - @ref PJSIP_HIGH_UA (<b>PJSIP-UA</b>) is the high level abstraction of INVITE sessions
  126. (using the common/base dialog framework). This library also provides
  127. SIP client registration and call transfer functionality,
  128. - and finally, @ref PJSUA_LIB (<b>PJSUA-LIB</b>) is the highest level of abstraction,
  129. which wraps together all above functionalities into high level, easy to
  130. use API.
  131. */
  132. /**
  133. @page page_pjsip_samples PJSIP Samples
  134. I wish I could write more samples, but for now here are some samples or
  135. working applications that are available from the source tree:
  136. - @ref page_pjsip_sample_sipstateless_c \n
  137. This is about the simplest SIP application with PJSIP, all it does is
  138. respond all incoming requests with 501 (Not Implemented) response
  139. statelessly.
  140. - @ref page_pjsip_sample_simple_ua_c \n
  141. This is a very simple SIP User Agent application that only use PJSIP
  142. (without PJSIP-UA). It's able to make and receive call, and play
  143. media to the sound device.
  144. - @ref page_pjsip_sample_simple_pjsuaua_c \n
  145. Very simple SIP User Agent with registration, call, and media, using
  146. PJSUA-API, all in under 200 lines of code.
  147. - @ref page_pjsip_samples_pjsua \n
  148. This is the reference implementation for PJSIP and PJMEDIA.
  149. PJSUA is a console based application, designed to be simple enough
  150. to be readble, but powerful enough to demonstrate all features
  151. available in PJSIP and PJMEDIA.\n
  152. Screenshot on WinXP: \image html pjsua.jpg "pjsua on WinXP"
  153. - @ref page_pjmedia_samples_siprtp_c \n
  154. This is a useful program (integrated with PJSIP) to actively measure
  155. the network quality/impairment parameters by making one or more SIP
  156. calls (or receiving one or more SIP calls) and display the network
  157. impairment of each stream direction at the end of the call.
  158. The program is able to measure network quality parameters such as
  159. jitter, packet lost/reorder/duplicate, round trip time, etc.\n
  160. Note that the remote peer MUST support RTCP so that network quality
  161. of each direction can be calculated. Using siprtp for both endpoints
  162. is recommended.\n
  163. Screenshots on WinXP: \image html siprtp.jpg "siprtp screenshot on WinXP"
  164. - @ref page_pjsip_perf_c \n
  165. This sample contains a complete implementation of a SIP performance
  166. measurement tool. Unlike other tool such SIPp, pjsip-perf is geared
  167. more towards finding the performance of an endpoint by flooding the
  168. endpoint with some requests and time the completion of the requests.\n
  169. Screenshots on Linux console: \image html pjsip-perf.jpg "pjsip-perf screenshot on Linux"
  170. */
  171. /**
  172. * \page page_pjsip_samples_pjsua PJSUA
  173. *
  174. * This is the reference implementation for PJSIP and PJMEDIA.
  175. * PJSUA is a console based application, designed to be simple enough
  176. * to be readble, but powerful enough to demonstrate all features
  177. * available in PJSIP and PJMEDIA.
  178. *
  179. * This file is pjsip-apps/src/pjsua/pjsua_app.c
  180. *
  181. * Screenshot on WinXP: \image html pjsua.jpg "pjsua on WinXP"
  182. *
  183. * \includelineno pjsua_app.c
  184. */
  185. /**
  186. * \page page_pjsip_sample_simple_ua_c Samples: Simple UA
  187. *
  188. * This is a very simple SIP User Agent application that only use PJSIP
  189. * (without PJSIP-UA). It's able to make and receive call, and play
  190. * media to the sound device.
  191. *
  192. * \includelineno simpleua.c
  193. */
  194. /**
  195. * \page page_pjsip_sample_simple_pjsuaua_c Samples: Simple PJSUA
  196. *
  197. * Very simple SIP User Agent with registration, call, and media, all
  198. * in under 200 lines of code.
  199. *
  200. * \includelineno simple_pjsua.c
  201. */
  202. /**
  203. * \page page_pjsip_sample_sipstateless_c Samples: Stateless SIP Endpoint
  204. *
  205. * This is about the simplest SIP application with PJSIP, all it does is
  206. * respond all incoming requests with 501 (Not Implemented) response
  207. * statelessly.
  208. *
  209. * \includelineno sipstateless.c
  210. */
  211. /**
  212. * \page page_pjsip_samples_siprtp_c Samples: siprtp - SIP with RTCP Quality Monitoring
  213. *
  214. * This source is an example to demonstrate using SIP and RTP/RTCP framework
  215. * to measure the network quality/impairment from the SIP call. This
  216. * program can be used to make calls or to receive calls from other
  217. * SIP endpoint (or other siprtp program), and to display the media
  218. * quality statistics at the end of the call.
  219. *
  220. * Note that the remote peer must support RTCP.
  221. *
  222. * The layout of the program has been designed so that custom reporting
  223. * can be generated instead of plain human readable text.
  224. *
  225. * The source code of the file is pjsip-apps/src/samples/siprtp.c
  226. *
  227. * Screenshots on WinXP: \image html siprtp.jpg
  228. *
  229. * \includelineno siprtp.c
  230. */
  231. /**
  232. * \page page_pjsip_perf_c Samples: pjsip-perf - SIP Performance Benchmarking Tool
  233. *
  234. * This sample contains a complete implementation of a SIP performance
  235. * measurement tool. Unlike other tool such SIPp, pjsip-perf is geared
  236. * more towards finding the performance of an endpoint by flooding the
  237. * endpoint with some requests and time the completion of the requests.
  238. *
  239. * The source code of the file is pjsip-apps/src/samples/pjsip-perf.c
  240. *
  241. * Screenshots on Linux console: \image html pjsip-perf.jpg
  242. *
  243. * \includelineno pjsip-perf.c
  244. */