- API designed and reviewed (pjsua.h)
- Implemented these APIs and added to pjsua sample application:
- video device enums API
- video capture preview API
- refactoring in PJSUA-LIB:
- video stuffs go to pjsua_vid.c
- call dump goes to pjsua_dump.c
We're still missing:
- video call API implementation
- media info and statistic API implementation
git-svn-id: https://svn.pjsip.org/repos/pjproject/branches/projects/2.0-dev@3609 74dad513-b988-da41-8d7b-12977e46ad98
- Fixed handling remote re-offer, where SDP media line may be added or removed.
- Fixed bug in receiving remote offer (initial or subsequent), media channel create sdp must consider acc->cfg.max_audio_cnt setting.
- Fixed bug media transport is not closed after call disconnected.
- Fixed assertion in lock_codec after receiving initial answer but no acceptable media (in pjsua level, e.g: SRTP nego failed), now the call will be terminated.
git-svn-id: https://svn.pjsip.org/repos/pjproject/branches/projects/2.0-dev@3560 74dad513-b988-da41-8d7b-12977e46ad98
- Added custom negotiation callback mechanism in SDP negotiator, mainly for specific formats that require SDP fmtp negotiation.
- Modified video codec ID string to use encoding name+payload type (was encoding name+clock rate), also added encoding description in video codec info, so duplicated codecs (e.g: multiple H264 configurations) can be differentiated.
- Few enhancements for H264 in ffmpeg wrapper (e.g: added proper profile-id & packetization-mode setup).
git-svn-id: https://svn.pjsip.org/repos/pjproject/branches/projects/2.0-dev@3500 74dad513-b988-da41-8d7b-12977e46ad98
- Initial version of video stream integration into pjsua-lib.
- Replaced audio info array in pjsua_call_info with media info array.
- Added video media info into call dump.
- Fixed assertion caused by pjsua_set_state(NULL) logging after pjlib shutdown.
git-svn-id: https://svn.pjsip.org/repos/pjproject/branches/projects/2.0-dev@3463 74dad513-b988-da41-8d7b-12977e46ad98
1185: Dynamic creation of media transports
============================================
Done:
- media transports are created on demand now
Todo:
- media transport creation is still blocking
1201: Video support in PJSUA-LIB
===================================
Done:
- call now supports N media (N audio and M video)
- number of audio/video streams is configurable per acc
- extra audio stream info in pjsua_call_info to support multiple audio streams
in one call
- video subsys and ffmpeg initialization in PJSUA-LIB
- ability to offer and create video SDP answer
- "dq" for more than 1 audio streams
- introducing pjsua_state and pjsua_get_state()
API change:
- on_stream_created() and on_stream_destroyed() callbacks: changed session to
stream
Todo:
- many others features are disabled, just search for DISABLED_FOR_TICKET_1185
macro (these have also been added to ticket #1193 (Issues & Todos)). Notable
missing features are:
- creation of duplicate SDP m= lines for optional SRTP
- mm.. that's it?
- whole lot of testings
pjsua:
===============
- Added --extra-audio and --video options. Specify these more than once and
each time an extra audio/video streams will be added. :)
git-svn-id: https://svn.pjsip.org/repos/pjproject/branches/projects/2.0-dev@3457 74dad513-b988-da41-8d7b-12977e46ad98
- Fixed lock codec to always be done after successful media update, and pend the lock codec until call state CONFIRMED if media update is done in call state EARLY but remote does not support UPDATE method.
- Added additional checks in lock_codec() and perform_lock_codec(), e.g: skip locking codec when media deactivated.
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3374 74dad513-b988-da41-8d7b-12977e46ad98
- avoid using pre-created SDP, but rather use timer and create SDP right when the UPDATE/re-INVITE is about to be sent, to avoid the use of stale pool
- also fixed bug in the old code when the lock codec feature is not activated after the call is confirmed
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3349 74dad513-b988-da41-8d7b-12977e46ad98
- use PJSUA_CALL_HOLD_TYPE_DEFAULT to specify default global call hold type
- use pjsua_acc_config.call_hold_type to specify call hold type for the account
- call hold type can also be set on per call basis by changing the call_hold_type in the call structure (requires inclusion of <pjsua-lib/pjsua_internal.h>
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3330 74dad513-b988-da41-8d7b-12977e46ad98
- added new PJSUA API: pjsua_verify_url() which can be used for tel: URI
- modified and tested according to spec
- added new PJSIP error code, PJSIP_ENOROUTESET, to indicate that route set is needed to send to tel: URI
- added couple of unit tests (we can't cover the whole tel: URI scenario yet)
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3323 74dad513-b988-da41-8d7b-12977e46ad98
- Added new pjsua registration status callback on_reg_state2(), it includes the whole info from the lower layer registration callback pjsip_regc_cb().
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3322 74dad513-b988-da41-8d7b-12977e46ad98
- Added run-time configuration for activating/deactivating stream keep-alive (non-codec-VAD mechanism), also added this config to account settings.
- Fixed bug wrong session info pointer "si" in pjsua_media_channel_update() when call audio index is not zero.
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3313 74dad513-b988-da41-8d7b-12977e46ad98
- incoming multipart message will be handled automatically
- for testing, enable HAVE_MULTIPART_TEST in pjsua_app.c
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3243 74dad513-b988-da41-8d7b-12977e46ad98
- added new account config setting: reg_use_proxy. This contains bitmask values to indicate whether outbound proxies and account proxies are to be added in the REGISTER request. Default value is to add both.
- added new pjsua cmdline option to control this: --reg-use-proxy
- miscellaneous minor fixes in other pjsua cmdline arguments
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3216 74dad513-b988-da41-8d7b-12977e46ad98
- added new PJ_ICE_STRANS_OP_KEEP_ALIVE operation
- also added new on_ice_transport_error() pjsua callback to allow application to react to the failure.
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3212 74dad513-b988-da41-8d7b-12977e46ad98
- Added lock codec feature to make sure that only one codec is active, by updating media session using UPDATE (if remote supports it) or re-INVITE.
- Added few SIPp test scenarios.
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3206 74dad513-b988-da41-8d7b-12977e46ad98
- Added a feature in dialog to store and retrieve remote capabilities dug from the remote messages.
- Added few APIs in dialog to query and update remote capabilities, also added an API in pjsua_call to query whether a capability is supported by remote.
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3196 74dad513-b988-da41-8d7b-12977e46ad98
- Added new approach of SRTP optional mode in pjsua-lib by duplicating SDP media line for secured and unsecured version of media transport.
- Integrated this feature into pjsua app, it is activated via --use-srtp=3 param.
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3172 74dad513-b988-da41-8d7b-12977e46ad98
- Added initial version of automatic re-registration after registration failure and automatic call disconnection after re-registration attempt fails.
- Published auto re-registration setting to pjsua app.
- Updated pjsip_regc_send() to retrieve the transport earlier (was only in tsx_callback()).
- Fixed TCP and TLS transport to prevent transport deletion in transport disconnection callback.
- Fixed wrong keep-alive settings used by TLS transport (was using TCP keep-alive settings).
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3128 74dad513-b988-da41-8d7b-12977e46ad98
- PJSUA-LIB transport callback, if installed, will call the previously registered callback, to allow multiple transport callbacks to be installed
- there seem to be a bug with the use of "pjsip_tp_state_callback" everywhere (the "pjsip_tp_state_callback" type is pointer, but most variables of this type are declared to pointer too)
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3119 74dad513-b988-da41-8d7b-12977e46ad98
- Updated transport state notification callback to return void.
- Updated transport state enum to only contain connected and disconnected, no more bitmask value.
- Added direction field to SIP transport.
- Removed remote hostname hash from transport key.
- Updated cert info dump to return -1 when buffer is insufficient.
- Added new error code PJSIP_TLS_ECERTVERIF.
- Updated get_cert_name() in ssl_sock_symbian.c to use heap buffer instead of stack.
- Minors, e.g: added prefix PJ in cipher types, docs.
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3110 74dad513-b988-da41-8d7b-12977e46ad98
- Initial version of server domain name verification:
- Updated SSL certificate info, especially identities info
- Updated verification mechanism as in the specifications in ticket desc.
- Added server domain name info in pjsip_tx_data.
- Added alternative API for acquiring transport and creating transport of transport factory to include pjsip_tx_data param.
- Server identity match criteria:
- full host name match
- wild card not accepted
- if identity is URI, it must be SIP/SIPS URI
- Initial version of transport state notifications:
- Added new API to set transport state callback in PJSIP and PJSUA.
- Defined states: connected/disconnected, accepted/rejected, verification errors.
- Minors:
- Updated SSL socket test: dump verification result, test of requiring client cert, and few minors.
- Updated test cert to include subjectAltName extensions.
- Added SSL certificate dump function.
- Updated max number of socket async operations in Symbian sample apps (RSocketServ::Connect()) to 32 (was default 8).
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3106 74dad513-b988-da41-8d7b-12977e46ad98
- in this implementation, when pjsua_acc_set_registration(FALSE) is called, the un-REGISTER request will be sent immediately after un-PUBLISH, unlike the process during shutdown where the un-REGISTER request will be sent only after un-PUBLISH transaction is complete
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3096 74dad513-b988-da41-8d7b-12977e46ad98
- Added new API pjmedia_codec_mgr_set_default_param() to set/update default codec parameter and implemented pjsua_codec_set_param() based on it.
- Added mutex in codec manager to protect states manipulations.
- Modified API pjmedia_codec_mgr_init() to add pool factory param.
- Added new API pjmedia_codec_mgr_destroy().
- Updated passthrough codec AMR to regard peer's mode-set setting.
- Fixed VAS audio device to apply AMR encoding bitrate setting.
- Fixed IPP codec codec_open() to update AMR bitrate info (for stream) when AMR encoding bitrate is not using the default, e.g: requested by peer via format param 'mode-set' in SDP.
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3074 74dad513-b988-da41-8d7b-12977e46ad98
- undo r3019 which put unsolicited MWI support in pjsua app only
- put the unsolicited MWI support in PJSUA-LIB instead
- unsolicited MWI is by default enabled
- on_mwi_info() callback will be called just as the solicited MWI version
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3021 74dad513-b988-da41-8d7b-12977e46ad98
- added protection to not resubscribe immediately if initial SUBSCRIBE is responded with 481 for some reason
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@2960 74dad513-b988-da41-8d7b-12977e46ad98
Presence enhancements:
- finer grained buddy lock object, instead of using global PJSUA-LIB's mutex
- individual resubscription timer for buddies and also add random delay interval so that resubscriptions don't happen simultaneously (may hog processing and bandwidth).
- in general reduced the use of global PJSUA-LIB's mutex for more efficiency
- added last termination code in buddy info
- use the RPID note's text for buddy's offline status rather than the default "offline" status, if available
- resubscribe automatically on several termination causes as explained in the ticket (still untested)
General enhancements:
- added pjsua_schedule_timer() and pjsua_cancel_timer() APIs
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@2956 74dad513-b988-da41-8d7b-12977e46ad98
- done
- added pj_ice_strans_state (to be used for informational purposes for now)
- added pjmedia ICE transport specific info, and display it in call dump output
- misc fixes (changed pjmedia_transport_info.spec_info_cnt from int to unsigned)
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@2945 74dad513-b988-da41-8d7b-12977e46ad98
- wait for unregistration to complete (or a preconfigured delay expires)
- new account config field to set the maximum delay to wait for unregistration
- rejects incoming requests (INVITE, SUBSCRIBE, and OPTIONS) when shutdown is in progress
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@2943 74dad513-b988-da41-8d7b-12977e46ad98
- wait for unpublication to complete or some delay expires, before sending unregistration
- added unpublish_max_wait_time_msec field in account config to control how long to wait
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@2942 74dad513-b988-da41-8d7b-12977e46ad98
- enable request queueing. If PUBLISH is to be sent while another one is still in progress, queue the request and send it later when the ongoing request completes
- this behavior is controlled by new pjsip_publishc_opt structure to control session's options
- default behavior is to queue the request
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@2940 74dad513-b988-da41-8d7b-12977e46ad98
PJSUA-LIB:
- New fields in pjsua_config to specify more than one STUN servers (the stun_srv_cnt and stun_srv array)
- The existing stun_host and stun_domain fields are deprecated, but backward compatibility is maintained. If stun_srv_cnt is zero, the library will import the entries from stun_host and stun_domain
- The library will now resolve the STUN server entries one by one and test it before using it
- New auxiliary API pjsua_resolve_stun_servers() to perform resolution and test against array of STUN servers
pjsua application:
- The "stun-srv" command line options can now be specified more than once
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@2864 74dad513-b988-da41-8d7b-12977e46ad98
- Renamed pjsip_timer_default_setting() to pjsip_timer_setting_default().
- Updated session timer settings in pjsua-lib as whole session timer setting struct (pyhton version remains using se & min_se).
- Added output param SIP status code in pjsip_timer_process_resp() and pjsip_timer_process_req() to specify the corresponding SIP status code when function returning non-PJ_SUCCESS.
- Fixed print header functions in sip_timer.c to have buffer check.
- Added PJSIP_SESS_TIMER_DEF_SE setting to specify the default value of session timer interval.
- Fixed role reference of the refresher, it is transaction role, not dialog role.
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@2859 74dad513-b988-da41-8d7b-12977e46ad98
- Initial version of Session Timers (RFC 4028).
- Added new options in pjsua app to configure Session Timers settings.
- Added python tests for Session Timers.
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@2858 74dad513-b988-da41-8d7b-12977e46ad98