Releases: microsoft/MixedReality-WebRTC
MixedReality-WebRTC 2.0.2
This is a hotfix release of MixedReality-WebRTC.
See CHANGELOG.md for a breakdown of changes.
Download
Unity packages
The MixedRealiy-WebRTC Unity library and its samples are distributed as Unity Package Manager (UPM) packages:
com.microsoft.mixedreality.webrtc
: Unity library with prebuilt binaries for Windows Desktop and UWP, and Android (ARM64 only).com.microsoft.mixedreality.webrtc.samples
: Optional package with samples and demo code. Do not use in production.
UPM packages are available via the official Microsoft Mixed Reality UPM package registry:
https://dev.azure.com/aipmr/MixedReality-Unity-Packages/_packaging?_a=feed&feed=Unity-packages
.
➡ UPM registry installation instructions
The UPM registry is the recommended way to consume those packages; once a project is configured, it allows simple one-click upgrade when a new version of MixedReality-WebRTC is published, via the Unity Package Manager window in the Unity Editor.
Alternatively, users may download packages manually and add them as local on-disk packages. Scroll down to the Assets section below to download the Unity UPM packages manually. Install instructions for manually downloaded packages are available from the Unity documentation.
NuGet packages
C# Library
.NET Standard 2.0 library. The packages are platform-dependent because they include the C/C++ library which contains the native implementation. There is no need to also download/include the C/C++ library packages.
C/C++ Library
Native shared library (mrwebrtc.dll
) exposing a pure C interface (C ABI compatible) for easy interoperability with C and C++ applications.
- Desktop : mrwebrtc 2.0.2
- UWP : mrwebrtc_uwp 2.0.2
Changes since v2.0.1
- Fix Unity warning about PDB
.meta
files (#595) - Fix path handling when building Android using Windows WSL (#575)
Known issues
Same as v2.0.1
MixedReality-WebRTC 2.0.1
This is a hotfix release of MixedReality-WebRTC.
See CHANGELOG.md for a breakdown of changes.
Download
Unity packages
The MixedRealiy-WebRTC Unity library and its samples are distributed as Unity Package Manager (UPM) packages:
com.microsoft.mixedreality.webrtc
: Unity library with prebuilt binaries for Windows Desktop and UWP, and Android (ARM64 only).com.microsoft.mixedreality.webrtc.samples
: Optional package with samples and demo code. Do not use in production.
UPM packages are available via the official Microsoft Mixed Reality UPM package registry:
https://dev.azure.com/aipmr/MixedReality-Unity-Packages/_packaging?_a=feed&feed=Unity-packages
.
➡ UPM registry installation instructions
The UPM registry is the recommended way to consume those packages; once a project is configured, it allows simple one-click upgrade when a new version of MixedReality-WebRTC is published, via the Unity Package Manager window in the Unity Editor.
Alternatively, users may download packages manually and add them as local on-disk packages. Scroll down to the Assets section below to download the Unity UPM packages manually. Install instructions for manually downloaded packages are available from the Unity documentation.
NuGet packages
C# Library
.NET Standard 2.0 library. The packages are platform-dependent because they include the C/C++ library which contains the native implementation. There is no need to also download/include the C/C++ library packages.
C/C++ Library
Native shared library (mrwebrtc.dll
) exposing a pure C interface (C ABI compatible) for easy interoperability with C and C++ applications.
- Desktop : mrwebrtc 2.0.1
- UWP : mrwebrtc_uwp 2.0.1
Changes since v2.0.0
- Fix Unity build on Android
- Fix support for Visual Studio Professional in build scripts
- Fix occasional crash when disposing a
VideoTrackSource
Known issues
Same as v2.0.0
MixedReality-WebRTC 2.0.0
This is the 2.0.0 stable release of MixedReality-WebRTC.
See CHANGELOG.md for a breakdown of changes.
Download
Unity packages
The MixedRealiy-WebRTC Unity library and its samples are distributed as Unity Package Manager (UPM) packages:
com.microsoft.mixedreality.webrtc
: Unity library with prebuilt binaries for Windows Desktop and UWP, and Android (ARM64 only).com.microsoft.mixedreality.webrtc.samples
: Optional package with samples and demo code. Do not use in production.
UPM packages are available via the official Microsoft Mixed Reality UPM package registry:
https://dev.azure.com/aipmr/MixedReality-Unity-Packages/_packaging?_a=feed&feed=Unity-packages
.
➡ UPM registry installation instructions
The UPM registry is the recommended way to consume those packages; once a project is configured, it allows simple one-click upgrade when a new version of MixedReality-WebRTC is published, via the Unity Package Manager window in the Unity Editor.
Alternatively, users may download packages manually and add them as local on-disk packages. Scroll down to the Assets section below to download the Unity UPM packages manually. Install instructions for manually downloaded packages are available from the Unity documentation.
NuGet packages
C# Library
.NET Standard 2.0 library. The packages are platform-dependent because they include the C/C++ library which contains the native implementation. There is no need to also download/include the C/C++ library packages.
C/C++ Library
Native shared library (mrwebrtc.dll
) exposing a pure C interface (C ABI compatible) for easy interoperability with C and C++ applications.
- Desktop : mrwebrtc 2.0.0
- UWP : mrwebrtc_uwp 2.0.0
Upgrading from 1.0
See the migration guide.
The 2.0 version introduces significant API changes. No upgrade mechanism is provided for Unity projects, which require manual fixup after updating.
Known issues
- (#27) On UWP, hardware-accelerated H.264 decoding was not yet confirmed at this time. There is a possibility it will not be available for the v2.0.0 stable release. In practice though decoding is rarely a bottleneck or even visible in profiling. Hardware-accelerated H.264 encoding is confirmed to work for devices supporting it (including HoloLens 2), with known performance issues that can affect CPU load (extra video frame copies).
- (#371) In Unity an AudioRenderer component can be coupled with Unity's own AudioSource component to output the remote audio through the Unity DSP pipeline, instead of directly to the device speakers. This feature is not fully implemented on UWP, such that adding an AudioSource component does not disable direct speaker output, resulting in duplicated audio output. Users using only an AudioRenderer with direct output to speakers (no AudioSource) are not affected.
MixedReality-WebRTC 2.0.0 preview 1
The is a release candidate (a.k.a. public preview) for the 2.0.0 stable release of MixedReality-WebRTC.
See CHANGELOG.md for a breakdown of changes.
Download
Unity packages
Scroll down to the Assets section below to download the Unity UPM packages:
com.microsoft.mixedreality.webrtc
: Unity library with prebuilt binaries for Windows Desktop and UWP, and Android (ARM64 only).com.microsoft.mixedreality.webrtc.samples
: Optional package with samples and demo code. Do not use in production.
Install instructions are available from the documentation.
NuGet packages
Note: The NuGet package version for release candidate packages now uses the same naming scheme as the Unity packages for consistency, that is "2.0.0-preview.N" instead of "2.0.0-rcN".
C# Library
.NET Standard 2.0 library. The packages are platform-dependent because they include the C/C++ library which contains the native implementation. There is no need to also download/include the C/C++ library packages.
- Desktop : Microsoft.MixedReality.WebRTC 2.0.0-preview.1
- UWP : Microsoft.MixedReality.WebRTC.UWP 2.0.0-preview.1
C/C++ Library
Native shared library (DLL) exposing a pure C interface (C ABI compatible) for easy interoperability with C and C++ applications.
- Desktop : mrwebrtc 2.0.0-preview.1
- UWP : mrwebrtc_uwp 2.0.0-preview.1
Upgrading from 1.0
See the migration guide.
The 2.0 version introduces significant API changes. No upgrade mechanism is provided for Unity projects, which require manual fixup after updating.
Known issues
- (#27) On UWP, hardware-accelerated H.264 decoding was not yet confirmed at this time. There is a possibility it will not be available for the v2.0.0 stable release. In practice though decoding is rarely a bottleneck or even visible in profiling. Hardware-accelerated H.264 encoding is confirmed to work for devices supporting it (including HoloLens 2), with known performance issues that can affect CPU load (extra video frame copies).
MixedReality-WebRTC 1.0.3
This is a hotfix release of MixedReality-WebRTC.
See CHANGELOG.md for a breakdown of changes.
NuGet packages
C# Library
- Desktop : Microsoft.MixedReality.WebRTC
- UWP : Microsoft.MixedReality.WebRTC.UWP
C++ Library
- Desktop : Microsoft.MixedReality.WebRTC.Native.Desktop
- UWP : Microsoft.MixedReality.WebRTC.Native.UWP
Changes since v1.0.2
- Integrate an upstream fix to control the quality of the H.264 encoder from WebRTC by forwarding the max QP requests to the encoder.
Known issues
Same as v1.0.2.
MixedReality-WebRTC 1.0.2
This is a hotfix release of MixedReality-WebRTC.
See CHANGELOG.md for a breakdown of changes.
NuGet packages
C# Library
- Desktop : Microsoft.MixedReality.WebRTC
- UWP : Microsoft.MixedReality.WebRTC.UWP
C++ Library
- Desktop : Microsoft.MixedReality.WebRTC.Native.Desktop
- UWP : Microsoft.MixedReality.WebRTC.Native.UWP
Changes since v1.0.1
- Integrate an upstream workaround for the H.264 encoder on HoloLens 1 introducing some artifacts when the video frame height is not a multiple of 16 pixels. By default MixedReality-WebRTC when running on HoloLens 1 will crop the frame such that the height becomes a multiple of 16 pixels to prevent those artifacts. This default behavior can be changed with
PeerConnection::SetFrameHeightRoundMode()
to pad the image instead, or altogether disabled. - Improve the dynamic rate at which the H.264 encoder on UWP is updating its target bitrate, decreasing the update delay from 15 seconds to 5 seconds to increase its reactivity to changes.
- Integrate an upstream change to avoid a crash when closing the video capturer on UWP under heavy CPU load or other constraints affecting the timing of the async Media Foundation call. (#134)
Known issues
Same as v1.0.1.
MixedReality-WebRTC 1.0.1
This is a hotfix release of MixedReality-WebRTC.
See CHANGELOG.md for a breakdown of changes.
NuGet packages
C# Library
- Desktop : Microsoft.MixedReality.WebRTC
- UWP : Microsoft.MixedReality.WebRTC.UWP
C++ Library
- Desktop : Microsoft.MixedReality.WebRTC.Native.Desktop
- UWP : Microsoft.MixedReality.WebRTC.Native.UWP
Changes since v1.0.0
- Integrate an upstream fix for the H.264 decoder "green band" artifact on UWP, which produced artifacts when the decoder was padding the input buffer. The actual video frame size is now correctly calculated.
- Various other small fixes; see CHANGELOG.md.
Known issues
Same as v1.0.0.
MixedReality-WebRTC 1.0.0
The is the first stable release of MixedReality-WebRTC.
See CHANGELOG.md for a breakdown of changes.
NuGet packages
C# Library
- Desktop : Microsoft.MixedReality.WebRTC
- UWP : Microsoft.MixedReality.WebRTC.UWP
C++ Library
- Desktop : Microsoft.MixedReality.WebRTC.Native.Desktop
- UWP : Microsoft.MixedReality.WebRTC.Native.UWP
Changes since RC2
- Fixed a buffer overflow in
I420AVideoFrame.CopyTo()
.
Known issues
- (#27) On UWP, hardware-accelerated H.264 decoding was not yet confirmed at this time, and should be considered not available; software decoding is instead used. Hardware-accelerated H.264 encoding is confirmed to work, with known minor performance issues remaining after the recent batch of fixes. Work on performance and video quality will continue past the v1.0.0 release. On Desktop, H.264 is not available, neither via software nor hardware encoding/decoding.
- (#107) On UWP, video quality with the H.264 hardware encoder is low at startup, and takes some time to improve. This can be mitigated by manually setting a higher start bitrate (#109) suited for the use scenario and known available network bandwidth. This mitigation has been added to TestAppUWP.
- (#92) Raw audio data is not directly exposed to C# and Unity, preventing scenarios like spatial audio or applying Unity audio effects. Instead audio is directly streamed internally by the C++ code to the platform's audio output device.
- (#75) SDP always negotiates both audio and video even if no track was added.
MixedReality-WebRTC 1.0.0 RC2
The is a release candidate for the first stable release of MixedReality-WebRTC.
See CHANGELOG.md for a breakdown of changes.
NuGet packages
C# Library
- Desktop : Microsoft.MixedReality.WebRTC
- UWP : Microsoft.MixedReality.WebRTC.UWP
C++ Library
- Desktop : Microsoft.MixedReality.WebRTC.Native.Desktop
- UWP : Microsoft.MixedReality.WebRTC.Native.UWP
Changes since RC1
- Several fixes for video freezes and/or low video quality using the H.264 hardware encoder. (#74, #101)
- C++ library headers have been promoted to public (moved to
include/
), while the interop headerinclude/api.h
has been demoted to internal and moved/renamed tosrc/interop/interop_api.h
. This is a first step toward a C++ API, which introduces a breaking change right now with the hope of avoiding one after the v1.0.0 stable release. - Fixed race condition sometimes leading to deadlock in WebRTC task queues initializing on UWP. (#95)
- Guarded against race condition in
PeerConnection.AddDataChannelAsync()
. (#89)
Known issues
- (#27) On UWP, hardware-accelerated H.264 decoding was not yet confirmed at this time. There is a possibility it will not be available for the v1.0.0 stable release. Hardware-accelerated H.264 encoding is confirmed to work, with known minor performance issues remaining after the current batch of fixes. Work on performance and video quality will continue past the v1.0.0 release.
- (#107) On UWP, video quality with the H.264 hardware encoder is low at startup, and takes some time to improve. This can be mitigated by manually setting a higher start bitrate (#109) suited for the use scenario and known available network bandwidth. This mitigation has been added to TestAppUWP.
- (#92) Raw audio data is not directly exposed to C# and Unity, preventing scenarios like spatial audio or applying Unity audio effects. Instead audio is directly streamed internally by the C++ code to the platform's audio output device.
- (#75) SDP always negotiates both audio and video even if no track was added.
MixedReality-WebRTC 1.0.0 RC1
The is a release candidate for the first stable release of MixedReality-WebRTC.
NuGet packages
C# Library
- Desktop : Microsoft.MixedReality.WebRTC
- UWP : Microsoft.MixedReality.WebRTC.UWP
C++ Library
- Desktop : Microsoft.MixedReality.WebRTC.Native.Desktop
- UWP : Microsoft.MixedReality.WebRTC.Native.UWP
Supported platforms
C++/C#
- Windows Desktop (x86, x64)
- Windows UWP (x86, x64, ARM32) including HoloLens 1 and HoloLens 2
Unity 2018.3+
- In-editor x64
- Standalone Desktop (x86/x64) via IL2CPP backend
- Standalone UWP (x86/x64/ARM32) via IL2CPP backend, including HoloLens 1 and HoloLens 2
Features
MixedReality-WebRTC is configured by default to use the Unified Plan SDP semantic.
Peer connection
Each peer connection supports peer-to-peer (1:1) communication only. There is no support for multi-peer (1:N) connections.
- Multiple peer connections per process
- Single local audio track per peer connection
- Single local video track per peer connection
- Single remote audio track per peer connection
- Single remote video track per peer connection
- Multiple data channels per peer connection
Signaling
- Abstracted (bring-your-own) signaling solution through
PeerConnection
events.
Video tracks
- H.264 hardware-accelerated encoding (UWP only; including HoloLens 1 and HoloLens 2)
- Software VP8, VP9 codecs
- Local video track mute (produces black frames)
Local video capture
- Video capture device and video capture format enumeration
- Video profile selection (UWP only)
- Optional capture resolution and/or framerate constraints
- Mixed Reality Capture (where available)
- On-screen recording indicator for MRC (where available)
Audio tracks
- Standard WebRTC audio codecs : OPUS, iSAC, G.722, iLBC, PCM (μ-law and A-law), Comfort Noise
- Local audio track mute (produces silence)
Local audio capture
No exposed device selection or configuration.
Data channels
- Ordered/unordered, reliable/unreliable data channels
Known issues
- (#74, #101) Video freezes and/or low video quality using the H.264 hardware encoder
- (#89)
PeerConnection.AddDataChannelAsync()
is not multi-thread safe - (#92) Audio data not exposed to C# and Unity
- (#75) SDP always negotiates both audio and video even if no track was added
- (#95) Race condition sometimes lead to deadlock in WebRTC task queues initializing on UWP