IceLink 3 Release Notes

3.0.9

  • Feature: Added FM.IceLink.WebSync4.ClientExtensions.ReconnectRemoteClient(PeerClient) allowing user code to reconnect failed connections using existing setup. Updated examples to showcase this feature;
  • Feature: Added FM.IceLink.SessionDescription.SessionId, FM.IceLink.SessionDescription.SessionVersion exposing Origin Attributes from SDPs;
  • Feature: Added MaxPayload property to Native.cs in OpenH264 to allow MTU adjustments for SinglNAL packetization mode;
  • Feature: Renamed Xamarin Forms example to Chat.WebSync4;
  • Feature: Exposed ActiveX Mute/Unmute methods;
  • Feature: Upgraded Chrome screen sharing extension for audio support during screen sharing.
  • Bug fix: Fixed a bug where competing Offers were sometimes not properly resolved resulting in Offer/Answer collisions at connection startup or at renegotiation;
  • Bug fix: Fixed bug in Java Server example causing icelink.key not to load;
  • Bug fix: Resolved bug causing ActiveX to not install in IE;
  • Bug fix: Fixed null reference exception when recording local preview;
  • Bug fix: Resolved Mono bug in RSA verifyData method causing Unity runtime exception during startup.

3.0.8

  • Feature: Support for SDP Renegotiation of MediaStream Direction;
  • Feature: Exposed SignallingState on Connection object on all platforms;
  • Feature: Exposed NonTrickleIce mode in TypeScript / JavaScript;
  • Feature: Web example now uses responsive design to support mobile browsers;
  • Feature: AES is back on software encryption after results from load testing with multiple peers;
  • Feature: Media Add/Remove track methods are now virtual to allow overriding;
  • Feature: Added Promise.All(Future[] promises) that resolves when all passed in promises resolve;
  • Feature: Added MediaConfig.IsEquivalent;
  • Feature: Added StringExtensions.replace for TypeScript / JavaScript;
  • Feature: Added Tag to MediaPipe/Sink/Source/Stream to assist with identification of media elements in pipeline JSON;
  • Feature: Updated MediaPipe to always process through sinks that are not disabled, even if the input/output formats are identical - it's up to the pipe itself to decide whether it can bypass processing, since there are valid use cases for transforming or modifying media without a difference between the input/output format;
  • Feature: Added default constructors to Opus Decoder/Encoder/Depacketizer/Packetizer;
  • Feature: Added default constructors to Pcmu/Pcma Encoder/Depacketizer/Packetizer;
  • Feature: Added constructor overload for AudioTrack and VideoTrack that takes an array of tracks and converts them to an AudioBranch/VideoBranch respectively, eliminating this step from being necessary in custom track-building code;
  • Feature: SDP Connection and SDP Media attributes now contain ip address and port of the local candidate of the currently active candidate pair if one is set.
  • Bug fix: Fixed the bug where connections were sometimes not removed from ConnectionCollection in ClientExtensions when connections closed or failed;
  • Bug fix: Fixed the bug where the Gatherer does not generate an error when all the ports are in use, preventing opening new sockets;
  • Bug fix: Fixed the video depacketizers so they no longer allow corrupt frames to go through in some scenarios;
  • Bug fix: Android x86 libraries should now be available;
  • Bug fix: Initial setViewScale value no longer ignored by DomVideoSink;
  • Bug fix: macOS example now more closely follows .NET example;
  • Breaking Change: FM.IceLink.Sdp.Ice.NetworkProtocol is now FM.IceLink.Sdp.Ice.TransportProtocol;
  • Deprecation: FM.IceLink.Sdp.MediaDescription.InsertMediaAttribute(FM.IceLink.Sdp.Attribute, int) is deprecated in favour of FM.IceLink.Sdp.MediaDescription.AddMediaAttribute(FM.IceLink.Sdp.Attribute).

3.0.7

  • Feature: Added DataBuffer pooling to Xamarin iOS VideoSource;
  • Bug fix: Updated and fixed ActiveX detection to resolve Xamarin freeze on Join;
  • Bug fix: VideoDepacketizers now ensure late assembled VideoFrames are not raised to VideoDecoders to thwart delta/slice frames from causing macro blocking;
  • Bug fix: Java Win_x86 Vpx no longer requires VC++ redistributable;
  • Bug fix: Adjusted VP8 and h.264 Depacketizers to handle cases of RtpSequenceNumber wrap-around mid frame;
  • Bug fix: YUV-to-RGB conversion caused rendering of images to be split into individual Red, Green and Blue planes when running the the Java examples on Windows (Merged in from 3.0.6.65 Hotfix);
  • Bug fix: Fixed Receive-only bug in Java Example.

3.0.6

  • Feature: Async LogProviders;
  • Feature: ActiveX CAB now in Libraries and Web Example;
  • Feature: Modified some internal naming conventions to help ensure the App Store doesn't mistakenly flag certain API calls;
  • Feature: Packaged native libs into jars to simplify platform detection and deployment;
  • Feature: Added Unit, Pair, and Tuple convenience methods;
  • Feature: Updated Connection's ORTC wrappers to map to/from rtcp-fb and fmtp media attributes;
  • Feature: Beefed up the NET/Server example.
  • Bug fix: Xamarin iOS audio quality has been improved due to some performance improvements in the audio source;
  • Bug fix: Fixed a bug in iOS where TCPSocket was using main thread;
  • Bug fix: Ensured that ICE Gatherer does not prematurely transition to Completed state when a SocketManager fails immediately on startup;
  • Bug fix: Fixed a bug where the VideoToolbox h.264 decoder was not blocking decode on pending keyframes;
  • Bug fix: Fixed a bug in Xamarin where enabling recording caused null reference exception in iOS;
  • Bug fix: Fixed console/dom log provider bug in TypeScript/JavaScript;
  • Bug fix: Resolved an issue which caused Java screen source to not raise frames.

3.0.5

  • Feature: ActiveX support has been added along with an example of how to build and sign your own cabs;
  • Feature: Experimental support for Unity via libraries and API docs has been added;
  • Feature: Several performance enhancements have been made for Xamarin and Mono;
  • Feature: Feature: RTP Transport is now factoring in round trip times when sending NACKs to help reduce network congestion;
  • Feature: More robust detection of connectivity loss on a given CandidatePair has been added. A particular CandidatePair is reported to have lost connectivity after 3,000 ms. A stream is reported to have lost connectivity when all the CandidatePairs remain in the lost connectivity state for 10,000 ms (this value can be chnaged via the Connection.DeadStreamTimeout interface).
  • Feature: Resolved a bug preventing full connectivity establishment when RTP/RTCP multiplexing was disabled (for Audio and Video streams);
  • Feature: Resolved a casting issue for SRControlFrames;
  • Feature: Added support for non-zero, and unsynced audio / video source presentation timestamp start-points;
  • Feature: Fixed FEC disable bug and Opus Encoder quality/bitrate bug;
  • Feature: Resolved a bug in UI thread for Xamarin.Android;
  • Feature: OpenGLView in Xamarin.iOS is no longer throwing an exception on startup;
  • Feature: TypeScript no longer causes a crash when Video is set to false;
  • Feature: FM.IceLink.NAudio no longer causes clipping.

3.0.4

  • Bug Fix: Ensured that ICE Gathering does not shut down when TURN allocation fails in certain fatal cases on a given socket. Instead, ICE connectivity check is still conducted for local host candidatesl
  • Bug Fix: Ensured that fatal Socket Manager and Gatherer errors are reported to Connection when Connection fails due to fatal issues on those levels;
  • Bug Fix: Fixed a bug causing stack overflow on macOS TURN server running on macOS Sierra 10.12.3 beta 2;
  • Bug Fix: Fixed a bug where server reflexive candidates were not raised to Connection when prepared based upon PublicIPAddresses property of Connection. Added additional logging when creating Gatherers;
  • Bug Fix: Resolved issue in RTCP Sender Report's RTP timestamp;
  • Bug Fix: Resolved issue in RTCP report feedback where ReceptionReportCount wasn't being set in Sender Reports causing malformed error in some versions of Chrome.

3.0.3

  • Feature: Added support for Xamarin iOS, Android, along with examples for iOS, Android and Forms.
  • Feature: DataBuffer pooling is now enabled in the media layer. DataBuffers will now get reused to prevent Garbage Collection from running as often.
  • Feature: Added new DTLS algorithm profiles to ensure compatibility with other services.
  • Feature: Support for some atomic operations.
  • Feature: Removing SDES support from SDP offers for compatibility with Chrome 57.
  • Feature: Changed Serializer to JsonSerializer.
  • Feature: Removed LegacyCandidate and LegacyOfferAnswer.
  • Bug Fix: Resolved issue where RTP Timestamp was not being synchronized with first RTP packet timestamp.
  • Bug Fix: Resolved issue where RTCP report blocks were not being sent with sender reports.
  • Bug Fix: Resolved TypeScript build issues so latest JavaScript examples are up to date.
  • Bug Fix: Updated .NET ScreenCaptureProvider to handle locked screens.
  • Bug Fix: Resolved a bug where ICE failed when connecting to Firefox 50 and above due to changed ICE Candidate transport type declaration.
  • Bug Fix: Resolved a bug where application was crashing on generation of odd-length DTLS fingerprints.
  • Bug Fix: Updated Java UI example to ensure that application does not crash when Data Channels text box has small size.

3.0.2

  • Feature: Improved efficiency of socket error reporting.
  • Feature: Updated Android Build tools to 25.0.1 for Android example.
  • Bug Fix: Resolved issue where inputs were unable to be set in JavaScript/TypeScript.
  • Bug Fix: Fixed a bug where Connection was raising Closing and Closed states twice on shutdown in JavaScript.
  • Bug Fix: Fixed a bug where Error property of Connection was sometimes not set on transition to Failing and Failed states.
  • Bug Fix: Upgraded TCP Socket implementation for Cocoa to CocoaAsyncSocket 7.5.1 fixing issues with deallocated memory access on TCP socket shutdown.
  • Bug Fix: Local peer-to-peer connectivity is now established when no STUN servers are specified.
  • Bug Fix: Fixed a bug preventing from obtaining allocations from the Java-based TURN servers.
  • Bug Fix: Resolved issue causing null reference exceptions under certain scenarios when DNS resolution failed.

3.0.1

  • Feature: Added jniLibs for win_x86, win_x64.
  • Feature: Added experimental jniLibs for linux_x86, linux_x64, armv8, and arm64.
  • Feature: Added screen sharing to iOS and Android Chat examples.
  • Feature: Added Java Server example.
  • Feature: Implemented SCTP RFC 7053 SACK-IMMEDIATELY, where SCTP transport can request acknowledgments from peer. Optimised SCTP acknowledgment generation and dispatch.
  • Feature: Internet protocol used to discover candidates is now logged for local candidates, making it easier to identify which candidates were discovered over TCP.
  • Bug Fix: Resolved issue where after backgrounding and foregrounding iOS app, video was not being rendered.
  • Bug Fix: Several bug fixes around hard disconnects of turning off and on WiFi in ongoing conference.
  • Bug Fix: Android Chat example now keeps screen on during a call.
  • Bug Fix: Resolved a memory leak where rtcp-mux policy was set to null on RemoteDescription.
  • Bug Fix: Resolved video rotation issue on iOS Swift example.
  • Bug Fix: Several UI fixes in Cocoa examples.
  • Bug Fix: Resolved a bug causing disconnection after 30 seconds if a stream attached to Connection started with a direction of inactive.
  • Bug Fix: Connection dead stream timeout is now enforced.
  • Bug Fix: Fixed the issue where LocalCandidates that were raised as a part of SDP Session Description were not raised through via the OnLocalCandidate event. Such Candidates have their Dispatched property set.

3.0.0

  • Initial release.