Mediastreamer2 is a powerful and lightweight streaming engine specialized
in voice/video telephony applications.

It is the library that is responsible for all the receiving and sending of
multimedia streams in linphone, including voice/video capture, encoding and
decoding, and rendering.

Features:

* Capture and playback from various platform dependent sound architectures
* Send and receive RTP streams
* Encode and decode the following audio formats: OPUS, speex, G711, GSM, iLBC,
  AMR, AMR-WB, G722, SILK, G729, and video formats H263, theora, MPEG4,
  H264 and VP8
* RTP/AVPF support: RTCP control messages for video error recovery: PLI, SLI,
  RPSI, FIR
* Audio conferencing
* Supports SRTP and ZRTP (encryption of voice and video)
* Supports any webcam, based on OS's camera API: quicktime, directshow,
  video4linux, android.camera
* Acoustic echo cancellation using the speex echo canceler or webrtc AECm
* Read and write .wav files
* Optimized rendering of YUV pictures, using OpenGL, DrawDib, X11/Xv
* Dual tones generation
* Custom tone detector
* Audio parametric equalizer
* Volume control, automatic gain control
* ICE for optimized NAT traversal (RFC5246) to allow peer to peer audio and
  video connections without media relay server
* Adaptive bitrate control algorithm: for automatic adaption of encoder
  bitrate based on received RTCP feedback
* Can use plugins to add new codecs, new sound input/output backends,...

WWW: https://www.linphone.org/technical-corner/mediastreamer2.html
