WebRTC M67 Release Notes
WebRTC M67 branch (cut at r22779)
WebRTC M67, currently available in Chrome's beta channel and as native libraries for Android and iOS, contains over 15 new features and over 25 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.
Chrome rolled out new autoplay policies in Chrome M66. The new policy affects the playback of local and remote media streams, more information can be found in crbug/835767. At the moment Chrome M66 was updated to remove the autoplay policy for the Web Audio API, but the autoplay policy will remain in effect for <video> and <audio>. We are currently working together with the Chrome team to develop a set of recommendations for WebRTC developers that will be shared in a separate PSA.
The trybot to build and test WebRTC on Android MIPS has been removed. The support for the MIPS ABI is deprecated in the current stable version of the Android NDK (r16) and it will be removed in r17. See PSA.
We're changing to a more secure DTLS-SRTP profile (SRTP_AES128_CM_HMAC_SHA1_80), which uses an 80-bit authentication tag as recommended by the SRTP standard. Aside from adding 6 bytes per packet, this is not expected to have any adverse effects. See PSA.
The new APIs return a subset of the result of a full getStats() call, filtering based on a “selector”. The benefits are convenience and easier being able to find the relevant stats. For example, if you call sender.getStats(), the 'track' stats object contained in the result will be the stats for the sender's track. See PSA and spec. The APIs that are shipping in M67 are:
RTCRtpSender.getStats()
RTCRtpReceiver.getStats()
RTCPeerConnection.getStats(optional MediaStreamTrack? selector = null)
(Prior to this only the parameterless version of promise-based getStats() was available.)
WebRTC now passes "audio codec pair IDs" to audio codec factories when they create codec instances. The intended use case is to allow factory implementations to connect audio decoder and audio encoder instances that talk to the same remote party. Here are the docs for AudioEncoderFactory and AudioDecoderFactory and a test that demonstrates how this can be hooked up.
Issue | Description | Component |
Remove AudioTransport::PushCaptureData() | Audio |
Type | Issue | Description | Component |
Feature | Update Android PeerConnection APIs so "Unified Plan" and RtpTransceivers can be used | Mobile, PeerConnection | |
Feature | Update iOS PeerConnection APIs so "Unified Plan" and RtpTransceivers can be used | Mobile, PeerConnection | |
Feature | Add UMA histograms for NetEq's expand rates | Audio | |
Feature | ACM: No built-in decoders | Audio | |
Feature | Allow pairing of audio encoder and decoder that talk to the same remote endpoint | Audio | |
Feature | Binary size of fec private tables needs to be reduced | BWE | |
Feature | Reduce complexity of compute packet loss mask for fec controller | BWE | |
Feature | Enables configuration of transmission max bitrate multiplier. | BWE | |
Feature | Enable round robin packet queue by default. | Network, Video | |
Feature | Add interface that allows customizing stun messages sent by TurnPort | Network>ICE | |
Feature | Expose RRTR in media engine | Network>RTP | |
Feature | Multiple streams per sender/receiver | PeerConnection | |
Feature | Update Media Stream naming of label to id | PeerConnection | |
Feature | googHugeFramesSent GetStats metric. | Stats, Video | |
Feature | Add ability to run generic calls with fake network constraints | Tools | |
Feature | VP9 SVC rate allocator. This changes bitrate of layers and their quality as result. | Video | |
Feature | Enable video timing frames for chromoting encoder | Video | |
Feature | Make it possible to clear the VideoFormat set on VideoAdapter | Video | |
Bug | The delay estimator in AEC3 is sometimes too slow to react to a buffer issue causing a delay change | Audio | |
Bug | Echo leakage for narrow band render signals in AEC3 | Audio | |
Bug | Headsets performance is worse in AEC3 is it is not used initially in the call | Audio | |
Bug | For very low level echo in silent backgrounds, the AEC3 linear filter fails to report convergence | Audio | |
Bug | The AEC3 API call skew detector is too aggressive on platforms with high jitter in the API call sequence | Audio | |
Bug | Setups with clock-drift and and located in reverberant environments may cause echo leakage in AEC3 | Audio | |
Bug | The AEC3 sometimes has very poor transparency when a headset it used | Audio | |
Bug | The abrupt transition from initial to normal mode in AEC3 may cause a small amount of echo leakage | Audio | |
Bug | The AEC3 suppressor gain rampup behavior is the same for call start and resets within the call | Audio | |
Bug | The abrupt transition from initial to normal mode in AEC3 may cause a small amount of echo leakage | Blink>Media>Audio | |
Bug | [regression] RTCStatsReport doesn't contain candidate-pair and other types of entries | Blink>WebRTC | |
Bug | History chrome://webrtc-logs/ not cleared when user clears data | Blink>WebRTC | |
Bug | Echo leakage for narrow band render signals in AEC3 | Blink>WebRTC>Audio | |
Bug | The delay estimator in AEC3 is sometimes too slow to react to a buffer issue causing a delay change | Blink>WebRTC>Audio | |
Bug | For very low level echo in silent backgrounds, the AEC3 linear filter fails to report convergence | Blink>WebRTC>Audio | |
Bug | The AEC3 API call skew detector is too aggressive on platforms with high jitter in the API call sequence | Blink>WebRTC>Audio | |
Bug | The AEC3 sometimes has very poor transparency when a headset it used | Blink>WebRTC>Audio | |
Bug | Performing a subsequent offer/answer causes SRTCP (and possibly SRTP) decryption errors | Blink>WebRTC>PeerConnection | |
Bug | Datatransfer gets stuck for a long time | DataChannel | |
Bug | RTCPeerConnection.getStats selector argument | Blink>WebRTC | |
Bug | Audio BWE for video min BWE is too low | BWE | |
Bug | Use SRTP_AES128_CM_SHA1_80 by default instead of SRTP_AES128_CM_SHA1_32 | Network>DTLS | |
Bug | Role conflict errors not sent to prflx candidates over TURN | Network>ICE | |
Bug | addTrack with no stream should not result in announcing a stream in the SDP | PeerConnection | |
Bug | Run external/wpt/webrtc/ tests with Unified Plan | Blink>WebRTC>PeerConnection | |
Bug | Set marker bit on last frame of superframe | Video | |
Bug | Impossible to reinit VPx wrapper after unsuccessful init | Video | |
Bug | DTMF sender sends first tone too quickly | Blink>WebRTC |