Skip to content
This repository has been archived by the owner on Mar 22, 2022. It is now read-only.

Releases: microsoft/MixedReality-WebRTC

MixedReality-WebRTC 2.0.2

30 Sep 11:48
Compare
Choose a tag to compare

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.

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

21 Sep 15:37
Compare
Choose a tag to compare

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.

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

04 Aug 14:33
2c5b29a
Compare
Choose a tag to compare

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.

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

24 Jul 14:22
Compare
Choose a tag to compare
Pre-release

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.

C/C++ Library

Native shared library (DLL) exposing a pure C interface (C ABI compatible) for easy interoperability with C and C++ applications.

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

06 Mar 09:49
f773f40
Compare
Choose a tag to compare

This is a hotfix release of MixedReality-WebRTC.

See CHANGELOG.md for a breakdown of changes.

NuGet packages

C# Library

C++ Library

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

04 Dec 15:05
8c958f9
Compare
Choose a tag to compare

This is a hotfix release of MixedReality-WebRTC.

See CHANGELOG.md for a breakdown of changes.

NuGet packages

C# Library

C++ Library

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

08 Nov 16:55
Compare
Choose a tag to compare

This is a hotfix release of MixedReality-WebRTC.

See CHANGELOG.md for a breakdown of changes.

NuGet packages

C# Library

C++ Library

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

30 Oct 11:56
Compare
Choose a tag to compare

The is the first stable release of MixedReality-WebRTC.

See CHANGELOG.md for a breakdown of changes.

NuGet packages

C# Library

C++ Library

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

25 Oct 11:26
Compare
Choose a tag to compare
Pre-release

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

C++ Library

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 header include/api.h has been demoted to internal and moved/renamed to src/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

16 Oct 17:40
Compare
Choose a tag to compare
Pre-release

The is a release candidate for the first stable release of MixedReality-WebRTC.

NuGet packages

C# Library

C++ Library

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