Version 16 (modified by ismangil, 13 years ago) (diff) |
---|
PJSIP Version 2.0 Release Notes
Table of Contents
This document explains in brief the new features, changes, and porting guide in/for PJSIP version 2.0. For a complete list see the following milestones:
New Features
Video
Video support is a new major feature. For this release it is available on Windows, Mac OS X, and Linux.
Assorted features:
- Supported video devices:
- renderer:
- Simple Direct Media Layer (SDL) (Windows, Mac OS X, Linux, etc.)
- DirectShow (Windows)
- capture:
- QuickTime (MacOS X)
- Video4Linux4 (Linux)
- DirectShow (Windows)
- Color bar (all platforms)
- renderer:
- Supported codecs:
- H.263-1998 (with ffmpeg)
- H.264 (with ffmpeg or libx264
- video device port to provide timing for video devices (analogous to sound device port)
- media format conversion framework (converter.h) supporting multiple backend APIs:
- ffmpeg's libswscale backend API implementation
- video codec framework (vid_codec.h) supporting multiple backend APIs:
- ffmpeg's libavcodec backend API implementation
- AVI file splitter/reader component (aviplayer.h)
On Demand Media Transport
Media transports are now created on demand. Rationale is given in #539. Media transport setting is now part of account setting (instead of global setting). Idle timer is used to keep media transports alive and close them after idling for some time. The idle period and number of transports that are allowed to be idling are settable.
For incoming calls, the "on_incoming_call()" callback is now called before media transport is created, to allow application to reject the call cheaply. The media transport will be created as soon as the callback returns, as long as the call is not disconnected. The media transport creation may take a while to complete (for example, waiting for candidates gathering for ICE media transports). If application sends 183/Progress or 200/OK to the call while the media transport creation is in progress, the response will be queued internally.
For outgoing calls, the INVITE request will be delayed until media transport is ready.
Third Party Media Support
Starting with PJSIP 2.0, support for integrating third party media stack into PJSUA-LIB was added. By following the steps outlined in Integrating Third Party Media Stack into PJSUA-LIB, application can use third party media stack to perform audio and video functionality while still making use of the full SIP, NAT, and security (including SRTP) features provided by PJSUA-LIB API.
Other Components
New components:
- Event framework
- pj_run_app()
New applications:
- sipecho: Loops back peer's media (audio and/or video), and supports call hold too. It also works as a simple registrar, if peer needs it.
- vidgui: Qt based video GUI sample, to illustrate integration of PJSIP video framework to GUI apps.
Changes
Major changes are listed below. There also various header file changes, especially in PJMEDIA.
PJSUA API (pjsua.h)
Design change:
- support for multiple medias. pjsua_call struct refactored.
Removed API:
- PJ_DECL(pjmedia_session*) pjsua_call_get_media_session(pjsua_call_id call_id);
- PJ_DECL(pjmedia_transport*) pjsua_call_get_media_transport(pjsua_call_id cid);
API change:
- "session" parameter in on_stream_created() and on_stream_destroyed() callbacks has been replaced by "stream"
Configure script
New options:
.. --disable-sdl Disable SDL (default: not disabled) --disable-ffmpeg Disable ffmpeg (default: not disabled) --disable-v4l2 Disable Video4Linux2 (default: not disabled) ..
General Data Structure
format
Huge changes..
Missing samples_per_frame
Use PJMEDIA_AFD_SAMPLES_PER_FRAME(afd)
Port info
Uses format now..
put_frame() callback of pjmedia_port
Removed const qualifier from the frame argument.
Sample warnings:
../src/pjmedia/bidirectional.c: In function ‘put_frame’: ../src/pjmedia/bidirectional.c:39: warning: passing argument 2 of ‘pjmedia_port_put_frame’ discards qualifiers from pointer target type ../include/pjmedia/port.h:334: note: expected ‘struct pjmedia_frame *’ but argument is of type ‘const struct pjmedia_frame *’ ../src/pjmedia/bidirectional.c:70: warning: assignment from incompatible pointer type
pjsua_call_info
Array of media info..
Misc
Visual Studio 6
Support for Visual Studio 6 has been removed.