Commit 75de454d authored by François Grisez's avatar François Grisez

Update README.md

parent 84d80bcd
Project : mediastreamer2 - a modular sound and video processing and streaming
Email : simon.morlat_at_linphone.org
License : GPLv2(or later) or Commercial licensing
Home Page : http://www.mediastreamer2.com
Mediastreamer
=============
* Project : mediastreamer2 - a modular sound and video processing and streaming
* Email : <simon.morlat@linphone.org>
* License : GPLv2(or later) or Commercial licensing
* Home Page : <http://www.mediastreamer2.com>
Commercial support and licensing is provided by Belledonne Communications
http://www.belledonne-communications.com
<http://www.belledonne-communications.com>
Mediastreamer2 is a library to make audio and
video real-time streaming and processing. Written in pure C,
it is based upon the ortp library.
Design:
-------------------------------------
Design
------
Using mediastreamer2 will allow you to chain filters in a graph. Each
filter will be responsible for doing some kind of processing and will
......@@ -24,78 +27,102 @@ file.
There is a doxygen documentation for more information.
Compilation and installation
-------------------------------------
* Required dependencies:
- oRTP
- libspeex and libspeexdsp
- bctoolbox
* Optional dependencies (for video to be enabled, see --enable-video):
- libavcodec
- libswscale
- libvpx
- libopus
- x11 with libxv-dev on linux
- libmastroska2 from https://github.com/Matroska-Org/foundation-source
- theora
- libsrtp
* For Linux, MacOS or mingw
$> ./autogen.sh
$> ./configure
$> make
$> su -c 'make install'
More instructions and advices can be found for the mingw compilation procedure in Linphone's README.mingw.
* For Windows with Visual Studio
It is recommended to use the linphone-desktop project (git://git.linphone.org/linphone-desktop.git) and follow the README file found there. If you really want to
build mediastreamer2 only you can pass the -DLINPHONE_BUILDER_TARGET=ms2 option to the prepare.py script.
----------------------------
### Required dependencies:
- **bctoolbox[1]**: portability layer
- **oRTP[2]**: RTP stack
- **libspeexdsp**: echo cancelation feature (disablable)
- **ffmpeg** or libav: H263 codec, MPEG4 decodec and RAW picture rescaling (disablable)
### Optional dependencies
- **libsrtp** for SRTP encryption
- **bzrtp[3]** for ZRTP encryption
- **libgsm**: GSM codecs support
- **libbv16**: BV16 codec support
- **libopus** for Opus encoding and decoding
- **libspeex**: SPEEX codec support
- **libalsa**: ALSA support (GNU/Linux only)
- **libpulse**: PulseAudio support (GNU/Linux only)
- **libv4l2**: video capture (GNU/Linux only;disablable)
- **libx11** and libxv: video display with X11 (GNU/Linux only)
- **libglx**: video dispaly with GLX (GNU/Linux only)
- **libvpx** for VP8 encoding and decoding
- **libmastroska-c** for recording/playing of audio/video streams
- **libturbojpeg**: video screenshot feature
### Build instructions:
The Autotools way is deprecated. Use [CMake](https://cmake.org) to configure the source code.
cmake . -DCMAKE_INSTALL_PREFIX=<prefix> -DCMAKE_PREFIX_PATH=<search_path>
make
make install
#### Supported opitions:
- `CMAKE_INSTALL_PREFIX=<string>` : install prefix
- `CMAKE_PREFIX_PATH=<string>` : column-separated list of prefixes where to search for dependencies
- `ENABLE_SHARED=NO` : do not build the shared library
- `ENABLE_STATIC=NO` : do not build the static library
- `ENABLE_STRICT=NO` : build without strict compilation flags (-Wall -Werror)
- `ENABLE_UNIT_TESTS=YES` : build tester binaries
- `ENABLE_DOC=NO` : do not generate the documentation
- `ENABLE_DEBUG_LOGS=YES` : turn on debug-level logs
#### Note for packagers:
Our CMake scripts may automatically add some paths into research paths of generated binaries.
To ensure that the installed binaries are striped of any rpath, use `-DCMAKE_SKIP_INSTALL_RPATH=ON`
while you invoke cmake.
Environment variables used by mediastreamer2
---------------------------------------------
--------------------------------------------
MS2_RTP_FIXED_DELAY : default value is 0. When set to 1, RTP packets belonging from one tick execution are actually sent at the beginning of the next tick.
`MS2_RTP_FIXED_DELAY` : default value is 0. When set to 1, RTP packets belonging from one tick execution are actually sent at the beginning of the next tick.
This allows a zero jitter in the RTP timing at sender side. This is to be used for measurements, this mode has no interest for doing a real conversation and does not improve
quality.
MS_AUDIO_PRIO, MS_VIDEO_PRIO : define the scheduling policy of the audio and video threads (MSTicker objects). Possible values are 'NORMAL', 'HIGH', 'REALTIME'.
`MS_AUDIO_PRIO`, `MS_VIDEO_PRIO` : define the scheduling policy of the audio and video threads (MSTicker objects). Possible values are 'NORMAL', 'HIGH', 'REALTIME'.
The corresponding behavior is as follows:
Priority type | Linux | MacOS | Windows
NORMAL |SCHED_OTHER, def. prio |SCHED_OTHER, def. prio | Default priority.
HIGH |SCHED_RR, max prio |SCHED_RR, max prio | THREAD_PRIORITY_HIGHEST
REALTIME |SCHED_FIFO, max prio |SCHED_FIFO, max prio | THREAD_PRIORITY_HIGHEST
Note that SCHED_FIFO leaves entire control of the cpu to the mediastreamer2 thread. In case of CPU overload due to heavy encoder processing for example,
a mono-core machine will stop responding.
MS_TICKER_SCHEDPRIO : UNIX only. It is an integer defining the thread priority to be used by MSTicker. Values are OS specific and depend on the scheduling policy
SCHED_FIFO, SCHED_RR or SCHED_OTHER.
MS2_OPUS_COMPLEXITY : opus codec complexity parameter. A value of -1 stands for mediastreamer2's own default value. Otherwise it must be between 0 and 10.
+-------------------+------------------------+------------------------+-------------------------+
| Priority type | GNU/Linux | MacOS | Windows |
+-------------------+------------------------+------------------------+-------------------------+
| NORMAL | SCHED_OTHER, def. prio | SCHED_OTHER, def. prio | Default priority. |
| HIGH | SCHED_RR, max prio | SCHED_RR, max prio | THREAD_PRIORITY_HIGHEST |
| REALTIME | SCHED_FIFO, max prio | SCHED_FIFO, max prio | THREAD_PRIORITY_HIGHEST |
+-------------------+------------------------+------------------------+-------------------------+
MEDIASTREAMER_DEBUG : when set to 1, verbose logging is activated by default.
Note that `SCHED_FIFO` leaves entire control of the cpu to the mediastreamer2 thread. In case of CPU overload
due to heavy encoder processing for example, a mono-core machine will stop responding.
DISPLAY : used by video display filters relying on X11 (linux only).
- `MS_TICKER_SCHEDPRIO` : UNIX only. It is an integer defining the thread priority to be used by MSTicker. Values
are OS specific and depend on the scheduling policy `SCHED_FIFO`, `SCHED_RR` or `SCHED_OTHER`.
- `MS2_OPUS_COMPLEXITY` : opus codec complexity parameter. A value of -1 stands for mediastreamer2's own default value.
Otherwise it must be between 0 and 10.
- `MEDIASTREAMER_DEBUG` : when set to 1, verbose logging is activated by default.
- `DISPLAY` : used by video display filters relying on X11 (GNU/Linux only).
Notes about third parties compilation
-------------------------------------
* libmatroska2:
- get the source with
$ git clone git://git.linphone.org/libmatroska-c.git
- compilation:
$ make -f Makefile
$ make -f Makefile install
Contact information:
-------------------------------------
Contact information
-------------------
Use the *linphone* mailing list for question about mediastreamer2.
<linphone-developers@nongnu.org>.
Subscribe here:
https://savannah.nongnu.org/mail/?group=linphone
<https://savannah.nongnu.org/mail/?group=linphone>
--------------------------------------
- [1] git://git.linphone.org/bctoolbox.git *or* <http://www.linphone.org/releases/sources/bctoolbox>
- [2] git://git.linphone.org/ortp.git *or* <http://www.linphone.org/releases/sources/ortp>
- [3] git://git.linphone.org/bzrtp.git *or* <http://www.linphone.org/releases/sources/bzrtp>
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