• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

debian/H07-May-2022-381220

docs/H11-Feb-2018-2,0571,395

include/H11-Feb-2018-1,220815

mk/H11-Feb-2018-1,4581,325

modules/H11-Feb-2018-47,96132,835

rpm/H11-Feb-2018-5240

share/H03-May-2022-

src/H11-Feb-2018-17,18911,111

test/H11-Feb-2018-5,3323,650

.gitignoreH A D11-Feb-2018205 2621

.travis.ymlH A D11-Feb-2018636 3123

MakefileH A D03-May-20227.7 KiB315241

README.mdH A D11-Feb-201812.7 KiB444367

README.md

1baresip README
2==============
3
4
5![Baresip Logo](https://raw.githubusercontent.com/alfredh/baresip/master/share/logo.png)
6
7
8Baresip is a portable and modular SIP User-Agent with audio and video support.
9Copyright (c) 2010 - 2018 Creytiv.com
10Distributed under BSD license
11
12
13[![Build Status](https://travis-ci.org/alfredh/baresip.svg?branch=master)](https://travis-ci.org/alfredh/baresip)
14
15
16## Features:
17
18* Call features:
19  - Unlimited number of SIP accounts
20  - Unlimited number of calls
21  - Unattended call transfer
22  - Auto answer
23  - Call hold and resume
24  - Microphone mute
25  - Call waiting
26  - Call recording
27  - Peer to peer calls
28  - Video calls
29  - Instant Messaging
30  - Custom ring tones
31  - Repeat last call (redial)
32  - Message Waiting Indication (MWI)
33  - Address book with presence
34
35* Signaling:
36  - SIP protocol support
37  - SIP outbound protocol for NAT-traversal
38  - SIP Re-invite
39  - SIP Routes
40  - SIP early media support
41  - DNS NAPTR/SRV support
42  - Multiple accounts support
43  - DTMF support (RTP, SIP INFO)
44
45* Security:
46  - Signalling encryption (TLS)
47  - Audio and video encryption (Secure RTP)
48  - DTLS-SRTP key exchange protocol
49  - ZRTP key exchange protocol
50  - SDES key exchange protocol
51
52* Audio:
53  - Low latency audio pipeline
54  - High definition audio codecs
55  - Audio device configuration
56  - Audio filter plugins
57  - Internal audio resampler for fixed sampling rates
58  - Linear 16 bit wave format support for ringtones
59  - Packet loss concealment (PLC)
60  - Configurable ringtone playback device
61  - Automatic gain control (AGC) and Noise reducation
62  - Acoustic echo control (AEC)
63
64* Audio-codecs:
65  - AMR narrowband, AMR wideband
66  - BroadVoice32 BV32
67  - Codec2
68  - G.711
69  - G.722
70  - G.726
71  - GSM
72  - iLBC
73  - iSAC
74  - L16
75  - MPA
76  - Opus
77  - Silk
78  - Speex
79
80* Audio-drivers:
81  - Advanced Linux Sound Architecture (ALSA) audio-driver
82  - Android OpenSLES audio-driver
83  - Gstreamer playbin input audio-driver
84  - JACK Audio Connection Kit audio-driver
85  - MacOSX/iOS coreaudio/audiounit audio-driver
86  - Open Sound System (OSS) audio-driver
87  - Portaudio audio-driver
88  - Windows winwave audio-driver
89
90* Video:
91  - Support for H.265, H.264, H.263, VP8, VP9, MPEG-4 Video
92  - Configurable resolution/framerate/bitrate
93  - Configurable video input/output
94  - Support for asymmetric video
95
96* Video-codecs:
97  - H.265
98  - H.264
99  - H.263
100  - VP8
101  - VP9
102  - MPEG-4
103
104* Video-drivers:
105  - iOS avcapture video-source
106  - FFmpeg/libav libavformat/avdevice input
107  - Cairo video-source test module
108  - Direct Show video-source
109  - MacOSX QTcapture/AVCapture video-source
110  - RST media player
111  - Linux V4L/V4L2 video-source
112  - X11 grabber video-source
113  - DirectFB video-output
114  - OpenGL/OpenGLES video-output
115  - SDL/SDL2 video-output
116  - X11 video-output
117
118* NAT-traversal:
119  - STUN support
120  - TURN server support
121  - ICE and ICE-lite support
122  - NATPMP support
123
124* Networking:
125  - multihoming, IPv4/IPv6
126  - automatic network roaming
127
128* Management:
129  - Embedded web-server with HTTP interface
130  - Command-line console over UDP/TCP
131  - Command line interface (CLI)
132  - Simple configuration files
133  - MQTT (Message Queue Telemetry Transport) module
134
135
136## Building
137
138baresip is using GNU makefiles, and the following packages must be
139installed before building:
140
141* [libre](https://github.com/creytiv/re)
142* [librem](https://github.com/creytiv/rem)
143* [openssl](https://www.openssl.org/)
144
145
146### Build with debug enabled
147
148```
149$ make
150$ sudo make install
151```
152
153### Build with release
154
155```
156$ make RELEASE=1
157$ sudo make RELEASE=1 install
158```
159
160### Build with clang compiler
161
162```
163$ make CC=clang
164$ sudo make CC=clang install
165```
166
167Modules will be built if external dependencies are installed.
168After building you can start baresip like this:
169
170```
171$ baresip
172```
173
174The config files in $HOME/.baresip are automatically generated
175the first time you run baresip.
176
177
178## Documentation
179
180The online documentation generated with doxygen is available in
181the main [website](http://creytiv.com/doxygen/baresip-dox/html/)
182
183
184### Examples
185
186Configuration examples are available from the
187[examples](https://github.com/alfredh/baresip/tree/master/docs/examples)
188directory.
189
190
191## License
192
193The baresip project is using the BSD license.
194
195
196## Contributing
197
198Patches can sent via Github
199[Pull-Requests](https://github.com/creytiv/baresip/pulls) or to the RE devel
200[mailing-list](http://lists.creytiv.com/mailman/listinfo/re-devel).
201
202
203## Design goals:
204
205* Minimalistic and modular VoIP client
206* SIP, SDP, RTP/RTCP, STUN/TURN/ICE
207* IPv4 and IPv6 support
208* RFC-compliancy
209* Robust, fast, low footprint
210* Portable C89 and C99 source code
211
212
213## Modular Plugin Architecture:
214```
215account       Account loader
216alsa          ALSA audio driver
217amr           Adaptive Multi-Rate (AMR) audio codec
218aubridge      Audio bridge module
219audiounit     AudioUnit audio driver for MacOSX/iOS
220aufile        Audio module for using a WAV-file as audio input
221auloop        Audio-loop test module
222avahi         Avahi Zeroconf Module
223avcapture     Video source using iOS AVFoundation video capture
224avcodec       Video codec using FFmpeg/libav libavcodec
225avformat      Video source using FFmpeg/libav libavformat
226b2bua         Back-to-Back User-Agent (B2BUA) module
227bv32          BroadVoice32 audio codec
228cairo         Cairo video source
229codec2        Codec2 low bit rate speech codec
230cons          UDP/TCP console UI driver
231contact       Contacts module
232coreaudio     Apple Coreaudio driver
233ctrl_tcp      TCP control interface using JSON payload
234debug_cmd     Debug commands
235directfb      DirectFB video display module
236dshow         Windows DirectShow video source
237dtls_srtp     DTLS-SRTP end-to-end encryption
238echo          Echo server module
239evdev         Linux input driver
240fakevideo     Fake video input/output driver
241g711          G.711 audio codec
242g722          G.722 audio codec
243g7221         G.722.1 audio codec
244g726          G.726 audio codec
245gsm           GSM audio codec
246gst           Gstreamer audio source
247gst1          Gstreamer 1.0 audio source
248gst_video     Gstreamer video codec
249gst_video1    Gstreamer 1.0 video codec
250gtk           GTK+ 2.0 UI
251gzrtp         ZRTP module using GNU ZRTP C++ library
252h265          H.265 video codec
253httpd         HTTP webserver UI-module
254ice           ICE protocol for NAT Traversal
255ilbc          iLBC audio codec
256isac          iSAC audio codec
257jack          JACK Audio Connection Kit audio-driver
258l16           L16 audio codec
259libsrtp       Secure RTP encryption using libsrtp
260menu          Interactive menu
261mpa           MPA Speech and Audio Codec
262mqtt          MQTT (Message Queue Telemetry Transport) module
263mwi           Message Waiting Indication
264natbd         NAT Behavior Discovery Module
265natpmp        NAT Port Mapping Protocol (NAT-PMP) module
266omx           OpenMAX IL video display module
267opengl        OpenGL video output
268opengles      OpenGLES video output
269opensles      OpenSLES audio driver
270opus          OPUS Interactive audio codec
271oss           Open Sound System (OSS) audio driver
272pcp           Port Control Protocol (PCP) module
273plc           Packet Loss Concealment (PLC) using spandsp
274portaudio     Portaudio driver
275pulse         Pulseaudio driver
276presence      Presence module
277qtcapture     Apple QTCapture video source driver
278rst           Radio streamer using mpg123
279sdl           Simple DirectMedia Layer (SDL) video output driver
280sdl2          Simple DirectMedia Layer v2 (SDL2) video output driver
281selfview      Video selfview module
282silk          SILK audio codec
283snapshot      Save video-stream as PNG images
284sndfile       Audio dumper using libsndfile
285sndio         Audio driver for OpenBSD
286speex         Speex audio codec
287speex_aec     Acoustic Echo Cancellation (AEC) using libspeexdsp
288speex_pp      Audio pre-processor using libspeexdsp
289srtp          Secure RTP encryption (SDES) using libre SRTP-stack
290stdio         Standard input/output UI driver
291stun          Session Traversal Utilities for NAT (STUN) module
292swscale       Video scaling using libswscale
293syslog        Syslog module
294turn          Obtaining Relay Addresses from STUN (TURN) module
295uuid          UUID generator and loader
296v4l           Video4Linux video source
297v4l2          Video4Linux2 video source
298v4l2_codec    Video4Linux2 video codec module (H264 hardware encoding)
299vidbridge     Video bridge module
300vidinfo       Video info overlay module
301vidloop       Video-loop test module
302vp8           VP8 video codec
303vp9           VP9 video codec
304vumeter       Display audio levels in console
305wincons       Console input driver for Windows
306winwave       Audio driver for Windows
307x11           X11 video output driver
308x11grab       X11 grabber video source
309zrtp          ZRTP media encryption module
310```
311
312
313## IETF RFC/I-Ds:
314
315* RFC 2190  RTP Payload Format for H.263 Video Streams (Historic)
316* RFC 2250  RTP Payload Format for the mpa Speech and Audio Codec
317* RFC 2429  RTP Payload Format for 1998 ver of ITU-T Rec. H.263 Video (H.263+)
318* RFC 3016  RTP Payload Format for MPEG-4 Audio/Visual Streams
319* RFC 3428  SIP Extension for Instant Messaging
320* RFC 3711  The Secure Real-time Transport Protocol (SRTP)
321* RFC 3856  A Presence Event Package for SIP
322* RFC 3863  Presence Information Data Format (PIDF)
323* RFC 3951  Internet Low Bit Rate Codec (iLBC)
324* RFC 3952  RTP Payload Format for iLBC Speech
325* RFC 3984  RTP Payload Format for H.264 Video
326* RFC 4145  TCP-Based Media Transport in SDP
327* RFC 4240  Basic Network Media Services with SIP (partly)
328* RFC 4298  Broadvoice Speech Codecs
329* RFC 4347  Datagram Transport Layer Security
330* RFC 4568  SDP Security Descriptions for Media Streams
331* RFC 4572  Connection-Oriented Media Transport over TLS Protocol in SDP
332* RFC 4574  The SDP Label Attribute
333* RFC 4585  Extended RTP Profile for RTCP-Based Feedback (RTP/AVPF)
334* RFC 4587  RTP Payload Format for H.261 Video Streams
335* RFC 4629  RTP Payload Format for ITU-T Rec. H.263 Video
336* RFC 4796  The SDP Content Attribute
337* RFC 4867  RTP Payload Format for the AMR and AMR-WB Audio Codecs
338* RFC 4961  Symmetric RTP / RTP Control Protocol (RTCP)
339* RFC 5168  XML Schema for Media Control
340* RFC 5285  A General Mechanism for RTP Header Extensions
341* RFC 5506  Support for Reduced-Size RTCP
342* RFC 5574  RTP Payload Format for the Speex Codec
343* RFC 5576  Source-Specific Media Attributes in SDP
344* RFC 5577  RTP Payload Format for ITU-T Recommendation G.722.1
345* RFC 5626  Managing Client-Initiated Connections in SIP
346* RFC 5627  Obtaining and Using GRUUs in SIP
347* RFC 5761  Multiplexing RTP Data and Control Packets on a Single Port
348* RFC 5763  Framework for Establishing a SRTP Security Context Using DTLS
349* RFC 5764  DTLS Extension to Establish Keys for SRTP
350* RFC 5780  NAT Behaviour Discovery Using STUN
351* RFC 6263  App. Mechanism for Keeping Alive NAT Associated with RTP / RTCP
352* RFC 6464  A RTP Header Extension for Client-to-Mixer Audio Level Indication
353* RFC 6716  Definition of the Opus Audio Codec
354* RFC 6886  NAT Port Mapping Protocol (NAT-PMP)
355* RFC 7587  RTP Payload Format for the Opus Speech and Audio Codec
356* RFC 7741  RTP Payload Format for VP8 Video
357* RFC 7798  RTP Payload Format for High Efficiency Video Coding (HEVC)
358
359* draft-ietf-avt-rtp-isac-04
360
361
362## Architecture:
363(note: out of date, needs updating)
364
365```
366                   .------.
367                   |Video |
368                 _ |Stream|\
369                 /|'------' \ 1
370                /            \
371               /             _\|
372 .--. N  .----. M  .------. 1  .-------. 1  .-----.
373 |UA|--->|Call|--->|Audio |--->|Generic|--->|Media|
374 '--'    '----'    |Stream|    |Stream |    | NAT |
375            |1     '------'    '-------'    '-----'
376            |         C|       1|   |
377           \|/      .-----.  .----. |
378        .-------.   |Codec|  |Jbuf| |1
379        | SIP   |   '-----'  '----' |
380        |Session|     1|       /|\  |
381        '-------'    .---.      |  \|/
382                     |DSP|    .--------.
383                     '---'    |RTP/RTCP|
384                              '--------'
385                              |  SRTP  |
386                              '--------'
387```
388
389   A User-Agent (UA) has 0-N SIP Calls
390   A SIP Call has 0-M Media Streams
391
392
393## Supported platforms:
394
395* Android
396* Apple Mac OS X and iOS
397* FreeBSD
398* Linux
399* NetBSD
400* OpenBSD
401* Solaris
402* Windows (mingw and VS2015)
403
404
405### Supported versions of C Standard library
406
407* Android bionic
408* BSD libc
409* GNU C Library (glibc)
410* Windows C Run-Time Libraries (CRT)
411* uClibc
412
413
414### Supported compilers:
415
416* gcc 3.x
417* gcc 4.x
418* gcc 5.x
419* gcc 6.x
420* ms vc2003 compiler
421* clang
422
423### Supported versions of OpenSSL
424
425* OpenSSL version 1.0.1
426* OpenSSL version 1.0.2
427* OpenSSL version 1.1.0
428* LibreSSL version 2.x
429
430
431## Related projects
432
433* [libre](https://github.com/creytiv/re)
434* [librem](https://github.com/creytiv/rem)
435* [retest](https://github.com/creytiv/retest)
436* [restund](http://creytiv.com/restund.html)
437
438
439## References
440
441* Project homepage: http://www.creytiv.com/baresip.html
442* Github: https://github.com/alfredh/baresip
443* Mailing-list: http://lists.creytiv.com/mailman/listinfo/re-devel
444