filters.dox 8.03 KB
Newer Older
1
/**
2
 * @defgroup filters Filters documentation
3
 * @ingroup mediastreamer2
4 5 6 7 8 9 10 11 12 13 14 15
 *
 * 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
16
 *     - Audio Queue Service (Mac OS X): src/audiofilters/aqsnd.m
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
 *     - 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
 *     - 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
 */
98 99

/**
100
 * @defgroup audiofilters Audio filters
101
 * @ingroup filters
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
 */

/**
 * @defgroup videofilters Video filters
 * @ingroup filters
 */

/**
 * @defgroup otherfilters Other general filters
 * @ingroup filters
 */

/**
 * @defgroup mssilk  - SILK (Skype codec)  plugin
 * @ingroup audiofilters
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
 * @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. 
 *This integration leverage on source code from: http://developer.skype.com/silk. Note that usage of this plugin is subject to license from Skype.
 *<br><br>
 *<b> Supported SILK features</b>
 *<br> SILK is a multi rate, multi sampling frequency codec with variable packetization time. SILK allows control of these parameters using standard Mediastreamer2 functions.
 *<br><br> 
 *<b> init</b>
 *<br> mssilk is automatically loaded by Medistreamer2 in case libmssilk.so is present in the Mediastremer2 plugin directory. Alternatively it is possible to load it by calling the function 
 \code void libmssilk_init() \endcode Very usefull for Android or IOS.
 *<br><br>
 *<b> MSSILKEnc</b>
 <br> MSSILKEnc is a filter from category #MS_FILTER_ENCODER. It has its <b>enc_fmt</b> value set to <b>"SILK"</b>.The following key control functions are implemented:
 <br>
 *<ul>
 * <li><b>#MS_FILTER_SET_SAMPLE_RATE</b> Set both the output and input sampling rate. This value is internally mapped to both maximum codec sampling rate and API sampling rate. Supported value are 8000, 12000, 16000 and 24000. This value can be changed at any time.
 * <li><b>#MS_FILTER_SET_BITRATE</b> Set the target network output bitrate for this filter. As this value takes into account RTP/UDP/IP overhead, this filter first computes a codec bitrate from both this input and current packetization time value (I.E ptime). Computed codec bitrate value is passed to the SILK encoder as target bitrate. This value can be changed at any time.
 * <li><b>#MS_FILTER_ADD_FMTP</b> Set codec specific parameter as described in draft-vos-silk-02. Default values are those proposed by draft-vos-silk-02. Supported parameters are <b>maxptime</b>, <b>ptime</b>, <b>useinbandfec</b>.  
 *</ul>
 *<br>
 * Preset SILK encoder's values not configurable are: encoder <b>complexity</b> set to 1, <b>packetLossPercentage</b> set to 10 and <b>useDTX</b> set to 0.
 *<br><br>
 *<b> MSSILDec</b>
 <br> MSSILDec is a filter from category #MS_FILTER_DECODER. It has its <b>enc_fmt</b> value set to <b>"SILK"</b>.This filter make use of SILK's builtin Packet Lose Concealment and Forward Error Correction feature.The following key control functions are implemented:
 <br>
 *<ul>
 * <li><b>#MS_FILTER_SET_SAMPLE_RATE</b> Set  output sampling rate. This value is internally mapped to API sampling rate.Supported value are 8000, 12000, 16000, 24000, 32000, 44000 and 48000. This value can be changed at any time.
 *</ul>
 *<br>
147 148
 *
*/