WebRTC M69 Release Notes
WebRTC M69 branch (cut at r24012)
WebRTC M69, currently available in Chrome's beta channel contains over 10 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 available on JCenter and CocoaPods; the Changelog is available here.
We are working on our commitment towards WebRTC 1.0. One of the biggest pieces of this is switching to the spec compliant SDP format called Unified Plan which is important for cross-browser compatibility, especially when multiple tracks of the same kind are signaled. The sdpSemantics configuration for controlling whether to use Unified Plan has been in Chrome since M65, but it's not until M69 that RTCRtpSenders and RTCRtpReceivers have been updated correctly to reflect the SDP. Also new in M69 are RTCRtpTransceivers, which represent the m= sections of the SDP, only available in Unified Plan. See the transition plan and keep an eye out for upcoming PSAs regarding the switch; your application may be affected by incompatibilities between the old and new format.
The DataChannel closing procedure has been changed to match the standard. As a result, if you close a DataChannel from a new version of WebRTC, and the other endpoint is using an old version, it will be stuck in the "closing" state. This is already what happens if you close a DataChannel from Firefox and the other side is Chrome (as Firefox is already doing the correct procedure). See original PSA for more details.
The static method getCapabilities() returns the most optimistic view of the capabilities of the system for sending or receiving media of the given kind. It does not reserve any resources, ports, or other state but is meant to provide a way to discover the types of capabilities of the browser including which codecs or RTP extensions may be supported. For more details see the original Intent to Implement and Ship on the blink-dev mailing list.
Setting maxBitrate now properly works for simulcast and allows setting bitrate limits per layer (RTCRtpEncodingParameters). Previously, the setting would only work for setting the maxBitrate to the RTCRtpSender as a whole. For more details see this PSA.
The following new APIs are supported when Unified Plan is used:
RTCTrackEvent.transceiver (RTCPeerConnection.ontrack fires with this attribute set)
These are enabled if {sdpSemantics:’unified-plan’} is passed to the RTCPeerConnection constructor or if command line flag --enable-blink-features=RTCUnifiedPlanByDefault is used. Unified Plan is the spec agreed-upon behavior and is different from Chrome’s current behavior (known as Plan B). In particular, the SDP format and lifetime of senders and receivers are different, which may cause incompatibilities between clients with different SDP semantics. For more information, see PSA.
The nonlinear beamformer in the audio processing module is deprecated, to ease refactoring and because of its very low usage. This entails the following API changes.
Removed:
webrtc::AudioProcessingBuilder::SetNonlinearBeamformer
webrtc::Beamforming
modules/audio_processing/beamformer/*
Marked deprecated:
webrtc::ConfigOptionID::kBeamforming
Issue | Description | Component |
Remove beamformer code from APM | Audio | |
Deprecate Fax and Off modes from NetEq | Audio | |
Remove the audio codec factory methods that don't take AudioCodecPairId. Also see this PSA. | Audio | |
Remove deprecated RateControlInput::noise_var | BWE | |
Remove unused/deprecated DTMF methods | PeerConnection | |
Stop using deprecated ffmpeg functions | Video |
Type | Issue | Description | Component |
Feature | Send application-specific bytes from RtpSender through Transport | Network>RTP | |
Feature | Add RtpSenderInterface.getCapabilities() | Network>RTP | |
Feature | Add RtpReceiverInterface.getCapabilities() for PeerConnection | PeerConnection | |
Feature | Preserve color space information for internal codecs | Video | |
Feature | Support content-hint of type "text" for MediaStreamTrack | Blink>WebRTC | |
Feature | Support RTCRtpTransceiver (transceiver) | Blink>WebRTC>PeerConnection | |
Feature | Support setting maxBitrate with RTCRtpSender.setParameters() for individual simulcast layers (using RTCRtpEncodingParameter) | Blink>WebRTC>PeerConnection | |
Feature | WebRTC H.264 packetization-mode 0 support | Blink>WebRTC>Video | |
Feature | Field trial parser | BWE | |
Feature | RTCRtpEncodingParamers.maxBitrate for each simulcast stream for RTPSender | PeerConnection | |
Feature | VP9 SVC: use VP9E_GET_SVC_REF_FRAME_CONFIG to get actual refs | Video | |
Feature | Drop entire superframe if any layer is overshooting | Video | |
Bug | AEC3: Echo leakage in moderately reverberant environments | Audio | |
Bug | The direct path component in the AEC3 linear filter is sometimes wrongly estimated | Audio | |
Bug | The linear filter in AEC3 is slow to respond to echo path gain changes that cause saturations | Audio | |
Bug | AEC3: Highly linear and time invariant platforms should be treated separately | Audio | |
Bug | The range of the metrics for the estimated audio buffer delay in AEC3 is too short to cover longer delays | Audio | |
Bug | For platforms with a high audio buffer latency, the AEC3 delay estimator look window may be too small | Audio | |
Bug | The AEC3 refined delay is inaccurate after a new delay estimator delay has been found | Audio | |
Bug | AEC3: Echo leakage in moderately reverberant environments | Blink>WebRTC>Audio | |
Bug | The direct path component in the AEC3 linear filter is sometimes wrongly estimated | Blink>WebRTC>Audio | |
Bug | The range of the metrics for the estimated audio buffer delay in AEC3 is too short to cover longer delays | Blink>WebRTC>Audio | |
Bug | For platforms with a high audio buffer latency, the AEC3 delay estimator look window may be too small | Blink>WebRTC>Audio | |
Bug | The AEC3 refined delay is inaccurate after a new delay estimator delay has been found | Blink>WebRTC>Audio | |
Bug | The linear filter in AEC3 is slow to respond to echo path gain changes that causes saturations | Blink>WebRTC>Audio | |
Bug | Performing a subsequent offer/answer causes SRTCP (and possibly SRTP) decryption errors | Blink>WebRTC>PeerConnection | |
Bug | The RtcEventLog instance is not passed to P2PTransportChannel via JsepTransportController. | PeerConnection | |
Bug | Two senders created with the same track result in "CreateOffer called with invalid session options" | PeerConnection | |
Bug | Wrong lock passed into GainControlImpl? | Audio | |
Bug | Changes on how the reverberation model is applied for AEC3 | Audio | |
Bug | AEC3: Too aggressive use of non-linear mode | Audio | |
Bug | NetEq PacketBuffer logs discarded packet with wrong codec_level when new packet places lower level packet | Audio | |
Bug | audioproc_f functionality for systems not reporting the stream delay is needed | Audio | |
Bug | AEC3: No special action is taken when the microphone gain is changed. | Audio | |
Bug | AEC3: Delay estimator sensitive to noise | Blink>WebRTC>Audio | |
Bug | AimdRateControl increase send rate when not receiving feedback | BWE | |
Bug | SCTP data channel goes to "closed" state prematurely. | Network | |
Bug | PseudoTcp corrupts data. | Network>ICE | |
Bug | Candidates on the default route undesirably preferred than candidates with explicit interface type. | Network>ICE | |
Bug | packetsLost and "jitter" stats only updated when RTCP SR or RR is sent | Network>RTP, Stats | |
Bug | sdp: ice-lite attribute is not re-serialized | PeerConnection, SpecConformance | |
Bug | Add min_bitrate_bps to RtpEncodingParameters struct. | PeerConnection, Video | |
Bug | mac demo has no video preview | SampleApps | |
Bug | Missing ssrc_ section in getStats when receiving from client with no a=ssrc lines | Stats | |
Bug | Recently added log line causes excessive logging when GetStats is called frequently. | Stats | |
Bug | incorrect sanity-check in WebRtcVideoChannel::WebRtcVideoReceiveStream::SetLocalSsrc | Video | |
Bug | Remove workaround for M55 and below where we always send RED even without FEC. | Video | |
Bug | Padding bitrate is not correctly calculated in case of VP9 | Video | |
Bug | VP9 SVC video freeze frame when # active spatial layers < # configured layers | Video | |
Bug | VP9 SVC video loopback freeze frame when send-side bandwidth is restricted | Video | |
Bug | VP9 SVC: inter_pic_predicted is true in the first frame of added upper spatial layer | Video | |
Bug | VP9 hardware decoder fails to decode SVC stream | Video | |
Bug | [desktopCapture Win] Hangout presenting notification window blocks window sharing | Blink>GetUserMedia>Desktop | |
Bug | Always capturing in 1920x1080 on OS X | DesktopCapture |