- iOS hotfix: In iOS 13 the local video could fail to show up / being sent. The new iOS version changed the video format by adding a padding at the end of each row of pixels causing a 1280×720 image to be 1280×768 in memory. The new hotfix will remove this padding and make sure the C# side remains compatible to all earlier versions.
- The built-in version number will still be “V0.9841” only the asset store version number had to be increased to “V0.9842” to trigger the update + notification
- revert CallApp.prefab to restore Unity 2017 compatibility for now
- Android: Fixed bug that caused the video stream not being sent if MediaNetwork.TryGetFrame wasn’t called or ICall.LocalFrameEvents wasn’t set
- Android: Updated the CallApp & Conference examples to reliably trigger camera & microphone permission with newer Unity versions
- Windows: Fixed bug that prevent microphone access / audio being sent to the remote side if native echo cancellation was supported by the device and the device did not receive any audio while sending
- iOS build with Xcode 10.1 and iPhoneOS12.1 for arm & arm64
- Android build armeabi-v7a, arm64-v8a, x86 using ndk-r16b and sdk 28, jdk 1.8 (requires JavaVersion.VERSION_1_8)
- WebRTC’s Unified plan is now used by default. For now you can turn this off on native platforms via Byn.Awrtc.Native.InternalDataPeer.
- ICall can return more accurate error information via ErrorEventArgs.Info
- Property NetworkEvent.ErrorInfo added to return error information for some events e.g. ConnectionFailed. More detailed information + fixed error codes will be added to this later.
- CallApp update: Changed the UI to work with world canvas in VR applications (Samsung Gear VR / Oculus example coming soon)
- Added GetBufferedAmount to native & WebGL
- WebGL: added an error message to show when autoplay restrictions block playback. This situation can’t be handled by the asset itself yet.
- WebGL: Support for async init to have video devices available from the first frame
- WebGL: updated to better work with recent Chrome changes and if loaded via http / file: url’s (mediaDevices null)
- WebGL: Will fail now during init some WebRTC features aren’t available to avoid cryptic error messages during runtime
- Android: The callapp will request android permissions to access Audio / Video devices as required for Unity 2018.3 and higher
- Added support for custom signaling systems
- All platforms send out a heartbeat every 30 seconds while connected to the signaling server. Disconnects will be detected after around 15-30 seconds instead of relying on Websocket timeout detection
- signaling server: flag log_verbose allows to turn off most log messages via the config.json. This can increase connection speed!
- signaling server: dependencies have been updated due to security issues. Make sure to keep your server up-to-date
- signaling server V0.984: Update signaling server and protocol to support heartbeat & different protocol versions. Old servers still work but will report protocol errors due to the new messages! Update to V0.984 if clients are updated
- Native platforms: Removed old obsolete “RTC” classes.
- MaxOSX + Windows: Added support for two devices that have the exact same name. The asset will add numbers to the name and uses ID’s to internally address them
- Windows: Fixed a crash that could happen if another system accessed a video device before the asset without releasing the handle
- Updated to Unity 2018.4 LTS
- upgrade to WebRTC 72
- Added Android arm64 support (arm64-v8a)
- New video system is work in progress at the moment. The new version has a “_” prefix for device names
- Breaking change: WebRTC Network and Video have been merged. The namespace Byn.Awrtc contains all public classes now that were previously in Byn.Net, Byn.Media, Byn.Common. Updating your using commands to Byn.Awrtc should fix most compiling errors you might encounter
- Merged most C# assemblies
- Started supporting asynchronous init. Use UnityCallFactory.EnsureInit(OnCallFactoryReady, OnCallFactoryFailed) to allow the underlying platform to initialize asynchronous. This will be required for some platforms in the future (UWP and possibly WebGL)
- using adapter.js now to support a wider range of browser versions
- allows listing and selecting video devices
- Workaround for Firefox specific bug that could cause the local video not to show up
- Plugin is now built delivers as jspre plugin file and is using Webpack + modules to keep the use of global variables to a minimum. It is exposed via window.awrtc
- Updated WebRTC API calls to the modern specification / avoid browser warnings
- Added support for min,max and ideal FPS constraints for local video devices
- Browser version: A full browser version is now available that can connect to all other platforms and provides a similar API
- fixed an error in the plist file that caused the app store to remove armv7 support
- added H264 support
- Improved AndroidHelper
- Mobile: UnityCallFactory.Instance.IsFrontFacing / UnityCallFactory.Instance. GetDefaultVideoDevice added to make it easier to pick the front facing video device
- The asset is using asmdef files now
- Added detailed license information for third party libraries (see license_third_party.txt and license_webrtc.txt)
- Two new purchasable features are now available: Latest development version for UWP/HoloLens and dwrtc (a direct wrapper to access WebRTC). Please inquire by email for more detail.
– Removed obsolete wrapper methods. Recent changes in WebRTC broke most of them
– Update to WebRTC 64 + switching to newer compiler versions (XCode 9, VS 2017, newer NDK)
– Cleanup of log calls
– ICall.SetMute / IsMute added to silence the local microphone on all platforms
– Added mute button in the CallApp
– added bool Send(string, bool, ConnectionId) to ICall and IBasicNetwork to support high throughput data transfer
– Rework of the frame delivery system. RawFrame is obsolete and will be replaced with IFrame (will be completed in V0.983)
– for testing: some platforms can deliver frames in i420p which reduces CPU load (see SimpleCall example)
– Added first changes to support direct access to some WebRTC functionality in the future
– Android supports native video now (camera 1 or camera 2 API depending on the device). The old camera system is deactivated by default.
– added AndroidHelper.IsFrontFacing / IsBackFacing. For all platforms WebcamTexture can be used for this.
– Android native plugin is bundled into an .aar file now. Unity will automatically include necessary changes for the AndroidManifest.xml
– Android comes with a java plugin now to support platform specific features in the future
– Android IL2CPP support has been added
– iOS plenty of bugfixes and performance improvements
– iOS comes with an Objective C plugin now to support platform specific features in the future
– WebGL version updated to use newer API calls
– WebGL fixed several bugs related to various image resolutions / rotated images received from mobile phones
– Bugfix: using invalid device names could cause crashes on some platforms
– Bugfix: Video shouldn’t stop anymore if the scene is changed on Android
– Bugfix: Fixed problems with the loud speaker mode for iOS device
– Bugfix: multi-threading issues / stalling on shutdown or startup
– Documentation updated. Please visit https://www.because-why-not.com/webrtc to find out more
– Tutorials for signaling server & stun/turn server setup added: https://www.because-why-not.com/webrtc/tutorials-server-side/
– ICall received new methods to send String & byte to one or multiple users using UDP or TCP style channels
– Android video has been further optimized (full native camera access will come soon)
– CallApp has a new configuration button allowing users to change resolution and other settings
– CallApp shows now additional information if the image is clicked once
– CallApp will now save the last settings (based on the name if its GameObject to still allow multiple instances in one application)
– extra folder added. These are additional features requested by users and can be used at your own risk.
– extra VideoInput added. It can be used to stream custom images or from a Unity camera
– mobile devices won’t switch off screen any more of CallApp is used
– extra OneToMany added. It is an example how to use the IMediaInterface to stream to multiple recives.
– extra VideoConference added. An example how to create conference calls using ICall interface.
– example folder added. It contains several minimal examples to help new users.
See more here:https://www.because-why-not.com/webrtc/examples/
– mac native libraries uses proper bundle format now
– iOS workaround added. If a phone call ends Unity will turn off sound for all
AudioSources. IosHelper.UnitySetAudioSessionActive can be called after the call ended to switch
the Audio back into the correct mode. All AudioSources need to be restarted after it.
– signaling server contains now a webserver to make testing and use of https://letsencrypt.org/ easier
– iOS support (arm + arm64). Please check the readme.txt for how to build it.
– Removed log messages / errors appearing with Unity 2017.2
– C++ side was rewritten entirely replacing all callbacks with a polling based system
– Using the debugger in Unity should work better now
– Video Frames will now be automatically dropped if the Update method isn’t called quickly enough (e.g. during a FPS drop)
– IMediaNetwork is now supported and can be created using UnityCallFactory.Instance.CreateMediaNetwork
It works similar to WebRTC Network’s IBasicNetwork interface but adds audio and video to make broadcasting to
audio / video to multiple users easier
– UnityCallFactory.SetLoudspeakerStatus / GetLoudspeakerStatus added. Mobile devices treat WebRTC calls like regular phone calls
requring the speakers to be manually turned on.
– WebGL version was adapted to recent changes in Chrome. The CallEnded event should now be triggered during disconnects due to network failure
– CallApp was improved to better support mobile platforms + a new button was added to change SetLoudspeakerStatus
– Numerous smaller bugfixes and changes based on user reports received in the past few months
– WebGL and native ICall and IMediaInterface supports now new methods: SetVolume, HasVideoTrack, HasAudioTrack
– Android x86 is now supported
– Updated AndroidHelper.cs. It now includes functions to change volume or switch to IN_COMMUNICATION mode
(to allow the user to change the volume via the volume keys)
– Works with Unity 5.6 WebGL now
– Update to WebRTC 56
– Android version heavily optimizes + improvement in documentation (check readme.txt !!!)
– added Echo cancellation support for native applications (see CallApp.Start())
– UI improvement in CallApp
– Stun / Turn servers are now fully supported including username / password for login
– Bugfixes for Android
– Video support for Android and Mac via Unity video texture
– Update WebRTC version to the same as Chrome 53
– Stun server and signaling server can be changed in prefabs
– Added support for Android and OSX (video support is not yet stable!)
– Added support for broadcast / multicast networks (configured at server side))
– New events ConfigurationComplete and ConfigurationFailed triggered by ICall.Configure calls
– Video Conferences are now supported! Activate it using the NetworkConfig.IsConference flag.
Conference Call example app follows soon!
– The resolution of the local webcam can be changed now (see class MediaConfig)
– Added support for WebGL
– some optimization / increase in performance
– Initial release