/**
 * @mainpage
 *
 * Project Website: http://www.mediastreamer2.com
 */

/**
 * @defgroup mediastreamer2_intro Introduction to mediastreamer2 concepts
 *
 * @section what_is_it What is mediastreamer2?
 *
 * mediastreamer2 is a powerful engine to make audio and video streams.
 * mediastreamer2 is GPL (COPYING). Please understand the licencing details
 * before using it!
 *
 * Commercial support and licensing is provided by Belledonne Communications
 * http://www.belledonne-communications.com
 *
 * @see http://www.linphone.org/eng/documentation/dev/mediastreamer2.html
 *
 * @section definitions Some definitions
 *
 * - <b>Filter:</b>
 *   A filter is a mediastreamer2 component that process data. A filter
 *   have 0 or several INPUT pins and 0 or several OUTPUT pins.
 *   Here is a list of possible use of filters:
 *    - capture audio or video data.
 *    - play audio or display video data.
 *    - send or receive RTP data.
 *    - encode or decode audio or video data.
 *    - transform (resize video, resample audio...) data.
 *    - duplicate any kind of data.
 *    - mix audio/video data.
 * - <b>Graph:</b>
 *   A graph is a manager of filters connected together. It will transfer
 *   data from OUTPUT pins to INPUT pins and will be responsible for
 *   running filters.
 *
 * @section how_do_i_use_mediastreamer2 How do I use mediastreamer2?
 *
 * Mediastreamer2 can be used for a lot of different purpose. The primary
 * use is to manage RTP audio and video session. You will need to use
 * the API to build filters, link them together in a graph. Then the
 * ticker API will help you to start and stop the graph.
 *
 * Basic graph example:
 *
 * @dot
 * digraph example {
 *  rankdir=LR
 *  node [shape=record, fontname=Helvetica, fontsize=10];
 *  capt [ label="AUDIO CAPTURE FILTER"];
 *  enc [ label="ENCODE FILTER"];
 *  rtp [ label="RTP FILTER"];
 *  capt -> enc;
 *  enc -> rtp;
 * }
 * @enddot
 *
 *
 * The above graph is composed of three filters. The first one has no input:
 * it captures audio data directly from the drivers and provide it to the
 * OUTPUT pin. This data is sent to the INPUT pin of the encoder which of
 * course encodes the data and sends it to its OUTPUT pin. This pin is connected
 * to the INPUT pin of a filter capable of building and sending RTP packets.
 *
 * The modular design helps you to encode in many different formats just by
 * replacing the "ENCODE FILTER" with another one. mediastreamer2 contains
 * internal support for g711u, g711a, speex and gsm. Other encoding formats
 * can be added by implementing new filters as plugins which can then be dynamically
 * loaded.
 *
 * @sa filters
 */

/**
 * @defgroup mediastreamer2_api Mediastreamer2's base APIs
 * @brief Base APIs of mediastreamer2
 *
 * Mediastreamer2 expose a low level API to directly control filters, chain and have them running.
 */

/**
 * @defgroup mediastreamer2_init Init API - Starting mediastreamer2 library
 * @ingroup mediastreamer2_api
 * @brief Starting mediastreamer2 library
 */

/**
 * @defgroup mediastreamer2_soundcard Sound Card API - Manage audio capture/play filters
 * @ingroup mediastreamer2_api
 * @brief Sound Card API to manage audio capture/play filters
 */

/**
 * @defgroup mediastreamer2_filter Filter API - Manage mediastreamer2 filters
 * @ingroup mediastreamer2_api
 * @brief Filter API to manage mediastreamer2 filters
 *
 * This section documents the API needed to create, link,
 * unlink, find and destroy filters.
 *
 * It also provides definitions if you wish to implement
 * your own filters.
 */

/**
 * @defgroup mediastreamer2_ticker Ticker API - Manage mediastreamer2 graphs
 * @ingroup mediastreamer2_api
 * @brief Ticker API to manage mediastreamer2 graphs
 *
 * Describes the ticker API. The ticker is the thread responsible for scheduling audio & video processing for
 * one or several filter graphs.
 */


/**
 * @defgroup mediastreamer2_high_api Mediastreamer2's high level APIs
 * @brief High level APIs of mediastreamer2
 *
 * The high level apis are designed to provide an easy way to create audio or video processing graphs for
 * VoIP.
 */

/**
 * @defgroup audio_stream_api Audio streaming API - Create and run VoIP audio streams.
 * @ingroup mediastreamer2_high_api
 * @brief Audio streaming API - Easily run audio streams from soundcard or wav files to RTP.
 */

/**
 * @defgroup mediastreamer2_audio_conference Audio conferencing API - Easily create conferences.
 * @ingroup mediastreamer2_high_api
 * @brief Audio conferencing API - Easily create conferences.
 */

/**
 * @defgroup video_stream_api Video streaming API - Create and run video streams.
 * @ingroup mediastreamer2_high_api
 * @brief Video streaming API - Easily run video streams from camera capture or static picture files to RTP.
 */

/**
 * @defgroup ring_api Ring playing API - Play ring files.
 * @ingroup mediastreamer2_high_api
 * @brief Ring playing API - Easily play a local ring from a wav file.
 */



/**
 * @page mediastreamer2_readme README
 * @verbinclude README
 */

/**
 * @page mediastreamer2_install INSTALL
 * @verbinclude INSTALL
 */

/**
 * @page mediastreamer2_license COPYING
 * @verbinclude COPYING
 */

/**
 * @page mediastreamer2_changelog ChangeLog
 * @verbinclude ChangeLog
 */
