README 4.14 KB
Newer Older
aymeric's avatar
aymeric committed
1 2
Project    : mediastreamer2 - a modular sound and video processing and streaming
Email      : simon.morlat_at_linphone.org
3
License    : GPLv2(or later) or Commercial licensing
4
Home Page  : http://www.mediastreamer2.com
aymeric's avatar
aymeric committed
5

6 7 8 9
Commercial support and licensing is provided by Belledonne Communications
http://www.belledonne-communications.com

Mediastreamer2 is a library to make audio and
aymeric's avatar
aymeric committed
10 11 12 13
video real-time streaming and processing. Written in pure C,
it is based upon the ortp library.

Design:
14
-------------------------------------
aymeric's avatar
aymeric committed
15 16 17 18 19 20 21 22 23 24 25

Using mediastreamer2 will allow you to chain filters in a graph. Each
filter will be responsible for doing some kind of processing and will
deliver data to the next filter. As an example, you could get some
data from network and unpack it in an RTP filter. This RTP filter will
deliver the data to a decoder (speex, G711...) which will deliver it
to a filter that is able to play the PCM data or record it into a .wav
file.

There is a doxygen documentation for more information.

Simon Morlat's avatar
Simon Morlat committed
26
Compilation and installation
27
-------------------------------------
Simon Morlat's avatar
Simon Morlat committed
28 29 30 31

* Required dependencies:
	- oRTP
	- libspeex and libspeexdsp
32
	- vim
jehan's avatar
jehan committed
33
	- bctoolbox
Simon Morlat's avatar
Simon Morlat committed
34 35 36
* Optional dependencies (for video to be enabled, see --enable-video):
	- libavcodec
	- libswscale
37 38
	- libvpx
	- libopus
Simon Morlat's avatar
Simon Morlat committed
39
	- x11 with libxv-dev on linux
Simon Morlat's avatar
Simon Morlat committed
40
	- libmastroska2 from https://github.com/Matroska-Org/foundation-source
Simon Morlat's avatar
Simon Morlat committed
41
	- theora
42
	- libsrtp
aymeric's avatar
aymeric committed
43

44
  * For Linux, MacOS or mingw
aymeric's avatar
aymeric committed
45 46 47 48 49

   $> ./configure
   $> make
   $> su -c 'make install'

50
   More instructions and advices can be found for the mingw compilation procedure in Linphone's README.mingw.
Simon Morlat's avatar
Simon Morlat committed
51

52 53 54 55 56 57 58
  * Windows XP and later with Visual Studio 2010
	1) Make a directory where you have together:
		oRTP (clone from git://git.linphone.org/ortp.git )
		mediastreamer2 (clone from git://git.linphone.org/mediastreamer2.git)
		linphone-deps (directory to be created).
	2) Download latest linphone-deps-win32 zip from http://download-mirror.savannah.gnu.org/releases/linphone/misc/ and unpack it in the linphone-deps directory.
	3) open build/win32native/mediastreamer2.sln
Simon Morlat's avatar
Simon Morlat committed
59

60 61
Environment variables used by mediastreamer2
---------------------------------------------
62

63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
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'.
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.

MEDIASTREAMER_DEBUG : when set to 1, verbose logging is activated by default.

DISPLAY : used by video display filters relying on X11 (linux only).
aymeric's avatar
aymeric committed
84 85


Simon Morlat's avatar
Simon Morlat committed
86 87 88 89
Notes about third parties compilation
-------------------------------------

* libmatroska2:
90
 - get the source with
Simon Morlat's avatar
Simon Morlat committed
91 92 93 94
	$ git clone git://git.linphone.org/libmatroska-c.git
 - compilation:
	$ make -f Makefile
	$ make -f Makefile install
aymeric's avatar
aymeric committed
95 96


97 98
Contact information:
-------------------------------------
aymeric's avatar
aymeric committed
99

100 101 102 103
Use the *linphone* mailing list for question about mediastreamer2.
  <linphone-developers@nongnu.org>.
Subscribe here:
  https://savannah.nongnu.org/mail/?group=linphone
104 105