PSA: WebRTC M56 Release Notes

4,333 views
Skip to first unread message

Anatoli Davidson

unread,
Dec 12, 2016, 3:34:55 AM12/12/16
to discuss...@googlegroups.com

M56

WebRTC M56 branch (cut at r15101)


Summary

Chrome M56, currently available in Chrome's beta channel, contains over 20 new features and over 50 bug fixes for WebRTC, including 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.

Important PSAs

Features

RTCPeerConnection is now un-prefixed

You can now invoke an RTCPeerConnection as “new RTCPeerConnection”. Code that uses “new webkitRTCPeerConnection” will continue to work for now, but you don’t have to shim this any more.

Also, as part of our continuous work to improve standards conformance, we’ve made it possible to use the name “iceTransportPolicy” in the RTCPeerConnection initialization parameters; the old, nonstandard name “iceTransports” can still be used.

New RTCPeerConnection.getStats

A promise-based, spec-compliant version of RTCPeerConnection.getStats is under development. It can be enabled in Chrome using command line argument --enable-blink-features=RTCPeerConnectionNewGetStats. In M56, most RTCStats-derived dictionaries are supported but with many dictionary members missing. See master bug and current state of available stats here. Please try out the new getStats API, your feedback is highly appreciated!

Old RED/RTX workarounds removed

This release removes some old workarounds relating to RED over RTX, which were temporarily introduced to mitigate a bug in older Chrome versions. The workaround removal does not affect developers using the default SDP. Developers that munge the SDP with respect to RED and/or RTX, however, now need to ensure that RED over RTX is explicitly enabled, if so desired. The background and more information is available in the public PSA and in the bug tracker.

Hardware encode for H.264 on Windows

On Windows 8.1 and above we will leverage hardware encode support for H.264 video in Chrome when the device hardware supports it. This will reduce significantly CPU usage and enable higher resolution video.

Deprecations



Platform

Issue

Description

Component

Chrome

653579

Remove support for GpuMemoryBuffers video capture

Blink>MediaStream, Blink>Network>XHR

Chrome

388194

Remove MediaStreamTrack.getSources implementation

Mobile

Chrome

659965

Remove "legacy" stream support from xhr

Video

Native

6687

Remove usage of webrtc::Clock in audio_device/

Audio, Cleanup

Native

6606

Remove deprecated camera enumeration methods from CameraEnumerationAndroid.

Blink>GetUserMedia

Native

6390

Drop support for legacy camera2 devices.

Blink>GetUserMedia>Webcam, Blink>MediaStream

Native

5332

Remove cricket::VideoCodec width/height/framerate

Video

Native

5682

Replace cricket::VideoFrame with webrtc::VideoFrame:

Video

Native

5924

Removal of cricket::VideoRendererFactory and most of the corresponding renderers.

Video

Native

6603

Use accessors for “codec specific” video codec parameters. Accessors will be required in 57.

Video

Native

6027

webrtc/base/rtc_base/macutils.cc uses Gestalt() APIs which are deprecated when building with a 10.8 deployment target

---

Native

6028

base/rtc_base/proxydetect.cc and base/rtc_base/unixfilesystem.cc use FSRef APIs on OS X, which are deprecated with a 10.8 deployment target

---

Native

6029

modules/desktop_capture/desktop_capture/screen_capturer_mac.mm uses deprecated functions with a 10.8 deployment target

---

Features and Bugfixes

Chrome


Type

Issue

Description

Component

Feature

6515

The AudioProcessing class should be a pure interface

Audio

Feature

6525

Implement residual echo detector

Audio

Feature

6462

Add UMA metrics to track ICE regathering reasons

Network

Feature

6531

Create rtc::PacketTransportInterface

Network

Feature

5868

Implement suspend_below_min_bitrate per send stream

Video

Feature

6579

Add stats for frequency offset when converting RTP timestamp to NTP time.

Video

Feature

6601

Implement H264 level-idc negotiation (last two two characters of profile-level-id)

Video

Feature

6650

Remove RED/RTX workarounds.

Video

Feature

6376

Update third_party/libsrtp to version 2.0

---

Feature

658423

Expose unprefixed RTCPeerConnection

Blink>WebRTC

Bugfix

1503

Data Race on access to cftmdl_wk1r

Audio

Bugfix

1504

Data Race on access to cft1st_128

Audio

Bugfix

2521

data racing in audio_processing module

Audio

Bugfix

6518

Audio bwe is just activate on caller side

Audio

Bugfix

6522

centralize the definition of min bwe

Audio

Bugfix

6523

Check for valid observer before call OnTransportFeedback

Audio

Bugfix

5889

UBSan error in NetEQ

Build

Bugfix

6565

BringSelectedWindowToFront has a different behavior on Windows

DesktopCapture

Bugfix

6702

ScreenCapture freezes on external display on Mac

DesktopCapture

Bugfix

6278

Handle 3 bytes AnnexB header in H264 parser

HardwareCodec, Video

Bugfix

6106

Java bindings do not expose DataChannel ID

PeerConnection

Bugfix

6218

data-channel only offer with max-bundle and rtcpMuxPolicy: require fails

PeerConnection

Bugfix

6299

Remove the obsolete enum webrtc::PeerConnectionInterface::IceState.

PeerConnection

Bugfix

6652

PeerConnection::GetStats return true for invalid track

PeerConnection

Bugfix

6400

WebRTC fails to match compatible H264 profile-level-ids

Video

Bugfix

6402

cricket::WebRtcVideoEncoderFactory::VideoCodec does not contain enough information for H264

Video

Bugfix

6501

Potential race condition in VideoReceiveStream shutdown

Video

Bugfix

6510

event_log_visualizer broken

Video

Bugfix

6552

video interop with Edge broken in M56

Video

Bugfix

6563

Fix a regression with quality scaling

Video

Bugfix

6583

WebRTC not compatible with OpenH264 v1.6

Video

Bugfix

6600

Sending CVO rtp header extension compatible with the standard now.

Video

Bugfix

6669

Division by zero in RemoteEstimatorProxy::OnBitrateChanged

Video

Bugfix

6686

Sequential access check hits in RTPSenderVideo

Video

Bugfix

6710

Probe results are ignored midcall

Video

Bugfix

4869

PeerConnection constructor: iceTransports vs iceTransportPolicy

---

Bugfix

6179

Compiler warning possible loss of data in file port.h

---

Bugfix

6432

Rename P2PTransportChannel's worker_thread_ to network_thread_.

---

Bugfix

6442

TWCC produce too much overhead on a low bandwidth situation.

---

Bugfix

6526

BweSimulation uses RemoteBitrateEstimatorAbsSendTime instead of DelayBasedBwe

---

Bugfix

6530

The functionality for emptying the render frame queue when it is full does only work properly in debug mode for AEC and AECM

---

Bugfix

6620

RTC_DCHECK_GE(unsigned, 0u) warns that condition is always true

---

Bugfix

6621

plot_dynamics.py does not plot BWE simulation results

---

Bugfix

6670

AudioSendStream min_bitrate_kbps and max_bitrate_kbps are assigned bit rate with unit of bps.

---

Bugfix

6681

Run into RTC_DCHECK on caller side when ANA is activated.

---

Bugfix

656420

chooseDesktopMedia Window Hides Behind Active Window

Blink>GetUserMedia>Desktop

Bugfix

655198

tabCapture Results in Stretched Mouse Cursor

Blink>GetUserMedia>Tab

Bugfix

657627

Change scaling from MakeHalfFloat to using GPU to do it

Blink>GetUserMedia>Webcam, Internals>Media, OS>Kernel>Video

Bugfix

660204

navigator.mediaDevices.enumerateDevices() not working from non-https origins

Blink>GetUserMedia>Webcam

Bugfix

642663

Cannot clone/forward hardware decoded video tracks

Blink>MediaStream, Blink>WebRTC>Video

Bugfix

567859

MediaRecorder.start() with no duration should buffer until stop() or requestData().

Blink>MediaStream>Recording

Bugfix

657532

Regression: Playback of mediaStream recording shows blank video

Blink>MediaStream>Recording

Bugfix

579430

ConnectDataChannel called when data_channel_ is NULL

Blink>WebRTC

Bugfix

615108

Enable WebRTC H264 on Android with HW enc/dec

Blink>WebRTC

Bugfix

636818

RTCPeerConnection.getStats: RTCPeerConnectionStats (behind flag)

Blink>WebRTC

Bugfix

645599

Chrome Ignores H264 profile-level-id on SDP offer

Blink>WebRTC

Bugfix

654927

RTCPeerConnection.getStats: RTCDataChannelStats (behind flag)

Blink>WebRTC

Bugfix

650533

Volume adjustment does not take effect in Chrome for Android during WebRTC calls

Blink>WebRTC>Audio

Bugfix

586431

Refactor AudioInputDebugWriter

Blink>WebRTC>Tools

Bugfix

661362

[Regression] AppRTC Audio receiving codec is not displayed in stats window and chrome://webrtc-internals

Blink>WebRTC>Tools

Bugfix

660171

Regression: AppRTC H264 loopback/p2p call video is extremely blotchy

Blink>WebRTC>Video

Bugfix

657217

Move video encode accelerator IPC calls to GPU IO thread

Internals>Media>Codecs

Bugfix

658429

Limit VTVideoEncodeAccelerator's keyframe output

Internals>Media>Codecs

Bugfix

645907

googNoiseReduction constraint broken

---


Native Android/iOS


Type

Issue

Description

Component

Feature

6232

Add software fallback for MediaCodecVideoEncoder.

Mobile

Feature

6302

Add UMA stats for camera start time and resolution it is started in.

Mobile

Feature

6334

Android CameraEventsHandler interface: Add onCameraDisconnected()

Mobile

Feature

6355

AVFoundationVideoCapturer: Enumerate formats using AVCaptureDevice.formats instead of SessionPresets

Mobile

Feature

6386

Allow the initial peak level to be specified in the level controller.

Mobile

Feature

6473

Make it possible to set capture video resolution in iOS AppRTCMobile

Mobile

Feature

6496

Add loopback option and improve the UX of the AppRTCMobile for Mac

Mobile

Feature

6617

Remove unnecessary styling of controls in AppRTCMobile/ios/ARDMainView.m

Mobile

Feature

6618

Add UINavigationController to AppRTCMobile/ios/ARDMainViewController

Mobile

Feature

6619

Add H264VideoToolbox as an external codec instead of hardcoded into static H264Encoder::Create()

Mobile

Feature

6674

Android: Add screenshare support to AppRTCMobile.

Mobile

Bugfix

6476

AudioTransport::NeedMorePlayData called from different threads in OpenSL ES

Audio

Bugfix

6524

Include ScreenCapturerAndroid in libjingle_peerconnection_java.jar.

DesktopCapture

Bugfix

6602

Fix a deadlock in EglRenderer.releaseEglSurface.

Mobile

Bugfix

6643

iOS AppRTCMobile hits DCHECK_CALLED_SEQUENTIALLY in RTPSenderVideo

Mobile

Bugfix

6664

Add improved bwe field trial for iOS

Mobile



Regards
Anatoli

Philipp Hancke

unread,
Dec 12, 2016, 5:21:15 AM12/12/16
to discuss...@googlegroups.com
\o/ I am particularly happy that 4869 is fixed in the unprefixed peerconnection.

WRT to  rtx: "introduced to mitigate a bug in older Chrome version" -- what old Chrome versions?
There are folks out there with chrome versions that can't even parse UDP/TLS/RTP/SAVPF (which IIRC was fixed in ... Chrome 37)

--

---
You received this message because you are subscribed to the Google Groups "discuss-webrtc" group.
To unsubscribe from this group and stop receiving emails from it, send an email to discuss-webrtc+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/discuss-webrtc/CAM1dXWLeh4VKWOymQi7QKWxi3yc7%2BKD6PYPtx5GdPqPwSzmx1w%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Stefan Holmer

unread,
Dec 13, 2016, 5:33:58 AM12/13/16
to discuss...@googlegroups.com
The rtx workaround was introduced with Chrome M50, see release notes here.
Message has been deleted

Xander Dumaine

unread,
Dec 14, 2016, 3:11:23 PM12/14/16
to discuss-webrtc

Szabó Örs

unread,
Dec 19, 2016, 7:52:39 AM12/19/16
to discuss-webrtc
Hi,
I came across this article about Chrome 56 to remove supprot of SHA-1 signed certificates: https://www.bleepingcomputer.com/news/security/google-to-show-errors-for-sha1-certificates-starting-with-chrome-56/
Could someone clarify if this is true for WebRTC (DTLS-SRTP) calls as well, i.e. if a gateway will not be able to establish a successful DTLS connection using SHA-1 signed ceritifcates?

Thanks.
Ors 
 

Philipp Hancke

unread,
Dec 20, 2016, 2:10:49 AM12/20/16
to discuss...@googlegroups.com
Still works for me in M57. And while https://tools.ietf.org/html/draft-ietf-rtcweb-security-arch-12 still says "sha-1" everywhere...

Note that the certificate in WebRTC (rather: dtls-srtp) is used in completly different ways, typically the certificate is self-signed and the fingerprint is validated from the SDP.

--

---
You received this message because you are subscribed to the Google Groups "discuss-webrtc" group.
To unsubscribe from this group and stop receiving emails from it, send an email to discuss-webrtc+unsubscribe@googlegroups.com.

Harald Alvestrand

unread,
Dec 20, 2016, 4:01:05 AM12/20/16
to WebRTC-discuss
The normative requirement on ciphersuites in -security-arch-12 is this:

   All implementations MUST implement DTLS 1.0, with the cipher suite
   TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA with the the P-256 curve
   [FIPS186].  The DTLS-SRTP protection profile
   SRTP_AES128_CM_HMAC_SHA1_80 MUST be supported for SRTP.
   Implementations SHOULD implement DTLS 1.2 with the
   TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 cipher suite.
   Implementations MUST favor cipher suites which support PFS over non-
   PFS cipher suites and SHOULD favor AEAD over non-AEAD cipher suites.

This indicates that we still have to accept SHA-1 certificates.
But webrtc-pc says:

The explicit certificate management functions provided here are optional. If an application does not provide thecertificates configuration option when constructing an RTCPeerConnection a new set of certificates must be generated by the user agent. That set must include an ECDSA certificate with a private key on the P-256 curve and a signature with a SHA-256 hash.

So if we're spec-compliant (and I read the specs correctly), we'll accept SHA-1, but will always send SHA-256.

Reply all
Reply to author
Forward
0 new messages