SlideShare ist ein Scribd-Unternehmen logo
1 von 65
December	
  2015	
  Standards	
  Update	
  
a.k.a	
  
One	
  year	
  of	
  standards	
  awesomeness	
  
Dr.	
  Alex	
  Gouaillard	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Overview	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
•  Early	
  2015	
  WebRTC	
  	
  
•  Object	
  Models	
  APIs	
  
•  Glue	
  (Transceiver)	
  
•  ICE	
  and	
  opMmizaMons	
  
•  Simulcast	
  
•  Others	
  in	
  webrtc	
  1.0	
  
	
  
Early	
  2015,	
  peer-­‐to-­‐peer	
  webRTC	
  Model	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
hRp://www.html5rocks.com/en/tutorials/webrtc/basics/	
  	
  	
  	
  	
  	
  
Signaling	
  
server	
  
	
  
Early	
  2015,	
  peer-­‐to-­‐peer	
  webRTC	
  Model	
  
PeerConnecMon	
  
	
  
JavaScript	
  APP	
  (Sender)	
  
	
  
JavaScript	
  APP	
  (Receiver)	
  
	
  
PeerConnecMon	
  
	
  
Media	
  
Stream	
  
Data	
  
Channel	
  
CreateOffer	
  
SetLocal	
  
SetRemote	
  
SetLocal	
  
SetRemote	
  
Offer	
  (SDP)	
   Answer	
  (SDP)	
  
Candidates	
  
(SDP)	
  
Media	
  
Stream	
  
Data	
  
Channel	
  
OnCandidate	
  
AddCandidate	
  
CreateAnswer	
  
ICE	
  
	
  
Bindings	
  +	
  tests	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Signaling	
  
server	
  
	
  
Early	
  2015,	
  peer-­‐to-­‐peer	
  webRTC	
  Model	
  
OmniPotent	
  PeerConnecMon	
  
PeerConnecMon	
  
	
  
	
  
	
  
	
  
JavaScript	
  APP	
  (Sender)	
  
	
  
JavaScript	
  APP	
  (Receiver)	
  
	
  
PeerConnecMon	
  
	
  
	
  
	
  
	
  
Media	
  
Stream	
  
Data	
  
Channel	
  
ICE	
  UA	
  
	
  
	
  
	
  
DTLS	
  
RTP	
  
Codec	
  
CreateOffer	
  
Gather	
  
Transport	
  
SetLocal	
  
SetRemote	
  
ICE	
  UA	
  
	
  
	
  
	
  
DTLS	
  
RTP	
  
Codec	
  
Gather	
  
Transport	
  
SetLocal	
  
SetRemote	
  
Offer	
  (SDP)	
   Answer	
  (SDP)	
  
Candidates	
  
(SDP)	
  
Media	
  
Stream	
  
Data	
  
Channel	
  
OnCandidate	
  
AddCandidate	
  
CreateAnswer	
  
ICE	
  
	
  
Bindings	
  +	
  tests	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Early	
  2015	
  webRTC	
  Model	
  
PC	
  internals	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
hRp://www.w3.org/TR/webrtc/	
  	
  
Early	
  2015	
  webRTC	
  Model	
  
PC	
  internals	
  
Never	
  Used.	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
hRp://www.w3.org/TR/webrtc/	
  	
  
Early	
  2015	
  webRTC	
  Model	
  
PC	
  internals	
  
1	
  state,	
  4	
  
different	
  
cases	
  …	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
hRp://www.w3.org/TR/webrtc/	
  	
  
Early	
  2015	
  webRTC	
  Model	
  
PC	
  internals	
  
Mutually	
  
Exclusive	
  
Paths	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
hRp://www.w3.org/TR/webrtc/	
  	
  
stable	
  
have-­‐local-­‐offer	
  
stable	
  
OFFER	
  
ANSWER	
  
Create	
  PC	
  
	
  
	
  
Create	
  offer	
  
	
  
SetLocal(offer)	
   Create	
  PC	
  
SetRemote(offer)	
  
	
  
	
  
Create	
  answer	
  
	
  
SetLocal(answer)	
  
	
  
stable	
  
Have-­‐remote-­‐
offer	
  
stable	
  SetRemote(answer)	
  
addRemoteStream	
  
	
  
Early	
  2015	
  webRTC	
  Model	
  
PC	
  internals	
  
Alternate	
  view	
  
Caller	
   Callee	
  Internet	
  
	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Temasys	
  Comm.,	
  2014.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Early	
  2015	
  webRTC	
  Model	
  
PC	
  internals	
  
ICE	
  
States	
  visible	
  from	
  JS	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
hRp://www.w3.org/TR/webrtc/	
  	
  
Early	
  2015	
  webRTC	
  Model	
  
PC	
  internals	
  
ICE	
  
Not	
  always	
  reachable	
  (not	
  implemented)	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
hRp://www.w3.org/TR/webrtc/	
  	
  
Early	
  2015	
  webRTC	
  Model	
  
PC	
  internals	
  
ICE	
  
1	
  state	
  several	
  failures:	
  
-­‐  ICE	
  failure,	
  
-­‐  DTLS	
  Failure,	
  …	
  
-­‐  For	
  mulMple	
  tracks,	
  if	
  one	
  track	
  fail,	
  the	
  state	
  is	
  
“failed”,	
  no	
  way	
  to	
  tell	
  which	
  one	
  failed	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
hRp://www.w3.org/TR/webrtc/	
  	
  
DONE	
  	
  	
  	
  	
  FROZEN	
  	
  	
  IN	
  CALL	
  	
  	
  	
  	
  	
  	
  CONNECTION	
  	
  	
  	
  	
  	
  	
  HANDSHAKE	
  (SDP	
  O/A)	
  	
  	
  	
  	
  	
  	
  	
  .	
  
new	
  
checking	
  
connected	
  
disconnected	
  
failed	
  
Completed	
  
close	
  
new	
  
gathering	
  
complete	
  
CALLER	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  SIG-­‐SERVER	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  CALLEE	
  
stable	
  
have-­‐local-­‐offer	
  
stable	
  
Close	
  
OFFER	
  
ANSWER	
  
Create	
  PC	
  
	
  
Add	
  local	
  stream(s)	
  
Create	
  offer	
  
<modify	
  sdp>	
  
SetLocal(offer)	
  
Sending	
  offer	
   Create	
  PC	
  
SetRemote(offer)	
  
addRemoteStream(s)	
  
Add	
  local	
  stream(s)	
  
Create	
  answer	
  
<modify	
  sdp>	
  
SetLocal(answer)	
  
Send	
  answer	
  
stable	
  
Have-­‐remote-­‐
offer	
  
stable	
  
new	
  
gathering	
  
complete	
  
onIceCandidate	
  
<Filter	
  candidates>	
  
Send	
  candidate	
  
	
  
	
  
	
  
<Filter	
  candidates>	
  
addIceCandidate	
  
onIceCandidate	
  
<Filter	
  candidates>	
  
Send	
  candidate	
  
	
  
	
  
	
  
<Filter	
  candidates>	
  
addIceCandidate	
  
new	
  
checking	
  
connected	
  
disconnected	
  
failed	
  
Completed	
  
close	
   Close	
  
©	
  Temasys	
  CommunicaMons,	
  pvt,	
  ltd,	
  2014	
  
	
  	
  	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
CANDIDATES	
  
Peer	
  
ConnecMon	
  
ICE	
  
ConnecMon	
  
ICE	
  
Gathering	
  
SetRemote(answer)	
  
addRemoteStream	
  
	
  
BYE	
  
Early	
  2015,	
  peer-­‐to-­‐peer	
  webRTC	
  Model	
  
Open	
  QuesMons	
  
1.  How	
  do	
  I	
  handle	
  bandwidth	
  preferences	
  
2.  How	
  do	
  I	
  check	
  fingerprint	
  (MITM	
  aRacks	
  prevenMon)	
  
3.  How	
  do	
  I	
  handle	
  codecs	
  and	
  their	
  parameters	
  
=>	
  Hum,	
  …….	
  Just	
  modify	
  the	
  SDP	
  and	
  pray	
  it	
  works.	
  
	
  
4.  How	
  to	
  know	
  which	
  pair	
  of	
  candidate	
  is	
  being	
  used?	
  
5.  How	
  do	
  I	
  restrict	
  the	
  ICE	
  gathering	
  (not	
  to	
  expose	
  my	
  IPs)	
  
6.  How	
  do	
  I	
  get	
  more	
  info	
  about	
  ICE	
  failures?	
  
7.  How	
  do	
  I	
  make	
  the	
  (ICE)	
  handshake	
  faster?	
  
8.  How	
  do	
  I	
  get	
  rid	
  of	
  JSEP,	
  SDP,	
  O/A,	
  …..?	
  
9.  Can	
  I	
  switch	
  front	
  /	
  self	
  view	
  without	
  renegoMaMon?	
  
=>	
  No	
  can’t	
  do.	
  
	
   ©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Overview	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
•  Early	
  2015	
  WebRTC	
  	
  
•  Object	
  Models	
  APIs	
  
•  Glue	
  (Transceiver)	
  
•  ICE	
  and	
  OpMmizaMons	
  
•  Simulcast	
  
•  Others	
  in	
  webrtc	
  1.0	
  
	
  
Q2	
  2015,	
  New	
  W3C	
  WebRTC	
  charter	
  
•  =>	
  ORTC	
  –	
  WebRTC	
  merge	
  
•  NoMon	
  of	
  Object	
  Model	
  API	
  (ORTC	
  inspired)	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
hRp://ortc.org/wp-­‐content/uploads/2014/08/ortc.html	
  	
  
Object	
  Models?	
  
•  Each	
  Object	
  Does	
  only	
  one	
  thing!	
  
•  Each	
  Object	
  can	
  be	
  probed	
  for	
  capabiliMes	
  (JS)	
  
•  Parameters	
  can	
  be	
  get/set	
  dynamically	
  (JS)	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
#8	
  (Edge)	
  
hRp://ortc.org/wp-­‐content/uploads/2014/08/ortc.html	
  	
  
Object	
  Model:	
  Example	
  
RtpSender	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
-­‐  MediaStreamTrack	
  	
  track	
  
-­‐  DTLSTransport	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  transport	
  
-­‐  DTLSTransport	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  rtcpTransport	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
Promise<void>	
  replaceTrack(	
  track	
  )	
  
RtpCapabiliMes	
  getCapabiliMes()	
  
RtpParameters	
  getParameters()	
  
Void	
  	
  setParameters(	
  RtpParameters	
  )	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Object	
  Model:	
  Example	
  
RtpSender	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
-­‐  MediaStreamTrack	
  	
  track	
  
-­‐  DTLSTransport	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  transport	
  
-­‐  DTLSTransport	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  rtcpTransport	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
Promise<void>	
  replaceTrack(	
  track	
  )	
  
RtpCapabiliMes	
  getCapabiliMes()	
  
RtpParameters	
  getParameters()	
  
Void	
  	
  setParameters(	
  RtpParameters	
  )	
  
Switch	
  one	
  track	
  for	
  
another	
  without	
  
renegoMaMon	
  
All	
  the	
  ICE	
  magic	
  and	
  the	
  EncrypMon	
  
happen	
  therein.	
  If	
  bundled,	
  both	
  
points	
  to	
  the	
  same	
  object.	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
#9	
  
Object	
  Model:	
  Example	
  
CapabiliMes	
  and	
  Parameters	
  
RtpSender	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
-­‐  MediaStreamTrack	
  	
  track	
  
-­‐  DTLSTransport	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  transport	
  
-­‐  DTLSTransport	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  rtcpTransport	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
Promise<void>	
  replaceTrack(	
  track	
  )	
  
RtpCapabiliMes	
  getCapabiliMes()	
  
RtpParameters	
  getParameters()	
  
Void	
  	
  setParameters(	
  RtpParameters	
  )	
  
	
  
RtpCapabiliMes	
  [readonly]	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
-­‐	
  Seq<RtpCodecParameters>	
  	
  	
  	
  	
  	
  	
  	
  	
  codecs	
  
-­‐	
  Seq<RtpHeaderExtParameters>	
  headerExtensions	
  
RtpParameters	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
-­‐	
  seq<RtpEncodingParameters>	
  	
  	
  encodings	
  
-­‐	
  seq<RtpHeaderExtParameters>	
  headerExtensions	
  
-­‐	
  RTCRtcpParameters	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  rtcp	
  
-­‐	
  Seq<RtpCodecParameters>	
  	
  	
  	
  	
  	
  	
  	
  	
  codecs	
  
Where	
  most	
  of	
  the	
  Codec	
  and	
  
streaming	
  magic	
  happen	
  now!	
  
	
  
Can	
  change	
  parameters	
  during	
  
a	
  call,	
  through	
  a	
  JS	
  API.	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
The	
  RtpSender	
  Object:	
  
RtpParameters	
  in	
  Detail	
  
RtpParameters	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
-­‐	
  seq<RtpEncodingParameters>	
  	
  	
  encodings	
  
-­‐	
  seq<RtpHeaderExtParameters>headerExtensions	
  
-­‐	
  RTCRtcpParameters	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  rtcp	
  
-­‐	
  Seq<RtpCodecParameters>	
  	
  	
  	
  	
  	
  	
  	
  	
  codecs	
  
RtpEncodingParameters	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
-­‐	
  unsigned	
  long	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ssrc	
  
-­‐	
  RTCRtxParameters	
  rtx	
  
-­‐	
  RTCFecParameters	
  fec	
  
-­‐	
  boolean	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  acMve	
  
-­‐	
  RTCPriorityType	
  	
  	
  	
  	
  	
  priority	
  
-­‐	
  unsigned	
  long	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  maxBitrate	
  
-­‐	
  RTCDegradaMonPreference	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  degradaMonPreference	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
DeacMvates	
  sending	
  
(saves	
  bandwidth	
  when	
  muFng)	
  
PrioriMze	
  streams	
  
Cap	
  Bandwidth	
  
Chose	
  to	
  impact	
  spaMal	
  or	
  temporal	
  
resoluMon	
  (or	
  balanced)	
  in	
  case	
  of	
  
degradaMon.	
  
#1	
  
RtpCodecParameters	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
-­‐	
  unsigned	
  short	
  payloadType	
  
-­‐	
  DOMString	
  	
  	
  	
  	
  	
  	
  	
  mimeType	
  
-­‐	
  unsigned	
  long	
  	
  	
  clockRate	
  
-­‐	
  unsigned	
  short	
  channels	
  =	
  1	
  
-­‐	
  DOMString	
  	
  	
  	
  	
  	
  	
  	
  sdpFmtpLine	
  
#3	
  
DtlsTransport	
  Object	
  
DtlsTransport	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
-­‐	
  readonly	
  IceTransport	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  transport	
  
-­‐	
  readonly	
  DtlsTransportState	
  state	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
-­‐	
  EventHandler	
  	
  	
  	
  	
  	
  	
  	
  onstatechange	
  
-­‐	
  seq<ArrayBuffer>	
  getRemoteCerMficates()	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
The	
  Ice	
  Object	
  is	
  separated	
  
New	
  State	
  Machine	
  for	
  DTLS	
  
(encrypMon)	
  errors.	
  
ConnecMng	
  
Access	
  The	
  fingerprints	
  
to	
  check	
  against	
  MITM	
  
aRacks.	
  
#2	
  
#6a	
  
IceTransport	
  Object	
  
IceTransport	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
-­‐	
  readonly	
  RTCIceRole	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  role	
  
-­‐	
  readonly	
  RTCIceComponent	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  component	
  
-­‐	
  readonly	
  RTCIceConnecMonState	
  	
  	
  state	
  
-­‐	
  readonly	
  RTCIceGatheringState	
  	
  	
  	
  	
  	
  gatheringState	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
-­‐	
  seq<RTCIceCandidate>	
  getLocalCandidates()	
  
-­‐	
  seq<RTCIceCandidate>	
  getRemoteCandidates()	
  
-­‐	
  RTCIceCandidatePair	
  	
  	
  	
  getSelectedCandidatePair()	
  
-­‐	
  RTCIceParameters	
  	
  	
  	
  	
  	
  	
  	
  	
  getLocalParameters	
  ()	
  
-­‐	
  RTCIceParameters	
  	
  	
  	
  	
  	
  	
  	
  	
  getRemoteParameters()	
  
-­‐	
  seq<ArrayBuffer>	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  getRemoteCerMficates()	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
-­‐	
  EventHandler	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  onstatechange	
  
-­‐	
  EventHandler	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ongatheringstatechange	
  
-­‐	
  EventHandler	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  onselectedcandidatepairchange	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Same	
  State	
  machine,	
  but	
  only	
  for	
  ICE	
  
this	
  Mme.	
  	
  
#6b	
  
Controlling	
  	
  
Controlled	
  
Rtp	
  	
  
Rtcp	
  
Selected	
  Pair	
  (dynamic)	
  
#5	
  
RtpReceiver	
  Object	
  
RtpReceiver	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
-­‐  MediaStreamTrack	
  	
  track	
  
-­‐  DTLSTransport	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  transport	
  
-­‐  DTLSTransport	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  rtcpTransport	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
RtpCapabiliMes	
  	
  	
  	
  getCapabiliMes()	
  
Seq<RtpContribuMngSource>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  getContribuMngSources	
  ()	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Same	
  as	
  sender.	
  
Provide	
  SSRC	
  and	
  audio	
  levels	
  of	
  
each	
  contribuMng	
  source,	
  across	
  
Mme.	
  
RtpContribuMngSource	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
-­‐	
  DOMHighResTimeStamp	
  Mmestamp	
  
-­‐	
  unsigned	
  long	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  source	
  
-­‐	
  byte	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  audioLevel	
  
Early	
  2015,	
  peer-­‐to-­‐peer	
  webRTC	
  Model	
  
Open	
  QuesMons	
  
Have	
  a	
  final	
  API.	
  
•  How	
  do	
  I	
  handle	
  bandwidth	
  preferences	
  
•  How	
  do	
  I	
  check	
  fingerprint	
  (MITM	
  aRacks	
  prevenMon)	
  
•  How	
  to	
  know	
  which	
  pair	
  of	
  candidate	
  is	
  being	
  used?	
  
•  How	
  do	
  I	
  get	
  more	
  info	
  about	
  ICE	
  failures?	
  
•  How	
  do	
  I	
  get	
  rid	
  of	
  JSEP,	
  SDP,	
  O/A,	
  …..?	
  
•  Can	
  I	
  switch	
  front	
  /	
  self	
  view	
  without	
  renegoMaMon?	
  
Have	
  some	
  API,	
  can	
  do	
  beLer	
  or	
  more.	
  
•  How	
  do	
  I	
  handle	
  codecs	
  and	
  their	
  parameters	
  
•  How	
  do	
  I	
  restrict	
  the	
  ICE	
  gathering	
  (not	
  to	
  expose	
  my	
  IPs)	
  
Not	
  addressed	
  yet	
  
•  How	
  do	
  I	
  make	
  the	
  (ICE)	
  handshake	
  faster?	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Overview	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
•  Early	
  2015	
  WebRTC	
  	
  
•  Object	
  Models	
  APIs	
  
•  Glue	
  (Transceiver)	
  
•  ICE	
  and	
  OpMmizaMons	
  
•  Simulcast	
  
•  Others	
  in	
  webrtc	
  1.0	
  
	
  
WebRTC	
  1.0	
  as	
  Object	
  Model	
  +	
  JSEP	
  
Problems:	
  
1.  m-­‐lines	
  in	
  SDP	
  are	
  intrinsically	
  bi-­‐direcMonal	
  
2.  m-­‐lines	
  in	
  SDP	
  have	
  aRributes	
  that	
  fit	
  neither	
  
sender	
  nor	
  receiver	
  object	
  model	
  (mid),	
  or	
  
that	
  would	
  be	
  duplicated.	
  
	
  
How	
  to	
  model	
  the	
  equivalent	
  to	
  a	
  m-­‐line	
  on	
  top	
  
of	
  the	
  Object	
  Model	
  (so	
  we	
  can	
  throw	
  it	
  later	
  if	
  
we	
  decide	
  to	
  get	
  rid	
  of	
  SDP,	
  JSEP,	
  ….)	
  ?	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
RtpTransceiver	
  Object	
  
represents	
  a	
  combinaFon	
  of	
  an	
  RtpSender	
  and	
  an	
  RtpReceiver	
  that	
  share	
  a	
  common	
  mid	
  
RtpTransceiver	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
-­‐	
  DOMString	
  	
  	
  	
  	
  	
  mid	
  
-­‐	
  RtpSender	
  	
  	
  	
  	
  	
  	
  sender	
  
-­‐	
  RtpReceiver	
  	
  	
  	
  receiver	
  
-­‐	
  boolean	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  stopped	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
-­‐	
  void	
  stop()	
  
-­‐	
  void	
  setCodecPreferences	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  (seq<RtpCodecCapability>	
  codecs)	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Convenience	
  Method	
  to	
  set	
  up	
  
codecs	
  at	
  the	
  Transceiver	
  level.	
  
Depending	
  on	
  the	
  sequence	
  of	
  
API	
  calls,	
  allow	
  for	
  elegant	
  
manipulaMon	
  of	
  codec	
  choices	
  
pre	
  or	
  post	
  SDP	
  O/A.	
  
#3	
  
RtpTransceiverInit	
  
-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐	
  
-­‐	
  Boolean	
  send	
  =	
  true	
  
-­‐	
  Boolean	
  receive	
  =	
  true	
  
-­‐	
  seq<MediaStream>	
  streams	
  
Replaces	
  offerToReceive	
  
constraints	
  
Track	
  to	
  Stream	
  referencing	
  this	
  
track	
  
NOTE	
  ALEX	
  :	
  
PeerConnecFon.AddTransceiver(	
  RtpTransceiverInit	
  )	
  
WebRTC	
  1.0	
  as	
  Object	
  Model	
  +	
  JSEP	
  
Drawing?	
  
Explain	
  the	
  pain	
  of	
  the	
  rollback.	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Overview	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
•  Early	
  2015	
  WebRTC	
  	
  
•  Object	
  Models	
  APIs	
  
•  Glue	
  (Transceiver)	
  
•  ICE	
  and	
  OpMmizaMons	
  
•  Simulcast	
  
•  Others	
  in	
  webrtc	
  1.0	
  
	
  
ICE	
  is	
  HOT	
  !	
  
Burning	
  hot	
  …	
  
-­‐  Best	
  NAT/Firewall	
  tech.	
  
-­‐  Fully	
  automated!	
  
-­‐  Lot	
  of	
  ongoing	
  work	
  
=>	
  new	
  WG	
  at	
  IETF	
  	
  
However	
  
-­‐  #1	
  Pain	
  source	
  for	
  large	
  scale	
  soluMons	
  (dixit	
  
cisco,	
  unify,	
  …)	
  
-­‐  SMll	
  slower	
  than	
  telephony	
  calls	
  on	
  mobile	
  
-­‐  Hand-­‐over	
  on	
  mobile	
  problemaMc	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
What’s	
  your	
  flavor?	
  
Full,	
  Trickle,	
  Lite	
  
Feature	
  	
  flavor	
   Full	
   Trickle	
   Lite	
  
Make	
  connecMvity	
  checks	
   Yes	
   Yes	
   NO	
  
Answer	
  connecMvity	
  checks	
   Yes	
   Yes	
   Yes	
  
Controlling	
  or	
  controled	
   Both	
   Both	
   Controlled	
  
Candidates	
  send	
  in	
  the	
  Offer/Answer	
   Yes	
   No	
   ?	
  
Flag	
   Ice-­‐opMon:	
  
trickle	
  
a=ice-­‐lite	
  
hRps://tools.iew.org/html/drax-­‐iew-­‐mmusic-­‐trickle-­‐ice-­‐02	
  
hRps://webrtchacks.com/trickle-­‐ice/	
  
	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Trickle:	
  From	
  10s	
  to	
  1S	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
Q:	
  How	
  to	
  get	
  100ms?	
  
Faster	
  ICE	
  
-­‐  Start	
  even	
  before	
  the	
  call!	
  
-­‐  ICE	
  pool	
  
-­‐  Pre-­‐gathering	
  
	
  
-­‐  Simplify	
  and	
  fasten	
  the	
  pairing	
  /	
  checking	
  
	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Warmup	
  /	
  early	
  media	
  
Make	
  everything	
  async,	
  don’t	
  wait	
  
-­‐  ICE,	
  DTLS,	
  and	
  media	
  ready	
  before	
  signaling	
  is	
  
(warmup)	
  
-­‐  	
  Transceiver	
  +	
  replace	
  track	
  
-­‐  StarMng	
  sending	
  media	
  as	
  you’re	
  sending	
  the	
  
answer	
  (early	
  media)	
  
-­‐  Transceiver	
  awesomeness	
  
-­‐  [use	
  the	
  generic	
  drawing	
  and	
  point	
  to	
  each	
  case]	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
API	
  for	
  default	
  ICE	
  servers	
  
-­‐  Browsers	
  can	
  now	
  propose	
  “default”	
  STUN/
TURN	
  server	
  to	
  applicaMons.	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Overview	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
•  Early	
  2015	
  WebRTC	
  	
  
•  Object	
  Models	
  APIs	
  
•  Glue	
  (Transceiver)	
  
•  ICE	
  and	
  OpMmizaMons	
  
•  Simulcast	
  
•  Others	
  in	
  webrtc	
  1.0	
  
	
  
Reminder	
  
MulM-­‐cast	
  vs	
  Simulcast	
  vs	
  SVC	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
A	
  
B	
  
C	
  
MulMcast	
  
•  Several	
  tracks	
  
•  Decodable	
  separately	
  
•  Bandwidth	
  management	
  separated	
  
HD	
  
SD	
  
QVGA	
  
Simulcast	
  
•  Several	
  tracks	
  
•  Coming	
  from	
  the	
  same	
  source	
  
•  Decodable	
  separately	
  
•  Smart	
  bandwidth	
  management	
  possible	
  
1	
  SSRC	
  
Δ2	
  
Δ1	
  
QVGA	
  
SVC	
  Encoding	
  
•  Several	
  tracks	
  
•  Coming	
  from	
  the	
  same	
  source	
  
•  Not	
  Decodable	
  separately	
  (Except	
  base	
  layer)	
  
•  Smart	
  bandwidth	
  management	
  mandatory	
  
•  Less	
  bandwidth,	
  more	
  resilience.	
  
1	
  SSRC	
  
E
E
E
E
E
E
SVC	
  Enc.	
  
D
D
D
HD	
  
SD	
  
QVGA	
  
Reminder	
  
State	
  of	
  MulM-­‐cast	
  signaling	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
From	
  the	
  beginning	
  of	
  webrtc,	
  one	
  have	
  been	
  able	
  to	
  
send	
  mulMple	
  media	
  streams	
  in	
  separate	
  peer	
  
connecMons,	
  but	
  it	
  consumes	
  much	
  more	
  ports,	
  and	
  
there	
  is	
  no	
  sync	
  between	
  those	
  tracks	
  (lip	
  sync,	
  ..).	
  	
  
A	
  
B	
  
C	
  
E
E
E
MulMcast	
  
•  Several	
  tracks	
  
•  Decodable	
  separately	
  
•  Bandwidth	
  management	
  separated	
  
RTP/RTCP	
  within	
  a	
  PeerConnecMon	
  
Use	
  case:	
  2	
  media	
  tracks	
  (audio	
  and	
  video),	
  how	
  
many	
  ports	
  do	
  I	
  need?	
  Less	
  ports	
  would	
  useful	
  
for	
  
-­‐  BeRer	
  connecMon	
  rate	
  esp.	
  over	
  mobile	
  net.	
  
-­‐  OpMmize	
  turn/media	
  server	
  resources	
  
-­‐  Client	
  side	
  ports	
  constraints	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
RTP/RTCP	
  within	
  a	
  PeerConnecMon	
  
Default	
  
4	
  
A	
  
V	
  
RTP	
   RTCP	
  
hLp://tools.ieV.org/html/draW-­‐ieV-­‐mmusic-­‐sdp-­‐bundle-­‐negoFaFon	
  
hLp://datatracker.ieV.org/doc/rfc5761/	
  
	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Cosmo	
  ConsulFng.,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
RTP/RTCP	
  
Default	
  
4	
  
Bundle	
  
2	
  
A	
  
V	
  
RTP	
   RTCP	
  
A	
  
V	
  
RTP	
   RTCP	
  
a=group:BUNDLE	
  
hLp://tools.ieV.org/html/draW-­‐ieV-­‐mmusic-­‐sdp-­‐bundle-­‐negoFaFon	
  
hLp://datatracker.ieV.org/doc/rfc5761/	
  
	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Cosmo	
  ConsulFng.,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
RTP/RTCP	
  
Default	
  
4	
  
Bundle	
  
2	
  
Rtcp-­‐mux	
  
2	
  
A	
  
V	
  
RTP	
   RTCP	
  
A	
  
V	
  
RTP	
   RTCP	
  
A	
  
V	
  
RTP	
   RTCP	
  
a=rtcp-­‐mux	
  a=group:BUNDLE	
  
hLp://tools.ieV.org/html/draW-­‐ieV-­‐mmusic-­‐sdp-­‐bundle-­‐negoFaFon	
  
hLp://datatracker.ieV.org/doc/rfc5761/	
  
	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Cosmo	
  ConsulFng.,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
RTP/RTCP	
  
Default	
  
4	
  
Bundle	
  
2	
  
Rtcp-­‐mux	
  
2	
  
Both	
  
1	
  
A	
  
V	
  
RTP	
   RTCP	
  
A	
  
V	
  
RTP	
   RTCP	
  
A	
  
V	
  
RTP	
   RTCP	
  
A	
  
V	
  
RTP	
   RTCP	
  
a=rtcp-­‐mux	
  a=group:BUNDLE	
  
hLp://tools.ieV.org/html/draW-­‐ieV-­‐mmusic-­‐sdp-­‐bundle-­‐negoFaFon	
  
hLp://datatracker.ieV.org/doc/rfc5761/	
  
	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Cosmo	
  ConsulFng.,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
RTP/RTCP	
  
-­‐  BeRer	
  connec.	
  rate	
  esp.	
  over	
  mobile	
  net.	
  (10%)	
  
-­‐  OpMmize	
  turn/media	
  server	
  resources	
  (factor	
  4!)	
  
-­‐  Client	
  side	
  ports	
  constraints	
  (c’est	
  la	
  vie)	
  
-­‐  Beware	
  of	
  components	
  /	
  ports	
  /	
  opMons	
  changes	
  
during	
  O/A	
  
More	
  examples	
  of	
  SDPs:	
  
hLp://tools.ieV.org/id/draW-­‐nandakumar-­‐rtcweb-­‐sdp-­‐01.html	
  
	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Cosmo	
  ConsulFng.,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
RTP/RTCP	
  –	
  extrapolaMon	
  to	
  n	
  tracks	
  
Default	
  
2n	
  
Bundle	
  
n	
  
Rtcp-­‐mux	
  
n	
  
Both	
  
1	
  
A	
  
V	
  
RTP	
   RTCP	
  
A	
  
V	
  
RTP	
   RTCP	
  
A	
  
V	
  
RTP	
   RTCP	
  
A	
  
V	
  
RTP	
   RTCP	
  
a=rtcp-­‐mux	
  a=group:BUNDLE	
  
hLp://tools.ieV.org/html/draW-­‐ieV-­‐mmusic-­‐sdp-­‐bundle-­‐negoFaFon	
  
hLp://datatracker.ieV.org/doc/rfc5761/	
  
	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Cosmo	
  ConsulFng.,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Reminder	
  
State	
  of	
  MulM-­‐cast	
  signaling	
  
For	
  mulFple	
  streams	
  in	
  a	
  single	
  peer	
  connecFon!	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Reminder	
  
State	
  of	
  MulM-­‐cast	
  signaling	
  
For	
  mulFple	
  streams	
  in	
  a	
  single	
  peer	
  connecFon!	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Cosmo	
  ConsulFng.,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
1.  For	
  historical	
  reason,	
  a	
  specific	
  non	
  standard	
  
signaling	
  has	
  been	
  used	
  by	
  chrome	
  for	
  almost	
  two	
  
years	
  (Plan	
  B).	
  It	
  has	
  become	
  the	
  de-­‐facto	
  standard	
  
(jitsi,	
  …)	
  
2.  The	
  real	
  spec	
  is	
  “Unified	
  Plan”,	
  now	
  implemented	
  
in	
  FF,	
  and	
  soon	
  in	
  Chrome.	
  
Plan	
  B:	
  group	
  per	
  media	
  type	
  
(chrome	
  current,	
  hangout,	
  jitsi)	
  
a=group:BUNDLE	
  sdparta_0	
  sdparta_1	
  
a=msid-­‐semanMc:WMS	
  *	
  
	
  
m=audio	
  9	
  RTP/SAVPF	
  109	
  9	
  0	
  8	
  
a=mid:sdparta_0	
  
a=ssrc:323910839	
  
	
  	
  	
  	
  	
  msid:{d57d3917-­‐64e9-­‐4f49-­‐ad‚-­‐b049d165c312}	
  {920e9ffc-­‐728e-­‐0d40-­‐a1b9-­‐ebd0025c860a}	
  
a=ssrc:323910839	
  
	
  	
  	
  	
  	
  cname:{72b9ff9f-­‐4d8a-­‐5244-­‐b19a-­‐bd9b47251770}	
  
	
  
m=video	
  9	
  RTP/SAVPF	
  120	
  
a=mid:sdparta_1	
  
a=ssrc:2917595157	
  
	
  	
  	
  	
  msid:{d57d3917-­‐64e9-­‐4f49-­‐ad‚-­‐b049d165c312}	
  {35eeb34f-­‐f89c-­‐3946-­‐8e5e-­‐2d5abd38c5a5}	
  
a=ssrc:2917595157	
  
	
  	
  	
  	
  cname:{72b9ff9f-­‐4d8a-­‐5244-­‐b19a-­‐bd9b47251770}	
  
	
  
	
  
	
  
a=ssrc:2325911938	
  
	
  	
  	
  	
  msid:{3a2bfe17-­‐c65d-­‐364a-­‐af14-­‐415d90bb9f52}	
  {aa7a4ca4-­‐189b-­‐504a-­‐9748-­‐5c22bc7a6c4f}	
  
a=ssrc:2325911938	
  
	
  	
  	
  	
  cname:{72b9ff9f-­‐4d8a-­‐5244-­‐b19a-­‐bd9b47251770}	
  
hLps://tools.ieV.org/html/draW-­‐uberF-­‐rtcweb-­‐plan-­‐00	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Cosmo	
  ConsulFng.,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Unified	
  plan:	
  1	
  media	
  =>	
  1	
  m-­‐line	
  =>	
  1	
  mid	
  
(FF	
  current,	
  next	
  chrome,	
  real	
  standard)	
  
a=group:BUNDLE	
  sdparta_0	
  sdparta_1	
  sdparta_2	
  
a=msid-­‐semanMc:WMS	
  *	
  
	
  
m=audio	
  9	
  RTP/SAVPF	
  109	
  9	
  0	
  8	
  
a=mid:sdparta_0	
  
a=	
  
	
  	
  	
  	
  	
  msid:{d57d3917-­‐64e9-­‐4f49-­‐ad‚-­‐b049d165c312}	
  {920e9ffc-­‐728e-­‐0d40-­‐a1b9-­‐ebd0025c860a}	
  
a=ssrc:323910839	
  
	
  	
  	
  	
  	
  cname:{72b9ff9f-­‐4d8a-­‐5244-­‐b19a-­‐bd9b47251770}	
  
	
  
m=video	
  9	
  RTP/SAVPF	
  120	
  
a=mid:sdparta_1	
  
a=	
  
	
  	
  	
  	
  msid:{d57d3917-­‐64e9-­‐4f49-­‐ad‚-­‐b049d165c312}	
  {35eeb34f-­‐f89c-­‐3946-­‐8e5e-­‐2d5abd38c5a5}	
  
a=ssrc:2917595157	
  
	
  	
  	
  	
  cname:{72b9ff9f-­‐4d8a-­‐5244-­‐b19a-­‐bd9b47251770}	
  
	
  
m=video	
  9	
  RTP/SAVPF	
  120	
  
a=mid:sdparta_2	
  
a=	
  
	
  	
  	
  	
  msid:{3a2bfe17-­‐c65d-­‐364a-­‐af14-­‐415d90bb9f52}	
  {aa7a4ca4-­‐189b-­‐504a-­‐9748-­‐5c22bc7a6c4f}	
  
a=ssrc:2325911938	
  
	
  	
  	
  	
  cname:{72b9ff9f-­‐4d8a-­‐5244-­‐b19a-­‐bd9b47251770}	
  
hLps://tools.ieV.org/html/draW-­‐roach-­‐mmusic-­‐unified-­‐plan-­‐00	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Cosmo	
  ConsulFng.,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Reminder	
  
MulM-­‐cast	
  vs	
  Simulcast	
  vs	
  SVC	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
A	
  
B	
  
C	
  
MulMcast	
  
•  Several	
  tracks	
  
•  Decodable	
  separately	
  
•  Bandwidth	
  management	
  separated	
  
HD	
  
SD	
  
QVGA	
  
Simulcast	
  
•  Several	
  tracks	
  
•  Coming	
  from	
  the	
  same	
  source	
  
•  Decodable	
  separately	
  
•  Smart	
  bandwidth	
  management	
  possible	
  
1	
  SSRC	
  
Δ2	
  
Δ1	
  
QVGA	
  
SVC	
  Encoding	
  
•  Several	
  tracks	
  
•  Coming	
  from	
  the	
  same	
  source	
  
•  Not	
  Decodable	
  separately	
  (Except	
  base	
  layer)	
  
•  Smart	
  bandwidth	
  management	
  mandatory	
  
•  Less	
  bandwidth,	
  more	
  resilience.	
  
1	
  SSRC	
  
E
E
E
E
E
E
SVC	
  Enc.	
  
D
D
D
HD	
  
SD	
  
QVGA	
  
Simulcast:	
  Use	
  case	
  for	
  webRTC	
  1.0	
  
-­‐  Use	
  Case	
  for	
  webrtc	
  1.0:	
  SFU	
  	
  
	
  
-­‐  Browser	
  send	
  simulcast,	
  
does	
  not	
  receive	
  simulcast	
  
(in	
  webrtc	
  1.0)	
  
Desk.	
  
HD	
  
SFU	
  
SD	
  
QVGA	
  
Cr.	
  
Book	
  
Mobile	
  
Desk.	
  
HD	
  
SD	
  
QVGA	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Simulcast	
  (and	
  SVC	
  later):	
  
3	
  layers,	
  3	
  working	
  groups,	
  2	
  standard	
  bodies	
  
-­‐  Separate	
  the	
  	
  
-­‐  “on-­‐the-­‐wire”	
  info	
  (1),	
  	
  
-­‐  JS	
  API	
  (2),	
  	
  
-­‐  and	
  	
  signaling	
  (3)	
  
Signaling
server
Web
server
Bob
(device)
Alice
(browser)
Media
(3)	
  
(2)	
  
(1)	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Cosmo	
  ConsulFng.,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Simulcast:	
  changes	
  on	
  the	
  wire	
  
-­‐  On	
  the	
  wire	
  work	
  at	
  IETF	
  (AVTEXT):	
  
hLps://tools.ieV.org/html/draW-­‐pthatcher-­‐mmusic-­‐rid-­‐02	
  
	
  
RID	
  in	
  RTP	
  header	
  extensions	
  
	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Simulcast:	
  JS	
  API	
  
-­‐  JS	
  API	
  aRached	
  to	
  the	
  Transceiver	
  object	
  through	
  
the	
  TransceiverInit,	
  using	
  ScaleResoluMonDownBy	
  
keyword:	
  
var	
  sender	
  =	
  pc.addTransceiver(	
  
	
  	
  {sendEncodings:	
  [	
  
	
  	
  	
  	
  {rid:	
  “F”},	
  
	
  	
  	
  	
  {rid:	
  “H”,	
  scaleResoluMonDownBy:	
  2},	
  
	
  	
  	
  	
  {rid:	
  “Q”,	
  scaleResoluMonDownBy:	
  4}	
  	
  
	
  	
  ]}	
  
).sender;	
  
	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Simulcast:	
  Offer	
  SDP	
  
•  Signaling	
  (If	
  all	
  goes	
  well	
  in	
  MMUSIC....	
  )	
  
hLps://tools.ieV.org/html/draW-­‐pthatcher-­‐mmusic-­‐rid-­‐02	
  
•  hLps://tools.ieV.org/html/draW-­‐ieV-­‐mmusic-­‐sdp-­‐simulcast-­‐03	
  
	
  
//	
  In	
  the	
  client’s	
  descripMon	
  
a=rid:F	
  send	
  	
  
a=rid:H	
  send	
  	
  
a=rid:Q	
  send	
  	
  
a=simulcast	
  rid:F,H,Q	
  
	
  	
  
//	
  In	
  the	
  server’s	
  descripMon	
  	
  
a=rid:F	
  recv	
  	
  
a=rid:H	
  recv	
  	
  
a=simulcast	
  rid:F,H	
  	
  
	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
HD	
  
SD	
  
QVGA	
  
1	
  SSRC	
  
E
E
E
Overview	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
•  Early	
  2015	
  WebRTC	
  	
  
•  Object	
  Models	
  APIs	
  
•  Glue	
  (Tranceiver)	
  
•  ICE	
  and	
  OpMmizaMons	
  
•  Simulcast	
  
•  Others	
  in	
  webrtc	
  1.0	
  
Screen	
  Capture	
  API	
  simplificaMon	
  
-­‐  No	
  more	
  disMncMon	
  between	
  screen,	
  windows	
  
and	
  apps.	
  =>	
  no	
  more	
  constraints,	
  flat	
  list.	
  
•  Screen	
  Capture	
  
	
  	
  	
  	
  	
  hnp://w3c.github.io/mediacapture-­‐screen-­‐share/	
  
	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Cosmo	
  ConsulFng.,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
 Record	
  your	
  streams	
  (local),	
  but	
  not	
  all	
  streams	
  (remote).	
  
	
  
hRp://www.w3.org/TR/mediastream-­‐recording/	
  
	
  
Media	
  Stream	
  Recording	
  (Client	
  side)	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Cosmo	
  ConsulFng.,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Use	
  <AUDIO>	
  or	
  <VIDEO>	
  as	
  a	
  source	
  !	
  
hRp://w3c.github.io/mediacapture-­‐fromelement/	
  
	
  
Media	
  Capture	
  from	
  DOM	
  Elements	
  
&&	
  Image	
  Capture	
  (a.k.a.	
  snapshot)	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Cosmo	
  ConsulFng.,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Send	
  different	
  streams	
  to	
  different	
  outputs 	
   	
  	
  
hRp://w3c.github.io/mediacapture-­‐output/	
  
	
  
Audio	
  output	
  devices	
  API	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Cosmo	
  ConsulFng.,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
 hRp://www.w3.org/TR/webrtc-­‐stats/	
  
IdenMfiers	
  for	
  WebRTC's	
  StaMsMcs	
  API	
  
	
  Full	
  stats	
  about	
  data	
  channel,	
  codecs,	
  FEC,	
  …	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Cosmo	
  ConsulFng.,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Transferable	
  DataChannels	
  
a.k.a.	
  DataChannels	
  in	
  workers	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
SECURITY:	
  IP	
  Address	
  Leakage	
  
4	
  levels	
  for	
  candidate	
  gathering	
  
-­‐  All	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [with	
  consent]	
  
-­‐  Restricted	
  I	
  (host	
  +	
  1918)	
  	
  [default]	
  
-­‐  Restricted	
  II	
  (no	
  host)	
  	
  	
  	
  	
  	
  	
  	
  [pref/extension]	
  
-­‐  Only	
  proxy/VPN	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [pref/extension]	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  
Conclusion	
  
WebRTC	
  1.0	
  is	
  Awesome	
  [Evil	
  Grin]	
  
©	
  Dr.	
  Alex	
  Gouaillard	
  @	
  Citrix	
  Systems,	
  2015.	
  Document	
  provided	
  under	
  CC	
  BY-­‐NC	
  4.0	
  

Weitere ähnliche Inhalte

Was ist angesagt?

Open Source Options for Building your WebRTC Solution, May 2015 @ WebRTC Conf...
Open Source Options for Building your WebRTC Solution, May 2015 @ WebRTC Conf...Open Source Options for Building your WebRTC Solution, May 2015 @ WebRTC Conf...
Open Source Options for Building your WebRTC Solution, May 2015 @ WebRTC Conf...Alexandre Gouaillard
 
KITE Network Instrumentation: Advanced WebRTC Testing
KITE Network Instrumentation: Advanced WebRTC TestingKITE Network Instrumentation: Advanced WebRTC Testing
KITE Network Instrumentation: Advanced WebRTC TestingAlexandre Gouaillard
 
Deploying WebRTC in a low-latency streaming service
Deploying WebRTC in a low-latency streaming serviceDeploying WebRTC in a low-latency streaming service
Deploying WebRTC in a low-latency streaming serviceAlexandre Gouaillard
 
Quality Assurance for WebRTC Services
Quality Assurance for WebRTC ServicesQuality Assurance for WebRTC Services
Quality Assurance for WebRTC ServicesTsahi Levent-levi
 
Webrtc plugins for Desktop Browsers
Webrtc plugins for Desktop BrowsersWebrtc plugins for Desktop Browsers
Webrtc plugins for Desktop BrowsersAlexandre Gouaillard
 
WebRTC - On Standards, Identity and Telco Strategy
WebRTC - On Standards, Identity and Telco StrategyWebRTC - On Standards, Identity and Telco Strategy
WebRTC - On Standards, Identity and Telco StrategyJose de Castro
 
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlantaPlugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlantaAlexandre Gouaillard
 
Debugging Complex Issues in Web Applications
Debugging Complex Issues in Web ApplicationsDebugging Complex Issues in Web Applications
Debugging Complex Issues in Web ApplicationsVMware Tanzu
 
WebRTC on Mobile Devices: Challenges and Opportunities
WebRTC on Mobile Devices: Challenges and OpportunitiesWebRTC on Mobile Devices: Challenges and Opportunities
WebRTC on Mobile Devices: Challenges and OpportunitiesVladimir Beloborodov
 
Value Added Services and WebRTC
Value Added Services and WebRTCValue Added Services and WebRTC
Value Added Services and WebRTCDialogic Inc.
 
WebRTC for Telco: Informa's WebRTC Global Summit Preconference
WebRTC for Telco: Informa's WebRTC Global Summit PreconferenceWebRTC for Telco: Informa's WebRTC Global Summit Preconference
WebRTC for Telco: Informa's WebRTC Global Summit PreconferenceTsahi Levent-levi
 
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...Amir Zmora
 
Building great mobile apps: Somethings you might want to know
Building great mobile apps: Somethings you might want to knowBuilding great mobile apps: Somethings you might want to know
Building great mobile apps: Somethings you might want to knowshwetank
 
WebRTC overview
WebRTC overviewWebRTC overview
WebRTC overviewRouyun Pan
 
Microservices Application Tracing Standards and Simulators - Adrians at OSCON
Microservices Application Tracing Standards and Simulators - Adrians at OSCONMicroservices Application Tracing Standards and Simulators - Adrians at OSCON
Microservices Application Tracing Standards and Simulators - Adrians at OSCONAdrian Cockcroft
 
Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...
Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...
Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...VMware Tanzu
 
The best of Hyper-V 2016 - Thomas Maurer
 The best of Hyper-V 2016 - Thomas Maurer The best of Hyper-V 2016 - Thomas Maurer
The best of Hyper-V 2016 - Thomas MaurerITCamp
 
WebRTC Tutorial by Dean Bubley of Disruptive Analysis & Tim Panton of Westhaw...
WebRTC Tutorial by Dean Bubley of Disruptive Analysis & Tim Panton of Westhaw...WebRTC Tutorial by Dean Bubley of Disruptive Analysis & Tim Panton of Westhaw...
WebRTC Tutorial by Dean Bubley of Disruptive Analysis & Tim Panton of Westhaw...Dean Bubley
 
What's Missing? Microservices Meetup at Cisco
What's Missing? Microservices Meetup at CiscoWhat's Missing? Microservices Meetup at Cisco
What's Missing? Microservices Meetup at CiscoAdrian Cockcroft
 
WebRTC Live Q&A and Screen Capture session 3
WebRTC Live Q&A and Screen Capture session 3WebRTC Live Q&A and Screen Capture session 3
WebRTC Live Q&A and Screen Capture session 3Amir Zmora
 

Was ist angesagt? (20)

Open Source Options for Building your WebRTC Solution, May 2015 @ WebRTC Conf...
Open Source Options for Building your WebRTC Solution, May 2015 @ WebRTC Conf...Open Source Options for Building your WebRTC Solution, May 2015 @ WebRTC Conf...
Open Source Options for Building your WebRTC Solution, May 2015 @ WebRTC Conf...
 
KITE Network Instrumentation: Advanced WebRTC Testing
KITE Network Instrumentation: Advanced WebRTC TestingKITE Network Instrumentation: Advanced WebRTC Testing
KITE Network Instrumentation: Advanced WebRTC Testing
 
Deploying WebRTC in a low-latency streaming service
Deploying WebRTC in a low-latency streaming serviceDeploying WebRTC in a low-latency streaming service
Deploying WebRTC in a low-latency streaming service
 
Quality Assurance for WebRTC Services
Quality Assurance for WebRTC ServicesQuality Assurance for WebRTC Services
Quality Assurance for WebRTC Services
 
Webrtc plugins for Desktop Browsers
Webrtc plugins for Desktop BrowsersWebrtc plugins for Desktop Browsers
Webrtc plugins for Desktop Browsers
 
WebRTC - On Standards, Identity and Telco Strategy
WebRTC - On Standards, Identity and Telco StrategyWebRTC - On Standards, Identity and Telco Strategy
WebRTC - On Standards, Identity and Telco Strategy
 
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlantaPlugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
 
Debugging Complex Issues in Web Applications
Debugging Complex Issues in Web ApplicationsDebugging Complex Issues in Web Applications
Debugging Complex Issues in Web Applications
 
WebRTC on Mobile Devices: Challenges and Opportunities
WebRTC on Mobile Devices: Challenges and OpportunitiesWebRTC on Mobile Devices: Challenges and Opportunities
WebRTC on Mobile Devices: Challenges and Opportunities
 
Value Added Services and WebRTC
Value Added Services and WebRTCValue Added Services and WebRTC
Value Added Services and WebRTC
 
WebRTC for Telco: Informa's WebRTC Global Summit Preconference
WebRTC for Telco: Informa's WebRTC Global Summit PreconferenceWebRTC for Telco: Informa's WebRTC Global Summit Preconference
WebRTC for Telco: Informa's WebRTC Global Summit Preconference
 
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
 
Building great mobile apps: Somethings you might want to know
Building great mobile apps: Somethings you might want to knowBuilding great mobile apps: Somethings you might want to know
Building great mobile apps: Somethings you might want to know
 
WebRTC overview
WebRTC overviewWebRTC overview
WebRTC overview
 
Microservices Application Tracing Standards and Simulators - Adrians at OSCON
Microservices Application Tracing Standards and Simulators - Adrians at OSCONMicroservices Application Tracing Standards and Simulators - Adrians at OSCON
Microservices Application Tracing Standards and Simulators - Adrians at OSCON
 
Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...
Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...
Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...
 
The best of Hyper-V 2016 - Thomas Maurer
 The best of Hyper-V 2016 - Thomas Maurer The best of Hyper-V 2016 - Thomas Maurer
The best of Hyper-V 2016 - Thomas Maurer
 
WebRTC Tutorial by Dean Bubley of Disruptive Analysis & Tim Panton of Westhaw...
WebRTC Tutorial by Dean Bubley of Disruptive Analysis & Tim Panton of Westhaw...WebRTC Tutorial by Dean Bubley of Disruptive Analysis & Tim Panton of Westhaw...
WebRTC Tutorial by Dean Bubley of Disruptive Analysis & Tim Panton of Westhaw...
 
What's Missing? Microservices Meetup at Cisco
What's Missing? Microservices Meetup at CiscoWhat's Missing? Microservices Meetup at Cisco
What's Missing? Microservices Meetup at Cisco
 
WebRTC Live Q&A and Screen Capture session 3
WebRTC Live Q&A and Screen Capture session 3WebRTC Live Q&A and Screen Capture session 3
WebRTC Live Q&A and Screen Capture session 3
 

Ähnlich wie 2015 Q4 webrtc standards update

DYI - Starting your own webrtc project
DYI - Starting your own webrtc projectDYI - Starting your own webrtc project
DYI - Starting your own webrtc projectAlexandre Gouaillard
 
2016 Q1 - WebRTC testing State of The Art
2016 Q1 - WebRTC testing State of The Art2016 Q1 - WebRTC testing State of The Art
2016 Q1 - WebRTC testing State of The ArtAlexandre Gouaillard
 
HP Helion European Webinar Series ,Webinar #3
HP Helion European Webinar Series ,Webinar #3 HP Helion European Webinar Series ,Webinar #3
HP Helion European Webinar Series ,Webinar #3 BeMyApp
 
Faster, more Secure Application Modernization and Replatforming with PKS - Ku...
Faster, more Secure Application Modernization and Replatforming with PKS - Ku...Faster, more Secure Application Modernization and Replatforming with PKS - Ku...
Faster, more Secure Application Modernization and Replatforming with PKS - Ku...VMware Tanzu
 
Istio Service Mesh
Istio Service MeshIstio Service Mesh
Istio Service MeshLew Tucker
 
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)QAware GmbH
 
Implementing Fast IT Deploying Applications at the Pace of Innovation
Implementing Fast IT Deploying Applications at the Pace of Innovation Implementing Fast IT Deploying Applications at the Pace of Innovation
Implementing Fast IT Deploying Applications at the Pace of Innovation Cisco DevNet
 
'DOCKER' & CLOUD: ENABLERS For DEVOPS
'DOCKER' & CLOUD:  ENABLERS For DEVOPS'DOCKER' & CLOUD:  ENABLERS For DEVOPS
'DOCKER' & CLOUD: ENABLERS For DEVOPSACA IT-Solutions
 
Docker and Cloud - Enables for DevOps - by ACA-IT
Docker and Cloud - Enables for DevOps - by ACA-ITDocker and Cloud - Enables for DevOps - by ACA-IT
Docker and Cloud - Enables for DevOps - by ACA-ITStijn Wijndaele
 
Application Modernisation with PKS
Application Modernisation with PKSApplication Modernisation with PKS
Application Modernisation with PKSPhil Reay
 
Application Modernisation with PKS
Application Modernisation with PKSApplication Modernisation with PKS
Application Modernisation with PKSPhil Reay
 
Highway to heaven - Microservices Meetup Munich
Highway to heaven - Microservices Meetup MunichHighway to heaven - Microservices Meetup Munich
Highway to heaven - Microservices Meetup MunichChristian Deger
 
Application Modernization with PKS / Kubernetes
Application Modernization with PKS / KubernetesApplication Modernization with PKS / Kubernetes
Application Modernization with PKS / KubernetesPaul Czarkowski
 
WebRTC Live Q&A Session #5 - JavaScript Promises and WebRTC Interoperability ...
WebRTC Live Q&A Session #5 - JavaScript Promises and WebRTC Interoperability ...WebRTC Live Q&A Session #5 - JavaScript Promises and WebRTC Interoperability ...
WebRTC Live Q&A Session #5 - JavaScript Promises and WebRTC Interoperability ...Amir Zmora
 
Red Hat and kubernetes: awesome stuff coming your way
Red Hat and kubernetes:  awesome stuff coming your wayRed Hat and kubernetes:  awesome stuff coming your way
Red Hat and kubernetes: awesome stuff coming your wayJohannes Brännström
 
OpenStack + Cloud Foundry for the OpenStack Boston Meetup
OpenStack + Cloud Foundry for the OpenStack Boston MeetupOpenStack + Cloud Foundry for the OpenStack Boston Meetup
OpenStack + Cloud Foundry for the OpenStack Boston Meetupragss
 
Service Virtualization: What Testers Need to Know
Service Virtualization: What Testers Need to KnowService Virtualization: What Testers Need to Know
Service Virtualization: What Testers Need to KnowTechWell
 

Ähnlich wie 2015 Q4 webrtc standards update (20)

DYI - Starting your own webrtc project
DYI - Starting your own webrtc projectDYI - Starting your own webrtc project
DYI - Starting your own webrtc project
 
2016 Q1 - WebRTC testing State of The Art
2016 Q1 - WebRTC testing State of The Art2016 Q1 - WebRTC testing State of The Art
2016 Q1 - WebRTC testing State of The Art
 
DevCon5 (July 2014) - Acision SDK
DevCon5 (July 2014) - Acision SDKDevCon5 (July 2014) - Acision SDK
DevCon5 (July 2014) - Acision SDK
 
HP Helion European Webinar Series ,Webinar #3
HP Helion European Webinar Series ,Webinar #3 HP Helion European Webinar Series ,Webinar #3
HP Helion European Webinar Series ,Webinar #3
 
Faster, more Secure Application Modernization and Replatforming with PKS - Ku...
Faster, more Secure Application Modernization and Replatforming with PKS - Ku...Faster, more Secure Application Modernization and Replatforming with PKS - Ku...
Faster, more Secure Application Modernization and Replatforming with PKS - Ku...
 
Istio Service Mesh
Istio Service MeshIstio Service Mesh
Istio Service Mesh
 
56k.cloud training
56k.cloud training56k.cloud training
56k.cloud training
 
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
 
Implementing Fast IT Deploying Applications at the Pace of Innovation
Implementing Fast IT Deploying Applications at the Pace of Innovation Implementing Fast IT Deploying Applications at the Pace of Innovation
Implementing Fast IT Deploying Applications at the Pace of Innovation
 
Mini-Track: Lessons from Public Cloud
Mini-Track: Lessons from Public CloudMini-Track: Lessons from Public Cloud
Mini-Track: Lessons from Public Cloud
 
'DOCKER' & CLOUD: ENABLERS For DEVOPS
'DOCKER' & CLOUD:  ENABLERS For DEVOPS'DOCKER' & CLOUD:  ENABLERS For DEVOPS
'DOCKER' & CLOUD: ENABLERS For DEVOPS
 
Docker and Cloud - Enables for DevOps - by ACA-IT
Docker and Cloud - Enables for DevOps - by ACA-ITDocker and Cloud - Enables for DevOps - by ACA-IT
Docker and Cloud - Enables for DevOps - by ACA-IT
 
Application Modernisation with PKS
Application Modernisation with PKSApplication Modernisation with PKS
Application Modernisation with PKS
 
Application Modernisation with PKS
Application Modernisation with PKSApplication Modernisation with PKS
Application Modernisation with PKS
 
Highway to heaven - Microservices Meetup Munich
Highway to heaven - Microservices Meetup MunichHighway to heaven - Microservices Meetup Munich
Highway to heaven - Microservices Meetup Munich
 
Application Modernization with PKS / Kubernetes
Application Modernization with PKS / KubernetesApplication Modernization with PKS / Kubernetes
Application Modernization with PKS / Kubernetes
 
WebRTC Live Q&A Session #5 - JavaScript Promises and WebRTC Interoperability ...
WebRTC Live Q&A Session #5 - JavaScript Promises and WebRTC Interoperability ...WebRTC Live Q&A Session #5 - JavaScript Promises and WebRTC Interoperability ...
WebRTC Live Q&A Session #5 - JavaScript Promises and WebRTC Interoperability ...
 
Red Hat and kubernetes: awesome stuff coming your way
Red Hat and kubernetes:  awesome stuff coming your wayRed Hat and kubernetes:  awesome stuff coming your way
Red Hat and kubernetes: awesome stuff coming your way
 
OpenStack + Cloud Foundry for the OpenStack Boston Meetup
OpenStack + Cloud Foundry for the OpenStack Boston MeetupOpenStack + Cloud Foundry for the OpenStack Boston Meetup
OpenStack + Cloud Foundry for the OpenStack Boston Meetup
 
Service Virtualization: What Testers Need to Know
Service Virtualization: What Testers Need to KnowService Virtualization: What Testers Need to Know
Service Virtualization: What Testers Need to Know
 

Mehr von Alexandre Gouaillard

Real-Time Communication Testing Evolution with WebRTC
Real-Time Communication Testing Evolution with WebRTCReal-Time Communication Testing Evolution with WebRTC
Real-Time Communication Testing Evolution with WebRTCAlexandre Gouaillard
 
2014 Webrtc Summit & Cloud Expo, RealTime Interactions for IoT
2014 Webrtc Summit & Cloud Expo, RealTime Interactions for IoT2014 Webrtc Summit & Cloud Expo, RealTime Interactions for IoT
2014 Webrtc Summit & Cloud Expo, RealTime Interactions for IoTAlexandre Gouaillard
 
2016 February - WebRTC Conference Japan - 日本語
2016 February - WebRTC Conference Japan - 日本語2016 February - WebRTC Conference Japan - 日本語
2016 February - WebRTC Conference Japan - 日本語Alexandre Gouaillard
 
WebRTC Browsers n Stacks Implementation differences
WebRTC Browsers n Stacks Implementation differencesWebRTC Browsers n Stacks Implementation differences
WebRTC Browsers n Stacks Implementation differencesAlexandre Gouaillard
 
Testing and packaging WebRTC Stack
Testing and packaging WebRTC StackTesting and packaging WebRTC Stack
Testing and packaging WebRTC StackAlexandre Gouaillard
 
WebRTC status and what to expect in 2015
WebRTC status and what to expect in 2015WebRTC status and what to expect in 2015
WebRTC status and what to expect in 2015Alexandre Gouaillard
 
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYCPractical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYCAlexandre Gouaillard
 

Mehr von Alexandre Gouaillard (9)

Janus conf'19: janus client side
Janus conf'19:  janus client sideJanus conf'19:  janus client side
Janus conf'19: janus client side
 
Real-Time Communication Testing Evolution with WebRTC
Real-Time Communication Testing Evolution with WebRTCReal-Time Communication Testing Evolution with WebRTC
Real-Time Communication Testing Evolution with WebRTC
 
2014 Webrtc Summit & Cloud Expo, RealTime Interactions for IoT
2014 Webrtc Summit & Cloud Expo, RealTime Interactions for IoT2014 Webrtc Summit & Cloud Expo, RealTime Interactions for IoT
2014 Webrtc Summit & Cloud Expo, RealTime Interactions for IoT
 
2016 February - WebRTC Conference Japan - 日本語
2016 February - WebRTC Conference Japan - 日本語2016 February - WebRTC Conference Japan - 日本語
2016 February - WebRTC Conference Japan - 日本語
 
overview-peerconnection-lifetime
overview-peerconnection-lifetimeoverview-peerconnection-lifetime
overview-peerconnection-lifetime
 
WebRTC Browsers n Stacks Implementation differences
WebRTC Browsers n Stacks Implementation differencesWebRTC Browsers n Stacks Implementation differences
WebRTC Browsers n Stacks Implementation differences
 
Testing and packaging WebRTC Stack
Testing and packaging WebRTC StackTesting and packaging WebRTC Stack
Testing and packaging WebRTC Stack
 
WebRTC status and what to expect in 2015
WebRTC status and what to expect in 2015WebRTC status and what to expect in 2015
WebRTC status and what to expect in 2015
 
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYCPractical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
 

Kürzlich hochgeladen

National Level Hackathon Participation Certificate.pdf
National Level Hackathon Participation Certificate.pdfNational Level Hackathon Participation Certificate.pdf
National Level Hackathon Participation Certificate.pdfRajuKanojiya4
 
Correctly Loading Incremental Data at Scale
Correctly Loading Incremental Data at ScaleCorrectly Loading Incremental Data at Scale
Correctly Loading Incremental Data at ScaleAlluxio, Inc.
 
System Simulation and Modelling with types and Event Scheduling
System Simulation and Modelling with types and Event SchedulingSystem Simulation and Modelling with types and Event Scheduling
System Simulation and Modelling with types and Event SchedulingBootNeck1
 
BSNL Internship Training presentation.pptx
BSNL Internship Training presentation.pptxBSNL Internship Training presentation.pptx
BSNL Internship Training presentation.pptxNiranjanYadav41
 
Instrumentation, measurement and control of bio process parameters ( Temperat...
Instrumentation, measurement and control of bio process parameters ( Temperat...Instrumentation, measurement and control of bio process parameters ( Temperat...
Instrumentation, measurement and control of bio process parameters ( Temperat...121011101441
 
home automation using Arduino by Aditya Prasad
home automation using Arduino by Aditya Prasadhome automation using Arduino by Aditya Prasad
home automation using Arduino by Aditya Prasadaditya806802
 
Earthing details of Electrical Substation
Earthing details of Electrical SubstationEarthing details of Electrical Substation
Earthing details of Electrical Substationstephanwindworld
 
"Exploring the Essential Functions and Design Considerations of Spillways in ...
"Exploring the Essential Functions and Design Considerations of Spillways in ..."Exploring the Essential Functions and Design Considerations of Spillways in ...
"Exploring the Essential Functions and Design Considerations of Spillways in ...Erbil Polytechnic University
 
11. Properties of Liquid Fuels in Energy Engineering.pdf
11. Properties of Liquid Fuels in Energy Engineering.pdf11. Properties of Liquid Fuels in Energy Engineering.pdf
11. Properties of Liquid Fuels in Energy Engineering.pdfHafizMudaserAhmad
 
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort serviceGurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort servicejennyeacort
 
welding defects observed during the welding
welding defects observed during the weldingwelding defects observed during the welding
welding defects observed during the weldingMuhammadUzairLiaqat
 
Mine Environment II Lab_MI10448MI__________.pptx
Mine Environment II Lab_MI10448MI__________.pptxMine Environment II Lab_MI10448MI__________.pptx
Mine Environment II Lab_MI10448MI__________.pptxRomil Mishra
 
Katarzyna Lipka-Sidor - BIM School Course
Katarzyna Lipka-Sidor - BIM School CourseKatarzyna Lipka-Sidor - BIM School Course
Katarzyna Lipka-Sidor - BIM School Coursebim.edu.pl
 
Past, Present and Future of Generative AI
Past, Present and Future of Generative AIPast, Present and Future of Generative AI
Past, Present and Future of Generative AIabhishek36461
 
complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...asadnawaz62
 
Indian Dairy Industry Present Status and.ppt
Indian Dairy Industry Present Status and.pptIndian Dairy Industry Present Status and.ppt
Indian Dairy Industry Present Status and.pptMadan Karki
 
Work Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvvWork Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvvLewisJB
 
Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...VICTOR MAESTRE RAMIREZ
 
Class 1 | NFPA 72 | Overview Fire Alarm System
Class 1 | NFPA 72 | Overview Fire Alarm SystemClass 1 | NFPA 72 | Overview Fire Alarm System
Class 1 | NFPA 72 | Overview Fire Alarm Systemirfanmechengr
 

Kürzlich hochgeladen (20)

National Level Hackathon Participation Certificate.pdf
National Level Hackathon Participation Certificate.pdfNational Level Hackathon Participation Certificate.pdf
National Level Hackathon Participation Certificate.pdf
 
Correctly Loading Incremental Data at Scale
Correctly Loading Incremental Data at ScaleCorrectly Loading Incremental Data at Scale
Correctly Loading Incremental Data at Scale
 
System Simulation and Modelling with types and Event Scheduling
System Simulation and Modelling with types and Event SchedulingSystem Simulation and Modelling with types and Event Scheduling
System Simulation and Modelling with types and Event Scheduling
 
BSNL Internship Training presentation.pptx
BSNL Internship Training presentation.pptxBSNL Internship Training presentation.pptx
BSNL Internship Training presentation.pptx
 
Instrumentation, measurement and control of bio process parameters ( Temperat...
Instrumentation, measurement and control of bio process parameters ( Temperat...Instrumentation, measurement and control of bio process parameters ( Temperat...
Instrumentation, measurement and control of bio process parameters ( Temperat...
 
home automation using Arduino by Aditya Prasad
home automation using Arduino by Aditya Prasadhome automation using Arduino by Aditya Prasad
home automation using Arduino by Aditya Prasad
 
Earthing details of Electrical Substation
Earthing details of Electrical SubstationEarthing details of Electrical Substation
Earthing details of Electrical Substation
 
"Exploring the Essential Functions and Design Considerations of Spillways in ...
"Exploring the Essential Functions and Design Considerations of Spillways in ..."Exploring the Essential Functions and Design Considerations of Spillways in ...
"Exploring the Essential Functions and Design Considerations of Spillways in ...
 
11. Properties of Liquid Fuels in Energy Engineering.pdf
11. Properties of Liquid Fuels in Energy Engineering.pdf11. Properties of Liquid Fuels in Energy Engineering.pdf
11. Properties of Liquid Fuels in Energy Engineering.pdf
 
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort serviceGurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
 
welding defects observed during the welding
welding defects observed during the weldingwelding defects observed during the welding
welding defects observed during the welding
 
Mine Environment II Lab_MI10448MI__________.pptx
Mine Environment II Lab_MI10448MI__________.pptxMine Environment II Lab_MI10448MI__________.pptx
Mine Environment II Lab_MI10448MI__________.pptx
 
Katarzyna Lipka-Sidor - BIM School Course
Katarzyna Lipka-Sidor - BIM School CourseKatarzyna Lipka-Sidor - BIM School Course
Katarzyna Lipka-Sidor - BIM School Course
 
Past, Present and Future of Generative AI
Past, Present and Future of Generative AIPast, Present and Future of Generative AI
Past, Present and Future of Generative AI
 
complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...
 
Indian Dairy Industry Present Status and.ppt
Indian Dairy Industry Present Status and.pptIndian Dairy Industry Present Status and.ppt
Indian Dairy Industry Present Status and.ppt
 
Work Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvvWork Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvv
 
Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...
 
Design and analysis of solar grass cutter.pdf
Design and analysis of solar grass cutter.pdfDesign and analysis of solar grass cutter.pdf
Design and analysis of solar grass cutter.pdf
 
Class 1 | NFPA 72 | Overview Fire Alarm System
Class 1 | NFPA 72 | Overview Fire Alarm SystemClass 1 | NFPA 72 | Overview Fire Alarm System
Class 1 | NFPA 72 | Overview Fire Alarm System
 

2015 Q4 webrtc standards update

  • 1. December  2015  Standards  Update   a.k.a   One  year  of  standards  awesomeness   Dr.  Alex  Gouaillard   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 2. Overview   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   •  Early  2015  WebRTC     •  Object  Models  APIs   •  Glue  (Transceiver)   •  ICE  and  opMmizaMons   •  Simulcast   •  Others  in  webrtc  1.0    
  • 3. Early  2015,  peer-­‐to-­‐peer  webRTC  Model   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   hRp://www.html5rocks.com/en/tutorials/webrtc/basics/            
  • 4. Signaling   server     Early  2015,  peer-­‐to-­‐peer  webRTC  Model   PeerConnecMon     JavaScript  APP  (Sender)     JavaScript  APP  (Receiver)     PeerConnecMon     Media   Stream   Data   Channel   CreateOffer   SetLocal   SetRemote   SetLocal   SetRemote   Offer  (SDP)   Answer  (SDP)   Candidates   (SDP)   Media   Stream   Data   Channel   OnCandidate   AddCandidate   CreateAnswer   ICE     Bindings  +  tests   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 5. Signaling   server     Early  2015,  peer-­‐to-­‐peer  webRTC  Model   OmniPotent  PeerConnecMon   PeerConnecMon           JavaScript  APP  (Sender)     JavaScript  APP  (Receiver)     PeerConnecMon           Media   Stream   Data   Channel   ICE  UA         DTLS   RTP   Codec   CreateOffer   Gather   Transport   SetLocal   SetRemote   ICE  UA         DTLS   RTP   Codec   Gather   Transport   SetLocal   SetRemote   Offer  (SDP)   Answer  (SDP)   Candidates   (SDP)   Media   Stream   Data   Channel   OnCandidate   AddCandidate   CreateAnswer   ICE     Bindings  +  tests   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 6. Early  2015  webRTC  Model   PC  internals   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   hRp://www.w3.org/TR/webrtc/    
  • 7. Early  2015  webRTC  Model   PC  internals   Never  Used.   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   hRp://www.w3.org/TR/webrtc/    
  • 8. Early  2015  webRTC  Model   PC  internals   1  state,  4   different   cases  …   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   hRp://www.w3.org/TR/webrtc/    
  • 9. Early  2015  webRTC  Model   PC  internals   Mutually   Exclusive   Paths   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   hRp://www.w3.org/TR/webrtc/    
  • 10. stable   have-­‐local-­‐offer   stable   OFFER   ANSWER   Create  PC       Create  offer     SetLocal(offer)   Create  PC   SetRemote(offer)       Create  answer     SetLocal(answer)     stable   Have-­‐remote-­‐ offer   stable  SetRemote(answer)   addRemoteStream     Early  2015  webRTC  Model   PC  internals   Alternate  view   Caller   Callee  Internet     ©  Dr.  Alex  Gouaillard  @  Temasys  Comm.,  2014.  Document  provided  under  CC  BY-­‐NC  4.0   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 11. Early  2015  webRTC  Model   PC  internals   ICE   States  visible  from  JS   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   hRp://www.w3.org/TR/webrtc/    
  • 12. Early  2015  webRTC  Model   PC  internals   ICE   Not  always  reachable  (not  implemented)   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   hRp://www.w3.org/TR/webrtc/    
  • 13. Early  2015  webRTC  Model   PC  internals   ICE   1  state  several  failures:   -­‐  ICE  failure,   -­‐  DTLS  Failure,  …   -­‐  For  mulMple  tracks,  if  one  track  fail,  the  state  is   “failed”,  no  way  to  tell  which  one  failed   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   hRp://www.w3.org/TR/webrtc/    
  • 14. DONE          FROZEN      IN  CALL              CONNECTION              HANDSHAKE  (SDP  O/A)                .   new   checking   connected   disconnected   failed   Completed   close   new   gathering   complete   CALLER                                                                SIG-­‐SERVER                                                              CALLEE   stable   have-­‐local-­‐offer   stable   Close   OFFER   ANSWER   Create  PC     Add  local  stream(s)   Create  offer   <modify  sdp>   SetLocal(offer)   Sending  offer   Create  PC   SetRemote(offer)   addRemoteStream(s)   Add  local  stream(s)   Create  answer   <modify  sdp>   SetLocal(answer)   Send  answer   stable   Have-­‐remote-­‐ offer   stable   new   gathering   complete   onIceCandidate   <Filter  candidates>   Send  candidate         <Filter  candidates>   addIceCandidate   onIceCandidate   <Filter  candidates>   Send  candidate         <Filter  candidates>   addIceCandidate   new   checking   connected   disconnected   failed   Completed   close   Close   ©  Temasys  CommunicaMons,  pvt,  ltd,  2014        Document  provided  under  CC  BY-­‐NC  4.0   CANDIDATES   Peer   ConnecMon   ICE   ConnecMon   ICE   Gathering   SetRemote(answer)   addRemoteStream     BYE  
  • 15. Early  2015,  peer-­‐to-­‐peer  webRTC  Model   Open  QuesMons   1.  How  do  I  handle  bandwidth  preferences   2.  How  do  I  check  fingerprint  (MITM  aRacks  prevenMon)   3.  How  do  I  handle  codecs  and  their  parameters   =>  Hum,  …….  Just  modify  the  SDP  and  pray  it  works.     4.  How  to  know  which  pair  of  candidate  is  being  used?   5.  How  do  I  restrict  the  ICE  gathering  (not  to  expose  my  IPs)   6.  How  do  I  get  more  info  about  ICE  failures?   7.  How  do  I  make  the  (ICE)  handshake  faster?   8.  How  do  I  get  rid  of  JSEP,  SDP,  O/A,  …..?   9.  Can  I  switch  front  /  self  view  without  renegoMaMon?   =>  No  can’t  do.     ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 16. Overview   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   •  Early  2015  WebRTC     •  Object  Models  APIs   •  Glue  (Transceiver)   •  ICE  and  OpMmizaMons   •  Simulcast   •  Others  in  webrtc  1.0    
  • 17. Q2  2015,  New  W3C  WebRTC  charter   •  =>  ORTC  –  WebRTC  merge   •  NoMon  of  Object  Model  API  (ORTC  inspired)   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   hRp://ortc.org/wp-­‐content/uploads/2014/08/ortc.html    
  • 18. Object  Models?   •  Each  Object  Does  only  one  thing!   •  Each  Object  can  be  probed  for  capabiliMes  (JS)   •  Parameters  can  be  get/set  dynamically  (JS)   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   #8  (Edge)   hRp://ortc.org/wp-­‐content/uploads/2014/08/ortc.html    
  • 19. Object  Model:  Example   RtpSender   -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   -­‐  MediaStreamTrack    track   -­‐  DTLSTransport                    transport   -­‐  DTLSTransport                    rtcpTransport   -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   Promise<void>  replaceTrack(  track  )   RtpCapabiliMes  getCapabiliMes()   RtpParameters  getParameters()   Void    setParameters(  RtpParameters  )   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 20. Object  Model:  Example   RtpSender   -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   -­‐  MediaStreamTrack    track   -­‐  DTLSTransport                    transport   -­‐  DTLSTransport                    rtcpTransport   -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   Promise<void>  replaceTrack(  track  )   RtpCapabiliMes  getCapabiliMes()   RtpParameters  getParameters()   Void    setParameters(  RtpParameters  )   Switch  one  track  for   another  without   renegoMaMon   All  the  ICE  magic  and  the  EncrypMon   happen  therein.  If  bundled,  both   points  to  the  same  object.   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   #9  
  • 21. Object  Model:  Example   CapabiliMes  and  Parameters   RtpSender   -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   -­‐  MediaStreamTrack    track   -­‐  DTLSTransport                    transport   -­‐  DTLSTransport                    rtcpTransport   -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   Promise<void>  replaceTrack(  track  )   RtpCapabiliMes  getCapabiliMes()   RtpParameters  getParameters()   Void    setParameters(  RtpParameters  )     RtpCapabiliMes  [readonly]   -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   -­‐  Seq<RtpCodecParameters>                  codecs   -­‐  Seq<RtpHeaderExtParameters>  headerExtensions   RtpParameters   -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   -­‐  seq<RtpEncodingParameters>      encodings   -­‐  seq<RtpHeaderExtParameters>  headerExtensions   -­‐  RTCRtcpParameters                                            rtcp   -­‐  Seq<RtpCodecParameters>                  codecs   Where  most  of  the  Codec  and   streaming  magic  happen  now!     Can  change  parameters  during   a  call,  through  a  JS  API.   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 22. The  RtpSender  Object:   RtpParameters  in  Detail   RtpParameters   -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   -­‐  seq<RtpEncodingParameters>      encodings   -­‐  seq<RtpHeaderExtParameters>headerExtensions   -­‐  RTCRtcpParameters                                            rtcp   -­‐  Seq<RtpCodecParameters>                  codecs   RtpEncodingParameters   -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   -­‐  unsigned  long                    ssrc   -­‐  RTCRtxParameters  rtx   -­‐  RTCFecParameters  fec   -­‐  boolean                                          acMve   -­‐  RTCPriorityType            priority   -­‐  unsigned  long                      maxBitrate   -­‐  RTCDegradaMonPreference                                                                              degradaMonPreference   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   DeacMvates  sending   (saves  bandwidth  when  muFng)   PrioriMze  streams   Cap  Bandwidth   Chose  to  impact  spaMal  or  temporal   resoluMon  (or  balanced)  in  case  of   degradaMon.   #1   RtpCodecParameters   -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   -­‐  unsigned  short  payloadType   -­‐  DOMString                mimeType   -­‐  unsigned  long      clockRate   -­‐  unsigned  short  channels  =  1   -­‐  DOMString                sdpFmtpLine   #3  
  • 23. DtlsTransport  Object   DtlsTransport   -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   -­‐  readonly  IceTransport                          transport   -­‐  readonly  DtlsTransportState  state   -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   -­‐  EventHandler                onstatechange   -­‐  seq<ArrayBuffer>  getRemoteCerMficates()   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   The  Ice  Object  is  separated   New  State  Machine  for  DTLS   (encrypMon)  errors.   ConnecMng   Access  The  fingerprints   to  check  against  MITM   aRacks.   #2   #6a  
  • 24. IceTransport  Object   IceTransport   -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   -­‐  readonly  RTCIceRole                                                  role   -­‐  readonly  RTCIceComponent                        component   -­‐  readonly  RTCIceConnecMonState      state   -­‐  readonly  RTCIceGatheringState            gatheringState   -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   -­‐  seq<RTCIceCandidate>  getLocalCandidates()   -­‐  seq<RTCIceCandidate>  getRemoteCandidates()   -­‐  RTCIceCandidatePair        getSelectedCandidatePair()   -­‐  RTCIceParameters                  getLocalParameters  ()   -­‐  RTCIceParameters                  getRemoteParameters()   -­‐  seq<ArrayBuffer>                      getRemoteCerMficates()   -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   -­‐  EventHandler                    onstatechange   -­‐  EventHandler                    ongatheringstatechange   -­‐  EventHandler                    onselectedcandidatepairchange   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   Same  State  machine,  but  only  for  ICE   this  Mme.     #6b   Controlling     Controlled   Rtp     Rtcp   Selected  Pair  (dynamic)   #5  
  • 25. RtpReceiver  Object   RtpReceiver   -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   -­‐  MediaStreamTrack    track   -­‐  DTLSTransport                    transport   -­‐  DTLSTransport                    rtcpTransport   -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   RtpCapabiliMes        getCapabiliMes()   Seq<RtpContribuMngSource>                                                                  getContribuMngSources  ()   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   Same  as  sender.   Provide  SSRC  and  audio  levels  of   each  contribuMng  source,  across   Mme.   RtpContribuMngSource   -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   -­‐  DOMHighResTimeStamp  Mmestamp   -­‐  unsigned  long                                          source   -­‐  byte                                                                            audioLevel  
  • 26. Early  2015,  peer-­‐to-­‐peer  webRTC  Model   Open  QuesMons   Have  a  final  API.   •  How  do  I  handle  bandwidth  preferences   •  How  do  I  check  fingerprint  (MITM  aRacks  prevenMon)   •  How  to  know  which  pair  of  candidate  is  being  used?   •  How  do  I  get  more  info  about  ICE  failures?   •  How  do  I  get  rid  of  JSEP,  SDP,  O/A,  …..?   •  Can  I  switch  front  /  self  view  without  renegoMaMon?   Have  some  API,  can  do  beLer  or  more.   •  How  do  I  handle  codecs  and  their  parameters   •  How  do  I  restrict  the  ICE  gathering  (not  to  expose  my  IPs)   Not  addressed  yet   •  How  do  I  make  the  (ICE)  handshake  faster?   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 27. Overview   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   •  Early  2015  WebRTC     •  Object  Models  APIs   •  Glue  (Transceiver)   •  ICE  and  OpMmizaMons   •  Simulcast   •  Others  in  webrtc  1.0    
  • 28. WebRTC  1.0  as  Object  Model  +  JSEP   Problems:   1.  m-­‐lines  in  SDP  are  intrinsically  bi-­‐direcMonal   2.  m-­‐lines  in  SDP  have  aRributes  that  fit  neither   sender  nor  receiver  object  model  (mid),  or   that  would  be  duplicated.     How  to  model  the  equivalent  to  a  m-­‐line  on  top   of  the  Object  Model  (so  we  can  throw  it  later  if   we  decide  to  get  rid  of  SDP,  JSEP,  ….)  ?   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 29. RtpTransceiver  Object   represents  a  combinaFon  of  an  RtpSender  and  an  RtpReceiver  that  share  a  common  mid   RtpTransceiver   -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   -­‐  DOMString            mid   -­‐  RtpSender              sender   -­‐  RtpReceiver        receiver   -­‐  boolean                      stopped   -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   -­‐  void  stop()   -­‐  void  setCodecPreferences                                  (seq<RtpCodecCapability>  codecs)   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   Convenience  Method  to  set  up   codecs  at  the  Transceiver  level.   Depending  on  the  sequence  of   API  calls,  allow  for  elegant   manipulaMon  of  codec  choices   pre  or  post  SDP  O/A.   #3   RtpTransceiverInit   -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐   -­‐  Boolean  send  =  true   -­‐  Boolean  receive  =  true   -­‐  seq<MediaStream>  streams   Replaces  offerToReceive   constraints   Track  to  Stream  referencing  this   track   NOTE  ALEX  :   PeerConnecFon.AddTransceiver(  RtpTransceiverInit  )  
  • 30. WebRTC  1.0  as  Object  Model  +  JSEP   Drawing?   Explain  the  pain  of  the  rollback.   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 31. Overview   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   •  Early  2015  WebRTC     •  Object  Models  APIs   •  Glue  (Transceiver)   •  ICE  and  OpMmizaMons   •  Simulcast   •  Others  in  webrtc  1.0    
  • 32. ICE  is  HOT  !   Burning  hot  …   -­‐  Best  NAT/Firewall  tech.   -­‐  Fully  automated!   -­‐  Lot  of  ongoing  work   =>  new  WG  at  IETF     However   -­‐  #1  Pain  source  for  large  scale  soluMons  (dixit   cisco,  unify,  …)   -­‐  SMll  slower  than  telephony  calls  on  mobile   -­‐  Hand-­‐over  on  mobile  problemaMc   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 33. What’s  your  flavor?   Full,  Trickle,  Lite   Feature    flavor   Full   Trickle   Lite   Make  connecMvity  checks   Yes   Yes   NO   Answer  connecMvity  checks   Yes   Yes   Yes   Controlling  or  controled   Both   Both   Controlled   Candidates  send  in  the  Offer/Answer   Yes   No   ?   Flag   Ice-­‐opMon:   trickle   a=ice-­‐lite   hRps://tools.iew.org/html/drax-­‐iew-­‐mmusic-­‐trickle-­‐ice-­‐02   hRps://webrtchacks.com/trickle-­‐ice/     ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   Trickle:  From  10s  to  1S                   Q:  How  to  get  100ms?  
  • 34. Faster  ICE   -­‐  Start  even  before  the  call!   -­‐  ICE  pool   -­‐  Pre-­‐gathering     -­‐  Simplify  and  fasten  the  pairing  /  checking     ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 35. Warmup  /  early  media   Make  everything  async,  don’t  wait   -­‐  ICE,  DTLS,  and  media  ready  before  signaling  is   (warmup)   -­‐   Transceiver  +  replace  track   -­‐  StarMng  sending  media  as  you’re  sending  the   answer  (early  media)   -­‐  Transceiver  awesomeness   -­‐  [use  the  generic  drawing  and  point  to  each  case]   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 36. API  for  default  ICE  servers   -­‐  Browsers  can  now  propose  “default”  STUN/ TURN  server  to  applicaMons.   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 37. Overview   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   •  Early  2015  WebRTC     •  Object  Models  APIs   •  Glue  (Transceiver)   •  ICE  and  OpMmizaMons   •  Simulcast   •  Others  in  webrtc  1.0    
  • 38. Reminder   MulM-­‐cast  vs  Simulcast  vs  SVC   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   A   B   C   MulMcast   •  Several  tracks   •  Decodable  separately   •  Bandwidth  management  separated   HD   SD   QVGA   Simulcast   •  Several  tracks   •  Coming  from  the  same  source   •  Decodable  separately   •  Smart  bandwidth  management  possible   1  SSRC   Δ2   Δ1   QVGA   SVC  Encoding   •  Several  tracks   •  Coming  from  the  same  source   •  Not  Decodable  separately  (Except  base  layer)   •  Smart  bandwidth  management  mandatory   •  Less  bandwidth,  more  resilience.   1  SSRC   E E E E E E SVC  Enc.   D D D HD   SD   QVGA  
  • 39. Reminder   State  of  MulM-­‐cast  signaling   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   From  the  beginning  of  webrtc,  one  have  been  able  to   send  mulMple  media  streams  in  separate  peer   connecMons,  but  it  consumes  much  more  ports,  and   there  is  no  sync  between  those  tracks  (lip  sync,  ..).     A   B   C   E E E MulMcast   •  Several  tracks   •  Decodable  separately   •  Bandwidth  management  separated  
  • 40. RTP/RTCP  within  a  PeerConnecMon   Use  case:  2  media  tracks  (audio  and  video),  how   many  ports  do  I  need?  Less  ports  would  useful   for   -­‐  BeRer  connecMon  rate  esp.  over  mobile  net.   -­‐  OpMmize  turn/media  server  resources   -­‐  Client  side  ports  constraints   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 41. RTP/RTCP  within  a  PeerConnecMon   Default   4   A   V   RTP   RTCP   hLp://tools.ieV.org/html/draW-­‐ieV-­‐mmusic-­‐sdp-­‐bundle-­‐negoFaFon   hLp://datatracker.ieV.org/doc/rfc5761/     ©  Dr.  Alex  Gouaillard  @  Cosmo  ConsulFng.,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 42. RTP/RTCP   Default   4   Bundle   2   A   V   RTP   RTCP   A   V   RTP   RTCP   a=group:BUNDLE   hLp://tools.ieV.org/html/draW-­‐ieV-­‐mmusic-­‐sdp-­‐bundle-­‐negoFaFon   hLp://datatracker.ieV.org/doc/rfc5761/     ©  Dr.  Alex  Gouaillard  @  Cosmo  ConsulFng.,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 43. RTP/RTCP   Default   4   Bundle   2   Rtcp-­‐mux   2   A   V   RTP   RTCP   A   V   RTP   RTCP   A   V   RTP   RTCP   a=rtcp-­‐mux  a=group:BUNDLE   hLp://tools.ieV.org/html/draW-­‐ieV-­‐mmusic-­‐sdp-­‐bundle-­‐negoFaFon   hLp://datatracker.ieV.org/doc/rfc5761/     ©  Dr.  Alex  Gouaillard  @  Cosmo  ConsulFng.,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 44. RTP/RTCP   Default   4   Bundle   2   Rtcp-­‐mux   2   Both   1   A   V   RTP   RTCP   A   V   RTP   RTCP   A   V   RTP   RTCP   A   V   RTP   RTCP   a=rtcp-­‐mux  a=group:BUNDLE   hLp://tools.ieV.org/html/draW-­‐ieV-­‐mmusic-­‐sdp-­‐bundle-­‐negoFaFon   hLp://datatracker.ieV.org/doc/rfc5761/     ©  Dr.  Alex  Gouaillard  @  Cosmo  ConsulFng.,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 45. RTP/RTCP   -­‐  BeRer  connec.  rate  esp.  over  mobile  net.  (10%)   -­‐  OpMmize  turn/media  server  resources  (factor  4!)   -­‐  Client  side  ports  constraints  (c’est  la  vie)   -­‐  Beware  of  components  /  ports  /  opMons  changes   during  O/A   More  examples  of  SDPs:   hLp://tools.ieV.org/id/draW-­‐nandakumar-­‐rtcweb-­‐sdp-­‐01.html     ©  Dr.  Alex  Gouaillard  @  Cosmo  ConsulFng.,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 46. RTP/RTCP  –  extrapolaMon  to  n  tracks   Default   2n   Bundle   n   Rtcp-­‐mux   n   Both   1   A   V   RTP   RTCP   A   V   RTP   RTCP   A   V   RTP   RTCP   A   V   RTP   RTCP   a=rtcp-­‐mux  a=group:BUNDLE   hLp://tools.ieV.org/html/draW-­‐ieV-­‐mmusic-­‐sdp-­‐bundle-­‐negoFaFon   hLp://datatracker.ieV.org/doc/rfc5761/     ©  Dr.  Alex  Gouaillard  @  Cosmo  ConsulFng.,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 47. Reminder   State  of  MulM-­‐cast  signaling   For  mulFple  streams  in  a  single  peer  connecFon!   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 48. Reminder   State  of  MulM-­‐cast  signaling   For  mulFple  streams  in  a  single  peer  connecFon!   ©  Dr.  Alex  Gouaillard  @  Cosmo  ConsulFng.,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   1.  For  historical  reason,  a  specific  non  standard   signaling  has  been  used  by  chrome  for  almost  two   years  (Plan  B).  It  has  become  the  de-­‐facto  standard   (jitsi,  …)   2.  The  real  spec  is  “Unified  Plan”,  now  implemented   in  FF,  and  soon  in  Chrome.  
  • 49. Plan  B:  group  per  media  type   (chrome  current,  hangout,  jitsi)   a=group:BUNDLE  sdparta_0  sdparta_1   a=msid-­‐semanMc:WMS  *     m=audio  9  RTP/SAVPF  109  9  0  8   a=mid:sdparta_0   a=ssrc:323910839            msid:{d57d3917-­‐64e9-­‐4f49-­‐ad‚-­‐b049d165c312}  {920e9ffc-­‐728e-­‐0d40-­‐a1b9-­‐ebd0025c860a}   a=ssrc:323910839            cname:{72b9ff9f-­‐4d8a-­‐5244-­‐b19a-­‐bd9b47251770}     m=video  9  RTP/SAVPF  120   a=mid:sdparta_1   a=ssrc:2917595157          msid:{d57d3917-­‐64e9-­‐4f49-­‐ad‚-­‐b049d165c312}  {35eeb34f-­‐f89c-­‐3946-­‐8e5e-­‐2d5abd38c5a5}   a=ssrc:2917595157          cname:{72b9ff9f-­‐4d8a-­‐5244-­‐b19a-­‐bd9b47251770}         a=ssrc:2325911938          msid:{3a2bfe17-­‐c65d-­‐364a-­‐af14-­‐415d90bb9f52}  {aa7a4ca4-­‐189b-­‐504a-­‐9748-­‐5c22bc7a6c4f}   a=ssrc:2325911938          cname:{72b9ff9f-­‐4d8a-­‐5244-­‐b19a-­‐bd9b47251770}   hLps://tools.ieV.org/html/draW-­‐uberF-­‐rtcweb-­‐plan-­‐00   ©  Dr.  Alex  Gouaillard  @  Cosmo  ConsulFng.,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 50. Unified  plan:  1  media  =>  1  m-­‐line  =>  1  mid   (FF  current,  next  chrome,  real  standard)   a=group:BUNDLE  sdparta_0  sdparta_1  sdparta_2   a=msid-­‐semanMc:WMS  *     m=audio  9  RTP/SAVPF  109  9  0  8   a=mid:sdparta_0   a=            msid:{d57d3917-­‐64e9-­‐4f49-­‐ad‚-­‐b049d165c312}  {920e9ffc-­‐728e-­‐0d40-­‐a1b9-­‐ebd0025c860a}   a=ssrc:323910839            cname:{72b9ff9f-­‐4d8a-­‐5244-­‐b19a-­‐bd9b47251770}     m=video  9  RTP/SAVPF  120   a=mid:sdparta_1   a=          msid:{d57d3917-­‐64e9-­‐4f49-­‐ad‚-­‐b049d165c312}  {35eeb34f-­‐f89c-­‐3946-­‐8e5e-­‐2d5abd38c5a5}   a=ssrc:2917595157          cname:{72b9ff9f-­‐4d8a-­‐5244-­‐b19a-­‐bd9b47251770}     m=video  9  RTP/SAVPF  120   a=mid:sdparta_2   a=          msid:{3a2bfe17-­‐c65d-­‐364a-­‐af14-­‐415d90bb9f52}  {aa7a4ca4-­‐189b-­‐504a-­‐9748-­‐5c22bc7a6c4f}   a=ssrc:2325911938          cname:{72b9ff9f-­‐4d8a-­‐5244-­‐b19a-­‐bd9b47251770}   hLps://tools.ieV.org/html/draW-­‐roach-­‐mmusic-­‐unified-­‐plan-­‐00   ©  Dr.  Alex  Gouaillard  @  Cosmo  ConsulFng.,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 51. Reminder   MulM-­‐cast  vs  Simulcast  vs  SVC   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   A   B   C   MulMcast   •  Several  tracks   •  Decodable  separately   •  Bandwidth  management  separated   HD   SD   QVGA   Simulcast   •  Several  tracks   •  Coming  from  the  same  source   •  Decodable  separately   •  Smart  bandwidth  management  possible   1  SSRC   Δ2   Δ1   QVGA   SVC  Encoding   •  Several  tracks   •  Coming  from  the  same  source   •  Not  Decodable  separately  (Except  base  layer)   •  Smart  bandwidth  management  mandatory   •  Less  bandwidth,  more  resilience.   1  SSRC   E E E E E E SVC  Enc.   D D D HD   SD   QVGA  
  • 52. Simulcast:  Use  case  for  webRTC  1.0   -­‐  Use  Case  for  webrtc  1.0:  SFU       -­‐  Browser  send  simulcast,   does  not  receive  simulcast   (in  webrtc  1.0)   Desk.   HD   SFU   SD   QVGA   Cr.   Book   Mobile   Desk.   HD   SD   QVGA   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 53. Simulcast  (and  SVC  later):   3  layers,  3  working  groups,  2  standard  bodies   -­‐  Separate  the     -­‐  “on-­‐the-­‐wire”  info  (1),     -­‐  JS  API  (2),     -­‐  and    signaling  (3)   Signaling server Web server Bob (device) Alice (browser) Media (3)   (2)   (1)   ©  Dr.  Alex  Gouaillard  @  Cosmo  ConsulFng.,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 54. Simulcast:  changes  on  the  wire   -­‐  On  the  wire  work  at  IETF  (AVTEXT):   hLps://tools.ieV.org/html/draW-­‐pthatcher-­‐mmusic-­‐rid-­‐02     RID  in  RTP  header  extensions     ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 55. Simulcast:  JS  API   -­‐  JS  API  aRached  to  the  Transceiver  object  through   the  TransceiverInit,  using  ScaleResoluMonDownBy   keyword:   var  sender  =  pc.addTransceiver(      {sendEncodings:  [          {rid:  “F”},          {rid:  “H”,  scaleResoluMonDownBy:  2},          {rid:  “Q”,  scaleResoluMonDownBy:  4}        ]}   ).sender;     ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 56. Simulcast:  Offer  SDP   •  Signaling  (If  all  goes  well  in  MMUSIC....  )   hLps://tools.ieV.org/html/draW-­‐pthatcher-­‐mmusic-­‐rid-­‐02   •  hLps://tools.ieV.org/html/draW-­‐ieV-­‐mmusic-­‐sdp-­‐simulcast-­‐03     //  In  the  client’s  descripMon   a=rid:F  send     a=rid:H  send     a=rid:Q  send     a=simulcast  rid:F,H,Q       //  In  the  server’s  descripMon     a=rid:F  recv     a=rid:H  recv     a=simulcast  rid:F,H       ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   HD   SD   QVGA   1  SSRC   E E E
  • 57. Overview   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0   •  Early  2015  WebRTC     •  Object  Models  APIs   •  Glue  (Tranceiver)   •  ICE  and  OpMmizaMons   •  Simulcast   •  Others  in  webrtc  1.0  
  • 58. Screen  Capture  API  simplificaMon   -­‐  No  more  disMncMon  between  screen,  windows   and  apps.  =>  no  more  constraints,  flat  list.   •  Screen  Capture            hnp://w3c.github.io/mediacapture-­‐screen-­‐share/     ©  Dr.  Alex  Gouaillard  @  Cosmo  ConsulFng.,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 59.  Record  your  streams  (local),  but  not  all  streams  (remote).     hRp://www.w3.org/TR/mediastream-­‐recording/     Media  Stream  Recording  (Client  side)   ©  Dr.  Alex  Gouaillard  @  Cosmo  ConsulFng.,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 60. Use  <AUDIO>  or  <VIDEO>  as  a  source  !   hRp://w3c.github.io/mediacapture-­‐fromelement/     Media  Capture  from  DOM  Elements   &&  Image  Capture  (a.k.a.  snapshot)   ©  Dr.  Alex  Gouaillard  @  Cosmo  ConsulFng.,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 61. Send  different  streams  to  different  outputs       hRp://w3c.github.io/mediacapture-­‐output/     Audio  output  devices  API   ©  Dr.  Alex  Gouaillard  @  Cosmo  ConsulFng.,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 62.  hRp://www.w3.org/TR/webrtc-­‐stats/   IdenMfiers  for  WebRTC's  StaMsMcs  API    Full  stats  about  data  channel,  codecs,  FEC,  …   ©  Dr.  Alex  Gouaillard  @  Cosmo  ConsulFng.,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 63. Transferable  DataChannels   a.k.a.  DataChannels  in  workers   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 64. SECURITY:  IP  Address  Leakage   4  levels  for  candidate  gathering   -­‐  All                                                                                    [with  consent]   -­‐  Restricted  I  (host  +  1918)    [default]   -­‐  Restricted  II  (no  host)                [pref/extension]   -­‐  Only  proxy/VPN                                    [pref/extension]   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0  
  • 65. Conclusion   WebRTC  1.0  is  Awesome  [Evil  Grin]   ©  Dr.  Alex  Gouaillard  @  Citrix  Systems,  2015.  Document  provided  under  CC  BY-­‐NC  4.0