46
WebRTC: Google Notes KrankyGeek, Sep 2015

Kranky Geek WebRTC 2015 - What's next for WebRTC?

Embed Size (px)

Citation preview

WebRTC: Google NotesKrankyGeek, Sep 2015

Our 40 minutes together

❖ Vital Signs

❖ WebRTC News

❖ Public Service Announcements

❖ Recent Improvements

❖ Coming Attractions

Some vital signs...

Vital Signs: WebRTC Adoption

❖ Tracking 720 companies using WebRTC in some form➢ Up from 550 this past February

❖ Many major applications using WebRTC, confirmed by

analysis on webrtchacks.com➢ Hangouts

➢ Facebook Messenger

➢ Mayday

➢ Wire•

❖ 28 WebRTC related acquisitions to date❖ Some recent ones:

➢ Acision➢ Speek➢ mPortal➢ Tropo➢ ESNA➢ Screenhero➢ Jitsi

Vital Signs: WebRTC Adoption

And now, the news.

News: An open alliance for media (1/2)

Focused on developing next generation media formats, codecs and technologies in the public interest.

Founding members:

Amazon, Netflix, Microsoft, Intel, Cisco, Mozilla, Google

http://aomedia.org

News: An open alliance for media (2/2)

The Alliance’s initial focus is to deliver a next-generation video format that is:

❖ Interoperable and open;

❖ Optimized for the web;

❖ Scalable to any modern device at any bandwidth;

❖ Designed with a low computational footprint and optimized for hardware;

❖ Capable of consistent, highest-quality, real-time video delivery; and

❖ Flexible for both commercial and non-commercial content, including user-generated content.

Among the Alliance’s goals is the creation of a new, high-quality open video

format that improves core media experiences for all.

News: Codecs, Codecs, Codecs

❖ Many companies actively contributing to open codecs:

Google (VP9), Mozilla (Daala), Cisco (Thor)

❖ Microsoft announces VP9 support in their new Edge

browser

❖ Apple apparently is dropping HEVC from iPhone 6s

(source: 9 to 5 Mac)

News: Microsoft Edge

❖ A brand new web browser, with support for

getUserMedia and ORTC (coming soon).

❖ Reported to include VP9

❖ More on ORTC later :-)

Public Service Announcements

PSA: IP Address 'Leakage'

Recap

❖ WebRTC is a P2P stack

❖ P2P means trying to find the fastest route. A fastest route may be locally on your LAN, or over your VPN

❖ Web pages may use data channels silently for CDN purposes

❖ This presents problems when users use VPN to hide their public IP addresses on the Internet

PSA: IP Address 'Leakage'

TL;DR

❖ The behavior of the stack was by design

❖ However, the behavior of users has changed

❖ We believe we can solve this problem in a

smart, safe way

Network Limiter Extension

Network Limiter Extension

❖ Step 1: Network Limiter Extension

➢ Makes WebRTC traffic follow default route -

even if this isn't the 'optimal' path

➢ Explicit opt-in lets us safely understand what

side effects it might have

Next Steps

❖ Step 2: Make Default

➢ Once issues are resolved (a few remain),

turn this behavior on by default

➢ Sites with camera permission can still get

previous behavior

➢ May result in subtle behavior changes for

data channel apps (e.g. more relay)

➢ Try the extension with your app

PSA: Mandatory HTTPS

Chrome 47

rolling out in December 2015

WILL NOT ALLOW getUserMedia requests

from http://

PSA: HTTPS

One. more. time:

NO getUserMedia from HTTP

starting in December

trusted origins only!•

PSA: ECDSA

❖ Elliptic Curve Digital Signature Algorithm (ECDSA)➢ Reduces call setup crypto overhead from 1000 -> 50ms

➢ More secure than RSA-1024

❖ Step 1: Opt-in via API (Chrome 47)

➢ pc.generateCertificate({name: "ECDSA", namedCurve: "P-

256"})

❖ Step 2: Default (Chrome 48 - 49)

➢ Test your system now

PSA: DTLS 1.2

❖ DTLS 1.2➢ Rolling out in Chrome 46-47 timeframe

➢ Should be mostly seamless; falls back to 1.0

➢ Allows more hardware offload of encryption

➢ Try it with your app: --enable-webrtc-dtls12

PSA: test.webrtc.org

Open source tool that tests:

❖ Network conditions (bw, firewalls, etc…)

❖ If microphone is connected and working properly

❖ If camera is connected and working properly

Please contribute: github.com/webrtc/testrtc

PSA: Report it!

Simple Serge / Justin rule:

"If you did not report it, it did not happen."

http://www.webrtc.org/report-bug

Enhancements

Enhancements: Delay Agnostic - AEC

❖ 99% on for Windows

❖ 99% on for Linux

❖ 99% on for ChromeOS

❖ Mac next week,

after encouraging 1% experiment

❖ App control via googDAEchoCancellation constraint

Enhancements: AEC rollout troubles

Rise in full echo reports in June

❖ Caused by condition where interface between the render

and browser processes causes audio duplication

❖ Throws old AEC off (which means Mac right now)

❖ New DA-AEC adapts after 1-2 seconds

❖ Still investigating why duplicates happen

❖ Apps can control

Enhancements: Screensharing

❖ Faster screen sharing in Chrome 45

❖ Improved handling of complex scene switches

❖ Better support for scrolling and spreadsheet borders

❖ More improvements waiting in 46 around BWE

Enhancements: Screensharing

Enhancements: Mobile performance

❖ 5x faster rendering code➢ Encoding and rendering local video from textures

❖ Capture performance improvements➢ No more frame copies. No more conversions.

❖ Battery and CPU usage➢ 75% reduction in GPU usage

➢ ~50% reduction power consumption

Enhancements: Mobile power savings

Enhancements: Mobile audio

❖ New Android audio stack➢ 40% reduction in loopback latency on devices that support Open SL

❖ Major improvements to iOS audio➢ Early tests show round-trip latency reduced from ~90ms to ~60ms

➢ Complexity (CPU) has also been reduced (no figures yet).

➢ Many existing crash issues have been resolved

Enhancements: Mobile video

❖ VP8 + H.264 HW accel on Android➢ For Android 5.0+

➢ Works best on Qualcomm chipsets

❖ H.264 HW accel on iOS➢ For iOS 8+

❖ Works well; further optimizations coming

❖ Track it: bugs.webrtc.org, issue 4081

Enhancements: Video smoothness

Chrome 45

Enhancements: Video smoothness

Chrome 46

Enhancements: Chrome on desktop

❖ New JS API for selecting audio output devices➢ HTMLMediaElement.setSinkId()

➢ Currently behind flag; track it: crbug.com/438023

❖ Updated API for device enumeration➢ MediaDevices.enumerateDevices()

❖ Event-driven datachannel buffering➢ DataChannel.onbufferedamountlow

❖ IPv6

Around the corner

Around the corner: iOS API revamp

❖ v2 API underway➢ Adjusts API to mimic JS API more closely

➢ Many cosmetic changes to conform to ObjC guidelines

➢ Callbacks will come on main event queue

➢ Release via CocoaPods

❖ v2 API will be side-by-side with current API➢ For some finite transition period...

Around the corner: VP9

❖ On (no flag) in M47, with standard packetization

❖ Initial rollout will be single layer➢ "40% fewer bits at 15% more CPU"

❖ Working with Vidyo on SVC support➢ Temporal + Spatial with low overhead

➢ Still need to figure out APIs to control this

➢ Initial SVC rollout using flag

Around the corner: H.264 in Chrome

❖ Working in limited scenarios on mobile and desktop

❖ Initial Chrome release will be software codec*

❖ Will interop with WebRTC standalone on Android/iOS

❖ M48 is a good guess (beta by EOY 2015)

❖ Track it: crbug.com/500605

Around the corner: MediaStreamRecorder

Top request on chromium.org (over 2500 stars)

❖ Initial focus on recording local MediaStreams

❖ Goal is to have it working behind a flag in Chrome 47➢ Your help in testing will be crucial

➢ Would love to hear about your use cases

❖ Track it: crbug.com/262211

Around the corner: Misc

❖ Faster ICE, TURN setup

❖ Instant Wifi/Cell handoff

❖ More efficient radio management

Icebox

❖ Remote MediaStream processing in Web Audio➢ crbug.com/121673

❖ Unified Plan➢ crbug.com/465349

❖ WebRTC in Chrome for iOS➢ crbug.com/416226

WebRTC/ORTC (1/2)

❖ WebRTC 1.0 targeting Last Call* by EOY2015

➢ Incorporates many ORTC objects

(RtpSender/Receiver, Ice/Dtls/SctpTransport)

❖ New objects provide more direct control:➢ Switch cameras/tracks/codecs on the fly

➢ Set maximum bitrate for an encoding

➢ Configure simulcast (hopefully)

❖ Coming to Chrome in 2016 (Maybe a little in 2015)

WebRTC/ORTC (2/2)

❖ After WebRTC 1.0? WebRTC NV

❖ WebRTC NV fully converges ORTC with WebRTC 1.0

❖ Apps can program to 1.0 (high-level) or object APIs

➢ Complete bypass of SDP, if desired

WebRTC/ORTC convergent,

not divergent

(Yay!)

That’s all folks