Commit 3224c96a authored by jehan's avatar jehan

add SILK plugin section in doxygen

parent eb182aa8
......@@ -800,7 +800,6 @@ mediastreamer.pc
mediastreamer2.spec
help/Makefile
help/Doxyfile
help/doxygen.dox
)
AC_OUTPUT
......
......@@ -90,7 +90,7 @@ RECURSIVE = YES
EXCLUDE =
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS =
EXAMPLE_PATH = ../
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
......
......@@ -4,7 +4,7 @@ EXTRA_DIST = Doxyfile.in doxygen.dox.in
#html doc
if HAVE_DOXYGEN
SOURCES=$(top_srcdir)/include/mediastreamer2/*.h $(top_srcdir)/src/*.c $(top_srcdir)/src/*.h
SOURCES=*.dox $(top_srcdir)/include/mediastreamer2/*.h $(top_srcdir)/src/*.c $(top_srcdir)/src/*.h
# doxdir & pkgdocdir are not always defined by automake
docdir=$(datadir)/doc
......
......@@ -81,13 +81,16 @@
* Audio Filters:
* audio capture
* audio playback
* mme API (windows)
* alsa API (linux)
* oss API (linux)
* arts API (linux)
* portaudio API (macosx and other)
* 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
*
* several audio encoder/decoder: PCMU, PCMA, speex, gsm, G722
* wav file reader.
* wav file recorder.
* resampler.
......@@ -101,15 +104,23 @@
* 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...)
* several audio encoder/decoder: H263-1998, MP4V-ES, theora
* image resizer.
* format converter. (RBG24, I420...)
* 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>
*
* @section what_thanks Thanks
......
/**
* @mainpage
* Project Website: http://savannah.gnu.org/projects/linphone
*
* @verbinclude README
*
*/
/**
* @defgroup mediastreamer2 mediastreamer2 library - a modular sound and video processing and streaming
* @brief mediastreamer2 Version @MEDIASTREAMER_VERSION@
*
* @see http://savannah.gnu.org/projects/linphone
*
* @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!
*
* For any use of this library beyond the rights granted to you by the
* GPL license, please contact antisip at <jack@atosc.org>.
*
* @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 when_do_i_use_mediastreamer2 How do I use mediastremer2?
*
* 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 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
* mme API (windows)
* alsa API (linux)
* oss API (linux)
* arts API (linux)
* portaudio API (macosx and other)
* macsnd API (native macosx API -please do more testing...-)
* several audio encoder/decoder: PCMU, PCMA, speex, gsm
* 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)
* video display
* v4w API (windows)
* SDL API (linux, macosx...)
* several audio encoder/decoder: H263-1998, MP4V-ES, theora
* image resizer.
* format converter. (RBG24, I420...)
*
* Plugin Filters:
* iLBC decoder/encoder.
* </PRE>
*
* @section what_thanks Thanks
*
* Thanks to all the contributors and to all bug reporters.
* Enjoy mediastreamer2!
*
*/
/**
* @defgroup mediastreamer2_api Mediastreamer2 API
* @brief All API to manage mediastreamer2 library.
*
*/
/**
* @defgroup mediastreamer2_init Init API - manage mediastreamer2 library.
* @ingroup mediastreamer2_api
* @brief Init API to manage mediastreamer2 library.
*
* This file provide the API needed to initialize
* and reset the 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.
*
* This file provide the API needed to manage
* soundcard filters.
*/
/**
* @defgroup mediastreamer2_filter Filter API - manage mediastreamer2 filters.
* @ingroup mediastreamer2_api
* @brief Filter API to manage mediastreamer2 filters.
*
* This file provide the API needed to create, link,
* unlink, find and destroy filter.
*
* 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.
*
* This file provide the API needed to create, start
* and stop a graph.
*/
/**
* @page mediastreamer2_readme README
* @verbinclude README
*/
/**
* @page mediastreamer2_install INSTALL
* @verbinclude INSTALL
*/
/**
* @page mediastreamer2_license COPYING
* @verbinclude COPYING
*/
/**
* @page mediastreamer2_changelog ChangeLog
* @verbinclude ChangeLog
*/
/**
* @defgroup filters
* @ingroup mediastreamer2
<H1>Filter lists</H1>
/**
* @defgroup mssilk - SILK (Skype codec) plugin
* @ingroup filters
* @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>
*/
*/
\ No newline at end of file
......@@ -71,10 +71,16 @@ struct _MSFilterMethod{
* @var MSFilterMethod
*/
typedef struct _MSFilterMethod MSFilterMethod;
/**
* Filter's category
*
*/
enum _MSFilterCategory{
/**others*/
MS_FILTER_OTHER,
/**used by encoders*/
MS_FILTER_ENCODER,
/**used by decoders*/
MS_FILTER_DECODER
};
......@@ -509,14 +515,33 @@ the method index (_cnt_) and the argument size */
#define MS_FILTER_EVENT_NO_ARG(_id_,_count_)\
MS_FILTER_METHOD_ID(_id_,_count_,0)
/* some MSFilter base generic methods:*/
/**
* some MSFilter base generic methods:
**/
/**
* Set filter output/input sampling frequency in hertz
*/
#define MS_FILTER_SET_SAMPLE_RATE MS_FILTER_BASE_METHOD(0,int)
/**
* Get filter output/input sampling frequency in hertz
*/
#define MS_FILTER_GET_SAMPLE_RATE MS_FILTER_BASE_METHOD(1,int)
/**
* Set filter output network bitrate in bit per seconds, this value include IP+UDP+RTP overhead
*/
#define MS_FILTER_SET_BITRATE MS_FILTER_BASE_METHOD(2,int)
/**
* Get filter output network bitrate in bit per seconds, this value include IP+UDP+RTP overhead
*/
#define MS_FILTER_GET_BITRATE MS_FILTER_BASE_METHOD(3,int)
#define MS_FILTER_GET_NCHANNELS MS_FILTER_BASE_METHOD(5,int)
#define MS_FILTER_SET_NCHANNELS MS_FILTER_BASE_METHOD(6,int)
/**
* Set codec dependent attributes as taken from the SDP
*/
#define MS_FILTER_ADD_FMTP MS_FILTER_BASE_METHOD(7,const char)
#define MS_FILTER_ADD_ATTR MS_FILTER_BASE_METHOD(8,const char)
#define MS_FILTER_SET_MTU MS_FILTER_BASE_METHOD(9,int)
#define MS_FILTER_GET_MTU MS_FILTER_BASE_METHOD(10,int)
......
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