Milestone release-2.10

2 years late (Dec 31, 2019 12:00:00 AM)

86%

Total number of tickets: 76 - closed: 65 - active: 11

applications

2 / 2

common

3 / 6

pjlib

6 / 7

pjmedia

17 / 20

pjmedia-audiodev

3 / 3

pjmedia-videodev

3 / 3

pjnath

7 / 7

pjsip

14 / 14

pjsua-lib

4 / 8

pjsua2

5 / 5

python

1 / 1

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

  1. 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.
  2. 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.
  3. 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.
  4. 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:

#2153
Make timer entry structure opaque
#2220
Add list of trusted root CA for OpenSSL
#2225
Timer heap refactoring
#2249
Use sorted linked list for timer

pjnath:

#2217
Omit deprecated IPv6 addresses from ICE candidates
#2263
Add callback to notify when first valid pair is found on ICE negotiation

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:

#2253
Support for VP8 and VP9 video codec
#2255
Add API for making video window full screen

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:

#2105
Add option to specify SWIG bindings
#2233
Change enumeration typemaps in SWIG Java
#2258
Add PJSUA2 API to get and set OPUS codec setting

applications, python, unit-tests, third-party:

No results


List of Bugs

common:

#2207
Fix build failure when using Android NDK r20
#2210
Miscellaneous fixes
#2237
Revisit timer usages

pjlib, pjlib-util:

#2221
When using Openssl as TLS backend, close notify alert is not sent before closing the connection
#2235
UDP transport restart might not get called when replace_udp_socket() fails.
#2244
Prevent continuous memory allocation when getting raw certificate on TLS

pjnath:

#2213
First packet for TURN over TCP might get dropped
#2214
Check for PJ_ICE_ST_MAX_CAND when adding new ICE candidate
#2218
ICE initialization issue if an error happens during allocating state
#2229
Limitations in ICE data sending
#2230
Timer crash in STUN session

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:

#2219
SWIG exception in mapping an invalid C++ enum value to Java (continuation of #2121)
#2232
Crash on Endpoint::libDestroy() when there is an active call

applications, python, unit-tests, third-party:

#2256
Failed building SWIG java binding for android (x86 target)
#2260
Potential deadlock between sip_transaction and sip_reg
#2265
Compatibility issues on Python 3.7 or above


List of Tasks

#1820
Helgrind thread error detector test and analysis
#2143
Investigate AEC info to be added into call info & statistics dump
#2167
Perform RTP fuzzing

Note: See TracRoadmap for help on using the roadmap.