Custom Query (2195 matches)
Results (1901 - 2000 of 2195)
Ticket | Summary | Owner | Type | Priority | Milestone | Component |
---|---|---|---|---|---|---|
#1748 | Enhancements to WAV player API | bennylp | enhancement | normal | release-2.2.1 | common |
Description |
Enhancements to WAV player API at pjsua2, pjsua, and pjmedia:
Also fixed bug in pjsua pjsua_player_set_pos(): in pjmedia the argument is in bytes rather than samples. |
|||||
#1752 | Resolve hostname when trying to get the network interface | bennylp | enhancement | normal | release-2.3 | pjsip |
Description |
Currently, pjsip will use default routing (from OS) when trying to get network interface. In a multihomed environment, sometimes this is not the desired behavior. This ticket will add an option to resolve hostname when trying to get the network interface to be put in the Via or Contact header. To enable this option set resolve_hostname_to_get_interface from the pjsip_cfg_t::endpt to PJ_TRUE or define PJSIP_RESOLVE_HOSTNAME_TO_GET_INTERFACE as PJ_TRUE on the config_site.h. Thanks to Alexander Klyushin for the report. |
|||||
#1757 | iOS renderer using OpenGL ES 2 | ming | enhancement | normal | release-2.3 | pjmedia-videodev |
Description |
This ticket creates OpenGL 2 framework to be used by other platforms and provides implementation for iOS with OpenGL ES version 2. |
|||||
#1758 | Support for OpenH264 v1.0.0 codec | nanang | enhancement | normal | release-2.3 | pjmedia |
Description |
IMPORTANT: Starting from release 2.6, OpenH264 1.0 is no longer supported as we move to OpenH264 version 1.6.0 instead. For updated instructions, please see ticket #1947. Support for the open source implementation of H.264 codec from http://www.openh264.org. Requirement:
Implementation features:
Notes:
Below are the steps to use the codec: For GNU targets:
For Visual Studio:
For iOS:
For Android:
|
|||||
#1760 | Ability to get access to TCP socket handle of the SIP transport | bennylp | enhancement | normal | release-2.3 | pjsip |
Description |
Some application want to be able to access TCP socket handle for setsockopt. There's already an API for UDP transport (pjsip_udp_transport_get_socket), and new API is needed for TCP. |
|||||
#1762 | Update iOS video capture and simple renderer | ming | enhancement | normal | release-2.3 | pjmedia-videodev |
Description |
iOS video capture and simple renderer were actually already implemented, however it has not been maintained nor tested for long time due to lack of video support on iOS. This ticket will check and update the implementations. Some additional features planned on the capture device implementation:
The simple renderer is a CGImage+UIView based renderer. |
|||||
#1763 | Add pj_ssl_cipher_id() API to get cipher ID from a cipher name string (thanks to Joshua Colp for the patch) | bennylp | enhancement | normal | release-2.3 | pjlib |
#1764 | Use latest early media SDP received on forked early media on 18x response. | bennylp | enhancement | normal | release-2.3 | pjsip |
Description |
Previously, ticket #1644 only allows this to happen upon receiving 183 response only. This ticket will expand it to all 18x responses. |
|||||
#1765 | Add Perfect Forward Secrecy (PFS) support in OpenSSL socket (thanks to Alexander Traud for the patch) | bennylp | enhancement | normal | release-2.3 | pjlib |
Description |
Usage (optional): Append DH parameters into the private key file (privkey_file), for example here for ephemeral DH (DHE). Ephemeral ECDH (ECDHE) works automatically. Without specifying a cipher-suite, # openssl ciphers -v DEFAULT is used. Consider reordering or disabling certain suites. Make sure to set the 'method' parameter to the value 'sslv23' because this disables SSL 2.0 and is the only way to enable TLS 1.2 in pjsip, currently. TLS 1.2 is required to enable AES-GCM cipher-suites. Drawback: For Java clients, go for a 1024bit parameter file, or disable DHE via 'cipher', or put ECDHE high in priority (of 'cipher'). Speed: With a mobile phone from 2006 (Nokia E61), DHE/3DES and a 2048bit parameter, the speed penalty is about 0,5 seconds per connection setup. |
|||||
#1767 | Tone generation API in pjsua2 and SWIG wrappers | bennylp | enhancement | normal | release-2.3 | pjsua2 |
Description |
Tone generation API in pjsua2 and the SWIG wrappers |
|||||
#1771 | Run-time configuration to enable user set specific socket option | bennylp | enhancement | normal | pjlib | |
Description |
Application may want to apply specific socket option to the transport by calling setsockopt. For TCP and UDP, the options are defined using sockopt_params in pjsua_transport_config. For TLS, the options are defined using sockopt_params in pjsip_tls_setting. |
|||||
#1775 | Changing OpenSSL default method from TLSv1 to SSLv23 to enable enable AES-GCM cipher suites in default (thanks Alexander Traud for the patch) | bennylp | enhancement | normal | release-2.3 | pjlib |
Description |
Currently with OpenSSL, PJSIP uses TLS version 1.0 for both server and client as default. AES-GCM cipher suites require at least TLS version 1.2. In the API of PJSIP, you are able to change to PJ_SSL_SOCK_PROTO_SSL23 which uses SSLv23_method() in OpenSSL. Although the method name indicates SSL version 2 and SSL version 3, SSLv23_method() is the default in OpenSSL because only that method enables the current, save versions. In OpenSSL 1.0.1, this is SSLv3, TLSv1, TLSv1.1, and TLSv1.2. SSLv2 is turned off (although the method name might suggest the contrary; https://www.openssl.org/docs/ssl/SSL_CTX_new.html) Consequently, SSLv23_method() enables PJ_SSL_SOCK_PROTO_SSL23, which enables TLSv1.2, which enables AES-GCM cipher suites. Because pjsua does not offer a parameter to change the TLS protocol version, the attached patch changes the default of PJSIP to the default of OpenSSL which keeps up with future changes in OpenSSL. |
|||||
#1776 | Support for Libyuv | nanang | enhancement | normal | release-2.3 | pjmedia |
Description |
Support for libyuv library which provides YUV scaling and conversion functionality (https://chromium.googlesource.com/libyuv/libyuv/). Requirement
This implementation will provide video scaling and conversion functionality. Below are the steps to use the codec: For GNU targets
For iOS targets
Notes for iOS targets:
For Android targets
For Visual Studio
|
|||||
#1778 | Support for Voice Processing IO Audio Unit on Mac | nanang | enhancement | normal | release-2.10 | pjmedia-audiodev |
Description |
Voice Processing IO Audio Unit is considered to provide nice features such as echo cancellation & AGC, it is supported since Mac OSX 10.7. Our internal testing indicates that the EC performance is far more superior than any software EC. However, VPIO seems to work only with specific devices, thus requiring you to use the default/built-in audio I/O devices (i.e. it doesn't allow you to select your own devices). Application wishing to disable the hardware EC and use software EC instead can specify PJMEDIA_ECHO_USE_SW_ECHO in pjsua_media_config.ec_options (or MediaConfig.ecOptions in pjsua2). *Limitation: only works in mono. * |
|||||
#1779 | Add API for registering external/native thread to pjsua2 | bennylp | enhancement | normal | release-2.3 | pjsua2 |
Description |
This ticket adds the following APIs:
and deprecates the following APIs (experimental and unused):
|
|||||
#1783 | Restart ICE if a mid-dialog re-INVITE contains no offer | bennylp | enhancement | normal | release-2.4 | pjsua-lib |
Description |
According to RFC 5245 section 12.5: The flows for continued operation, as described in Section 7 of RFC 3725, require additional behavior of ICE implementations to support. If an agent receives a mid-dialog re-INVITE that contains no offer, it MUST restart ICE for each media stream and go through the process of gathering new candidates. App can modify this behaviour by setting RESTART_ICE_ON_REINVITE to 0 (default is enabled). |
|||||
#1785 | Add support for sending initial INVITE/re-INVITE/UPDATE without SDP | bennylp | enhancement | normal | release-2.4 | pjsua-lib |
Description |
Add flag PJSUA_CALL_NO_SDP_OFFER in pjsua_call_flag. |
|||||
#1786 | Add support to specify video format and video window when opening video preview | bennylp | enhancement | normal | release-2.4 | pjsua-lib |
Description |
App has no way of specifying desired format and output window when opening preview. Solution: In Pjsua: Add format and wnd fields in pjsua_vid_dev_preview_param. |
|||||
#1788 | Add support to allow INVITE/reINVITE with unknown body (content-type) | bennylp | enhancement | normal | release-2.4 | pjsip |
Description |
Normally the stack will reject any INVITE/reINVITE message with unknown body. This ticket will enable application to process the body, by specifying the new compile time option PJSIP_INV_ACCEPT_UNKNOWN_BODY to PJ_TRUE. |
|||||
#1789 | Support for audio route setting on Android | nanang | enhancement | normal | release-2.x | pjmedia-audiodev |
Description |
Initial hints for the implementation can be found here for OpenSL and here for Android JNI. |
|||||
#1790 | Android renderer using OpenGL ES 2 | ming | enhancement | normal | release-2.4 | pjmedia-videodev |
#1792 | Create generic JNI OnLoad function | bennylp | enhancement | normal | release-2.4 | pjlib |
Description |
Take out JNI OnLoad? from Android JNI audio device backend and move it to pjlib, allowing it to be used by other components (or other platforms) |
|||||
#1793 | Avoid unwanted call unhold when sending re-INVITE/UPDATE with call setting param set to NULL | bennylp | enhancement | normal | release-2.4 | pjsua-lib |
Description |
Currently, when application calls pjsua_call_reinvite/update() with NULL call setting param, the existing call settings (including the flag) will be used, this may surprise the application with unwanted actions, for example, when previously application calls pjsua_call_reinvite()/update() with PJSUA_CALL_UNHOLD flag, the flag will stick for any future calls to pjsua_call_reinvite()/update() with NULL call setting param, so at some point it may unhold the call accidentally. Some flags (such as PJSUA_CALL_UNHOLD, PJSUA_CALL_UPDATE_CONTACT, and PJSUA_CALL_NO_SDP_OFFER) are considered to be one-time operation or not supposed to be done again without explicitly specified in the flag. So when call setting param is NULL, such one-time operation flags are better be reset and application should explicitly specify the flag in the call setting param whenever it needs to release hold, etc. Thanks to Itay Bianco for the report. |
|||||
#1802 | Configurable randomized value range for auto re-registration interval | bennylp | enhancement | normal | release-2.4 | pjsua-lib |
Description |
Currently, auto re-registration (e.g: after transport disconnection) interval is configurable via reg_retry_interval/reg_first_retry_interval in the account config, and to avoid all clients re-registering at the same time, the interval will be randomized by +/- ten seconds. Note that the ten seconds random range is hardcoded. While for some cases, application may want the auto re-registration to be done immediately (no such randomized delay). Or even perhaps thinks that ten seconds random range is too tight/loose. This ticket will make the randomized range configurable. Thanks Johan Lantz for the feedback. |
|||||
#1806 | SSL/TLS setting to set protocol operation | bennylp | enhancement | normal | release-2.4 | pjsip |
Description |
Certain SSL backend implementation, e.g:OpenSSL has feature to enable/disable protocol used. In case of OpenSSL, using SSLv23_method will enable SSLv2-TLSv1.2. Since SSLv2 and SSLv3 are outdated, it will be useful to disable those. This ticket will enable app to specify the protocol used as a combination of pj_ssl_sock_proto value and eventually force client to use the protocol. Thanks to Thomas Haremsa for the suggestions. |
|||||
#1810 | Adding CA path support into SSL socket | bennylp | enhancement | normal | release-2.4 | pjlib |
Description |
Offering the ability for application to provide a directory where CA certificate files could be found. Thanks James Cloos and Mark Michelson for the patch. |
|||||
#1812 | Update libsrtp to the latest version | bennylp | enhancement | normal | Known-Issues-and-Ideas | third-party |
#1814 | Audio frame preview callbacks | nanang | enhancement | normal | release-2.4 | pjmedia |
Description |
Add callbacks for application to preview the audio frame traffic from/to sound device. This could be useful for application to be able to inspect signal level and set mic/speaker volume appropriately to avoid clipping or too low/high volume. |
|||||
#1817 | Automatically send BYE when sending CANCEL for INVITE is unsuccessful. | bennylp | enhancement | normal | release-2.4 | pjsua-lib |
Description |
Related to #1049: In PJSUA-LIB: Sending BYE if call isn't disconnected after CANCEL is issued: it is possible that the CANCEL request and 200/OK to INVITE had crossed each other in the wire; in this case, the call will get CONNECTED and the CANCEL will be rejected with 481. |
|||||
#1819 | Use expiration field to indicate registration/unregistration in registration callback | bennylp | enhancement | normal | release-2.4 | pjsip |
Description |
In registration callback on_reg_state2(), especially in failure cases, sometimes it's difficult to distinguish whether the callback is called for registration or unregistration request. This ticket will fix it by setting cbparam.expiration field to 0 in case of unregistration and > 0 otherwise. |
|||||
#1821 | Remove unnecessary locking in pjsip transaction and add new API to create a group lock with handler in a single atomic instruction | bennylp | enhancement | normal | release-2.4 | pjsip |
Description |
When creating a pjsip transaction with new group lock, it is not necessary to acquire the lock. An advantage of doing this is prevent the establishment of lock ordering, which can later be picked up by thread detection analysis tool as violation of lock ordering. |
|||||
#1822 | Android video capturer | ming | enhancement | normal | release-2.4 | pjmedia-videodev |
Description |
This feature will be auto detected and enabled by configure script. The implementation is using android.hardware.Camera class. |
|||||
#1823 | Pjsua2 Video API | bennylp | enhancement | normal | release-2.4 | pjsua2 |
Description |
With sample apps and tests focused on Android only. |
|||||
#1825 | New on_reg_started2 callback | bennylp | enhancement | normal | release-2.4 | pjsua-lib |
Description |
On IP Address change case, app might want to close the transport before connecting state, however it is not possible to get the transport instance before registration process is finished. This ticket is mainly for getting registration transport instance before getting the registration result (via pjsua callback on_reg_state). Example scenario:
on_reg_started callback can be used for getting registration transport instance, but we need to include pjsua_internal.h to get account's pjsip_regc instance (to eventually get the registration transport). With this ticket, it can be done as follow: static void on_reg_started2(pjsua_acc_id acc_id, pjsua_reg_info *info) { pjsip_regc_info regc_info; pjsip_regc_get_info(info->regc, ®c_info); // transport instance is in 'regc_info.transport' ... } |
|||||
#1826 | Check and implement format enumeration in video capture devices | ming | enhancement | normal | release-2.4 | pjmedia-videodev |
Description |
This ticket will check and fix/implement enumeration of the supported video format in all video capture device implementations. |
|||||
#1829 | Avoid recreating video renderer due to format change in the beginning of video session | bennylp | enhancement | normal | release-2.x | pjsua-lib |
Description |
Currently video renderer is precreated with a specific size and when incoming video frame has been successfully decoded and the size has been different, the decoder will send event that format has been changed and renderer will resize, which may require recreating. Perhaps we should delay the renderer creation or make sure changing renderer size is a lightweight operation. |
|||||
#1830 | Option to maintain video aspect ratio between requested size and supported size | nanang | enhancement | normal | Known-Issues-and-Ideas | pjmedia |
Description |
Currently, video port has to handle video resizing when video size requested by application is not supported by video device. A raised issue is how to find the closest size from the supported sizes, e.g: should we consider same/closest aspect ratio in the search? After a discussion, we come to a conclusion that the priority is the closest width, then closest height (when resized with same aspect ratio), and eventually the result may have different aspect ratio. So perhaps we should provide options whether aspect ratio should be maintained and how (crop or pad with black boxes at up&down/left&right sides). |
|||||
#1831 | Find best match of video format between requested and supported format | nanang | enhancement | normal | release-2.4 | pjmedia |
Description |
Video port needs to find the best match between requested and supported format. We use format id matching with the nearest width and aspect ratio to find match between the requested format and the supported format. For format id matching, the priority is:
For ratio matching: Find the lowest difference of the aspect ratio between the requested and the supported format. Note: ratio matching can be skipped by specifying #define PJMEDIA_VID_PORT_MATCH_WIDTH_ARRAY_SIZE 1 |
|||||
#1832 | Miscellaneous changes related to Android video | bennylp | enhancement | normal | release-2.4 | common |
#1833 | Support bdSound's bdiMad v2.0.0 | nanang | enhancement | normal | release-2.4 | pjmedia-audiodev |
Description |
This ticket will add support to bdSound's bdiMad v2.0.0. Thanks to Francesco Zocchi for the patch. |
|||||
#1836 | Added colorbar device with active role | ming | enhancement | normal | release-2.4 | pjmedia-videodev |
Description |
This could be useful for testing purposes. |
|||||
#1838 | Enable application to provide its own external resolver implementation | bennylp | enhancement | normal | release-2.4 | pjsip |
Description |
Current PJSIP resolver lacks these functionality:
This ticket will enable application define its own resolver implementation and set it to be used instead of the method built in. Application can do this by by defining the callback in pjsip_ext_resolver and pass it to pjsip_endpt_set_ext_resolver() function. Thanks to Joshua Colp for the suggestion and initial patch. |
|||||
#1845 | Add support if OpenSSL library has more than 100 cipher suites | bennylp | enhancement | normal | release-2.4.5 | applications |
Description |
Add support if the underlying OpenSSL library supports more than 100 suites. Currently, the pjproject assumes no OpenSSL library with more than 100 cipher suites exists. OpenSSL 1.0.1 in Ubuntu 14.04 has 98. However, the amount of cipher suites raised a lot. If such a library (with more than 100 ciphers) is used, only the first 100 cipher-suites are allowed to be set manually (for example via --tls-cipher in pjsua). If the cipher suites are not changed manually, this code is not passed and the default cipher-suites are offered by pjsua (even if there are more than 128). The ticket also allows all available cipher suites by changing the filter from "ALL" to "ALL:COMPLEMENTOFALL". The OpenSSL team disabled ciphers without encryption (eNULL). However, those can be useful while testing. This change does not change existing implementations, because the implementation of the method "set_cipher_list" sets the list (implicitly) to "DEFAULT" when the condition "ssock->param.ciphers_num == 0" is met (= no cipher-suites are set manually). DEFAULT is without aNULL and eNULL ciphers. Special thanks to Alexander Traud for the patch and the ticket description above. |
|||||
#1846 | Update to use 'HIGH' ciphers as default in OpenSSL | bennylp | enhancement | normal | release-2.4.5 | applications |
Description |
Since March 2015, a TLS/SSL security vulnerability was revealed, which mandates to disable certain TLS cipher-suites <https://en.wikipedia.org/wiki/FREAK>. Furthermore since February 2015, RFC 7465 prohibits the cipher-suite RC4. To achieve this with OpenSSL, the cipher-suite list has to be changed from "DEFAULT" to "HIGH". Furthermore, all ciphers which were not included in "DEFAULT" before (like eNULL), should not appear now either. Therefore: HIGH:-COMPLEMENTOFDEFAULT. Special thanks to Alexander Traud for his excellent suggestion, description, and patch. |
|||||
#1847 | Upgrade libsrtp version and support for AES-256 crypto | nanang | enhancement | normal | release-2.5 | pjmedia |
#1849 | Enable multiple TLS certificate chains (RSA+ECC+DSA) for server socket | bennylp | enhancement | normal | release-2.4.5 | pjlib |
Description |
When a client connects via SSL/TLS, the server uses a RSA key-pair usually. However, more such algorithms exist like DSA and ECDSA, and if the server socket setups a certificate for either one of those, it would loose compatibility to RSA-only clients. This ticket allows the server socket to be configured with up to one RSA, ECDSA and DSA key each. Also, if any socket clients are not compatible with SHA-2 hashed certificates for example Nokia mobile phones, the server socket still can use RSA/SHA-1 for legacy clients and ECDSA/SHA-2 for everyone else. Thanks Alexander Traud for the feedback and the patch. |
|||||
#1851 | Runtime configuration of TCP and TLS keep alive intervals | bennylp | enhancement | normal | release-2.4.5 | pjsip |
Description |
Currently we use compile-time constants PJSIP_TCP_KEEP_ALIVE_INTERVAL and PJSIP_TLS_KEEP_ALIVE_INTERVAL. This ticket will make the settings configurable during runtime. |
|||||
#1853 | Add callback for dropped data in SIP transport | bennylp | enhancement | normal | release-2.4.5 | pjsip |
Description |
Provide a new callback pjsip_tp_on_rx_dropped_cb() which will be called whenever SIP transport drops data with the following information: /** * Structure of dropped received data. */ typedef struct pjsip_tp_dropped_data { /** * The transport receiving the data. */ pjsip_transport *tp; /** * The data. */ void *data; /** * The data length. * If the status field below indicates an invalid SIP message * (PJSIP_EINVALIDMSG) and application detects a SIP message * at position p, it can pass the data back to PJSIP to be processed * by setting the len to p. This can be useful for apps which * wishes to use the same transport for SIP signalling and non-SIP * purposes (such as SIP outbound using STUN message). */ pj_size_t len; /** * The status or reason of drop. For example, a leading newlines (common * keep-alive packet) will be dropped with status PJ_EIGNORED, an invalid * SIP message will have status PJSIP_EINVALIDMSG, a SIP message overflow * will have status PJSIP_ERXOVERFLOW. */ pj_status_t status; } pjsip_tp_dropped_data; |
|||||
#1855 | Pjsua2 Video Preview API | bennylp | enhancement | normal | release-2.4.5 | pjsua2 |
Description |
With sample apps (pjsua2) and tests focused on Android only. |
|||||
#1856 | Offer only current active crypto on re-INVITE | nanang | enhancement | normal | release-2.4.5 | pjmedia |
Description |
On re-INVITE (e.g: lock codec, ICE update, session refresh), SRTP sends all crypto-suites instead of just the currently active. In the Sipit31 tests, this seems to be just fine (the same current active cryptos were used on both sides, no RTP protect/unprotect error), but this is perhaps risky, e.g: remote may mistakenly see it as SRTP session restart, thus remote will reset its SRTP states (so RTP seq calculation became out of sync, etc). So sending the current active crypto should be safer. |
|||||
#1860 | Modify pjmedia_sdp_neg_fmt_match() to check for encoding parameters as well | nanang | enhancement | normal | release-2.4.5 | pjmedia |
Description |
In addition to checking encoding name and clock rate, pjmedia_sdp_neg_fmt_match() API will check encoding parameters as well. From: https://tools.ietf.org/html/rfc4566#page-25
For audio streams, <encoding parameters> indicates the number of audio channels. This parameter is OPTIONAL and may be omitted if the number of channels is one, provided that no additional parameters are needed. For video streams, no encoding parameters are currently specified. |
|||||
#1861 | Support for video capture orientation | ming | enhancement | normal | release-2.4.5 | pjmedia-videodev |
Description |
Currently there is no mechanism to notify other party about new video orientation, so in this ticket, we implement a feature which allows the video sender to transmit video with the "proper" orientation at all time, i.e: head upside whatever the device orientation is. When a device orientation changes, the application can tell the library and the library will rotate the video, resize it accordingly, and insert blank/black in left+right sides. The receiver/decoder side will then receive the video in the correct orientation, nothing to do on the decoder side. The feature is available on iOS and Android only. |
|||||
#1863 | PJSUA2 Video Codec API & Video Device API | bennylp | enhancement | normal | release-2.4.5 | pjsua2 |
Description |
This ticket will add PJSUA2 Video Codec API and Video Device API |
|||||
#1865 | Main thread blocked by NAT type detection in library start | bennylp | enhancement | normal | release-2.4.5 | pjsua-lib |
Description |
Currently pjsua_start() will automatically start NAT type detection, it may block the application UI/main thread (the thread calling pjsua_start(), usually it is the UI/main thread), when the configured STUN server is down. So, let's just perform NAT type detection only after STUN server resolution is succeeded. Also, make the library starting NAT type detection only when pjsua_config.nat_type_in_sdp is set to non-zero. |
|||||
#1867 | Add pjsua callback to notify when STUN resolution completes | bennylp | enhancement | normal | release-2.4.5 | pjsua-lib |
Description |
Calling #pjsua_init() will initiate an async process to resolve and contact each of the STUN server entries to find which is usable. This callback is called when the process is complete, and can be used by the application to start creating and registering accounts. This way, the accounts can avoid call setup delay caused by pending STUN resolution. |
|||||
#1869 | Destroy STUN session when cleaning up STUN server resolution | bennylp | enhancement | normal | release-2.4.5 | pjsua-lib |
Description |
By forcing to destroy the STUN session, it avoids the delay when trying to destroy PJSIP or cancelling STUN server resolution. |
|||||
#1872 | Move iOS audio session category setting to factory initialisation | nanang | enhancement | normal | release-2.4.5 | pjmedia-audiodev |
Description |
Currently each open operation of iOS audio device will reset AVAudioSession category to AVAudioSessionCategoryPlayAndRecord (and without any option), so there is a risk that any audio session settings set by application to be reseted or overridden. To avoid that, the category setting will be moved to audio device factory initialisation. |
|||||
#1878 | Compile time option for TCP/TLS transport to not create a listener | bennylp | enhancement | normal | release-2.4.5 | pjsip |
Description |
Provide a compile time option PJSIP_TCP_TRANSPORT_DONT_CREATE_LISTENER and PJSIP_TLS_TRANSPORT_DONT_CREATE_LISTENER for TCP/TLS transport to skip creating the listener. Some applications may not have real use for a listener since they don't need to accept direct incoming connections, hence they can use this option. |
|||||
#1879 | Set Video Codec Param using PJSUA2 API | bennylp | enhancement | normal | release-2.5 | pjsua2 |
Description |
This ticket will add support to set video codec param using PJSUA2 API. Example of use: /* MyApp.ep is the Endpoint instance */ VidCodecParam codecParam = MyApp.ep.getVideoCodecParam("H264"); MediaFormatVideo newFormat = codecParam.getEncFmt(); newFormat.setFpsNum(30); newFormat.setFpsDenum(1); codecParam.setEncFmt(newFormat); MyApp.ep.setVideoCodecParam("H264", codecParam); |
|||||
#1881 | Visual Studio 2015 support | bennylp | enhancement | normal | release-2.5 | common |
Description |
To support to Visual Studio 2015 (VS 2015), this ticket will introduce these files: - Solution file : pjproject-vs14.sln - Project files : *.vcxproj - Project properties sheet files : *.props - Project filter files : *.filters Please note that in VS 2015, VC++ directories settings are available in the user property sheet. To include them in a global setting, use Microsoft.cpp.<Platform>.users (e.g: Microsoft.Cpp.Win32.user) properties sheet file. |
|||||
#1888 | Support for WebRTC Acoustic Echo Cancellation | nanang | enhancement | normal | release-2.5 | pjmedia |
Description |
How to use WebRTC AECTo use WebRTC AEC, specify the value PJMEDIA_ECHO_WEBRTC in pjsua_media_config.ec_options (MediaConfig.ecOptions for PJSUA2), and specify the delay estimate for sound card and system buffers in pjsua_media_config.ec_tail_len (MediaConfig.ecTailLen for PJSUA2). WebRTC AEC's performance is very dependent on this delay calculation. A poor estimate, even by as little as 40ms, may affect the echo cancellation results greatly. Our WebRTC wrapper has enabled the delay agnostic feature, which will adjust the delay accordingly, however it may take some time (5-10s or more) for the AEC module to learn the optimal delay, thus a good initial estimate is necessary for good EC quality in the beginning of a call. The delay should be at least as much as frame time (by default, ptime is 20ms) + PJMEDIA_WSOLA_DELAY_MSEC (the default is 5ms). In PJSUA sample application, run it with the options --ec-opt=3 and specify the delay estimate in --ec-tail options. For example: ./pjsua --ec-opt=3 --ec-tail=30 Poor WebRTC EC qualityDisable PJMEDIA_WEBRTC_AEC_USE_MOBILE (set it to 0), then change the definition of SHOW_DELAY_METRICS in pjmedia/src/pjmedia/echo_webrtc.c to a non-zero value. For example, if you set to 250, with ptime 20ms, it will print the delay metrics stats every 5 seconds or so. #define SHOW_DELAY_METRICS 250 What you need to see in the log is the line: median=%d, std=%d, fraction of poor delays=%f Fraction of poor delays is a value between 0 and 1. The closer the value to 1, the poorer the EC quality. To improve the EC quality, here are a few things you can try:
Problem with EC quality on MacThe problem with echo on Mac and negative delay has been reported by several of our users and seems to be a known issue, as documented in Chrome M45 WebRTC Release Notes and Issue 3929: AEC on Mac can be put in non-causal state. Unfortunately, there's no known workaround as of now.
How to build WebRTCMacRefer to WebRTC development guide here. Then configure PJSIP with: ./configure --with-webrtc=/Users/me/webrtc-mac iOS (ARM)Refer to WebRTC development guide here. PJSIP's auto configuration will look for the library in out_ios/Release folder, so make sure you set the output dir properly when building !WebRTC export GYP_GENERATOR_FLAGS="output_dir=out_ios" ninja -C out_ios/Release Then configure PJSIP with: ./configure --with-webrtc=/Users/me/webrtc-iphone AndroidAndroid development is only supported on Linux (reference here), so if you use other platforms, you need to set up a Linux virtual machine. Alternatively, you can build the stripped down version of WebRTC instead, which will only build the required AEC module and its required dependencies. These steps below are tested on a Mac machine:
For other architectures(or custom WebRTC installation undetected by configure script) You can customize PJSIP's user.mak file, located inside PJSIP's work dir: export CFLAGS += -I"/Users/me/webrtc/src" -DPJMEDIA_HAS_WEBRTC_AEC=1 # Uncomment below if you want to use the lighter, mobile-optimized version # export CFLAGS += -DPJMEDIA_WEBRTC_AEC_USE_MOBILE=1 export LDFLAGS += -L/Users/me/webrtc/[WebRTC_lib_path] -laudio_processing -lcommon_audio -lsystem_wrappers # If you build for ARM architecture, uncomment below # export LDFLAGS += -laudio_processing_neon -lcommon_audio_neon # Or else, if you build for MIPS architecture, uncomment below # export LDFLAGS += -laudio_processing_neon -lcommon_audio_neon # Or else, if your machine supports SSE2, uncomment below # export LDFLAGS += -laudio_processing_sse2 Then rebuild PJSIP. Compatibility issueThere is a known compatibility issue with recent WebRTC version, so we'd recommend to use an older WebRTC version, e.g: about October 2015 version. |
|||||
#1892 | Add pjsua/pjsua2 callback to notify incoming re-INVITE without offer | bennylp | enhancement | normal | release-2.5 | pjsua-lib |
Description |
When receiving re-INVITE without offer, RFC3261 section 14.2 recommends UAS to generate offer with all capabilities that the UA is willing to support to avoid the need for the peer to reject the session description. Some SIP UA (e.g: B2BUA) seem to rely on this recommendation for media switching (e.g: stop IVR and start video). Currently the behaviour of pjsua is to automatically send offer generated from the current active session, application is not involved in the offer generation. This callback will give the application a better control in the offer generation, for example it may add video via modifying call setting, enable/disable codecs from within the callback, so application could put all its capabilities in the offer. |
|||||
#1894 | Improve ioqueue performance on multithreadeded environment | bennylp | enhancement | normal | release-2.5 | pjlib |
Description |
This ticket will apply the following updates on the ioqueue (most affected implementations are select & epoll):
Thank you Christian Ambach for the patches. |
|||||
#1896 | Update default audio device backends | nanang | enhancement | normal | release-2.5 | pjmedia-audiodev |
Description |
Some platforms use PortAudio as their default audio device backend, while the PortAudio version we are using is quite old and the effort to update the version is not small. Meanwhile, we already have our own audio device implementations that are considerably lightweight and stable as they have been around and tested for quite long time. So yes, we are considering to update the default audio device backends to our own implementations.
|
|||||
#1897 | Support Ffmpeg 2.8 | nanang | enhancement | normal | release-2.5 | pjmedia |
Description |
This ticket will add support to FFmpeg 2.8 with these general modifications:
Application may keep using older FFmpeg version, i.e: the versions that are already supported before the changes in this ticket, by defining macro PJMEDIA_USE_OLD_FFMPEG in the build, e.g: adding this line in config_site.h: #define PJMEDIA_USE_OLD_FFMPEG Note: configure script (of GNU autoconf build system) will automatically add this macro when it detects that older FFmpeg version is being used. |
|||||
#1900 | Windows 10 / Universal Windows Platform port | bennylp | enhancement | normal | release-2.6 | common |
Description |
Support Windows 10 / Universal Windows Platform and continue the work for Windows Phone 8 support (#1704). Build guide: Building for UWP & WP8 |
|||||
#1904 | Support for Opus codec | nanang | enhancement | normal | release-2.5 | pjmedia |
Description |
Opus is a totally open, royalty-free, highly versatile audio codec. Opus is unmatched for interactive speech and music transmission over the Internet, but is also intended for storage and streaming applications. It is standardized by the Internet Engineering Task Force (IETF) as RFC 6716 which incorporated technology from Skype's SILK codec and Xiph.Org's CELT codec. (From http://www.opus-codec.org) How to use:
Opus Codec Settings General codec settings for this codec such as VAD and PLC can be manipulated through the setting field in #pjmedia_codec_param (see the documentation of #pjmedia_codec_param for more info). For Opus codec specific settings, such as sample rate, channel count, bit rate, complexity, and CBR, can be configured in #pjmedia_codec_opus_config. The default setting of sample rate is specified in #PJMEDIA_CODEC_OPUS_DEFAULT_SAMPLE_RATE. The default setting of bitrate is specified in #PJMEDIA_CODEC_OPUS_DEFAULT_BIT_RATE. And the default setting of complexity is specified in #PJMEDIA_CODEC_OPUS_DEFAULT_COMPLEXITY. After modifying any of these settings, application needs to call #pjmedia_codec_opus_set_default_param(), which will generate the appropriate decoding fmtp attributes. Here is an example of modifying the codec settings: pjmedia_codec_param param; pjmedia_codec_opus_config opus_cfg; pjmedia_codec_mgr_get_default_param(.., ¶m); pjmedia_codec_opus_get_config(&opus_cfg); ... // Set VAD param.setting.vad = 1; // Set PLC param.setting.vad = 1; // Set sample rate opus_cfg.sample_rate = 16000; // Set channel count opus_cfg.channel_cnt = 2; // Set bit rate opus_cfg.bit_rate = 20000; ... pjmedia_codec_opus_set_default_param(&opus_cfg, ¶m); |
|||||
#1907 | Remove pjmedia* circular dependency | nanang | enhancement | normal | release-2.5 | pjmedia |
Description |
Currently pjmedia library will depend on pjmedia-audiodev and pjmedia-videodev, and vice versa. This may cause problem, for example when building shared libraries with linker flags --as-needed. |
|||||
#1908 | Support opening speaker only in pjsua/pjsua2 | bennylp | enhancement | normal | release-2.5 | pjsua-lib |
Description |
Currently pjsua will always open both speaker and microphone. Some applications, such as Push-To-Talk, may have microphone off most of the time and prefer to open only the speaker. While working on pjsua2 sound device, there seem to be a related issue, calling setPlaybackDev() & setCaptureDev() consecutively may not work as expected, i.e: for changing both playback and record devices, perhaps due to asynchronous dev open/close operations, this is experienced on Linux platforms. So, perhaps we should consider to add an API to set both at once, e.g: setPlaybackAndCaptureDev(). |
|||||
#1909 | GUID implementation for Android | bennylp | enhancement | normal | release-2.5 | pjlib |
Description |
Currently, on Android, due to unavailability of native UUID support, we use guid_simple.c which relies on simple rand(). Unfortunately, this may cause ID collision, such as for Call-ID. The proper implementation is to use java.util.UUID API instead. Thanks to Johan Lantz for the report and the patch. |
|||||
#1910 | Option to regularly send video keyframe in the beginning of video call session | nanang | enhancement | normal | release-2.6 | pjmedia |
Description |
In the beginning of video call, video keyframe may get lost due to NAT hole punching, probing period in auto-switch to RTP port source feature, or normal packet loss. Mechanism to request video keyframe is currently available, however it takes time. So sending video keyframe regularly at some interval in the beginning of video session may reduce the missing keyframe period. It should be configurable at run-time and compile-time (for default setting). |
|||||
#1913 | Add callback for address change notification from STUN keep alive | bennylp | enhancement | normal | release-2.5 | pjsua-lib |
Description |
From our IP Address Change wiki: "If ICE media transport is used, and STUN is enabled on the media transport, then the media transport will automatically update its publicly mapped IP address from the STUN Binding response. The transport should send STUN Binding request periodically (approximately every 15 seconds) as NAT keep-alive mechanism, so the address change will be detected by the transport automatically during this operation." This ticket is to provide a notification to the app when such address change happens due to the STUN keep alive operation (as indicated by the log saying: STUN mapped address found/changed: [new address here]). The app will get notified via on_call_media_transport_state() callback and it can inspect ext_info to verify the operation to be equal to PJ_ICE_STRANS_OP_ADDR_CHANGE. |
|||||
#1914 | Ignore STUN error after pjstun_get_mapped_addr2() | bennylp | enhancement | normal | release-2.5 | pjsua-lib |
Description |
On media stream creation, the stack will call pjstun_get_mapped_addr2() and might fail if the STUN server is unreachable. Scenario:
This patch will ignore the error from pjstun_get_mapped_addr2() using pjsua_config::stun_ignore_failure. |
|||||
#1915 | Add API pjsip_udp_transport_start2() | bennylp | enhancement | normal | release-2.5 | pjsip |
Description |
Currently there are already pjsip_udp_transport_start() for IPv4 and pjsip_udp_transport_start6() for IPv6, the new API should be a little cleaner as it can create both IPv4 and IPv6 transports. Also added QoS settings for the transport socket. Thanks George Joseph for the patch. |
|||||
#1918 | Add API to update STUN servers and option to retry STUN for media on failure | bennylp | enhancement | normal | release-2.5.1 | pjsua-lib |
Description |
Issue:
The ticket will add an API pjsua_update_stun_servers() to update STUN servers list after startup (previously, it can only be specified prior to calling pjsua_init()). Then when call media fails due to pjstun_get_mapped_addr(), we add an option PJSUA_STUN_RETRY_ON_FAILURE in pjsua_acc_config.media_stun_use (by default it's disabled/no retry), which enables retrying other STUN servers when the above scenario happens. |
|||||
#1920 | Various patches related to FFMpeg | nanang | enhancement | normal | release-2.5.1 | pjmedia |
Description |
This ticket will contain various patches related to FFMpeg. For example, newer FFMpeg might deprecate API and introduce a new one. |
|||||
#1922 | More compatibility with IPv6 DNS64/NAT64 network | bennylp | enhancement | normal | release-2.5.1 | common |
Description |
This ticket will be the placeholder for various fixes/modifications in order to comply with the guidelines/recommendations in Apple's official doc Supporting IPv6 DNS64/NAT64 Networks. |
|||||
#1926 | Support IPv6 address resolution | bennylp | enhancement | normal | release-2.5.5 | pjsua-lib |
Description |
This ticket will enable PJSUA application to resolve target hostname to IPv6 address. Update: Ticket #1927 has been completed, PJLIB-UTIL DNS resolver now supports IPv6 for DNS SRV and DNS A/AAAA resolutions. So the following specifications should be applicable to PJSUA-LIB with and without nameserver settings. Account transport typeThis new field is added to PJSUA account structure (in pjsua internal), it represents account transport preference, i.e: local account will always have specific transport type (as it is created with transport ID param), and normal account will have specific transport type only if it is bound to specific transport, i.e: via pjsua_acc_config.transport_id. Contact generation
SIP transport
MediaMedia transport is independent from SIP, currently it will simply follow the account setting, i.e: pjsua_acc_config.ipv6_media_use. Caveat
|
|||||
#1927 | IPv6 support in DNS SRV resolution | bennylp | enhancement | normal | release-2.5.5 | pjlib-util |
Description |
This is a continuation of #419. Backward compatibility breakField server of pj_dns_srv_record is now using type pj_dns_addr_record which supports both DNS A and DNS AAAA records, previously it was using type pj_dns_a_record which supports DNS A record only. |
|||||
#1931 | Support for AVFoundation on Mac (due to deprecated QTKit) | ming | enhancement | normal | release-2.5.5 | pjmedia-videodev |
Description |
Starting in Mac OS X 10.9, QTKit is deprecated. To disable QT video capture device, you can set PJMEDIA_VIDEO_DEV_HAS_QT to 0. |
|||||
#1933 | Update pjnath-test for IPv6 support | bennylp | enhancement | normal | release-2.5.5 | pjnath |
Description |
This will update pjnath-test for IPv6 support.
|
|||||
#1934 | Add reference counting APIs to event subscription | bennylp | enhancement | normal | release-2.5.5 | pjsip |
Description |
Some application may process event subscription asynchonously, e.g: save pointer to evsub instance on evsub callback and return immediately from the callback while some other thread is assigned to continue some operation on the evsub instance. Unfortunately, the evsub instance may get destroyed before the other thread starts working on the evsub and later when it starts working on the evsub, the pointer to evsub is already invalid. This ticket will introduce reference counting APIs so such application could safely keep a pointer to evsub instance. Thanks George Joseph for the patch. |
|||||
#1937 | Add libyuv to third party component | bennylp | enhancement | normal | release-2.5.5 | third-party |
Description |
We recommend libyuv which provides video scaling and conversion method. However, currently we only support libyuv as a stand alone project, with these drawbacks:
This ticket will add libyuv to the third party folder, use a specific version and include only the necessary source. Below is the steps to build and use libyuv: For GNU targets
Additional step for iOS targets
Known issues
For Visual Studio
|
|||||
#1941 | Review iOS 10 integration to PJSIP | bennylp | enhancement | normal | release-2.6 | common |
Description |
iOS 10 is coming with new features such as CallKit, framework changes such as in AVFoundation, and also API deprecations. This ticket will review and apply any integrations needed in PJSIP library. PushKit guideWhat your application needs to do:
Note: starting from iOS 13, there's a new requirement: Apps receving VoIP pushes must post an incoming call (via CallKit or IncomingCallNotifications) in the same run loop as pushRegistry:didReceiveIncomingPushWithPayload:forType:[withCompletionHandler:] without delay. Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Killing app because it never posted an incoming call to the system after receiving a PushKit VoIP push callback.' In order to make it work with the normal SIP flow which may require you to wait for some time to receive the INVITE message, please look at Apple's recommendation in its developer forum. Configure your SIP server:
CallKit supportCallKit framework allows apps to use the native phone UI to receive incoming calls and make outgoing calls. In order to achieve this, CallKit requires the call audio to start only when audio session has been activated, thus it's recommended that when using PJSIP, you open the sound device only when necessary. It can be done by:
Below is an example on how to integrate CallKit with PJSIP, with the delegate functions taken from Speakerbox sample app provided by Apple. To make outgoing call: func provider(_ provider: CXProvider, perform action: CXStartCallAction) { /* 1. We must not start call audio here, and can only do so * once the audio session has been activated by the system * after having its priority elevated. So, make sure that the sound * device is closed at this point. */ /* 2. Provide your own implementation to configure * the audio session here. */ configureAudioSession() /* 3. Make call with pjsua_call_make_call(). * Then use pjsua's on_call_state() callback to report significant * events in the call's lifecycle, by calling iOS API * CXProvider.reportOutgoingCall(with: startedConnectingAt:) and * CXProvider.reportOutgoingCall(with: ConnectedAt:) */ /* 4. If step (3) above returns PJ_SUCCESS, call action.fulfill(), * otherwise call action.fail(). */ } To handle incoming call: func provider(_ provider: CXProvider, perform action: CXAnswerCallAction) { /* 1. We must not start call audio here, and can only do so * once the audio session has been activated by the system * after having its priority elevated. So, make sure that the sound * device is closed at this point. */ /* 2. Provide your own implementation to configure * the audio session here. */ configureAudioSession() /* 3. Answer the call with pjsua_call_answer(). */ /* 4. If step (3) above returns PJ_SUCCESS, call action.fulfill(), * otherwise call action.fail(). */ } To start sound device: func provider(_ provider: CXProvider, didActivate audioSession: AVAudioSession) { /* Start call audio media, now that the audio session has been * activated after having its priority boosted. * * Call pjsua API pjsua_set_snd_dev() here. */ } API/Symbol Deprecations
Reference: |
|||||
#1943 | AES-GCM crypto support for SRTP | nanang | enhancement | normal | release-2.6 | pjmedia |
Description |
For GNU targets:
For Windows:
|
|||||
#1944 | Allow native window to be set for video output window on SDL | ming | enhancement | normal | release-2.5.5 | pjmedia-videodev |
Description |
To allow app to set the output window, the video device wrapper needs to support PJMEDIA_VID_DEV_CAP_OUTPUT_WINDOW capability and can be set using pjsua_vid_win_set_win() or VideoWindow::setWindow(). This ticket will add the support for SDL. |
|||||
#1947 | Support for OpenH264 v1.6.0 codec | nanang | enhancement | normal | release-2.6 | pjmedia |
Description |
Support for the open source implementation of H.264 codec from http://www.openh264.org. Requirement:
Implementation features:
Notes:
Below are the steps to use the codec: For GNU targets:
For Visual Studio:
For iOS:
For Android:
|
|||||
#1949 | Support video window manipulation for native preview | bennylp | enhancement | normal | release-2.6 | pjsua-lib |
Description |
Currently pjsua_vid_win API will return PJ_EINVAL if the video capture preview is native, such as on iOS. This means that application has to manually get the native window handle and use the OS API directly. However, this could be problematic, for example on iOS, the UIView window also contains a preview layer which is not exposed to the application. Hence, resizing the window container itself (by calling the iOS API) will not resize the preview layer itself. Thus, since the underlying pjmedia videodev implementation already supports such capabilities, this ticket will enchance pjsua_vid_win API to support them as well. |
|||||
#1951 | Add callback to configure SRTP setting and key in pjsua/pjsua2 | bennylp | enhancement | normal | release-2.6 | pjsua-lib |
Description |
Add callback on_create_media_transport_srtp()/onCreateMediaTransportSrtp() which allows app to modify the SRTP setting in order to specify the cryptos and keys which are going to be used. |
|||||
#1954 | Add WebRTC to third party component | bennylp | enhancement | normal | release-2.6 | third-party |
Description |
WebRTC AEC support is added in ticket #1888. However, building WebRTC separately has a few drawbacks:
This ticket will add WebRTC to the third party folder, use a specific version and include only the necessary source. Below is the steps to build and use WebRTC: For GNU targets
Additional step for iOS targets
Supported architectures for Android
For Visual Studio
|
|||||
#1956 | Support for setting audio input source capability in Android JNI audio device | nanang | enhancement | normal | release-2.6 | pjmedia-audiodev |
Description |
Add PJMEDIA_AUD_DEV_CAP_INPUT_SOURCE capability (as an alias of PJMEDIA_AUD_DEV_CAP_INPUT_ROUTE) to support changing audio input source. The value of this capability is PJMEDIA_AUD_DEV_ROUTE_CUSTOM + the_desired_audio_input_source_constants. For example: // 6 is VOICE_RECOGNITION unsigned aud_source = PJMEDIA_AUD_DEV_ROUTE_CUSTOM | 6; pjmedia_aud_param_set_cap(¶m, PJMEDIA_AUD_DEV_CAP_INPUT_SOURCE, &aud_source); Valid audio input source values can be found in Android doc here. Thanks to Johan Lantz for the suggestion. |
|||||
#1960 | Export SIP transport TLS state and TLS certificate info to PJSUA2 | bennylp | enhancement | normal | release-2.6 | pjsua2 |
Description |
The ticket will provide the TLS transport information via the existing Endpoint::onTransportState() callback. This way, application can check the SSL certificate information in PJSUA2 and decide to keep the transport or close it by calling Endpoint::transportShutdown(). The following will be implemented in this ticket:
|
|||||
#1963 | QoS for IPv6 for platform that supports IPV6_TCLASS | bennylp | enhancement | normal | release-2.6 | pjlib |
Description |
This patch changes the BSD sockets implementation of QoS to use IPV6_TCLASS for IPv6 sockets instead of IP_TOS. Summary of changes:
Thanks to Michele Cicciotti for the patch. |
|||||
#1964 | QoS for darwin OS which supports SO_NET_SERVICE_TYPE | bennylp | enhancement | normal | release-2.6 | pjlib |
Description |
The latest XNU kernel, shipped with iOS 10, Mac OS 10.11, AppleTV OS 10, etc. supports a new socket option, SO_NET_SERVICE_TYPE, a high level API for configuring a socket's QoS, which the OS will appropriately and transparently map to a DSCP or WMM priority depending on the network connection. This patch introduces a new implementation of the socket QoS functions specifically for the Darwin platform, that makes use of SO_NET_SERVICE_TYPE when available, and falls back to IP_TOS/IPV6_TCLASS elsewhere. Changes introduced by this patch:
Backwards/forwards compatibility considerations: on older Darwin platforms, the SDK doesn't define SO_NET_SERVICE_TYPE, and QoS functions always use IP_TOS/IPV6_TCLASS instead. Running code compiled with an old SDK on a new operating system has the same behavior as it had before, and like before with the caveat that, at some point in the future, the OS may start ignoring the value set with IP_TOS/IPV6_TCLASS on newer Darwin platforms, SO_NET_SERVICE_TYPE is always used. Running code compiled with a new SDK on an old operating system makes attempts to get/set SO_NET_SERVICE_TYPE fail with ENOPROTOOPT, which the QoS function translate to PJ_ENOTSUP, which is handled with a runtime fallback on the old IP_TOS/IPV6_TCLASS code. For future reference, mapping of pj_qos_type might be changed according to the new standard. Please have a look at the draft: https://tools.ietf.org/html/draft-ietf-tsvwg-ieee-802-11-00 Thanks to Michele Cicciotti for the patch. |
|||||
#1965 | Add support to specify Contact params specific to REGISTER requests | bennylp | enhancement | normal | release-2.6 | pjsua-lib |
Description |
This feature could be useful for specifying PN (Push Notification) information to the server, such as the one described in the draft Push Notifications in the Session Initiation Protocol (SIP) For example: Contact: <sip:alice@alicemobile.example.com; pn-type=acme;pn-methods="INVITE"; pn-uri="https://pn.acme.example.com/ZTY4ZDJlMzODE1NmUgKi0K"> |
|||||
#1967 | Add function pjsip_tdata_get_dlg() | bennylp | enhancement | normal | release-2.6 | pjsip |
Description |
This ticket adds the function pjsip_tdata_get_dlg() which is similar to the pjsip_rdata_get_dlg(), but for tdatas. This is very useful to use from inside a module to know if a particular outgoing request/response should be modified based on it belonging to a dialog. Thanks to Kal (b17 c0de) for the patch. |
|||||
#1970 | Add function pjmedia_rtp_decode_rtp2() | nanang | enhancement | normal | release-2.6 | pjmedia |
Description |
This ticket will introduce pjmedia_rtp_decode_rtp2() which is similar to pjmedia_rtp_decode_rtp() but adds additional out parameter to return the additional RTP header in the packet if any. Currently the additional RTP header will point to RTP header extension. It would be useful to other people who need to parse the RTP header extension. Thanks to Kal (b17 c0de) for the original patch. |
|||||
#1975 | Add support to select elliptic curve and signature algorithm for TLS | bennylp | enhancement | normal | release-2.6 | pjsip |
Description |
This ticket will add the following enhancements to TLS:
which may be useful to conform to NIAP protection profile. |
|||||
#1976 | Support to generate a synthesized IPv6 address from IPv4 address | bennylp | enhancement | normal | release-2.6 | pjsip |
Description |
Add support to generate a synthesized IPv6 address from IPv4 address. The ability to synthesize IPv6 addresses was added to getaddrinfo in iOS 9.2 and OS X 10.11.2 (reference: Apple's doc). Thanks to Jamil Abdullayev for the patch. |
|||||
#1977 | Add attach2() and pjmedia_transport_attach2() to pjmedia transport interface | nanang | enhancement | normal | release-2.6 | pjmedia |
Description |
This patch adds a attach2() member function to pjmedia_transport_op and the corresponding pjmedia_transport_attach2() function. These new functions take an additional parameter for the media stream and type. This allows all transport adapters in the chain to have access to the media stream and type. Thanks to Kal (b17 c0de) for the original patch. |