doxygen.dox 6.31 KB
Newer Older
jehan's avatar
jehan committed
1 2 3
/**
 * @mainpage
 *
4
 * Project Website: http://www.mediastreamer2.com
jehan's avatar
jehan committed
5 6
 */

7
/**
8
 * @defgroup mediastreamer2_intro Introduction to mediastreamer2 concepts.
9
 * @brief Introduction
jehan's avatar
jehan committed
10 11 12 13 14 15
 *
 * @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!
16
 *
17 18
 * Commercial support and licensing is provided by Belledonne Communications
 * http://www.belledonne-communications.com
19
 *
20
 * @see http://www.linphone.org/eng/documentation/dev/mediastreamer2.html
21 22
 *
 * @section definitions Some definitions.
jehan's avatar
jehan committed
23 24 25 26 27 28 29 30 31 32
 *
 * Filter:
 * 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:
 * <PRE>
 *   capture audio or video data.
 *   play audio or display video data.
 *   send or receive RTP data.
 *   encode or decode audio or video data.
33
 *   transform (resize video, resample audio...) data.
jehan's avatar
jehan committed
34 35 36 37 38 39 40 41
 *   duplicate any kind of data.
 *   mix audio/video data.
 * </PRE>
 * Graph:
 * 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.
 *
42 43
 * @section how_do_i_use_mediastreamer2 How do I use mediastreamer2?
 *
jehan's avatar
jehan committed
44 45 46 47
 * 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.
48
 *
jehan's avatar
jehan committed
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
 * Basic graph sample:
 *
 * <PRE>
 *  AUDIO CAPTURE   -->   ENCODE  -->     RTP
 *      FILTER      -->   FILTER  -->    FILTER
 * </PRE>
 *
 *
 * The above graph is composed of three filters. The first one has no input:
 * tt 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 encode the data and send it to its OUTPUT pin. This pin is connected
 * to the INPUT pin of a filter capable to build and send RTP packets.
 *
 * The modular design helps you to encode in many different format just by
 * replacing the "ENCODE FILTER" with another one. mediastreamer2 contains
 * internal support for g711u, g711a, speex and gsm. You can add new encoding
 * format by implementing new filters which can then be dynamically loaded.
 *
 * @section list_of_filters List of existing filters.
 *
 * mediastreamer2 already provides a large set of filters. Here is a complete
 * list of built-in filters.
 *
 * <PRE>
 * All supported platforms:
 *   RTP receiver
 *   RTP sender
 *   tee (duplicate data)
 *
 * Audio Filters:
 *   audio capture
 *   audio playback
jehan's avatar
jehan committed
82 83 84 85 86 87 88
 *   mme API (windows)
 *   alsa API (linux)
 *   oss API (linux)
 *   arts API (linux)
 *   portaudio API (macosx and other)
 *   iounit API (macosx and ios)
 *   Android sound
jehan's avatar
jehan committed
89
 *   macsnd API (native macosx API -please do more testing...-)
jehan's avatar
jehan committed
90 91
 *
 *   several audio encoder/decoder: PCMU, PCMA, speex, gsm, G722
jehan's avatar
jehan committed
92 93 94 95 96 97 98 99 100 101 102 103 104
 *   wav file reader.
 *   wav file recorder.
 *   resampler.
 *   conference bridge.
 *   volume analyser.
 *   acoustic echo canceller.
 *   dtmf generation filter.
 *
 * Video Filters:
 *   video capture
 *     v4w API (windows)
 *     directshow API (windows)
 *     video4linux API (linux)
jehan's avatar
jehan committed
105 106
 *     Quicktime API (MACOSX)
 *     AV Foundation API (IOS)
107
 *     android.hardware.Camera API (Android)
jehan's avatar
jehan committed
108 109 110
 *   video display
 *     v4w API (windows)
 *     SDL API (linux, macosx...)
jehan's avatar
jehan committed
111 112 113 114 115
 *     XV API (linux)
 *     OPENGL-ES (Android, IOS)
 *   several audio encoder/decoder: H263-1998, MP4V-ES, VP8, theora
 *     image resizer.
 *     format converter. (RBG24, I420...)
jehan's avatar
jehan committed
116 117 118
 *
 * Plugin Filters:
 *  iLBC decoder/encoder.
jehan's avatar
jehan committed
119 120 121
 *  AMR-NB decoder/encoder.
 *  SILK decoder/encoder.
 *  H264 decoder/encoder.
jehan's avatar
jehan committed
122 123 124 125 126 127
 * </PRE>
 *
 *
 */

/**
128 129
 * @defgroup mediastreamer2_api Mediastreamer2's base APIs
 * @brief Base APIs of mediastreamer2
jehan's avatar
jehan committed
130
 *
131
 * Mediastreamer2 expose a low level API to directly control filters, chain and have them running.
jehan's avatar
jehan committed
132 133 134
 */

/**
135
 * @defgroup mediastreamer2_init Starting mediastreamer2 library.
jehan's avatar
jehan committed
136
 * @ingroup mediastreamer2_api
137
 * @brief Starting mediastreamer2 library.
jehan's avatar
jehan committed
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
 *
 */

/**
 * @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.
 *
153 154
 * This section documents the API needed to create, link,
 * unlink, find and destroy filters.
jehan's avatar
jehan committed
155 156 157 158 159 160 161 162 163 164
 *
 * 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.
 *
165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187
 * 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 Creating typical 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.
jehan's avatar
jehan committed
188 189
 */

190 191 192 193 194 195 196 197 198 199 200
/**
 * @defgroup video_stream_api Creating typical VoIP 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 Creating ring graphs.
 * @ingroup mediastreamer2_high_api
 * @brief Ring playing API - easily play a local ring from a wav file.
**/
jehan's avatar
jehan committed
201

202

203 204 205

/**
 * @page mediastreamer2_readme README
jehan's avatar
jehan committed
206 207 208
 * @verbinclude README
 */

209 210
/**
 * @page mediastreamer2_install INSTALL
jehan's avatar
jehan committed
211 212 213 214
 * @verbinclude INSTALL
 */

/**
215
 * @page mediastreamer2_license COPYING
jehan's avatar
jehan committed
216 217 218
 * @verbinclude COPYING
 */

219 220
/**
 * @page mediastreamer2_changelog ChangeLog
jehan's avatar
jehan committed
221 222
 * @verbinclude ChangeLog
 */