Roadmap
THIS ROADMAP PAGE IS DEPRECATED PLEASE GO TO GitHub Milestones
Release Focus
- WebRTC interop for video:
- RTCP-FB PLI
- VP8 and VP9 video codec
- Audio Enhancements
- Changing codec bitrate based on RTCP feedbacks, especially Opus (and AMR, Speex)
- Voice Processing IO for MacOS
- Timer refactoring
Backward incompatibility
- Due to #2209 (Insufficient variable storage to contain Expires header field/ parameter):
- Any sign comparison of expiration fields MUST be modified, for example: pjsip_contact_hdr.expires < 0 should be changed to pjsip_contact_hdr.expires == PJSIP_EXPIRES_NOT_SPECIFIED.
- Direct setting/comparison with -1 should still work, for example: pjsip_pres_inititate(sub, -1, ...) or pjsip_contact_hdr.expires == -1. This is because PJSIP_EXPIRES_NOT_SPECIFIED == (unsigned) -1. Nevertheless, for future compatibility, it is recommended to change any -1 to PJSIP_EXPIRES_NOT_SPECIFIED.
- Due to #2233 (Change enumeration typemaps in SWIG Java), Java applications needs to be updated:
- Accessing enumeration value is no longer using swigValue() method, e.g: pjsip_inv_state.PJSIP_INV_STATE_CONFIRMED.swigValue() must be changed to pjsip_inv_state.PJSIP_INV_STATE_CONFIRMED.
- All enumeration types are now int, e.g: pjsip_status_code code must be changed to int code.
- Due to #2251 (Deadlock between PJSUA LOCK and conference mutex):
- pjmedia_*_set_eof_cb() and pjmedia_*_set_cb() are deprecated and replaced with pjmedia_*_set_eof_cb2()/set_cb2(). The callbacks will now be asynchronous.
- Due to #2265 (Compatibility issues on Python 3.7 or above):
- PJSUA2 async field in OnCallRxReinviteParam is renamed to isAsync.
Ticket List:
List of Enhancements
common:
- #2208
- Change default arch for Android and iOS to 64-bit
pjlib, pjlib-util:
pjnath:
pjmedia, pjmedia-audiodev:
- #589
- Update Speex AEC to the latest version to get multichannel EC
- #1177
- SDP signaling for RTCP-XR
- #1297
- Dynamic payload type allocation
- #1437
- Video keyframe request/response using RTCP feedback Picture Loss Indication
- #1778
- Support for Voice Processing IO Audio Unit on Mac
- #2088
- Generate and negotiate telephone-event with multiple clock-rates in SDP offer/answer
- #2090
- Support trickle ICE
- #2250
- Enable OpenH264 native log
- #2257
- Filter SRTP crypto for setting DTLS-SRTP profile supported by by OpenSSL
pjmedia-videodev:
pjsip, pjsua-lib:
- #1049
- PJSUA-LIB should report disconnection event immediately after pjsua_call_hangup() is called
- #2211
- Use group lock instead of mutex for SIP dialog which is useful for B2BUA scenarios
- #2222
- Introduce a new compiler setting to allow to use cnonce for SIP authentication without hyphen character
- #2246
- Specify audio/video direction when making/answering call
- #2261
- Prevent unnecessary locking when adding group lock handler
- #2262
- Notify when IP change handling is completed
- #2266
- Allow Via header with IPv6 containing []
pjsua2, swig:
applications, python, unit-tests, third-party:
No results
List of Bugs
common:
pjlib, pjlib-util:
pjnath:
pjmedia, pjmedia-audiodev:
- #2124
- Separate DTLS-SRTP negotiation for RTP and RTCP
- #2212
- Fix potential buffer overflow in Video Toolbox codec
- #2215
- Reset jitter buffer after Opus ptime decreased
- #2223
- ALSA sound device wrapper implementation ignores period size returned by ALSA
- #2224
- De-Initialize ALSA sound device with snd_pcm_drop() instead of snd_pcm_drain() to avoid stuck issue
- #2228
- Bug in PCM shift in G722
- #2231
- Potential premature buffer reuse in UDP media transport
- #2234
- Memory leak with third party resampling
- #2236
- Exception in iOS Video Toolbox H264 due to UI API called on background thread
- #2247
- Distorted video sent by iOS 13 devices
- #2248
- Memory leak if stream fails to be created
- #2251
- Deadlock between PJSUA LOCK and conference mutex
- #2252
- Fix Darwin video issue if supplied image height is different from the resolution
- #2254
- Incoming SDP offer with SRTP-DTLS rejected with PJMEDIA_SDPNEG_ENOMEDIA
pjmedia-videodev:
- #2239
- Avoid crash in rendering after Android OpenGL reinit failure
pjsip, pjsua-lib:
- #1840
- Review API pjsua_transport_close()
- #2146
- Revisit IPv4/IPv6 settings and behavior in pjsua
- #2209
- Insufficient variable storage to contain Expires header field/ parameter.
- #2216
- Delays in sending SIP messages to IPv4 literal
- #2226
- Subscription gets terminated when NOTIFY in call transfer is challenged
- #2227
- Sending ACK not retrying next server
- #2238
- Local hold is not reset if there's failure during reinvite/update
- #2240
- Double destroy of invite session
- #2241
- Update Via header on CANCEL request for proxy scenario if the "sent-by" field is not set
- #2242
- Message buffer not set correctly in pjsip_rx_data_clone()
- #2243
- Transport reuse stops working after a transport error
- #2245
- Reconnect video stream listeners in video conference bridge after format changed
- #2259
- Fix check to cleanup provisional media
- #2264
- Potential deadlock between pjsua lock and sip transport's lock
pjsua2, swig:
applications, python, unit-tests, third-party:
List of Tasks
Wish List
common
pjlib
No results
pjlib-util
No results
pjnath
- #1022
- Universal Plug and Play (UPnP) support
pjmedia
pjmedia-audiodev
No results
pjsip
No results
pjsua-lib
applications
No results
python
No results
unit-tests
No results
third-party
No results
Known Issues
common
No results
pjlib
No results
pjlib-util
- #656
- Error processing DNS SRV response when SRV entries contain the same host
pjnath
- #647
- Assign STUN and TURN as default candidate only when the resolution/allocation is complete (thanks Stephen D. Strowes for the suggestion)
pjmedia
- #645
- Bad tone generated by the floating point backend with high tone frequency (thanks Olle Frimanson for the report)
- #1105
- SDP connection info with multicast address not parsed properly (thanks Simon Bolten for the report)
- #1178
- Handle SRTP SDES parameters
- #1198
- Wrong RTCP loss period calculation with multiple frames per RTP packet
- #1411
- Rejecting SDP (re)offer with c line 0.0.0.0 and port non zero, but no rtpmap for dynamic payload types
- #1543
- When multiple frames per packet is set, DTMF event retransmission is reduced
- #1973
- Data races in pjmedia stream
pjmedia-audiodev
No results
pjsip
- #378
- Implement merged request detection
- #530
- Transaction PJSIP_TSX_STATE_TRYING state is not propaged properly to dialog usages
- #949
- Refreshing session in Session Timer should also notice media transport attributes in SDP offer/answer.
- #1083
- The design of the SIP TLS transport may not allow multiple certificates to be loaded
- #1096
- Assertion in sending UPDATE after receiving 200/INVITE response without to-tag
- #1150
- Fail to process PIDF XML document if the nodes are namespaced (thanks Johan Lantz for the report)
- #1167
- Receiving 481 response while in early dialog stage does not seem to terminate the dialog
- #1711
- Reversed order of on_call_tsx_state() notifications on incoming request within call
- #1992
- Set INVITE transaction state to Terminated after sending OK
pjsua-lib
- #1082
- Plain SIP URI is used in Contact header with SIPS destination
applications
No results
python
No results
unit-tests
No results
third-party
No results
These are list of features and fixes that we want to implement in 2.x lifetime. These tickets are here because we don't have a definite time frame on when they will be implemented (otherwise they will go to a specific release version), so please don't ask for more specific plans for these.
Wish List
Things that we wish to implement in 2.x:
common
No results
pjlib
No results
pjlib-util
No results
pjnath
No results
pjmedia
No results
pjmedia-audiodev
No results
pjsip
No results
pjsua-lib
No results
applications
No results
python
No results
unit-tests
No results
third-party
No results
Known Issues
Defects that we wish to fix in 2.x:
common
No results
pjlib
No results
pjlib-util
No results
pjnath
No results
pjmedia
No results
pjmedia-audiodev
No results
pjsip
No results
pjsua-lib
No results
applications
No results
python
No results
unit-tests
No results
third-party
No results