VoIP/SIP client (softphone) for Windows
When looking for a SIP and media stack I've spotted libre/librem/baresip from creytiv.com. It has I believe pretty unique combination of simplicity, completeness and most of all permissive BSD-style license allowing commercial and closed-source derivatives.
Minimal subset (no video support, no codecs besides G.711, just the essentials for voice calls)
of libre/librem/baresip as a console application built with Turbo C++ 2006 Explorer. If you're not
a Borland products user stay with original source code that can be used with i.e. VC++ 2003.
bsip_tc_20111215.7z - source only
GUI SIP client
SIP client with graphical user interface built upon re/rem/baresip stack.
Feature set is very limited, but whole project is self-contained and easy to compile -
no external dependencies. GUI is using simplest possible model: single registration
account and single call at a time, but application is portable and using configuration
from a local JSON file, so many instances can be run simultaneously with different configurations.
Each instance takes ~1.8 MB of disc space (including wave files with signals such as ringing).
- Initial release: Version 0.1
tSIP_0_1_src.7z (435 kB)
- 2012.01.11 Minor fixes
- lib project dependencies handled in a better way (#pragma link "re.lib", library search directory changed depending on current build configuration),
- FIXED: possible Access Violation errors on quit or restart,
- added missing handling of transport and expires configuration parameters,
- ignoring incorrect stale=FALSE (treating always as stale=TRUE) parameter put by some other device with SIP/401 message that was causing periodical loss of registration; hopefully this would be only temporary change.
- 2012.01.16 tSIP_0_1_2_bin.7z,
- re/rem/baresip sources updated to version 0.4,
- winwave.c: fix for small, non-recurrent memleak,
- added baresip portaudio module and necessary PortAudio v19/DirectSound statically linked library; PortAudio is now default sound backend, WaveIn/WaveOut is left as an alternative,
- removed unnecessary parts from displayed call URI.
- 2012.01.28 tSIP_0_1_3_bin.7z,
- added baresip speex module and required statically linked library,
- added transmitted and received SIP message logging option,
- ua_find(): trying to match incoming requests using AOR if matching by Contact fails; matching by Contact only may cause interoperability problems (see Nokia: Problems with incoming VoIP 3.x calls).
- 2012.04.28 tSIP_0_1_4_bin.7z,
- re/rem/baresip sources updated to version 0.4.1,
- GUI: added auth username to configuration,
- GUI: fixed problem with temporary freezing when opening log window after long work time.
- 2012.05.10 tSIP_0_1_5_bin.7z,
- added baresip gsm module and statically linked gsm library,
- added module for G.726-32 codec and G.726 code from older SpanDSP version (copyright Sun Microsystems and Steve Underwood, public domain),
- added codec set configuration (enable/disable particular codecs).
- 2012.07.22 tSIP_0_1_6_bin.7z,
- added local address setting - equivalent of baresip "sip_listen", may be required when using on machines with more than one network interface to specify interface to bind to.
- 2013.11.20 tSIP_0_1_7_bin.7z,
- application version that handles multiple accounts and multiple calls was moved to separate branch (mtSIP),
- updated re (0.4.5), rem (0.4.4), baresip (0.4.6) sources,
- log window: added "Save to file" to context menu and "Log to file" checkbox (duplicating settings),
- added re-register button (forcing immediate re-registration),
- eliminated GUI freezing when application was closing during registration that would fail due to no response from 2nd party,
- auto-answer with specified SIP code,
- added (very crude) call history,
- added redial button,
- making call: assumed that if sip: prefix is present uri domain does not have to be added (previously: unable to call i.e. sip:192.168.1.11 uri, call function was assuming that domain was not present if "@" in uri was not present).
- 2014.03.19 tSIP_0_1_8_bin.7z,
- moved baresip code into separate static library (mostly to speed up often unnecessarly forced by TC++ whole project rebuilds),
- dialpad: added A, B, C, D DTMFs,
- added Flash button (sent as DTMF event),
- added Hold function,
- added blind transfer function.
- 2014.05.27 tSIP_0_1_9_bin.7z,
- added Speed Dial / BLF panel (application/dialog-info+xml subscription).
- 2014.06.01 tSIP_0_1_10_bin.7z,
- FIXED: account configuration: entering password is not required,
- FIXED: FLASH is no longer displayed as 'R' when dialing,
- FIXED: inconsistent application state when UA was restarted (configuration changed) during a call,
- making call with [Enter] in number edit field,
- auto-repetition for "backspace" button.
- 2014.08.07 tSIP_0_1_11_bin.7z,
Added Accept header to SUBSCRIBE message. Although it shouldn't be required (see RFC6665, 3.1.3), Asterisk 11.9.0 is dropping these type of message with error: WARNING: chan_sip.c:27847 handle_request_subscribe: SUBSCRIBE failure: no Accept header: pvt: stateid: -1, laststate: 0, dialogver: 0, subscribecont: '', subscribeuri: ''. Thanks to Barry Mercer for reporting.
- 2014.09.27 tSIP_0_1_12_bin.7z,
- added WebRTC Acoustic Echo Canceller as static library,
- AEC selection: none/Speex/WebRTC,
- fixed audio problem with WaveIn audio input (waveInUnprepareHeader() misorder).
Note: this is local echo canceller - it eliminates echo introduced by local speakerphone-microphone audio path (and heard by our caller), not echo that may be heard from second party.
- 2014.10.03 tSIP_0_1_13_bin.7z,
- separate audio module selection for audio source, output and output for ringing.
- 2014.10.05 tSIP_0_1_14_bin.7z,
- crude contact list / phonebook,
- json-cpp code moved into separate static library,
- fixed status text when account changed to account without registration,
- added CALL_STATE_OUTGOING, UA_EVENT_CALL_OUTGOING (feedback before contacting 2nd party on outgoing call),
- added CALL_EVENT_TRYING, UA_EVENT_CALL_TRYING (info on receiving SIP/100).
- 2014.10.16 tSIP_0_1_15_bin.7z,
- fixed audio device selection for winwave output (default device was always opened),
- tray icon, File/Minimize to tray, "X" button minimizes to tray,
- settings: Start minimized to tray,
- status text as tray hint,
- cleanup: Hangup()/CALL_STATE_CLOSED code duplication,
- simple tray notifier window, related settings added.
- 2014.11.02 tSIP_0_1_16_bin.7z,
- replaced str_error calls in SIP replies with fixed text (when replying to re-INVITE with image media only invalid message was generated with "Unknown error" followed by empty line),
- fixed minor built problems: reference to missing module with webrtc, not all projects included in main project group, missing (strangely only with particular TC++ copy installed) mmsystem.h include,
- fixed: no ring tones when working directory was different than application directory (e.g. when using start softphone01\tSIP.exe from batch file),
- clearing BLF icon from speed dial panel when BLF subscription is disabled,
- settings: delay for the auto answer, randomized (for fuzzing purposes) from specified range.
- 2014.11.23 tSIP_0_1_17_bin.7z,
- fixed audio device enumeration in settings window,
- GUI scaling (main window),
- intercom/paging (separate audio output on incoming INVITE with Call-Info with answer-after),
- winwave: fixed handle leaks (waveInUnprepareHeader called after waveInClose, with invalid dev handle),
- configurable buttons (in a similar way to e.g. Yealink phones),
- setting: double width for speed dial.