Written by Robert Jongbloed
Tuesday, 27 November 2012 14:54
It has been a long time coming, but the semi-stable snapshot downloads of the Eridani release (PTLib v2.12.0 & OPAL v3.12.0) are now available.
- 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.
- H.460.18 and H.460.24 support (NAT traversal for H.323)
- 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.
- And, of course, the usual many, many small tweaks, code tidying and bug fixes etc.