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): type, caption and basic number, height, margin top, margin bottom, images selection: image hidden, images for non-BLF button type, for BLF terminated/early/confirmed state
- setting: double width for speed dial.
- 2014.11.29 tSIP_0_1_18_1_bin.7z,
- additional configuration for BLF buttons: number dialed when button is pressed can be changed to different than number for subscription and depend on subscribed number state; this can be treated as generalized "Call pickup" function available e.g. on Yealink phones (to get identical behavior mark "early" for override and enter complete number that has to be used to pickup call from other extension on PABX)
- new button type: unsolicited MWI (dislaying number of new and old messages on voice mail); image shown when there are new messages is shared with BLF "early" setting
- new button type: MUTE
- 2014.12.06 tSIP_0_1_19_bin.7z, tSIP_0_1_19_src.7z