It has been a very long time coming, but the next major release of
PTLib/OPAL is happening. The big ticket items are Security,
better NAT traversal and full H.323/SIP gateway. A
fuller, but probably still incomplete, list follows.
- SRTP (RFC 3711 via libsrtp) and SDES (RFC 4568) for secure
- 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
- 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
- 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
- PCAP support.
- Many internal architecture changes around "media session"
management and "transport" handling needed to support major
- 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.