The goals and achievements for the PTLib/OPAL releases.
Cygni (current development)
- See To Do list for things that may yet get into this release.
Procyon (current stable)
- WebRTC compatibility
- Improved ICE (still lite)
- BUNDLE (all audio/video sessions over same UDP port)
- SIP over HTTP/WebSocket
- Multiple streams (via SSRC) in RTP/SDP sessions.
- Much improved debug support for multi-threading and deadlock detection.
Note: "Ross" was skipped again in the sequence for the previously articulated reason. The next, "WISE 1506+7027" is equally uninspiring and "EZ Aquarii" only missed out because the next in sequence is much cooler!
- WebRTC and SIP over WebSocket.
- Cisco Skinny protocol.
- GStreamer support.
- H.235.6 and H.235.8 media encryption for H.323.
- H.281/H.224 Far End Camera Control.
- H.225.0 symmetric password authentication to H.323 gatekeeper.
- ICE-Lite. No, not full ICE yet. This is for the public IP server side only.
- Single port and disjoint port RTP/RTCP sessions.
- SDP imageattr (RFC6236) to control video size.
- Fixed many issues with RTCP feedback (FIR, PLI, TMMBR etc)
- H.460.18/H.460.19, NAT traversal for H.323 mark 1.
- H.460.23/H.460.24, NAT traversal for H.323 mark 2, not including annexes.
- Java and C# interface.
- Audio/Video selection when on hold and on ringing.
- Windows QoS (qWAVE) support.
- Much improved portability. Now fully supports:
- OS-X (audio/video),
- iOS & Android (audio only),
- various embedded systems (audio/video native or via GStreamer),
- out of tree cross compiles.
- Improved "user media" handling.
- Much improved gateway (SIP/H.323/Skinny) handling.
- Much improved Command Line Interpreter, including "curses" support.
- Major rewrite of timers to handle heavy load.
- SRTP (RFC 3711 via libsrtp) and SDES (RFC 4568) for secure media.
- Fully working TLS support, including RFC 5922 checking of domain in certificates.
- RFC 5626 (NAT traversal) support. This makes sure all communications between a client and proxy/registrar happen over the same, single, transport link, be it a UDP (defined as a specific port), TCP, or TLS.
- VP8 video codec.
- Various H.264 enhancements.
- Partial conferencing management support (RFC 4575) for both client and server.
- Gateway support, can now have direct H.323 to SIP calls.
- External RTP support. Can now easily redirect RTP to/from other hosts.
- RTCP feedback (RFC 4585 & RFC 5104) support.
- Ability to select the method in which video update requests are made, like user input has been able to do.
- Fully working IPv6 support.
- Major upgrade of the instant messaging API.
- 64 bit support for Windows.
- A lot of heavy load stabilisation.
- Enhanced logging to aid in debugging server systems. A "context ID" for objects is introduced which allows all logging associated with a particular context, e.g. an OPAL call, to be logged so it makes it easier, or possible, to work out what call a particular log line is associated with. When you have 1,000 calls going, this becomes important.
- Enhanced "validated" PNotifiers and new "asynchronous" PNotifiers. The former uses internal identifiers to make sure the target still exists before the notifier is called. The latter allows certain classes of notifiers to be called (with some glue) across thread boundaries. Very handy for avoiding deadlocks.
- New "thread pooled" timers. When a timer fires instead of handling in the housekeeper thread, the call back is executed in a thread pool, avoiding many deadlocks.
- Enhanced PArgList command line argument parsing, with built in help (usage) function.
- New OPAL application base class for common code on any CLI based application. Used by fax, MCU and IVR sample programs.
- Major enhancement to C++ API for plug ins. Makes it much easier to build a plug in.
- Enhanced support for scripting languages such Lua and Java.
- Major upgrade of NAT traversal classes: updated STUN protocol and low level TURN support.
- A new "bitwise enum" classes/macros. To make it easier and type safe to do bit sets. Also macros for creating normal enumerations but with ++/-- operators and optional <</>> operators for automatically creating strings for the enum values. The sort of thing you would expect the compiler to do.
- New enumerators for container classes (PDictionary etc.) which are an order of magnitude faster than using the PINDEX method.
- New thread pooling template class for handling "work" items based on a PSafePtr.
- Added ability for a PFactory to have constructor arguments on factory instance creation.
- Support for media formats without having plug ins. Handy for gateway applications.
- PCAP support.
- Many internal architecture changes around "media session" management and "transport" handling needed to support major features.
- Some shuffling of files to new locations, e.g. various endpoints are no in include/ep directory. This might cause compile errors if you are including them directly.
Note: "Ross" was skipped in the sequence because, frankly, the name is boring.
- Lua integration so can get scripting at critical points in the call sequence.
- Added CAPI based ISDN support.
- SIP reliable response (PRACK) support.
- Support Cisco "Remote-Party-ID" SIP header for tracking transfers.
- Added call back functions for tracking transfers.
- Added SILK audio codec plug in.
- Fixed Windows compilation of H.264 and MPEG video codec plug ins. Uses pre-compiled FFMPEG/x264 libraries.
- Added support for stereo audio.
- Visual Studio 2010 Express Edition support.
- Improved Mac OS X (XCode) support.
- Improvements and better interoperability of the H.239 support.
- Fixed (again) many fax interoperability issues.
- Scalability changes, aim is to have 1000 simultaneous SIP calls, with media.
- Complete support for multiple media streams of same "type".
- Support for SIMPLE and OMA variants for presence.
- MSRP instant messaging fully implemented.
- OPAL based “mixer” class for audio and video with sample MCU.
- T.38 and G.711 fax support using SpanDSP as a DLL/Plug in. Fixed numerous compatibility issues from Lalande, which was pretty broken.
- H.239 client side support.
- Call recording can now include video to AVI file (Windows only at present)
- G.722.1 (aka Siren 7) codec plug in.
- G.722.2 (aka GSM-AMR wide band) codec plug in.
- Can now handle large numbers of SIP registrations or subscriptions.
- “Internal transfer” feature for switching a network connection (e.g. SIP) between subsystems, e.g. call starts in on an IVR and then moves to the MCU or the CP sound system.
- New simplified C++ API based on the “C” API.
- Ruby interface classes.
- Instant Messaging. Using several different “standards”: RFC4975, MSRP, T.140, SIP-IM etc etc.
- Much improved support for SIP event handling (SUBSCRIBE/NOTIFY/PUBLISH) using factories so more event packages can be added easily.
- Support for SIP “dialog” event package.
- Support for Shared Line Appearance (aka Multiple Line Appearance, Bridged Line Appearance or Busy Lamp Field)
- Significant improvements in IPv6 support (thanks Yuri Kiryanov!)
- Major enhancements to the video rate controller.
- Removal of the old H.263 ffmpeg plug in and enhancement of the H.263-1998 plug it to take its place.
- H.224 support (H.323 only).
- SBC audio codec plug in.
- G.722 audio codec plug in.
- CELT audio codec plug in.
- SWIG support for use in other languages, Java first.
- Much improved multi-platform sample GUI client, OpenPhone. Now standard test environment replacing simpleOPAL.
- "C" API, plus use of swig to propagate this API to Java and others.
- Added support for hold & switch
- Added support for blind transfer
- Added support for consultation transfer using SIP REFER/Replaces mechanism.
- T.38 Fax support
- Initial support for multiple media streams of same "type", e.g. audio or video. Inspired by the work of Hannes Friederich.
- Improved video rate controller.
- G.711 Packet Loss Concealment.
- Added G.722.2 (aka GSM-AMR wideband) codec (via IPP Codecs project.
- Performance related changes allowing operation to over 400 simultaneous calls (depending on the host) and over 300,000 successive calls with no increase in memory footprint or resource usage.
- New capability negotiation algorithm. This is a major enhancement to address many dificult issues when negotiating codec capabilities, especially for video parameters.
- Increased ANSI compliance through use of "bool" type and support for for iterators on PTLib types sich as PArray and PList
- Support for Windows Mobile 5 and Windows Mobile 6 using DevStudio 2005. Demonstration application added.
- Support for transient network interfaces via "socket bundling"
- Multi-protocol support for pause/resume
- "C" based API for those who are frightend by C++.
- Partial support of secure H.323 and secure SIP.
- Fixed RFC 4175 implementation.
- Support for SIP over TCP and TCP/TLS.
- Verifed G.726 codecs.
- Verifed Speex wideband (see http://bugzilla.gnome.org/show_bug.cgi?id=491316)
- Full ChangeLogs are available for PTlib and Opal
- Switch to new repository and Source Forge project.
- Change to use built in bool type of C++ for better compile time error detection. The PBoolean type is used to represent bool for backward compatibility.
- Improved support for network interfaces appearing and disappearing, aka "socket bundling".
- Hundreds of relatively minor fixes, changes and enhancements.
- Improve detection of local Speex libraries so they are used instead of Opal-unique copy
- Allow remote SIP endpoints to select different payload codes for codecs
- Add ability to disable H.245 negotiation for a call
- Add ability to compile on MacOSX on Open Solaris
- Add SRV lookups for SIP
- Add image SDP type
- Port audio plugin manager from OpenH323
- Add support for video plugins
- Multiple changes to improve locking
- Add H.224/H.281 implementation
- Add H.460 support
- Add support for SIP Q.931 release code mapping as per RFC 3398
- Add support for multiple INVITEs
- Large updates to IAX code
- Make GSM codec adaptive to support MS-GSM format
- Add SRTP support
- Add support for SIP INFO
- Add SIP presence and RFC3856, RFC3903, RFC3863, RFC3265 support
- Add SIP T.38 support
- Add H.264 and H.263-1998 support