All notable changes to the webrtc package will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Add Encoded Transform API.
- Add
RTCRtpReceiver.GetContributingSources
method. - Add Metadata and Encrypt into package sample.
- Upgrade NVIDIA Codec SDK 12.0.
- Change to send SPS and PPS when using the encoder of NVIDIA video codec.
- Fix unhandled NVENCException's occurring during initialization & reconfigure calls when using NVIDIA video codec.
- Fix crash on dedicated Linux Server.
- Fix a performance issue of video streaming with Unity 2022.2
- Fix KeyNotFoundException in
RTCPeerConnection
when firing the callback after disposing the its instance. - Fix crash when streaming high resolution video on Android device.
- Fix memory leak on macOS/iOS when streaming high resolution video.
- Fix the crash when launching Unity Editor on a command line with
-nographics
option.
- Upgrade libwebrtc M107.
- Change that invoking initialization process automatically just after launching Unity Editor.
- Obsolete
WebRTC.Initialize
andWebRTC.Initialize
.
- Fix not displaying profiling result of encoding thread on Unity Profiler on macOS.
- Fix stopping at first received frame for seconds when using H264 codec.
- Fix the crash when streaming video which resolution is small on macOS Apple Silicon.
- Fix the freeze when using over WQHD (2560×1440) resolution on Ubuntu 20.04.
- Finish Bitcode support.
- Finish Unity 2019.4 support.
- Add
AudioStreamTrack
constructor to setAudioListener
. - Change
WebRTC.Initialize
method to not throw exception when using OpenGL Core on Windows or macOS. - Remove dependency libc++.so.1 in Linux native plugin
- Fix
SetRemoteDescription
andSetLocalDescription
method ofRTCPeerConnection
class to work correct when calling multiple at the same time.
- Add ValidationExceptions.json to suppress warnings about the package validation.
- Stop to use flip shader so that removing
Resources
folder. - Change parameter of
VideoStraamTrack.CaptureStreamTrack
method.
- Fix a bug when calling
GetStats
method multiple times at the same time.
- Fix crash when streaming video between different platforms.
- Fix the crash bug on Android devices like pixel4a when using Vulkan.
- Supported video encoding framerate control.
- Added the items in Profiler Window to show the CPU loads of video encoding/decoding thread.
- Add a new sample "ReplaceTrack" to demonstrate
RTCRtpSender.ReplaceTrack
method.
- Changed arguments of
RTCPeerConnection.AddTransceiver
method to pass initial information ofRTCRtpTransceiver
when instanting it.
- Fixed the crash because of the old version of NVIDIA graphics driver.
- Fixed the issue when garbage collected but the finalizer hasn't been called.
- Improved performance of video streaming when using Vulkan graphics API.
- Supported Unity 2021.3 LTS.
- Added clang-format file.
- Added CMakePresets.json file.
- Supported NVIDIA decoder for H264 codec.
- Added the codec selection option and video resolution option in the menu scene.
- Moved CPU loads of the color conversion from the rendering thread to the worker thread.
- Upgraded NVIDIA Codec SDK 11.0.
- Removed unnecessary dependencies of the native plugin on Linux.
- Removed an argument
EncoderType
forWebRTC.Initialize
method. - Removed
WebRTC.HardwareEncoderSupport
method.
- Fixed a crash bug where disposing
AudioStreamTrack
on a receiver side.
- Added the ability to execute pending native tasks manually from the main thread.
- Added support for sending basic native collections (
NativeArray<T>
,NativeSlice<T>
andNativeArray<T>.ReadOnly
) toRTCDataChannel
. - Added a property
RTCRtpTransceiver.Mid
. - Added an argument
enableNativeLog
forWebRTC.Initialize
method. - Added "E2ELatency" scene in the sample.
- Added a constuctor without arguments in
AudioStreamTrack
class.
- Upgraded libwebrtc M92.
- Changed compiler for native plugin on Windows (MSVC to Clang).
- Changed to use
OnAudioFilterRead
method inMonoBehaviour
for audio rendering. - Changed resizing texture dynamically on receiver side when using a property
scaleResolutionDownBy
inRTCRtpEncodingParameters
class. - Changed the exception type
ObjectDisposedException
when accessing instance after call Dispose method.
- Fixed a crash bug where initializing video streaming on Unity Editor on Apple Silicon.
- Fixed a crash bug where configuring OpenGL Core as a graphics API on Unity Editor on windows.
- Fixed a bug that sending stereo audio produces mono clip on some peers.
- Fixed a crach bug where using Full HD resolution with HWA enabled on macOS(Intel).
- Fixed a crash bug where using Full HD resolution with HWA enabled on Windows.
- Removed iOS Simulator (x86_64) support for make simple building process for iOS.
- mac M1 architecture native support
- Audio stream rendering support
- Add two scenes ("Audio" and "MultiAudioReceive") into the package sample
- Add
RTCAudioSourceStats
andVideoSourceStats
class
- Add the audio waveform graph to "MultiplePeerConnections" scene in the sample
- Fix the crash on Windows with Vulkan API on the "VideoReceive" sample
- Fix the crash when calling
WebRTC.Initialize
twice - Fix the error in the build process on
Unity2021.2
- Add options of the incoming video in "VideoReceive" sample to test video capture modules on the device
- Fix the validation for the color space of the incoming video
- Fix the crash when accessing the property
RTCRtpSender.Track
- Fix the color space of the RenderTexture for streaming when using Vulkan API
- Fix sample scenes
- Add a short version string to info.plist of ios framework
- Add the validation of the streaming texture size on Android
- Add the validation of the streaming when using NvCodec
- Use the software video decoder when disabling hardware acceleration
- Android ARM64 platform support
- Added a sample scene "Menu" which developers can go back and forth between sample scenes
- Added a sample scene "PerfectNegotiation"
- Added the software encoder on Linux support when using OpenGL Core graphics API
- Added the
RestartIce
method to theRTCPeerConnection
class - Added the
Streams
property to theRTCRtpReceiver
class
- Unity 2020.3 support
- Upgrade libwebrtc m89
- Changed the argument type of the
RTCPeerConnection.CreateOffer
method and theRTCPeerConnection.CreateAnswer
method
- Fixed crash for accessing properties of
RTCDataChannel
instance - Fixed crash when using the invalid graphics format to stream video on macOS
- Added
OnConnectionStateChange
event to theRTCPeerConnection
class
- Fixed a crash bug that occurs when accessing
MediaStreamTrack
properties after disposing ofRTCPeerConnection
- Changed
Audio.CaptureStream
method to allow setting of audio track label.
- Fixed memory leaks in native code.
- Fixed a crash bug when access an instance after disposed of it.
- Fixed
MediaStream.GetVideoStreamTrack
method andMediaStream.GetVideoStreamTrack
method to return a correct value. - Fixed
RTCRtpTransceiver.Receiver
property andRTCRtpTransceiver.Sender
property to return a correct value.
- Fixed
RTCIceCandidate.candidate
property in order to return a correct SDP formatted string.
- Supported iOS platform
- Supported H.264 HW decoder (VideoToolbox) on macOS
- Added
GetCapabilities
method to theRTCRtpSender
class and theRTCRtpReceiver
class - Added
SetCodecPreferences
method to theRTCRtpTransceiver
class - Added two samples ("ChangeCodecs", "TrickleIce")
- Added properties to the
RTCIceCandidate
class - Added properties tp the
RTCDataChannelInit
class
- Changed
RTCIceCandidate
type fromstruct
toclass
- Changed
RTCIceCandidateInit
type fromstruct
toclass
- Changed
RTCDataChannelInit
type fromstruct
toclass
- Changed argumments of the
RTCPeerConnection.AddIceCandidate
method
// old
public void AddIceCandidate(ref RTCIceCandidate candidate);
// new
public bool AddIceCandidate(RTCIceCandidate candidate);
- Changed arguments of the
RTCPeerConnection.CreateDataChannel
method
// old
public RTCDataChannel CreateDataChannel(string label, ref RTCDataChannelInit options);
// new
public RTCDataChannel CreateDataChannel(string label RTCDataChannelInit options = null);
- Added a "Bandwidth" sample
- Fixed the receiver of video streaming with Vulkan API
- Fixed a crash bug when the application ended using Vulkan API
- Fixed a crash bug of the standalone build using Vulkan API
- Fixed bugs that occur on Linux not installed NVIDIA driver
- Fixed a bug of the "VideoReceive" sample
- Software decoder support
- Hardware encoder (VideoToolbox) support on macOS
- Vulkan API support on Linux and Windows
- Linux IL2CPP support
- Add WebRTC samples ("MultiplePeerConnections", "MultiVideoReceive", "MungeSDP", "VideoReceive")
- Upgrade libwebrtc m85
- Upgrade NVIDIA Codec SDK 9.1
- Changed
RTCPeerConnection
behaviour to throw exceptions when pass invalid arguments toSetLocalDescription
,SetRemoteDescription
- Add "minBitrate" parameter to
RTCRtpEncodingParameters
class.
- Erase Japanese documentation due to migrating to internal translation system.
- Fixed an issue where the
RTCRtpSender.SetParameters
API did not work properly - Removed ZWSP(zero-width-space) in C# code
- Added statistics window in Unity editor to allow checking the operation of WebRTC
- Added
RTCPeerConnection.GetStats
API which collect statistics of WebRTC - Added
RTCRtpSender.SetParameters
andRTCRtpSender.GetParameters
to adjustment streaming video quality - Added
RTCDataChannel.ReadyState
which shows the state of the channel
- Fixed a issue which video stream remains with bad quality after a short network degradation
- Upgrade libwebrtc m84 to fix security issue (https://bugs.chromium.org/p/project-zero/issues/detail?id=2034)
- Fix a crash bug when dispose a video track
- Fix the memory leak when using DirectX12
- Fix the crash when using the incorrect parameter to as the argument of
RTCDataChannel
constructor - Fix the crash when initializing the hardware encoder failed
- Fix the editor freeze bug when recompiling scripts
- Fixed documents
- Fixed versioning issue
- Multi camera support
- DirectX 12 API support
- Published VideoStreamTrack API
- Published AudioStreamTrack API
- Fix OpenGL color order
- Fix DLL import error
- IL2CPP support
- Linux OpenGL hardware encoder support
- Mac OS Metal software encoder support
- Windows DirectX11 software encoder support
- Changed
Audio.Update
method to public
- Fixed documents
- Added tooltips
- Renamed sample folders
- Output logs when NVCodec failed to initialize
- Initial Release