123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- /*
- * 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
- */
- #ifndef __PJMEDIA_DOXYGEN_H__
- #define __PJMEDIA_DOXYGEN_H__
- /**
- * @file doxygen.h
- * @brief Doxygen's mainpage.
- */
- /*////////////////////////////////////////////////////////////////////////// */
- /*
- INTRODUCTION PAGE
- */
- /**
- * @mainpage PJMEDIA
- *
- * \n
- * @section intro2 Introduction to PJMEDIA
- *
- * PJMEDIA is a fully featured media stack, distributed under Open Source/GPL
- * terms, and featuring small footprint and good extensibility and excellent
- * portability. Here are some brief overview of PJMEDIA benefits.
- *
- * @subsection benefit Benefits
- * @subsubsection full_feature Many Features
- * PJMEDIA has many features, and rather than to list them all here, please
- * see the <A HREF="modules.htm"><b>Modules</b></A> page for more info.
- *
- * Video is planned to arrive at version 2.
- *
- * @subsubsection portable Excellent Portability
- * It's been ported to all desktop systems and many mobile platforms including
- * Symbian, Windows Mobile, iPhone, and Android. Thanks to its zero thread
- * design, users have been able to run PJMEDIA on deeply embedded platforms,
- * even without operating systems (those typically found in DSP platforms).
- * Except the echo suppressor, all other PJMEDIA components have fixed point
- * implementation, which makes it ideal for embedded systems which lack FPU.
- * PJMEDIA also has tiny footprint, as explained below
- *
- * @subsubsection footprint Tiny Footprint
- * Lets not talk about less meaningful and potentially misleading term such as
- * core footprint, and instead here is the footprint of all components
- * typically used to build a full streaming media:
- *
- * \verbatim
- Category Component text data bss dec filename
- -------------------------------------------------------------------------------
- Core Error subsystem 135 0 0 135 errno.o
- Core Endpoint 4210 4 4 4218 endpoint.o
- Core Port framework 652 0 0 652 port.o
- Core Codec framework 6257 0 0 6257 codec.o
- Codec Alaw/ulaw conv. 1060 16 0 1076 alaw_ulaw.o
- Codec G.711 3298 128 96 3522 g711.o
- Codec PLC 883 24 0 907 plc_common.o
- Codec PLC 7130 0 0 7130 wsola.o
- Session Stream 12222 0 1920 14142 stream.o
- Transport RTCP 3732 0 0 3732 rtcp.o
- Transport RTP 2568 0 0 2568 rtp.o
- Transport UDP 6612 96 0 6708 transport_udp.o
- Transport Jitter buffer 6473 0 0 6473 jbuf.o
- -------------------------------------------------------------------------------
- TOTAL 55,232 268 2,020 57,520
- \endverbatim
- * The 56KB are for media streaming components, complete with codec, RTP, and
- * RTCP. The footprint above was done for PJSIP version 1.8.2 on a Linux x86
- * machine, using footprintopimization as explained in PJSIP FAQ. Numbers are
- * in bytes.
- *
- * @subsubsection quality Good Quality
- * PJMEDIA supports wideband, ultra-wideband, and beyond, as well as multiple
- * audio channels. The jitter buffer has been proven to work on lower
- * bandwidth links such as 3G, and to some extent, Edge and GPRS. We've grown
- * our own algorithm to compensate for packet losses and clock drifts in audio
- * transmission, as well as feature to use codec's built in PLC if available.
- *
- * @subsubsection hw Hardware Support
- * PJMEDIA supports hardware, firmware, or other built-in feature that comes
- * with the device. These are crucial for mobile devices to allow the best
- * use of the very limited CPU and battery power of the device. Among other
- * things, device's on-board codec and echo cancellation may be used if
- * available.
- *
- * @subsubsection extensible Extensible
- * Despite its tiny footprint, PJMEDIA uses a flexible port concept, which is
- * adapted from filter based concept found in other media framework. It is not
- * as flexible as those found in Direct Show or gstreamer (and that would be
- * unnecessary since it serves different purpose), but it's flexible enough
- * to allow components to be assembled one after another to achieve certain
- * task, and easy creation of such components by application and interconnect
- * them to the rest of the framework.
- *
- * @subsubsection doc (Fairly Okay) Documentation
- * We understand that any documentation can always be improved, but we put
- * a lot of efforts in creating and maintaining our documentation, because
- * we know it matters.
- *
- * \n
- * @subsection org1 Organization
- *
- * At the top-most level, PJMEDIA library suite contains the following
- * libraries.
- *
- * @subsubsection libpjmedia PJMEDIA
- * This contains all main media components. Please see the
- * <A HREF="modules.htm"><b>Modules</b></A> page for complete list of
- * components that PJMEDIA provides.
- *
- * @subsubsection libpjmediacodec PJMEDIA Codec
- * PJMEDIA-CODEC is a static library containing various codec implementations,
- * wrapped into PJMEDIA codec framework. The static library is designed as
- * such so that only codecs that are explicitly initialized are linked with
- * the application, therefore keeping the application size in control.
- *
- * Please see @ref PJMEDIA_CODEC for more info.
- *
- * @subsubsection libpjmediaaudiodev PJMEDIA Audio Device
- * PJMEDIA-Audiodev is audio device framework and abstraction library. Please
- * see @ref audio_device_api for more info.
- *
- * \n
- * @section pjmedia_concepts PJMEDIA Key Concepts
- * Below are some key concepts in PJMEDIA:
- * - @ref PJMEDIA_PORT
- * - @ref PJMEDIA_PORT_CLOCK
- * - @ref PJMEDIA_TRANSPORT
- * - @ref PJMEDIA_SESSION
- */
- /**
- @page page_pjmedia_samples PJMEDIA and PJMEDIA-CODEC Examples
- @section pjmedia_samples_sec PJMEDIA and PJMEDIA-CODEC Examples
- Please find below some PJMEDIA related examples that may help in giving
- some more info:
- - @ref page_pjmedia_samples_level_c \n
- This is a good place to start learning about @ref PJMEDIA_PORT,
- as it shows that @ref PJMEDIA_PORT are only "passive" objects
- with <tt>get_frame()</tt> and <tt>put_frame()</tt> interface, and
- someone has to call these to retrieve/store media frames.
- - @ref page_pjmedia_samples_playfile_c \n
- This example shows that when application connects a media port (in this
- case a @ref PJMEDIA_FILE_PLAY) to @ref PJMED_SND_PORT, media will flow
- automatically since the @ref PJMED_SND_PORT provides @ref PJMEDIA_PORT_CLOCK.
- - @ref page_pjmedia_samples_recfile_c \n
- Demonstrates how to capture audio from microphone to WAV file.
- - @ref page_pjmedia_samples_playsine_c \n
- Demonstrates how to create a custom @ref PJMEDIA_PORT (in this
- case a sine wave generator) and integrate it to PJMEDIA.
- - @ref page_pjmedia_samples_confsample_c \n
- This demonstrates how to use the @ref PJMEDIA_CONF. The sample program can
- open multiple WAV files, and instruct the conference bridge to mix the
- signal before playing it to the sound device.
- - @ref page_pjmedia_samples_confbench_c \n
- I use this to benchmark/optimize the conference bridge algorithm, but
- readers may find the source useful.
- - @ref page_pjmedia_samples_resampleplay_c \n
- Demonstrates how to use @ref PJMEDIA_RESAMPLE_PORT to change the
- sampling rate of a media port (in this case, a @ref PJMEDIA_FILE_PLAY).
- - @ref page_pjmedia_samples_sndtest_c \n
- This program performs some tests to the sound device to get some
- quality parameters (such as sound jitter and clock drifts).\n
- Screenshots on WinXP: \image html sndtest.jpg "sndtest screenshot on WinXP"
- - @ref page_pjmedia_samples_streamutil_c \n
- This example mainly demonstrates how to stream media (in this case a
- @ref PJMEDIA_FILE_PLAY) to remote peer using RTP.
- - @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_pjmedia_samples_tonegen_c \n
- This is a simple program to generate a tone and write the samples to
- a raw PCM file. The main purpose of this file is to analyze the
- quality of the tones/sine wave generated by PJMEDIA tone/sine wave
- generator.
- - @ref page_pjmedia_samples_aectest_c \n
- Play a file to speaker, run AEC, and record the microphone input
- to see if echo is coming.
- */
- /**
- * \page page_pjmedia_samples_siprtp_c Samples: Using SIP and Custom RTP/RTCP to Monitor Quality
- *
- * 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
- */
- #endif /* __PJMEDIA_DOXYGEN_H__ */
|