WebRTC M71 Release Notes
WebRTC M71 branch (cut at r25118)
WebRTC M71, currently available in Chrome's beta channel and as native libraries for Android and iOS, contains 20 new features and over 45 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. Native libraries for Android and iOS are built on weekly basis and are available on JCenter and CocoaPods; the Changelog is available here.
“Unified Plan” is the standards compliant SDP format, which in many cases is incompatible with the current “Plan B” SDP format. Switching the default behavior to Unified Plan is a breaking change. Firefox is already using Unified Plan, and Safari Technology Preview has a flag for it. An experiment is currently running that make Chrome Canary/Dev clients change the default on startup with high probability.
The target for rolling out Unified Plan is M72. Developers need to test their applications, they may need to be updated or explicitly set the desired SDP format with “sdpSemantics”. For more information, including links to transition guides, see the PSA for the Chrome change and this PSA for the native transition guide.
Functionality in those interfaces is partly deprecated, partly moved into the webrtc::AudioProcessing::Config.
Moving the AEC configuration into webrtc::AudioProcessing::Config simplifies the interface for clients. Additionally, these interfaces hinder internal refactoring of the audio processing module.
Any client that uses these interfaces will need to update their code as detailed in the PSA, with the exception that custom AECs (implementing webrtc::EchoControl) will continue overriding the config enable/disable flag for now.
A new parameter numberOfSimulcastStreams has been added to the constructor of Java VideoEncoder.Settings and the old constructor has been removed. More details in the bug.
Issue | Description | Component |
Remove the intelligibility enhancer in APM. | Audio |
Type | Issue | Description | Component |
Feature | Add blink::UserMediaClient::IsCapturing | Blink>GetUserMedia | |
Feature | Expose a parameter for setting a lower bound for the packet loss rate in Opus encoder. | Audio | |
Feature | Log if audio service or process are used | Blink>WebRTC>Audio | |
Feature | Show AudioService information to chrome://media-internals | Blink>WebRTC>Audio | |
Feature | Build and publish macOS framework | Build | |
Feature | Integrate and test WebRTC-adapted BBR. | BWE | |
Feature | Enable round robin packet queue by default. | Network, Video | |
Feature | Support attaching RTP extensions differently to the first packet of a video frame layer | Network>RTP | |
Feature | Video bitrate allocations with new layer structure should be signaled as soon as possible | Network>RTP | |
Feature | Add field trial for disabling the frame dropper | Video | |
Feature | Implement round-robin sending in PacedSender | Video | |
Feature | Make libvpx into an interface inside vp8 encoder wrapper for easier testing | Video | |
Feature | Add 'number of video freezes per minute' metric | Video | |
Feature | Update multiplex encoder to support having augmenting data attached to the video | Video | |
Feature | Get rid of kVideoCodecUnknown | Cleanup | |
Feature | Field trial parser | BWE | |
Feature | Add picture_id to generic RTP packetizer format. | Video | |
Feature | Enable multithreading in libvpx VP9 decoder | Video | |
Feature | Move VP9 frame rate controller to separate class | Video | |
Feature | VP9 SVC: control frame rate per spatial layer | Video | |
Bug | Incorrect filter alignment causing echo leakage | Audio | |
Bug | AEC3: Allow controlled usage of the shadow filter output | Audio | |
Bug | [Video Capture Service] Uninitialized field error when using service from ChromeOS | Blink>GetUserMedia>Webcam | |
Bug | AEC3: Allow controlled usage of the shadow filter output | Blink>WebRTC>Audio | |
Bug | API level check for ConnectivityManager.getActiveNetwork | Network | |
Bug | Freeze metric should be based on render time and not decode time | Video | |
Bug | Simulcast screenshare at high bitrate/low resolution might caused encoder init to fail | Video | |
Bug | screenshare layers (vp8) might incorrectly adjust max qp setting | Video | |
Bug | Potential bad performance with simulcast screensharing | Video | |
Bug | VP9 SVC sent resolution is reported per-layer. | Video | |
Bug | VP9 enc wrapper doesn't not account for VideoCodec::maxFramerate | Video | |
Bug | Too much fading when the linear filter has already converged | Audio | |
Bug | Poor speech quality at the beginning of the call under stationary noises at the render signal. | Audio | |
Bug | Echo leaks when the limits for the ERLE estimator are increased | Audio | |
Bug | Echo leaks when the preamplifier gain changes | Audio | |
Bug | Echo leaks at volume decreases in AEC3 | Audio | |
Bug | AEC3: Delay estimator saturation detection is overly cautious | Audio | |
Bug | AEC3: Bug in the transition between main and shadow filter output | Audio | |
Bug | AEC3: Bad transparency at low echo levels | Audio | |
Bug | AEC3: Bad transparency at low echo levels | Audio | |
Bug | [Video Capture Service] Support padded yuv frames for virtual devices | Blink>GetUserMedia>Webcam | |
Bug | Gain too high in WebRTC adaptive digital gain controller 2 | Blink>WebRTC>Audio | |
Bug | TSan reports a data race in webrtc::RtpVideoStreamReceiver::OnRtpPacket | Blink>WebRTC>Network | |
Bug | webrtc: sdpSemantics: unified-plan breaks onaddstream | Blink>WebRTC>PeerConnection | |
Bug | 2.4%-15.6% regression in webrtc_perf_tests at 24671:24674 | Blink>WebRTC>Video | |
Bug | Log spam when remote sequence number starts high. | BWE | |
Bug | Desktop capture frame can have corrupted data when using multiple screens | DesktopCapture | |
Bug | The logic in rtc::Buffer::OnMovedFrom is backwards w.r.t. RTC_DCHECK_IS_ON | Internals | |
Bug | PhysicalSocketServer should use monotonic time for timeouts | Internals | |
Bug | Update rtc_json JSON parsing utility code | Internals | |
Bug | Memory contention by threads in PeerConnection when invoking methods of PortAllocator | Network, PeerConnection | |
Bug | SRTP decryptor logs several errors every second if the received packets can't be decrypted. | Network>DTLS | |
Bug | AudioTransport::NeedMorePlayData not exposing NTP value | Network>RTP | |
Bug | GetSources() for VideoRtpReceiver | Network>RTP, PeerConnection | |
Bug | webrtcsdp.cc::HasAttribute() only matches beginning of line | PeerConnection | |
Bug | RTCRtpTransceiver API | SpecConformance | |
Bug | getStats: mediaType was renamed to kind | Stats | |
Bug | Add num_temporal_layers to RtpEncodingParameters struct. | Video | |
Bug | Add support for RtpEncodingParameters max_framerate. | Video | |
Bug | Temporal dependencies used in layers checker could be tightened for the 2 TL case | Video | |
Bug | SimulcastEncoderAdapter is initially setting all streams to active | Video | |
Bug | Low spatial layer frame is marked as non-reference when number of activated layers is < max layers | Video | |
Bug | AEC3: Bug in the transition between main and shadow filter output | Blink>WebRTC>Audio | |
Bug | AEC3: Bad transparency at low echo levels | Blink>WebRTC>Audio | |
Bug | Keyframes may be dropped by vp8 encoder | Video | |
Bug | Use zeros for rtp packet padding | Network>RTP |