2. Protocol Droid
Webrtc fan -
Standards pusher
Doing my own thing with IOT
Some consulting
ABOUT: TIM PANTON
@steely_glint - Westhawk Ltd
3. CHANGE IS COMING
1905
Newtonian Physics
All wrapped up
Almost…. ->
Photoelectric effect
Quantum view of universe
New possibilities
WebRTC is like that.
Changes communications
baseline
Adding P2P security +context
@steely_glint - Westhawk Ltd
4. Pay per min for calls
THE OLD WAY
@steely_glint - Westhawk Ltd
5. Twillio will do 1bn webrtc minutes this year
Most of them in apps like Uber and twiddla
It is still communication – but in context
Context first – call second
NOT JUST ‘CALLS’ ANY MORE
@steely_glint - Westhawk Ltd
7. Setting up a call is about establishing a shared context
Who am I?
Who can call who?
Do you want to speak to me?
Login + cookies is one way – but there are others
Text ‘upgrade’ is defacto now.
URLs:
https://appear.in/steely_glint
But that didn’t work for my video-call-my-parrot app.
(YoPet)
CONTEXT
@steely_glint - Westhawk Ltd
8. Video effects in high level language
Realtime
Built into browser
Examples:
http://seriouslyjs.org/ - real time green-screen in your browser!
http://www.html5rocks.com/en/tutorials/webgl/jsartoolkit_we
brtc/AR_mediaStream.html - magic AR
Can also be applied to remote video streams.
WEBGL
@steely_glint - Westhawk Ltd
9. Use video to
Exchange a token
Out of band
Save it
Proximity based pairing – like bluetooth but easier
Useful for ‘things’ without a usable keyboard
Filed a patent on Token choice
(See IIT talk for details)
Untrusted (federated) middleman.
YOPET DEMO
@steely_glint - Westhawk Ltd
10. Late 80’s synth in your browser (https://www.flickr.com/photos/gmacklin/)
WEBAUDIO
@steely_glint - Westhawk Ltd
12. WebAudio + WebRTC
Chrome supports outbound webRTC streams from WebAudio
Firefox >=39 supports both directions
Process your audio before sending it (chrome)
Filter, delay, fft, convolve
Combine effects to pitch shift
Display spectrum
Arbitrary maths in webworker
In Firefox you can do the same on the inbound side too
SO WHAT?
@steely_glint - Westhawk Ltd
13. No longer need to talk to yourself
Press a button to inject audio
No EC or ACG in the way
Test code only – not production
w i n d o w . w i r e . a p p . r e p o s i t o r y . c a l l . i n j e c t _ a u d i o _ i n t o _ c a l l ( w i r e . a p p . r e p o s i t o r y . c o n v e r s a t i o n . a c t i v e _ c o n v e r s a t i o n ( ) . i d ,
” a u d i o / r e a d y _ t o _ t a l k . m p 3 " )
EXAMPLE – INJECT TEST AUDIO
@steely_glint - Westhawk Ltd
14. _wrap_local_stream: (stream) =>
wrap_stream = stream
#should test for audio stream type here...
@contex = new window.AudioContext()
@localsource = @context.createMediaStreamSource stream
@localdest = @audio_context.createMediaStreamDestination()
@addeffects()
wrap_stream = @local_audio_dest.stream
return wrap_stream
CODE
@steely_glint - Westhawk Ltd
18. Firefox debug screen
Various plugboards
Volume meter
IF YOU LIKE GRAPHICS
@steely_glint - Westhawk Ltd
19. Use WebAudio to Inject Audio
Acoustically couple to test device
Compare returning stream from DUT
Measure latency from differences
Tests Audio and network path
in Firefox nightly
LATENCY MEASUREMENT
@steely_glint - Westhawk Ltd
20. Use WebAudio to do IVR
Do the automated part locally
Only connect when actually need agent
Higher quality audio
More network resilient
Much less dialplan?
(use 1m web devs?)
LONGER TERM
@steely_glint - Westhawk Ltd
21. Web Browser has rich APIs
Use them to delight your user
To make your life easier
Or both!
thp@westhawk.co.uk
@steely_glint
(thanks to wire.com for examples in this talk)
SUMMARY
@steely_glint - Westhawk Ltd