2017-12-25 Alfred E. Heggestad * Version 0.5.7 * GIT URL: https://github.com/alfredh/baresip.git * GIT tag: v0.5.7 * NOTE: Requires libre v0.5.5 or later Requires librem v0.5.0 or later * Credits: Thanks to Swedish Radio who sponsored many new features in this release. * new commands: - 'conf_reload' -- Reload config file * new modules: - gzrtp ZRTP module using GNU ZRTP C++ library (thanks glenvt18) - mqtt MQTT (Message Queue Telemetry Transport) module (sponsored by Swedish Radio) * config: - audio_txmode poll|thread Set audio transmit mode - auplay_format s16|float|s24_3le Set playback sample format - ausrc_format s16|float|s24_3le Set source sample format - sdp_ebuacip yes|no Enable EBU-ACIP parameters - zrtp_hash yes|no Enable/disable ZRTP hash * baresip-core: - audio: add sample format conversion - audio: add sample format for source/playback - audio: check timestamps on incoming RTP packets - audio: pace outgoing packets in txmode=thread - audio: remove txmode with realtime thread - audio: remove txmode with timer - audio: set EBUACIP parameters in SDP - auplay: add sample format to auplay_prm - auplay: change write handler to any sample format - ausrc: add sample format to ausrc_prm - ausrc: change read handler to any sample format - event.c: new file for generic event handling - event: add event_encode_dict to encode event to a dictionary - event: added UA_EVENT_CALL_RTCP for received RTCP - log: print to stdout (ref #320) * selftest: - add test for different audio tx-modes - add test for float audio sample format * Modules: * alsa: add support for multiple sample formats * audiounit: add support for FLOAT sample format * auloop: add support for multiple sample formats * avahi: Bugfix: Destroy resolver after callback (#318) (thanks Jonathan Sieber) * avcodec: change x264 rate control mode to ABR (#334) (thanks Jonathan Sieber) * debug_cmd: add command 'conf_reload' to reload config file * gzrtp: ZRTP module using GNU ZRTP C++ library (thanks glenvt18) * menu: add config 'ringback_disabled' to disable playing of ringback tone. * mqtt: MQTT (Message Queue Telemetry Transport) module new module using libmosquitto as the backend. * opus: fix encoder bitrate, ref #305 add opus_stereo config parameter (thanks Ola Palm) add config param opus_sprop_stereo (thanks Ola Palm) * portaudio: add support for FLOAT sample format * pulse: add support for FLOAT sample format remove garbage at the beginning of a recording (#323) * quicktime: module was removed * rst: add support for multiple sample formats * zrtp: add signaling hash support (#311) 2017-10-14 Alfred E. Heggestad * Version 0.5.6 * GIT URL: https://github.com/alfredh/baresip.git * GIT tag: v0.5.6 * NOTE: Requires libre v0.5.5 or later Requires librem v0.5.0 or later * New Baresip logo (thanks Ernst and community) * baresip-core: - log: rename error to error_msg due to GNU extension clash - ua: remove ua_sipfd() * Modules: * avahi: Avahi Zeroconf Module (thanks Jonathan Sieber) * avcodec: handle fragment packet loss * cairo: draw a dancing logo * ice: set ICE role correctly set retransmit count (RC) to 4 * opensles: fix recorder speaker setup (thanks Juha Heinanen) * opus: fix encoder bitrate, ref #305 * zrtp: encrypt/decrypt RTCP packets (thanks @glenvt18) 2017-09-07 Alfred E. Heggestad * Version 0.5.5 * GIT URL: https://github.com/alfredh/baresip.git * GIT tag: v0.5.5 * NOTE: Requires libre v0.5.5 or later Requires librem v0.5.0 or later * new commands: - insmod module.so -- Load a module - rmmod module.so -- Unload a module * config: - fullscreen yes|no Enable fullscreen display * baresip-core: - account: optional param 'auth_pass' for password add account_set_auth_pass() add account_aor() add account_auth_pass() - contact: add update handler (thanks Jonathan Sieber) - h264: add rtp_ts RTP Timestamp - module: add module_load/unload remove list of application modules - stream: reset timer on incoming RTCP packets (fixes #271) - ui: make the API re-entrant - video: add RTP timestamp to videnc packet handler add video_calc_rtp_timestamp() add video_calc_seconds() - video: use RTP timestamp from video encoder * selftest: - add test for video timestamps * Modules: * account: move password prompt here * av1: use encoder PTS to calculate RTP timestamp * avcodec: use encoder PTS to calculate RTP timestamp use level_idc=0x1f for x264 * cons: updated UI api * evdev: updated UI api * gst_video: use encoder PTS to calculate RTP timestamp * gst_video1: use encoder PTS to calculate RTP timestamp * h265: use encoder PTS to calculate RTP timestamp fix FU decoder bug * httpd: updated UI api * ice: move gathering from lib to app (requires libre v0.5.5 or later) * menu: updated UI api * mwi: updated UI api * presence: Handle contacts added at run-time (thanks Jonathan Sieber) * sdl: updated UI api * sdl2: add support for fullscreen video * stdio: updated UI api * v4l: add support for more pixel-formats * v4l2_codec: use encoder PTS to calculate RTP timestamp * vp8: use encoder PTS to calculate RTP timestamp * vp9: use encoder PTS to calculate RTP timestamp * wincons: updated UI api 2017-06-24 Alfred E. Heggestad * Version 0.5.4 * GIT URL: https://github.com/alfredh/baresip.git * GIT tag: v0.5.4 * NOTE: Requires libre v0.5.4 or later Requires librem v0.5.0 or later * config: - audio_level yes|no Enable audio level RTP extension * baresip-core: - add support for Client-to-Mixer Audio Level Indication (RFC 6464) - add support for RTP Header Extensions (RFC 5285) - module: dont load same static module twice - ua: add ua_progress() - ua: check for Accept header in incoming OPTIONS request - use a dummy RTP port for incoming OPTIONS (ref #265) - vidcodec: make the API re-entrant - vidfilt: make the API re-entrant - vidisp: make the API re-entrant - vidsrc: make the API re-entrant * selftest: - add test for audio level indication in call - add test for call progress * Modules: * (all video modules updated with API-changes) * zrtp: check for RTP packet in send handler (ref #262) (thanks to MobiSciLab for reporting the bug) - registered zrtp_log function with zrtp engine - improved info message on how to verify remote peer - improved setting and printing of zrtp cache file (thanks Juha Heinanen) 2017-05-14 Alfred E. Heggestad * Version 0.5.3 * GIT URL: https://github.com/alfredh/baresip.git * GIT tag: v0.5.3 * NOTE: Requires libre v0.5.3 or later Requires librem v0.5.0 or later * config: - (no changes) * build: - detect jack module (thanks Tony Langley) - Updated MSVS projects to vs2015 (thanks Mikhail Barg) * baresip-core: - aulevel: add aulevel_calc_dbov() - audio: Set correct clock rate for telephone events (thanks Jan Hoffmann) - play: Add gapless repeat for tone playback (thanks Jan Hoffmann) * selftest: - add tests for aulevel - add tests for audio player - add mock aucodec/auplay * Modules: * gst_video1: Tune x264enc for low latency (thanks Jonathan Sieber) * httpd: fix a crash * ice: update to latest libre ICE-api * omx: Fixed some problems on OMX/RaspberryPi (thanks Jonathan Sieber) * srtp: fix SRTP for early-media (thanks Jan Hoffmann) * vumeter: use aulevel_calc_dbov to calculate signal energy * zrtp: update to latest libzrtp from freeswitch (thanks Juha Heinanen) 2017-04-07 Alfred E. Heggestad * Version 0.5.2 * GIT URL: https://github.com/alfredh/baresip.git * GIT tag: v0.5.2 * NOTE: Requires libre v0.5.0 or later Requires librem v0.5.0 or later * new modules: - omx OpenMAX IL video display module (thanks Jonathan Sieber) * config: - (no changes) * baresip-core: - aucodec: make the API re-entrant - aufilt: make the API re-entrant - auplay: make the API re-entrant - ausrc: make the API re-entrant - video: using a video-source is now optional * Modules: * avformat: add pixelformat AV_PIX_FMT_YUVJ420P (Thanks Gary Metalle) * cairo: print picture info, use grey background * dtmfio: check fd before calling fclose (thanks Richard Perez) * h265: enable YUV444P pixelformat * oss: fix build for Solaris 11 * speex: mark the module as deprecated, see speex.org 2017-03-04 Alfred E. Heggestad * Version 0.5.1 * GIT URL: https://github.com/alfredh/baresip.git * GIT tag: v0.5.1 * NOTE: Requires libre v0.5.0 or later Requires librem v0.5.0 or later * new modules: * config: - stunuser STUN username for STUN/TURN/ICE - stunpass STUN password for STUN/TURN/ICE - snd_path Path to sndfile audio dump files * baresip-core: - account: add more accessor functions - account: add 'stunuser' and 'stunpass' - commands: make the struct commands opaque - message: make the API re-entrant, multiple listeners - menc: make the API re-entrant - mnat: make the API re-entrant * selftest: - add tests for account - add tests for message * Modules: * amr: use MOD-CFLAGS instead of global CFLAGS * avcodec: added optional config 'avcodec_h264dec' to specify hardware accellerated FFmpeg decoder (thanks Harald Gutmann) * avformat: remove blocking sleep, use packet timestamp to pace video stream (thanks Harald Gutmann) * debug_cmd: add OpenSSL version to systems info * gtk: fix build where USE_NOTIFICATIONS is not defined get rid of system header warnings by using -isystem * httpd: add support for un-escaping of URL parameters (thanks to elektm93) * menu: add new command 'ausrc' to switch audio source add new command 'auplay' to switch audio player * sdl2: add more pixelformats (ref #202) (thanks Harald Gutmann) * sndfile: add config to specify path for dump files (thanks Elektm93) add test for sndfile on *BSD. (#194) (thanks jungle-boogie) * swscale: get dst-size from config (ref #203) * v4l2_codec: Video device selection bug (#218) (thanks Richard Perez) 2016-12-23 Alfred E. Heggestad * Version 0.5.0 * GIT URL: https://github.com/alfredh/baresip.git * GIT tag: v0.5.0 * NOTE: Requires libre v0.5.0 or later Requires librem v0.5.0 or later * new modules: - av1 Experimental AV1 video codec - debug_cmd Debug commands for advanced users - pcp Port Control Protocol (PCP) for NAT traversal - swscale Video scaling using FFmpeg's libswscale * config: - call_max_calls Maximum number of calls per account * baresip-core: - call: add multiple lines - call: start video on reinvite (thanks Gary Metalle) - cmd: add support for long commands - cmd: make it re-entrant - config: add some modules to template (thanks Dmitrij D. Czarkoff) - contact: make it re-entrant - play: make it re-entrant - vidcodec: add a intraframe-flag to api - video: resend FIR until Intra frame received * selftest: - add test for DTMF in call - add test for contacts - add test for long commands - add test for maximum calls - add test for multiple calls - add test for video call - add audio-source mock - add video-codec mock - add video-display mock - add video-source mock * Modules: * aufile: convert samples from little-endian to host-endian * auloop: use long commands /auloop and /auloop_stop * av1: new module for Experimental AV1 video codec * avcodec: add config option 'avcodec_h264enc' to set encoder name (thanks to @hargut) * avformat: fix init and warnings (thanks Maciej Koman) * b2bua: use long command /b2bua * contact: use long commands * debug_cmd: new module for advanced debug commands * g7221: expose spandsp api (thanks to Steve Underwood) * gtk: use long command /gtk * h265: add 'profile-id=1' to SDP * menu: add long commands add command 'line' or '@' to set current call * opengl: fix deprecated warnings on OSX 10.12 * opensles: add support for stereo (thanks to Juha Heinanen and Vijay Pratap Singh) * opus: add support for SDP parameter mirroring (thanks to Sveriges Radio) * pcp: new module for Port Control Protocol (PCP) NAT traversal requires librew (https://github.com/alfredh/rew) * plc: expose spandsp api (thanks to Steve Underwood) * presence: add long commands /presence_{on,off}line * snapshot: use long commands (thanks Dmitrij D. Czarkoff) * sndio: use driver-suggested buffer size (thanks Dmitrij D. Czarkoff) * swscale: new module for video filter using libswscale * v4l2: pick up VID_FMT_NV12 and VID_FMT_NV21 formats as well (#176) don't check for native/emulated format (#179) (thanks Dmitrij D. Czarkoff) * vidloop: use long commands * vp8: add 'intra' parameter to decoder api fix building with old versions of libvpx * wincons: graceful closing of thread (fixes #151) (thanks to @GGGO) * zrtp: use long command 2016-07-22 Alfred E. Heggestad * Version 0.4.20 * GIT URL: https://github.com/alfredh/baresip.git * GIT tag: v0.4.20 * NOTE: Requires libre v0.4.17 or later Requires librem v0.4.7 or later * new modules: - pulse Pulseaudio driver - vp9 VP9 video codec * config: - audio_path Path to audio files - call_local_timeout Timeout for incoming calls - redial_attempts Number of redial attempts - redial_delay Redial delay in seconds * baresip-core: - baresip: added a global baresip instance (WIP) - call: add RTP timeout (thanks to Sveriges Radio) - config: added call_local_timeout for incoming call timeout - config: added compile-time configureable CONFIG_PATH - config: added 'audio_path' config variable (thanks Juha Heinanen) - net: made it re-entrant with struct network - ua: added uag_set_exit_handler - ua: fix bug with reg_uri limited to 64-chars - video: vidfilters should not modify decoded image * selftest: - add test for network - add test for sending SIP OPTIONS - add test for RTP timeout * Modules: * avcodec: fix usage of deprecated API * avformat: remove support for scaling fix usage of deprecated API * cons: relay log-messages to active UDP/TCP connections https://github.com/alfredh/baresip/issues/144 * h265: fix usage of deprecated API * menu: added support for re-dial on failure (thanks to Sveriges Radio) * mpa: Bug with reinit of codec structs (thanks Christian Hoene) * natpmp: added support for RTCP * presence: use correct struct in deref handler * pulse: new module for Pulseaudio driver (thanks to Matthias Apitz for testing) * vidloop: vidfilters should not modify decoded image * vp8: module renamed from vpx.so to vp8.so * vp9: new module implementing VP9 video codec * wincons: use ReadConsoleInput, thanks to GGGO (fixes #139) https://github.com/alfredh/baresip/issues/139 2016-05-20 Alfred E. Heggestad * Version 0.4.19 * GIT URL: https://github.com/alfredh/baresip.git * GIT tag: v0.4.19 * NOTE: Requires libre v0.4.14 or later Requires librem v0.4.7 or later * new modules: - mpa MPA Speech and Audio Codec (thanks Christian Hoene) * baresip-core: - audio: remove is_g722 exception use aucodec's rtp clockrate for calculating RTP timestamp plc: make sure sampc is exactly one ptime frame - aucodec: split srate into DSP srate and RTP clockrate (these are different for e.g. G.722 and MDA) - mos: add mos_calculate() (thanks Lorenzo Mangani) - net: use configured dns servers only, if specified - ua: fix potential NULL-pointer crash for uag.cfg * selftest: - add test for SIP registration with DNS - add test for SIP registration with authentication - add test for MOS calculations - added a mock DNS Server - added a mock SIP Server * Modules: * aucodec: add support for NV12 and YUVJ420P pixel formats * daala: update to libdaala version 0.0-1564-g79787c7 * gtk: fix autodetection of libgtk+ 2.0 (thanks Charles Lehner) * h265: remove call to x265_cleanup, caused crash on OpenBSD * mpa: new module that implements MPA Speech and Audio Codec (this module was contributed by Christian Hoene) * opus: added new configuration parameters: opus_cbr {yes,no} # Constant Bitrate (inverse of VBR) opus_inbandfec {yes,no} # Enable inband FEC opus_dtx {yes,no} # Enable DTX * presence: improved interoperability, allow white space before xml element closing tags (thanks Juha Heinanen) * x11: added borderless window (thanks Doug Blewett) 2016-03-12 Alfred E. Heggestad * Version 0.4.18 * GIT URL: https://github.com/alfredh/baresip.git * GIT tag: v0.4.18 * NOTE: Requires libre v0.4.14 or later Requires librem v0.4.7 or later * baresip-core: - call: fix SIP INFO with dtmf-relay (thanks Gary Metalle) - ua: add event UA_EVENT_CALL_CLOSED for ua_hangup() * selftest: - add tests for answer a call and hangup * Modules: * alsa: fix potential crash (thanks Gary Metalle) * audiounit: fix compilation for iOS (issue #91) * avcodec: fix compilation for FFmpeg 3.0 * avformat: fix compilation for FFmpeg 3.0 * gtk: always handle incoming calls (thanks Charles Lehner) * h265: fix compilation for FFmpeg 3.0 * menu: add config 'menu_bell off/on' to enable Bell alert add command 'A' for switch audio device (thanks AlexMarlo) * v4l2_codec: add list of encoders (fixes #99) 2016-01-17 Alfred E. Heggestad * Version 0.4.17 * GIT URL: https://github.com/alfredh/baresip.git * GIT tag: v0.4.17 * NOTE: Requires libre v0.4.14 or later Requires librem v0.4.7 or later * new modules: - echo Echo server module - jack JACK Audio Connection Kit audio-driver * baresip-core: - config: keep config object in memory - ua: moved playing of ringtones out of core, to "menu" module (let's keep the core nice and slim..) - ui: added ui_password_prompt() * selftest: - silence debug/info log by default, only print warnings (use -v to see verbose logging) * Modules: * alsa: added config option to specify the sample format "alsa_sample_format {s16,float,s24_3le}" thanks to Ola Palm for valuable feedback * audiounit: fix recording on OSX (thanks Sebastian Reimers) print hardware samplerate in debug mode * auloop: add support for 44100 Hz samplerate * daala: update to latest libdaala API (thanks Dmitrij D. Czarkoff) * echo: new module which implements a simple Echo-server, to be used in combination with the aubridge.so module. contributed by Sebastian Reimers * gtk: fixes to support C89 compiler (thanks Dmitrij D. Czarkoff) * jack: new module which implements audio-driver for JACK * menu: playing of ringtones moved here, from ua.c * sndio: fix crash when device open fails (thanks Dmitrij D. Czarkoff) 2015-12-01 Alfred E. Heggestad * Version 0.4.16 * GIT URL: https://github.com/alfredh/baresip.git * GIT commit bed2241da3261e472f09b21958f0cc1324a94f27 * GIT tag: v0.4.16 * NOTE: Requires libre v0.4.14 or later * new modules: - v4l2_codec Video4Linux2 video codec (H264 hardware encoding) - vidinfo Video info overlay module * baresip-core: - audio: add audio_set_source() and audio_set_player() - audio: flush tx-buffer for all modes (thanks Thibault Gueslin) - call: add call_is_outgoing() - call: check address-family of incoming SDP offer (thanks Olle) - h264: move H.264 packetization code to core - main: add -u option to append extra global UA parameters - main: pre-load modules after all arguments are parsed - ua: add events UA_EVENT_SHUTDOWN,UA_EXIT - ua: add ua_hold_answer() - ua: add ua_set_media_af() - ua: delay mod-unloading if mods has a ref to struct ua * build: - add verbose build with V=1 (thanks Dmitrij D. Czarkoff) - add pkg-config file (thanks William King) - add travis.yml file for Github build-system * Modules: * alsa: fix memory leaks * avcodec: move common H.264 packetization code to core * cairo: use pkg-config in makefile * daala: update to latest libdaala (thanks Dmitrij D. Czarkoff) * gst_video: use H.264 packetization API from core * gst_video1: use H.264 packetization API from core * gtk: fix segmentation fault on window close * mwi: add 500ms delay after closing subscription * oss: use pthread for ausrc instead of fd_listen (fixes FreeBSD) * presence: use sipevent_sock instance from UA core add 500ms delay after closing subscription * v4l2_codec: new module * vidinfo: new module * zrtp: fix ZRTP over TURN by moving helper to layer 10 fix ZID verification (thanks Ingo Feinerer) 2015-09-26 Alfred E. Heggestad * Version 0.4.15 * GIT URL: https://github.com/alfredh/baresip.git * GIT commit 86262a6fc17e19e2be82eb8a2a05ec0f884d3d38 * GIT tag: v0.4.15 * NOTE: Requires libre v0.4.13 or later * added selftest binary * baresip-core: - audio: fix televent when pt != 101 (reported by AndyJRobinson) - magic: use __func__ for C99 or later - sip: make sip_req_send() public - ua: add UA_EVENT_CALL_DTMF_START/END, thanks Gary Metalle * Modules: * alsa: added extra logging * gtk: add support for libnotify (thanks Charles Lehner) * video: fix potential null deref (thanks Tomasz Ostrowski) * zrtp: added 36-bytes preamble for TURN-header 2015-08-08 Alfred E. Heggestad * Version 0.4.14 * GIT URL: https://github.com/alfredh/baresip.git * GIT commit ebac23b0692de71ee4c3a436f0372013150c937f * GIT tag: v0.4.14 * NOTE: Requires libre v0.4.13 or later * new modules: - gtk GTK+ 2.0 UI (thanks Charles E. Lehner) - gst1 Gstreamer 1.0 audio module - gst_video1 Gstreamer 1.0 video module (thanks Thomas Strobel) - daala Experimental video-codec using Daala * baresip-core: - baresip: added -m argument to pre-load modules - config: add kqueue to sample config (thanks Dmitrij D. Czarkoff) - log: make code C89 compliant (thanks Victor Sergienko) - module: added module_preload() - ua: add CALL_EVENT_TRANSFER_FAILED - ua: skip initial white space from uri (thanks Juha Heinanen) - ua: ua_prev_call() - videnc: move videnc_packet_h to update-handler * build: - added optional $(MOD)_CFLAGS for local module CFLAGS - added project file for Visual C++ Express 2010 - freebsd: add include path to $(SYSROOT)/local/include (thanks Hellmuth Michaelis) * Modules: * avcodec: make code C89 compliant (thanks Victor Sergienko) * cons: make code C89 compliant (thanks Victor Sergienko) * daala: new module * dshow: updates for VC2010 (thanks Victor Sergienko) * gst1: new module * gst_video1: new module * gtk: new module * menu: fix crash when 0 UAs (thanks Hans Petter Selasky) added command 'H' to hold previous call (thanks xanm) * wincons: make code C89 compliant (thanks ggcoding) 2015-06-20 Alfred E. Heggestad * Version 0.4.13 * GIT commit 2e3e825ef5532dfde5a8b52de9ebaac51aa20a9c * NOTE: Requires libre v0.4.12 or later * new modules: - aufile Audio module for using a WAV-file as audio input - b2bua Back-to-Back User-Agent (B2BUA) module - codec2 CODEC2 audio codec - gst_video Gstreamer video codec - h265 H.265 (HEVC) video codec * baresip-core: - contact: add support for access-control (thanks Doug Blewett) - ausrc: change base-class to a const pointer - auplay: change base-class to a const pointer - vidsrc: change base-class to a const pointer - vidisp: change base-class to a const pointer - video: smooth sending of video packets * Modules: * amr: added support for octet-align mode (thanks to Stefan Sayer) * aubridge: copy audio-samples if resampler not needed * aufile: new module for using a WAV-file as audio source * avcapture: only register 1 video source * avformat: fix segfault on recent versions of libav * b2bua: new experimental module * codec2: new module for CODEC2 audio codec * dtls_srtp: uppercase fingerprint, interop (thanks Juha Heinanen) alternative SDP protocols for interop * dtmfio: unregister event handler on close (thanks Hellmuth Michaelis) * gst_video: new module using Gstreamer as a video codec (Thanks to Victor Sergienko and Fadeev Alexander) * h265: new module for H.265 video codec * httpd: added raw mode (thanks Lorenzo Mangani) * menu: create user-agent with a command 'R' (thanks Lorenzo Mangani) * opus: add configuration of "opus_bitrate" (thanks to Juha Heinanen) * speex: add configuration of "speex_mode_nb" and "speex_mode_wb" (thanks to Dmitrij D. Czarkoff and Juha Heinanen) * vidloop: add VIDLOOP_INTERNAL_FMT and split encoder/decoder * x11: catch Window delete (thanks to Doug Blewett) * zrtp: initialize remote_zid (thanks to Ingo Feinerer) 2014-12-24 Alfred E. Heggestad * Version 0.4.12 * GIT commit 67993e35d980375458348b264c4a35a944bb5180 * NOTE: Requires libre v0.4.11 or later * baresip: - account: add regint and pubint - audio: fix checking of sample-rate range - config: remove the "input" block - config: added support for quoted device parameters - config: fix conversion of bandwidth to kbit/s - config: generate more relevant config for FreeBSD and OpenBSD (thanks Dmitrij D. Czarkoff) - reg: add support for extracting GRUU parameter - main: add -p option to set path to audio files - sipreq: make response-handler optional - ua: add support for GRUU (RFC 5627) (many thanks to Juha Heinanen for starting this work and helping out with the testing) - ua: moved presence-status to each struct ua instance - ua: add presence status to each User-Agent instance - ua: use public-GRUU if set, otherwise local cuser - ui: make UI single instance - video: add VIDENC_INTERNAL_FMT (suggested by Victor Sergienko) * docs: added sample configuration files * account: added pubint for Publishing Interval * avcodec: upgrade to recent ffmpeg/libav APIs either FFmpeg or libav can be used * celt: deleted module (replaced by opus) * cons: update usage of struct ui, added output handler added config: cons_listen 0.0.0.0:5555 * evdev: update usage of struct ui, added output handler added config: evdev_device /dev/input/event0 * httpd: added ui output handler * menu: added command 'o' for sending OPTION request (thanks to Juha Heinanen) added command 'D' for accepting incoming calls * mwi: subscribe to MWI after Registration succeeded (thanks to Juha Heinanen) * opensles: add double-buffering and some tuning (thanks to Francesco Bradascio) * opus: added config "opus_bitrate" (thanks to Sebastian Reimers) * presence: added support for PUBLISH (thanks to Juha Heinanen) interop fixes and tuning * stdio: update usage of struct ui, added output handler * uuid: use internal version of generating UUID * v4l2: use memory mapped mode only * vumeter: dont call tmr_start from non-RE thread * wincons: update usage of struct ui, added output handler * winwave: fix bug when closing player device (thanks to Tomasz Ostrowski) add support for mapping device name to index * zrtp: add support for verify SAS (thanks to Ingo Feinerer) 2014-06-21 Alfred E. Heggestad * Version 0.4.11 * GIT commit 7a465f2eb92f4e32740093e5ad4970d528908c51 * baresip: - audio: added audio_ismuted() to get audio mute status - audio: fix timestamp generation for stereo-streams - audio: send outgoing audio-packets as soon as possible - audio: upgrade to sample-based ausrc/auplay API - auplay: change API to use samples instead of 8-bit buffer - auplay: remove option to specify sample format (always S16LE) - ausrc: change API to use samples instead of 8-bit buffer - ausrc: remove option to specify sample format (always S16LE) - call: added support for X-RTP-Stat header (thanks Lorenzo Mangani) - call: check for common audio-codecs (thanks Juha Heinanen) - logging: use info() instead of DEBUG_INFO(); - logging: use warning() instead of DEBUG_WARNING() - play: convert WAV-file from little-endian to native-endian - removed support for Symbian OS * debian: upgrade debian files * avcapture: also build for MacOSX * alsa: fix sample-endianess with SND_PCM_FORMAT_S16 upgrade to sample-based ausrc/auplay API * audiounit: upgrade to sample-based ausrc/auplay API * auloop: upgrade to sample-based ausrc/auplay API * coreaudio: upgrade to sample-based ausrc/auplay API * dtls_srtp: use DTLS code from libre (needs libre v0.4.9 or later) use SRTP code from libre (needs libre v0.4.9 or later) * dtmfio: new module to send DTMF-events via FIFO file (contributed by Aaron Herting) * fakevideo: new module for fake video input/output driver * gst: upgrade to sample-based ausrc/auplay API * ice: set default candidates for ICE-lite * libsrtp: module 'srtp.so' renamed to 'libsrtp.so' * mda: Symbian MDA audio driver was deleted * menu: fix issue with audio-mute on multiple calls * opensles: upgrade to sample-based ausrc/auplay API * oss: upgrade to sample-based ausrc/auplay API * portaudio: upgrade to sample-based ausrc/auplay API * rst: upgrade to sample-based ausrc/auplay API * selftest: new module for testing the baresip core api * sndio: new module for OpenBSD audio driver (It was contributed by Dmitrij D. Czarkoff, thank you!) * srtp: module is now using SRTP-stack from libre (v0.4.9 or later) * syslog: use logging framework to get messages * v4l2: add format negotiation and OpenBSD support (contributed by Dmitrij D. Czarkoff) * winwave: upgrade to sample-based ausrc/auplay API 2014-01-23 Alfred E. Heggestad * Version 0.4.10 * baresip: - account: add account_set_display_name() -- thanks Dimitris - audio: use both srate/channels to check if resampler is needed - aufilt: change from frame_size to ptime - auplay: change from frame_size to ptime - ausrc: change from frame_size to ptime - config: add optional ausrc_channels and auplay_channels - config: create config dir with mode 0700 (suggested by Jann Horn) - play: update auplay usage with ptime * alsa: update to new ausrc/auplay API with ptime fix bug when snd_pcm_readi() returns -EPIPE (thanks Remik) open device from main thread instead of alsa-thread (thanks EL) (caused problems with Sennheiser Century SC 660 + USB adapter) * auloop: minor cleanups and improvements * coreaudio: update to new ausrc/auplay API with ptime * gst: update to new ausrc/auplay API with ptime * l16: fix a bug with sample count * opus: fix a memory corruption error in opus_decode_pkloss() * oss: update to new ausrc/auplay API with ptime * plc: update to new aufilt API with ptime * portaudio: update to new ausrc/auplay API with ptime fix bugs when using channels=2 (stereo) configure device index using "device" parameter * rst: update to new ausrc/auplay API with ptime * speex_aec: update to new aufilt API with ptime * speex_pp: update to new aufilt API with ptime * winwave: update to new ausrc/auplay API with ptime * zrtp: update to use libzrtp from Travis Cross' github use config dir to store ZRTP cache-file (thanks Juha Heinanen) 2014-01-06 Alfred E. Heggestad * Version 0.4.9 * new modules: - zrtp Media Path Key Agreement for Unicast Secure RTP * build: - added support for LLVM clang compiler * baresip: - account: add account_laddr() - audio: upgrade to new librem auresamp API - config: use oss,/dev/dsp as default device for FreeBSD - log: added new logging framework - main: added new verbose debug argument (-v) - net: added sanity check for HAVE_INET6 build flag - play: added play_set_path() -- thanks to Dimitris P. - ua: added uag_find_param() - ua: fix param-bug in ua_connect() -- thanks to Juha Heinanen * aubridge: upgrade to new librem auresamp API * avcodec: use new av_frame_alloc() api * celt: deprecate CELT-module, use OPUS instead * opengles: fix warnings (thanks to Dimitris P.) * opensles: fix bugs in player and recorder * opus: encode/decode sdp parameters as of I-D * speex_resamp: module removed, replaced by librem's resampler * zrtp: new module for ZRTP media encryption (use ;mediaenc=zrtp) 2013-12-06 Alfred E. Heggestad * Version 0.4.8 * new modules: - dtls_srtp DTLS-SRTP media encryption module (RFC 5763,5764) - aubridge Audio Bridge to connect auplay->ausrc - vidbridge Video Bridge module to connect vidisp->vidsrc * baresip: - added RFC 5576 Source-Specific Media Attributes in SDP - audio: set SDP bandwidth only if "rtp_bandwidth" config set - play: do not store a copy of global config - stream: save RTCP statistics from Sender-reports - stream: add SDP ssrc attribute - stream: added metrics for packets/bytes transmit/receive - ua: added uag_current()/_set() to get/set current User-Agent - video: set maximum RTP packet-size to 1024 bytes * config: - added "video_display module,device" for Video Display - added "rtp_stats {off,on}" for RTP Statistics after Call - default RTP bandwidth is now 0-0 * contact: dynamic command description for "Message" handling dial from current UA (thanks to Simon Liebold) * isac: upgrade to draft-ietf-avt-rtp-isac-04 * srtp: added auto-negotiation of RTP-profile for incoming calls (RTP/AVP, RTP/AVPF, RTP/SAVP, RTP/SAVPF) * vidloop: fix memory leak 2013-11-12 Alfred E. Heggestad * Version 0.4.7 * new modules: - httpd HTTP webserver UI module * baresip: - added RFC 5506 Support for Reduced-Size RTCP - audio: minor cleanups - cmd: ignore RELEASE key in editor mode - conf: add conf_get_sa() - mnat: add address family (af) to session handler - realtime: fixes for iOS (thanks Dimitris) - ua: make ua_register() public - ua: add ua_calls() to get list of calls - ua: only create register client if regint > 0 * debian: update dependencies (thanks Juha Heinanen) * rpm: added RPM package spec file * alsa: open device from thread to avoid blocking re-main loop * avcodec: build fixes for Debian Testing * avformat: use sys_msleep() * contact: improve matching logic (thanks EJC Lindner) * dshow: initialize variables (found with cppcheck) * evdev: fix formatted printing (found with cppcheck) * ice: use address family (AF) from call * ilbc: update to separate encoder/decoder states (thanks Dimitris) * snapshot: initialize variables (found with cppcheck) * stun: use address family (AF) from call * turn: use address family (AF) from call * uuid: fix usage of strncat() 2013-10-11 Alfred E. Heggestad * Version 0.4.6 * new modules: - directfb DirectFB video display module (thanks Andreas Shimokawa) - dshow Windows DirectShow vidsrc (thanks Dusan Stevanovic) - wincons Console input driver for Windows * baresip: - audio: print audio-pipelines in console/debug - aufilt: split into separate encoder+decoder states - call: add local uri/name, dtmf-handler - call: fix decoding of DTMF/SIP-INFO for '*' and '#' - export CALL_EVENT_* in public API - fix various clang warnings - sipreq: use outbound proxy if specified (thanks EJC Lindner) - ua: add possibility to specify 'struct call' for hangup/answer - ua: move SIP extensions into a dynamic vector container - ua: move playing of tones from call.c to ua.c - vidfilt: split into separate encoder+decoder states - vidisp: remove input handler * menu: improve call-transfer handling * plc: update to separate encoder/decoder states * selfview: update to separate encoder/decoder states * snapshot: remove state which was not needed * sndfile: update to separate encoder/decoder states print unique timestamp to saved files * speex_aec: update to separate encoder/decoder states * speex_pp: update to separate encoder/decoder states * vidloop: update to separate encoder/decoder vidfilt states * vumeter: update to separate encoder/decoder states * wincons: new module for Console input on Win32 2013-08-31 Alfred E. Heggestad * Version 0.4.5 * new modules: - account Account loader module - natpmp NAT-PMP client (RFC 6886) - sdl2 Video display using libSDL2 * baresip: - account: added SIP account parser and container - config: split conf.c into conf.c and config.c - config: move enum audio_mode to struct config - config: move uuid to struct config - more usage of the #ifdef USE_VIDEO macro - message: add handling of SIP MESSAGE send/recv - mediaenc: added rtp_sock parameter to media-handler - ua: cleanup public struct ua API - vidisp api: remove unused 'parent' parameter - call: handle incoming DTMF in SIP INFO (application/dtmf-relay) - sdp: added sdp_decode_multipart() - net: fix bug on IP-refresh when 'net_interface' is used - video: minor cleanups handle incoming RTCP_RTPFB_GNACK * isac: fix encode_update() signature * menu: move dialbuffer here from ua.c added command 'g' to print current config * mwi: multiple MWIs for multiple UAs * presence: include supported methods in SIP messages * srtp: improved interop and debugging handle incoming RTP/RTCP-demultiplexing * uuid: write loaded UUID directly to struct config * vidloop: added video-filters 2013-05-18 Alfred E. Heggestad * Version 0.4.4 * new modules: - g726 G.726 audio codec - mwi Message Waiting Indication - snapshot Save video-stream as PNG images * config: - added 'sip_certificate' to use a Certificate for SIP/TLS - added 'ausrc_srate' and 'auplay_srate' to force DSP samplerate * baresip: - added a simple BFCP client - aufilt: improved API - mediaenc: improved API with session state - ua: added event handler framework - aucodec: improved API with separate encode/decode state - vidcodec: improved API with separate encode/decode state - sdp.c: added SDP helper functions - ua: move registration client to reg.c - audio: added internal resampler * auloop: added config option 'auloop_codec' for setting codec * ice: remove old 'ice_interface' config option * menu: move handling of status-mode here * selfview: added config option 'selfview_size' * vp8: upgrade to draft-ietf-payload-vp8-08 * winwave: cleanup and minor fixes 2013-01-01 Alfred E. Heggestad * Version 0.4.3 * new modules: - selfview Video selfview as video-filter module - vumeter Audio-filter module to display recording/playback level * config: - added 'net_interface" to bind to a specific network interface - added accounts 'regq' parameter for SIP Register client * baresip: - added video-filter plugin API (vidfilt) - audio.c: cleanups, split into transmit/receive part - ua: added SIP Allow-header (thanks Juha Heinanen) - ua: added Register q-value (thanks Juha Heinanen) - ua: fix DTMF end event bug * avcodec: fix x264 fps bug (thanks Trevor Jim) * ice: only include ufrag/pwd in session SDP (thanks Juha Heinanen) 2012-09-09 Alfred E. Heggestad * Version 0.4.2 * new modules: - auloop Audio-loop test module - contact Contacts module - isac iSAC audio codec - menu Interactive menu - opengles OpenGLES video output - presence Presence module - syslog Syslog module - vidloop Video-loop test module * baresip: - added support for call transfer - added support for call waiting - added multiple calls per user-agent - added multiple registrations per user-agent - cmd: added new command interface - ua: handle SIP Require header for incoming calls - ui: cleanup, use dynamic interactive menu * config: - added 'audio_alert' for ringtones etc. - added 'outboundX=proxy' for multiple outbound proxies - added 'module_tmp' for temporary module loading - added 'module_app' for application modules * avcodec: upgrade to latest FFmpeg and fix pts bug * natbd: register command 'z' for status * srtp: fix memleak on close * uuid: added UUID loader 2012-04-21 Alfred E. Heggestad * Version 0.4.1 * baresip: do not include rem.h from baresip.h rename struct conf to struct config vidsrc API: move size to alloc handler aucodec API: change fmtp type to 'const char *' add SDP fmtp compare handler vidcodec API: added enqueue and packetizer handlers remove size from vidcodec_prm remove decoder parameters from alloc change fmtp type to 'const char *' add SDP fmtp compare handler remove aufile.c, use librem instead audio: fix Telev timestamp (thanks Paulo Vicentini) configurable order of playback/source start ua_find: match AOR for interop (thanks Tomasz Ostrowski) ua: more robust parsing for incoming MESSAGE ua: password prompt (thanks to Juha Heinanen) * build: detect amr, cairo, rst, silk modules * config: split 'audio_dev' parameter into 'audio_player/audio_source' order of audio_player/audio_source decide opening order rename 'video_dev' parameter to 'video_source' added optional 'auth_user=NAME' account parameter (idea was suggested by Juha Heinanen) * alsa: play: no need to call snd_pcm_start(), explictly started when writing data to the device. (thanks to Christof Meerwald) * amr: more portable AMR codec * avcodec: automatic size from encoded frames detect packetization-mode from SDP format use enqueue handler * avformat: update to latest versions of ffmpeg * cairo: new experimental video source module * cons: added support for TCP * evdev: added KEY_KPx (thanks to ccwufu on OpenWRT forum) * g7221: use bitrate from decoded SDP format added optional G722_PCM_SHIFT for 14-bit compat * rst: thread-based video source * silk: fix crash, init encoder, bitrate=64000 and complexity=2 (reported by Juha Heinanen) * srtp: decode SDES lifetime and MKI * v4l, v4l2: better module detection for FreeBSD 9 do not include malloc.h (thanks to Matthias Apitz) * vpx: auto init of encoder * winwave: fix memory leak (thanks to Tomasz Ostrowski) * x11: add support for 16-bit graphics 2011-12-25 Alfred E. Heggestad * Version 0.4.0 * updated doxygen comments (thanks to Olle E. Johansson) * docs: added modules description * baresip: add ua_set_aumode(), configurable audio-tx mode vidsrc API: added media_ctx shared with ausrc ausrc API: add media_ctx shared with vidsrc audio_encoder_set() - stop audio source first audio_decoder_set() - include SDP format parameters aufile: add PREFIX to share path (thanks to Juha Heinanen) natbd.c: move code to a new module 'natbd' get_login_name: check both LOGNAME and USER ua.c: unique contact-user with address of struct ua ua.c: find correct UA for incoming SIP Requests ua_connect: param is optional (thanks to Juha Heinanen) video: add video_set_source() * amr: minor improvements * audiounit: new module for MacOSX/iOS audio driver * avcapture: new module for iOS video source * avcodec: fixes for newer versions of libavcodec * gsm: handle packet-loss * natbd: move to separate module from core * opengl: fix building on MacOSX 10.7 (thanks to David Jedda and Atle Samuelsen) * opus: upgrade to opus v0.9.8 * rst: use media_ctx for shared audio/video stream * sndfile: fix stereo mode 2011-09-07 Alfred E. Heggestad * Version 0.3.0 * baresip: use librem for media processing added support for video selfview aubuf, autone, vutil: moved to librem ua: improved API conf: use internal parser instead of fscanf() vidloop: cleanup, use librem for processing * config: add video_selfview={pip,window} parameter * amr: new module for AMR and AMR-WB audio codecs (RFC 4867) * avcodec, avformat: update to latest version of FFmpeg * coreaudio: fix building on MacOSX 10.5 (thanks David Jedda) * ice: fix building on MacOSX 10.5 (thanks David Jedda) * opengl: remove deps to libswscale * opensles: new module OpenSLES audio driver * opus: new module for OPUS audio codec * qtcapture: remove deps to libswscale * rst: new module for mp3 audio streaming * silk: new module for SILK audio codec * v4l, v4l2: remove deps to libswscale * x11: remove deps to libswscale, use librem vidconv instead * x11grab: remove deps to libswscale 2011-05-20 Alfred E. Heggestad * Version 0.2.0 * baresip: Added support for SIP Outbound (RFC 5626) The SDP Content Attribute (RFC 4796) RTP/RTCP Multiplexing (RFC 5761) RTP Keepalive (draft-ietf-avt-app-rtp-keepalive-09) * config: add 'outbound' to sipnat parameter (remove stun, turn) add rtpkeep={zero,stun,dyna,rtcp} parameter audio_codecs parameter can now specify samplerate add rtcp_mux for RTP/RTCP multiplexing on/off * alsa: set buffersize and fix samplesize (thanks to Luigi Rizzo) * avcodec: added support for MPEG4 video codec (RFC 3016) wait for keyframe before decoding * celt: upgrade libcelt version and cleanups * coreaudio: fix buffering in recorder * ice: several improvements and fixes added new config options * ilbc: handle asymmetric modes * opengl: enable vertical sync * sdl: upgrade to latest version of libSDL from mercurial * vpx: added support for draft-westin-payload-vp8-02 * x11: handle remote display with optional shared memory * x11grab: new video-source module (thanks to Luigi Rizzo) * docs: updated doxygen comments