WebRTC M87 Release Notes
WebRTC M87 branch (cut at r75b9ab6751f3f49bbdd0a260fcbcbc8135dd567a)
Summary
WebRTC M87, currently available in Chrome's beta channel, contains 2 new features and over 30 bug fixes, enhancements and stability/performance improvements. As with previous releases, we encourage all developers to run versions of Chrome on the Canary, Dev, and Beta channels frequently and quickly report any issues found. Please take a look at this page, for some pointers on how to file a good bug report. The help we have received has been invaluable!
The Chrome release schedule can be found here.
PSAs
Early Warning: RTP Datachannels are going away
As of M88 (next version), use of RTP datachannels will cause a deprecation warning. We expect to remove them altogether in M90. Use SCTP-based datachannels instead.
More info in the PSA.
Features
Perfect Negotiation
Perfect Negotiation is a recommended pattern to handle SDP negotiations in a way that abstracts this task away from the rest of the application. It allows both endpoints to operate on their peer connection simultaneously and has changes “automatically” being negotiated without risk of glare. This is achieved by listening to the onnegotiationneeded event and having “polite” and “impolite” roles assigned. This pattern is now supported in M87 after timing-related issues in the RTCPeerConnection APIs were resolved. For more information, see PSA.
Stopping transceivers
Transceivers now have a new function called “stop”. Once called, all usage of that transceiver for sending and receiving will cease, and an offer/answer cycle will remove it from the list of transceivers.
The media section in SDP can then be reused for other purposes. See the spec for more information.
This feature is available behind a flag in M87, and will be generally available in M88.
Deprecations
Issue | Description | Component |
5876 | Deleted top-level header file common_types.h | Build,Video |
Features and Bugfixes
Type | Issue | Description | Component |
Bug | 1060083 | Queue onnegotitationneeded when operation chain is empty | Blink>WebRTC>PeerConnection |
Bug | 1115080 | WebRTC PeerConnection.iceGatheringState doesn't return to "new" when all transports are gone | Blink>WebRTC>PeerConnection |
Bug | 1116430 | Wire up webrtc SinkWants to chrome capturers | Blink>WebRTC,Internals>Media>Capture |
Bug | 1127625 | on chrome 86+ SetLocalDescription fails with "Failed to set local offer sdp: Unknown transceiver" | Blink>WebRTC |
Bug | 949112 | Variable framerate VP8 screenshare experiment | Blink>WebRTC>Video |
Bug | 980879 | "Stopping" and "stopped" transceivers | Blink>WebRTC>PeerConnection |
Bug | 10147 | Sort out threading conventions for VideoSourceInterface | Video |
Bug | 10232 | The AEC3 transparency is poor initially in the call when headsets are used | Audio |
Feature | 10273 | ExtraICEPing experiment | Internals |
Bug | 10795 | Video encoder fallback. | Video |
Bug | 11222 | Refactor VideoSendStream to allow other resource adaptation modules | Video |
Bug | 11477 | Early media of SSRC signaled on another "m= section" leads to no video | Video |
Bug | 11567 | Refactor webrtc to use a non-recursive CriticalSection | Internals |
Bug | 11622 | NetEq statistics are reset when new getStats() is called | Audio |
Feature | 11769 | Add new parameter for H.264 | Video |
Feature | 11802 | DTMF event sub-API on VoIP API | Audio |
Bug | 11843 | [ResourceAdaptation] Qp scaler resource should be removed when the qp scaling is disabled | Video |
Bug | 11864 | Calling AudioDeviceWindowsCore::InitPlayout() aborts due to locking the mutex twice | Audio |
Bug | 11867 | [Adaptation] Remove adaptation queue | Video |
Feature | 11872 | Make requested_resolution_alignment apply to downscaled layers | Video |
Bug | 11894 | WebRTC’s audio video sync can go into unbounded loop and keep increasing audio delay for the period no audio packets are flowing in. | Audio,Video |
Feature | 11898 | Add field trial to control initial decoder resolution |
|
Bug | 11908 | Large amounts of CPU time spent in Thread::ClearInternal when sending a lot of small messages | Internals |
Feature | 11916 | Add NV12 VideoFrameBuffer Implementation | Video |
Bug | 11923 | MediaStream proxy can bypass Invoke for id() |
|
Bug | 11924 | Add field trials to control additional quality scaler settings | Video |
Bug | 11957 | sps-pps-idr-in-keyframe fmtp parameter does not work in latest libwebrtc/Chromium | PeerConnection |
Bug | 11968 | Disabled logging levels still have side effects | Internals |
Bug | 11974 | Add NV12 Support for VP9 | Video |
Bug | 11978 | Add NV12 as a frame type that FrameGenerators can generate | Video |