IceLink 3.0.11 was released over the weekend. This release focused on A/V and connection quality with some refactoring of the Web examples in order to highlight API parity between the browsers, ActiveX plugin, and the native iRTC stack.
There are currently three known issues in this release as outlined below.
- Pooled buffers and buffer subsets can now be resized as long as the operation does not require the allocation of new memory;
- Exposed FM.IceLink.Candidate.TurnTransportProtocol that gets or sets Transport Protocol in use by this candidate when communicating with Turn (relay) server;
- Upgraded WebSync libraries to 4.9.25;
- Added source code to pre-generate DTLS certificate in Xamarin Examples to cut down connection times;
- Added Candidate and description logging for ActiveX;
- Added generic Exception handler to UdpSocket;
- Added support in iOS h.264 decoder for Single NALU mode.
- Currently, Android x86 devices work with audio-only mode and AEC disabled. Android x86 platforms throw UnsatisfiedLinkErrors when loading audio processing or VPX codecs. We are investigating a resolution to these native libs to bring full support for x86 platforms running Android.
- macOS h.264 using VideoToolbox is logging NSOSStatusErrorDomain Code=-12902 when attempting to encode h.264 frames. We are in the process of building/shipping a hotfix for this issue.
- Audio quality degrades under severe networking conditions. There are no known bugs related to this issue, but we are aware that after 20% loss, some clipping is occurring. Beyond 30% loss, audio quality becomes unusable on some platforms. We are working towards improving our packet loss concealment algorithms to bring audio quality to usable levels with as much as 50% packet loss on networks with relatively short round trip times.
- Resolved an issue where a packet could be raised out-of-order by the FEC/jitter layer;
- Resolved an issue in the .NET SDK where a non-SocketException would not be handled by the UdpSocket receiving thread;
- Resolved an issue in the .NET SDK where a resize of the RTP packet for contributing sources could cause an exception depending on the type of the backing DataBuffer;
- Resolved an issue causing iOS to iOS conferences using h.264 to not render video;
- Resolved a stride issue causing video from h.264 video streams on iOS to have skewed rendered video on some models of iPhone;
- Resolved several audio issues on various Android OS versions and hardware causing sound not to render in some cases, volume to be low, etc. This is resolved in the Examples code as there is likely further refinement needed on other hardware. For example, Samsung S7 using Android 6.x would not render audio when using speaker phone, but would on Android 7.x. Nexus 6P would play low volume on all OSes tested;
- Resolved a logger issue where log messages longer than 2000 characters would be logged multiple times;
- Rebuild openh264 Android, Linux, and macOS libraries fixing a segfault in Java languages;
- Resolved an index out of bounds exception when null video buffers are passed to VideoFrames when Mute is enabled;
- Worked-around an issue where Chrome 39+ sends incorrect rollover counter in SRTP context;
- Resolve an issue in RCA Crypto layer causing an exception in Unity;
- Resolved an issue in Android.AudioRecordSource causing audio not to be rendered on some hardware when DataBuffer polling was enabled;
- Resolved an issue where SDP Direction is missing in session descriptions, assume that direction is SendReceive;
- Ensured that connection data in SDP media description is populated with a server reflexive candidate rather than the local candidate from the current Active pair;
- Resolved an issue in ActiveX installer where installation would not start after uninstalling a prior CAB;
- Resolved an issue where MediaStreams without Sources or Sinks were generating null reference exceptions on startup;
- Fixed a bug where a Connection detects loss of connectivity and then detects connectivity regain, then it still transitions to the FAILED state. Now connection remains in Connected state. This does not affect cases where Connection is lost permanently and attempt to establish a new connection is made.
Head on over to the Downloads page to pick up the latest!