Commit 1896493f authored by Ghislain MARY's avatar Ghislain MARY

Improve filters documentation.

parent 215c9f09
......@@ -87,7 +87,7 @@ FILE_PATTERNS = *.h \
*.c \
*.dox
RECURSIVE = YES
EXCLUDE = ../src/ortp-deps
EXCLUDE = ../src/ortp-deps ../src/utils
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS =
EXAMPLE_PATH = ..
......@@ -189,7 +189,7 @@ ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH = ../include/mediastreamer2
INCLUDE_PATH = ../include
INCLUDE_FILE_PATTERNS = *.h
PREDEFINED = DOXYGEN
EXPAND_AS_DEFINED =
......@@ -207,10 +207,10 @@ PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = NO
HAVE_DOT = YES
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES
GROUP_GRAPHS = NO
UML_LOOK = NO
TEMPLATE_RELATIONS = YES
INCLUDE_GRAPH = YES
......
......@@ -5,10 +5,9 @@
*/
/**
* @defgroup mediastreamer2_intro Introduction to mediastreamer2 concepts.
* @brief Introduction
* @defgroup mediastreamer2_intro Introduction to mediastreamer2 concepts
*
* @section what_is_it What is mediastreamer2
* @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
......@@ -19,25 +18,23 @@
*
* @see http://www.linphone.org/eng/documentation/dev/mediastreamer2.html
*
* @section definitions Some definitions.
*
* 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.
* transform (resize video, resample audio...) data.
* 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.
* @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?
*
......@@ -46,82 +43,34 @@
* 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 sample:
* Basic graph example:
*
* <PRE>
* AUDIO CAPTURE --> ENCODE --> RTP
* FILTER --> FILTER --> FILTER
* </PRE>
* @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:
* tt captures audio data directly from the drivers and provide it to the
* 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 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.
* 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 format just by
* 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. 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
* mme API (windows)
* alsa API (linux)
* oss API (linux)
* arts API (linux)
* portaudio API (macosx and other)
* iounit API (macosx and ios)
* Android sound
* macsnd API (native macosx API -please do more testing...-)
*
* several audio encoder/decoder: PCMU, PCMA, speex, gsm, G722
* 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)
* Quicktime API (MACOSX)
* AV Foundation API (IOS)
* android.hardware.Camera API (Android)
* video display
* v4w API (windows)
* SDL API (linux, macosx...)
* XV API (linux)
* OPENGL-ES (Android, IOS)
* several audio encoder/decoder: H263-1998, MP4V-ES, VP8, theora
* image resizer.
* format converter. (RBG24, I420...)
*
* Plugin Filters:
* iLBC decoder/encoder.
* AMR-NB decoder/encoder.
* SILK decoder/encoder.
* H264 decoder/encoder.
* </PRE>
*
* 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
*/
/**
......@@ -132,23 +81,21 @@
*/
/**
* @defgroup mediastreamer2_init Starting mediastreamer2 library.
* @defgroup mediastreamer2_init Starting mediastreamer2 library
* @ingroup mediastreamer2_api
* @brief Starting mediastreamer2 library.
*
* @brief Starting mediastreamer2 library
*/
/**
* @defgroup mediastreamer2_soundcard Sound Card API - manage audio capture/play filters.
* @defgroup mediastreamer2_soundcard Sound Card API - Manage audio capture/play filters
* @ingroup mediastreamer2_api
* @brief Sound Card API to manage audio capture/play filters.
*
* @brief Sound Card API to manage audio capture/play filters
*/
/**
* @defgroup mediastreamer2_filter Filter API - manage mediastreamer2 filters.
* @defgroup mediastreamer2_filter Filter API - Manage mediastreamer2 filters
* @ingroup mediastreamer2_api
* @brief Filter API to manage mediastreamer2 filters.
* @brief Filter API to manage mediastreamer2 filters
*
* This section documents the API needed to create, link,
* unlink, find and destroy filters.
......@@ -158,9 +105,9 @@
*/
/**
* @defgroup mediastreamer2_ticker Ticker API - manage mediastreamer2 graphs.
* @defgroup mediastreamer2_ticker Ticker API - Manage mediastreamer2 graphs
* @ingroup mediastreamer2_api
* @brief Ticker API to manage mediastreamer2 graphs.
* @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.
......@@ -176,28 +123,28 @@
*/
/**
* @defgroup audio_stream_api Creating typical VoIP audio streams.
* @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.
**/
* @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.
* @defgroup mediastreamer2_audio_conference Audio conferencing API - Easily create conferences.
* @ingroup mediastreamer2_high_api
* @brief Audio conferencing API - easily create conferences.
* @brief Audio conferencing API - Easily create conferences.
*/
/**
* @defgroup video_stream_api Creating typical VoIP video streams.
* @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.
**/
* @brief Video streaming API - Easily run video streams from camera capture or static picture files to RTP.
*/
/**
* @defgroup ring_api Creating ring graphs.
* @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.
**/
* @brief Ring playing API - Easily play a local ring from a wav file.
*/
......
/**
* @defgroup filters Filters documentation
* @ingroup mediastreamer2
*
* Each filter provides its own functionalities. The filters can be organized as audio, video and other more general filters.
* The majority of the available filters are built in the mediastreamer2 library. But additional filters can be provided as plugins that will
* be loaded dynamically by calling the ms_load_plugins() function.
*
* @section list_of_filters List of built-in filters
*
* - Audio filters:
* - Audio capture and audio playing filters:
* - Alsa (Linux): src/audiofilters/alsa.c
* - Android native sound (libmedia): src/android/androidsound.cpp
* - Android sound (deprecated): src/android/androidsound_depr.cpp
* - Audio Queue Service (Mac OS X): src/audiofilters/aqsnd.c
* - Audio Unit Service (Mac OS X): src/audiofilters/msiounit.m
* - Arts (Linux): src/audiofilters/arts.c
* - DirectSound (Windows): src/audiofilters/winsndds.cpp
* - File player (raw/wav/pcap files) (Linux): src/audiofilters/msfileplayer.c
* - File player (raw/wav files) (Windows): src/audiofilters/msfileplayer_win.c
* - File recorder (wav files) (Linux): src/audiofilters/msfilerec.c
* - File recorder (wav files) (Windows): src/audiofilters/msfilerec_win.c
* - Mac Audio Unit (Mac OS X): src/audiofilters/macsnd.c
* - MME (Windows): src/audiofilters/winsnd2.c
* - OSS (Linux): src/audiofilters/oss.c
* - PortAudio (Mac OS X): src/audiofilters/pasnd.c
* - PulseAudio (Linux): src/audiofilters/pulseaudio.c
* - Windows Sound (Windows): src/audiofilters/winsnd.c, src/audiofilters/winsnd3.c
* - Audio encoder/decoder filters:
* - G.711 alaw: src/audiofilters/alaw.c
* - G.711 µlaw: src/audiofilters/ulaw.c
* - G.722: src/audiofilters/msg722.c
* - G.726: src/audiofilters/g726.c
* - GSM: src/audiofilters/gsm.c
* - Linear PCM: src/audiofilters/l16.c
* - Speex: src/audiofilters/msspeex.c
* - Audio processing filters:
* - Channels adaptation (mono->stereo or stereo->mono): src/audiofilters/chanadapt.c
* - Conferencing: src/audiofilters/msconf.c
* - DTMF generation: src/audiofilters/dtmfgen.c
* - Echo cancellation (speex): src/audiofilters/speexec.c
* - Echo cancellation (webrtc) (Android): src/audiofilters/webrtc_aec.c
* - Equalizer: src/audiofilters/equalizer.c
* - Mixer: src/audiofilters/audiomixer.c
* - Packet Loss Concealment (PLC): src/audiofilters/genericplc.c
* - Resampler: src/audiofilters/msresample.c
* - Tone detector: src/audiofilters/tonedetector.c
* - Volume control and measure: src/audiofilters/msvolume.c
* - Video filters:
* - Video capture and video display filters:
* - Android capture: src/android/androidvideo.cpp
* - Android display: src/android/android-display.c
* - AV Foundation capture (iOS): src/videofilters/ioscapture.m
* - AV Foundation display (iOS): src/videofilters/iosdisplay.m
* - DirectShow capture (Windows): src/videofilters/msdscap-mingw.cc
* - DrawDib display (Windows): src/videofilters/drawdib-display.c
* - External display - Send video to the upper layer: src/videofilters/extdisplay.c
* - GLX display (Linux): src/videofilters/glxvideo.c
* - Mire - Synthetic moving picture: src/videofilters/mire.c
* - OpenGL display (Mac OS X): src/videofilters/msosxdisplay.m
* - OpenGL ES2 display (Android): src/videofilters/android-opengl-display.c
* - Quicktime capture (Mac OS X): src/videofilters/qtcapture.m
* - SDL display: src/videofilters/videoout.c
* - Static image output: src/videofilters/nowebcam.c
* - Video For Linux (V4L) capture (Linux): src/videofilters/msv4l.c
* - Video For Linux 2 (V4L2) capture (Linux): src/videofilters/msv4l2.c
* - Video4windows (DirectShow) capture (Windows): src/videofilters/winvideods.c
* - Video4windows (DirectShow) capture (Windows CE): src/videofilters/wincevideods.c
* - Video For Windows (vfw) capture (Windows): src/videofilters/winvideo.c, src/videofilters/winvideo2.c
* - XV display (Linux): src/videofilters/x11video.c
* - Video encoder/decoder filters:
* - H.263, H.263-1998, MP4V-ES, JPEG, MJPEG, Snow: src/videofilters/videodec.c, src/videofilters/videoenc.c
* - H.264 (decoder only): src/videofilters/h264dec.c
* - Theora: src/videofilters/theora.c
* - VP8: src/videofilters/vp8.c
* - Video processing filters:
* - JPEG snapshot: src/videofilters/jpegwriter.c
* - Pixel format converter: src/videofilters/pixconv.c
* - Resizer: src/videofilters/sizeconv.c
* - Other filters:
* - Inter-ticker communication: src/otherfilters/itc.c
* - Join - Send several inputs to one output: src/otherfilters/join.c
* - RTP sending/receiving: src/otherfilters/msrtp.c
* - Tee - Send one input to several outputs: src/otherfilters/tee.c
* - Void - Trash input: src/otherfilters/void.c
*
* @section list_of_plugin_filters List of existing plugin filters
*
* - Audio filters:
* - AMR-NB encoder/decoder
* - G.729 encoder/decoder
* - iLBC encoder/decoder
* - SILK encoder/decoder
* - Video filters:
* - H.264 software encoder
* - H.264 hardware accelerated V4L2 encoder/decoder
*/
/**
* @defgroup mssilk - SILK (Skype codec) plugin
* @defgroup audiofilters Audio filters
* @ingroup filters
*/
/**
* @defgroup videofilters Video filters
* @ingroup filters
*/
/**
* @defgroup otherfilters Other general filters
* @ingroup filters
*/
/**
* @defgroup mssilk - SILK (Skype codec) plugin
* @ingroup audiofilters
* @brief SILK Speech Codec (draft-vos-silk-02) plugins filters to encode and decode audio.
*
*<b>MSSILKEnc</b> and <b>MSSILKDec</b> are 2 Mediastremer2's filters available to encode/decode speech using SILK sdk from Skype.
......
......@@ -8,7 +8,7 @@ When using mediastreamer2, your first task is to initialize the
library:
<PRE>
##include <mediastreamer2/mscommon.h>
#include <mediastreamer2/mscommon.h>
int i;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment