SlideShare a Scribd company logo
Implementing a WebRTC
endpoint in GStreamer:
challenges, problems and
perspectives
8-9 October 2015
Dublin, Ireland
Conference 2015
Miguel París
Jose A. Santos
santoscadenas@gmail.com
mparisdiaz@gmail.com
2
Who we are
José Antonio Santos Cadenas
●
Software Engineer
●
Telematic Systems Master's
●
Developer at Naevatec (Madrid,
Spain)
●
Kurento Media Server (KMS)
manager
●
Integrating with client APIs
●
santoscadenas@gmail.com
Miguel París
●
Software Engineer
●
Telematic Systems Master's
●
Researcher at Universidad Rey
Juan Carlos (Madrid, Spain)
●
Kurento real-time manager
●
mparisdiaz@gmail.com
●
Twitter: @mparisdiaz
What is WebRTC
3
●
WebRTC is a new movement bringing RTC to the WWW
●
It is based on standards
●
Supported by Chrome & Firefox
●
Windows Edge added partial support recently
●
Safari is rumored to be on the way of providing it
●
FOSS implementations for Smartphone platforms (iOS and Android)
●
More tan 1B devices currently support WebRTC
Developing
RTC applications
for the WWW
Before WebRTC After WebRTC
Begin End
• Unified APIs
• Standards
• FOSS
• Multiplatform
WebRTC standards
4
●
Standard APIs: Standardized by the WebRTC WG at W3C
 Media Capture APIs
●
Standardize APIs for media capture
 PeerConnection APIs (WebRTC 1.0 almost finished)
●
Standardize API for P2P media communications
●
Media = Audio + Video + Data
●
DataChannel API: low latency
 WebRTC stats
●
RTP stats for inbound and outbound directions
●
encode/decode stats
●
DataChannel stats
Implementing WebRTC in GStreamer
5
●
Deep interest in the GStreamer community
●
Several implementations
 OpenWebRTC (Ericsson)
●
Design for working as part of client applications
 Kurento Media Server (Kurento.org)
●
Design for working as part of media server infrastructures
 Main differences between them:

OpenWebRTC captures media from camera and mic. KMS doesn't

OpenWebRTC renders to display and speakers. KMS doesn't

OpenWebRTC encodes/decodes audio/video. KMS only if needed.
6
<GstPipeline>
pipeline0
[>]
KmsWebrtcEndpoint
kmswebrtcendpoint1
[>]
GstRTPRtxQueue
rtprtxqueue1
[>]
GstRtpVP8Pay
rtpvp8pay1
[>]
GstRtpOPUSPay
rtpopuspay1
[>]
KmsWebrtcSession
kmswebrtcsession1
[>]
KmsRtcpDemux
kmsrtcpdemux1
[>] GstRtpSsrcDemux
rtpssrcdemux5
[>]
KmsWebrtcTransportSinkNice
kmswebrtctransportsinknice1
[>]
GstNiceSink
nicesink1
[>]
GstDtlsSrtpEnc
dtlssrtpenc1
[>]
GstFunnel
funnel
[>]
GstSrtpEnc
srtp-encoder
[>]
GstDtlsEnc
dtls-encoder
[>]
KmsWebrtcTransportSrcNice
kmswebrtctransportsrcnice1
[>]
GstDtlsSrtpDec
dtlssrtpdec1
[>]
GstSrtpDec
srtp-decoder
[>]
GstDtlsDec
dtls-decoder
[>]
GstDtlsSrtpDemux
dtls-srtp-demux
[>]
GstNiceSrc
nicesrc1
[>]
GstRtpBin
rtpbin1
[>]
GstRtpSsrcDemux
rtpssrcdemux4
[>]
GstRtpSession
rtpsession3
[>]
GstRtpSsrcDemux
rtpssrcdemux3
[>]
GstRtpSession
rtpsession2
[>]
KmsWebrtcEndpoint
kmswebrtcendpoint0
[>]
GstRtpVP8Depay
rtpvp8depay0
[>]
KmsAgnosticBin2
kmsagnosticbin2-1
[>]
GstQueue
queue3
[>]
KmsParseTreeBin
kmsparsetreebin1
[>]
KmsVp8Parse
kmsvp8parse0
[>]
GstFakeSink
fakesink3
[>]
GstTee
tee3
[>]
GstFakeSink
fakesink2
[>]
GstTee
tee2
[>]
GstRTPOpusDepay
rtpopusdepay0
[>]
KmsAgnosticBin2
kmsagnosticbin2-0
[>]
GstQueue
queue1
[>]
KmsParseTreeBin
kmsparsetreebin0
[>]
GstOpusParse
opusparse0
[>]
GstFakeSink
fakesink1
[>]
GstTee
tee1
[>]
GstFakeSink
fakesink0
[>]
GstTee
tee0
[>]
GstRTPRtxQueue
rtprtxqueue0
[>]
GstRtpVP8Pay
rtpvp8pay0
[>]
GstRtpOPUSPay
rtpopuspay0
[>]
KmsWebrtcSession
kmswebrtcsession0
[>]
KmsRtcpDemux
kmsrtcpdemux0
[>]
GstRtpSsrcDemux
rtpssrcdemux2
[>]
KmsWebrtcTransportSinkNice
kmswebrtctransportsinknice0
[>]
GstNiceSink
nicesink0
[>]
GstDtlsSrtpEnc
dtlssrtpenc0
[>]
GstFunnel
funnel
[>]
GstSrtpEnc
srtp-encoder
[>]
GstDtlsEnc
dtls-encoder
[>]
KmsWebrtcTransportSrcNice
kmswebrtctransportsrcnice0
[>]
GstDtlsSrtpDec
dtlssrtpdec0
[>]
GstSrtpDec
srtp-decoder
[>]
GstDtlsDec
dtls-decoder
[>]
GstDtlsSrtpDemux
dtls-srtp-demux
[>]
GstNiceSrc
nicesrc0
[>]
GstRtpBin
rtpbin0
[>]
GstRtpJitterBuffer
rtpjitterbuffer1
[>] GstRtpPtDemux
rtpptdemux1
[>]
GstRtpJitterBuffer
rtpjitterbuffer0
[>] GstRtpPtDemux
rtpptdemux0
[>]
GstRtpSsrcDemux
rtpssrcdemux1
[>]
GstRtpSession
rtpsession1
[>]
GstRtpSsrcDemux
rtpssrcdemux0
[>]
GstRtpSession
rtpsession0
[>]
Legend
Element-States: [~] void-pending, [0] null, [-] ready, [=] paused, [>] playing
Pad-Activation: [-] none, [>] push, [<] pull
Pad-Flags: [b]locked, [f]lushing, [b]locking; upper-case is set
Pad-Task: [T] has started task, [t] has paused task
proxypad40
[>][bfb]
sink
[>][bfb]
sink_audio
[>][bfb]
proxypad42
[>][bfb]
sink
[>][bfb]
sink_video
[>][bfb]
sink
[>][bfb]
src
[>][bfb]
send_rtp_sink_1
[>][bfb]
proxypad33
[>][bfb]
src
[>][bfb]
src
[>][bfb]
send_rtp_sink_0
[>][bfb]
proxypad31
[>][bfb]
send_rtp_src_0
[>][bfb]
sink
[>][bfb]
rtp_src
[>][bfb]
rtcp_src
[>][bfb] rtcp_sink
[>][bfb]
sink
[>][bfb]
src_1
[>][bfb]
recv_rtp_sink_1
[>][bfb]
rtcp_src_1
[>][bfb] recv_rtcp_sink_1
[>][bfb]
src_421259003
[>][bfb] recv_rtp_sink_0
[>][bfb]
rtcp_src_421259003
[>][bfb] recv_rtcp_sink_0
[>][bfb]
proxypad44
[>][bfb]
proxypad45
[>][bfb]
proxypad46
[>][bfb]
proxypad47
[>][bfb]
sink
[>][bfb]
proxypad34
[>][bfb]
rtp_sink_0
[>][bfb]
rtp_sink_0
[>][bfb]
src
[>][bfb]
proxypad36
[>][bfb]
rtcp_sink_0
[>][bfb]
rtcp_sink_0
[>][bfb]
proxypad37
[>][bfb]
rtp_sink_1
[>][bfb]
rtp_sink_1
[>][bfb]
proxypad39
[>][bfb]
rtcp_sink_1
[>][bfb]
rtcp_sink_1
[>][bfb]
proxypad29
[>][bfb]
funnelpad5
[>][bfb]
src
[>][bfb]
funnelpad6
[>][bfb]
funnelpad7
[>][bfb]
funnelpad8
[>][bfb]
funnelpad9
[>][bfb]
rtp_src_0
[>][bfb]
rtcp_src_0
[>][bfb]
rtp_src_1
[>][bfb]
rtcp_src_1
[>][bfb]
src
[>][bfb][T]
proxypad28
[>][bfb]
sink
[>][bfb]
sink
[>][bfb]
rtp_src
[>][bfb]
proxypad26
[>][bfb]
proxypad27
[>][bfb]
rtcp_src
[>][bfb]
rtp_sink
[>][bfb]
rtp_src
[>][bfb]
rtcp_sink
[>][bfb]
rtcp_src
[>][bfb]
sink
[>][bfb]
rtp_src
[>][bfb]
dtls_src
[>][bfb]
src
[>][bfb][T]
send_rtp_sink
[>][bfb]
send_rtp_sink
[>][bfb]
recv_rtp_sink
[>][bfb]
recv_rtcp_sink
[>][bfb]
recv_rtp_sink
[>][bfb]
recv_rtcp_sink
[>][bfb]
proxypad30
[>][bfb]
proxypad32
[>][bfb]
send_rtp_src_1
[>][bfb]
proxypad35
[>][bfb]
send_rtcp_src_0
[>][bfb]
proxypad38
[>][bfb]
send_rtcp_src_1
[>][bfb]
sink
[>][bfb]
rtcp_sink
[>][bfb]
send_rtp_src
[>][bfb]
send_rtcp_src
[>][bfb]
recv_rtp_src
[>][bfb]
sync_src
[>][bfb]
sink
[>][bfb]
rtcp_sink
[>][bfb]
send_rtp_src
[>][bfb]
send_rtcp_src
[>][bfb]
recv_rtp_src
[>][bfb]
sync_src
[>][bfb]
proxypad14
[>][bfb]
sink
[>][bfb]
sink_audio
[>][bfb]
audio_src_0
[>][bfb]
proxypad15
[>][bfb]
sink
[>][bfb]
sink_video
[>][bfb]
proxypad24
[>][bfb]
proxypad25
[>][bfb]
video_src_0
[>][bfb]
sink
[>][bfb]
src
[>][bfb]
sink
[>][bfb]
proxypad23
[>][bfb]
src_0
[>][bfb]
sink
[>][bfb]
proxypad43
[>][bfb]sink
[>][bfb]
src
[>][bfb][T]
sink
[>][bfb]
src
[>][bfb]
sink
[>][bfb]
src_0
[>][bfb]
sink
[>][bfb]
src_2
[>][bfb]
sink
[>][bfb]
src_0
[>][bfb]
src_1
[>][bfb]
sink
[>][bfb]
src
[>][bfb]
sink
[>][bfb]
proxypad19
[>][bfb]
src_0
[>][bfb]
sink
[>][bfb]
proxypad41
[>][bfb]sink
[>][bfb]
src
[>][bfb][T]
sink
[>][bfb]
src
[>][bfb]
sink
[>][bfb]
src_0
[>][bfb]
sink
[>][bfb]
src_2
[>][bfb]
sink
[>][bfb]
src_0
[>][bfb]
src_1
[>][bfb]
sink
[>][bfb]
src
[>][bfb]
send_rtp_sink_1
[>][bfb]
proxypad7
[>][bfb]
src
[>][bfb]
src
[>][bfb]
send_rtp_sink_0
[>][bfb]
proxypad5
[>][bfb]
send_rtp_src_0
[>][bfb]
sink
[>][bfb]
rtp_src
[>][bfb]
rtcp_src
[>][bfb]
rtcp_sink
[>][bfb]
sink
[>][bfb]
src_1442068093
[>][bfb]
recv_rtp_sink_0
[>][bfb]
rtcp_src_1442068093
[>][bfb]
recv_rtcp_sink_0
[>][bfb]
src_836061664
[>][bfb]
recv_rtp_sink_1
[>][bfb]
rtcp_src_836061664
[>][bfb]
recv_rtcp_sink_1
[>][bfb]
proxypad16
[>][bfb]
proxypad17
[>][bfb]
proxypad20
[>][bfb]
proxypad21
[>][bfb]
sink
[>][bfb]
proxypad8
[>][bfb]
rtp_sink_0
[>][bfb]
rtp_sink_0
[>][bfb]
src
[>][bfb]
proxypad10
[>][bfb]
rtcp_sink_0
[>][bfb]
rtcp_sink_0
[>][bfb]
proxypad11
[>][bfb]
rtp_sink_1
[>][bfb]
rtp_sink_1
[>][bfb]
proxypad13
[>][bfb]
rtcp_sink_1
[>][bfb]
rtcp_sink_1
[>][bfb]
proxypad3
[>][bfb]
funnelpad0
[>][bfb]
src
[>][bfb]
funnelpad1
[>][bfb]
funnelpad2
[>][bfb]
funnelpad3
[>][bfb]
funnelpad4
[>][bfb]
rtp_src_0
[>][bfb]
rtcp_src_0
[>][bfb]
rtp_src_1
[>][bfb]
rtcp_src_1
[>][bfb]
src
[>][bfb][T]
proxypad2
[>][bfb]
sink
[>][bfb]
sink
[>][bfb] rtp_src
[>][bfb]
proxypad0
[>][bfb]
proxypad1
[>][bfb]
rtcp_src
[>][bfb]
rtp_sink
[>][bfb]
rtp_src
[>][bfb]
rtcp_sink
[>][bfb]
rtcp_src
[>][bfb]
sink
[>][bfb]
rtp_src
[>][bfb]
dtls_src
[>][bfb]
src
[>][bfb][T]
send_rtp_sink
[>][bfb]
send_rtp_sink
[>][bfb]
recv_rtp_sink
[>][bfb]
recv_rtcp_sink
[>][bfb]
recv_rtp_sink
[>][bfb]
recv_rtcp_sink
[>][bfb]
proxypad4
[>][bfb]
proxypad6
[>][bfb]
send_rtp_src_1
[>][bfb]
proxypad9
[>][bfb]
send_rtcp_src_0
[>][bfb]
proxypad12
[>][bfb]
send_rtcp_src_1
[>][bfb]
proxypad18
[>][bfb]
recv_rtp_src_0_1442068093_111
[>][bfb]
proxypad22
[>][bfb]
recv_rtp_src_1_836061664_100
[>][bfb]
sink
[>][bfb] src
[>][bfb][T]
sink_rtcp
[>][bfb]
sink
[>][bfb]
src_100
[>][bfb]
sink
[>][bfb] src
[>][bfb][T]
sink_rtcp
[>][bfb]
sink
[>][bfb]
src_111
[>][bfb]
sink
[>][bfb]
src_836061664
[>][bfb]
rtcp_sink
[>][bfb]
rtcp_src_836061664
[>][bfb]
send_rtp_src
[>][bfb]
send_rtcp_src
[>][bfb]
recv_rtp_src
[>][bfb]
sync_src
[>][bfb]
sink
[>][bfb]
src_1442068093
[>][bfb]
rtcp_sink
[>][bfb]
rtcp_src_1442068093
[>][bfb]
send_rtp_src
[>][bfb]
send_rtcp_src
[>][bfb]
recv_rtp_src
[>][bfb]
sync_src
[>][bfb]
Kurento WebRtcEp
The pipeline
Interactive Connectivity Establishment
ICE I
7
●
Using libnice (NiceSrc and NiceSink)

Involved RFCs:
 RFC 5245: Interactive Connectivity Establishment
(ICE): A Protocol for Network Address Translator (NAT)
Traversal for Offer/Answer Protocols
 RFC 5389: Session Traversal Utilities for NAT (STUN)
 RFC 5766: Traversal Using Relays around NAT (TURN):
Relay Extensions to Session Traversal Utilities for NAT
(STUN)
Interactive Connectivity Establishment
ICE II
8
●
Our experience with libnice
 0.1.7 version seem to be stable, but lack many
required features
 0.1.10 version incorporate relevant features but seem
not to provide the appropriate stability yet
●
Leaks of TCP sockets
●
Connection states
●
Connectivity problems (Fails 1/1000)
 Fixed in 0.1.13 ? (we have to check it)
ICE III
9
●
What next needed in ICE for WebRTC?
 IPv6 shall be mandatory in WebRTC.

We need to check IPv6 support in libnice

draft-ietf-rtcweb-transports-09 (mandates IPv6 support)
 HTTP CONNECT protocol for TURN might be important in
corporate networks (connectivity)

draft-hutton-httpbis-connect-protocol-00
 STUN consent freshness may become mandatory for
WebRTC. This may require some adjustments on libnice for
supporting consent negotiation (security)

Draft-ietf-rtcweb-stun-consent-freshness-16
 ICE stated published through events

ICE state should be reported as specified in the WebRTC
1.0 WG draft
DTLS / SRTP I
10
●
Using dtlssrtp(dec|enc) bins
 dtls(dec|enc) manages DTLS handshake
 srtp(dec|enc) decrypts/encrypts RTP packets
●
Involved RFCs:
 RFC 5764: Datagram Transport Security (DTLS)
Extension to Establish Keys for the Secure Real-time
Protocol (SRTP)
 RFC 3711: The Secure Real-time Transport Protocol
(SRTP)
DTLS / SRTP II
11
●
What next for WebRTC?
 New cryptographic framework for group communications

This is under definition at the Privacy Enhanced RTP Conferencing (PERC) IETF
WG

Only early drafts here
 draft-jones-perc-private-media-framework-00
 draft-jones-perc-private-media-reqts-00
 draft-mattsson-perc-srtp-cloud-00
 draft-westerlund-perc-webrtc-use-case-00

PERC shall provide in the next few months (improve efficiency)
 Enabling unicast group communications without requiring infrastructure to
decipher
 New mechanisms enabling unicast group communications without
requiring infrastructure to cipher once per RTC session.

These may require re-factoring of current DTLS stack
 DTLS state published through events.

Full connectivity requires ICE connectivity + successful DTLS handshake.

DTLS is being incorporated by the W3C in the WebRTC 1.0 spec as event
generator dealing with connection health
Congestion control I
12
●
This is an essential feature for providing satisfactory QoE for WebRTC users

How does it work?
 Bandwidth estimator

Based on packet delay (useful RTP ExtHdr: abs-send-time)

Based on packet loss
 REMB (Receiver Estimated Maximum Bitrate)

GStreamer does not provide any kind of features for this off the self

How Kurento estimates bandwidth?
 on-sending-rtcp
 Get packet-loss, bytes-sent, etc. from RtpSession stats
 Advantages: simple
 Drawbacks

Reactive and not predictive

Requires packet loss to detect BW constraints

Getting RtpSession stats quite inefficient
Congestion control II
13
●
For having satisfactory congestion control we should look to the following
drafts
 draft-alvestrand-rmcat-remb-03: REMB mechanism implemented by
Chrome
 draft-ietf-rmcat-cc-requirements-09: Congestion Control Requirements
for Interactive Real-Time Media
 draft-ietf-avtcore-rtp-circuit-breakers-10: Multimedia Congestion Control:
Circuit Breakers for Unicast RTP Sessions
●
In summary, congestion control should:
 be predictive
 be efficient
 be fair
 "break the circuit" (drop the BW) in case of evidence of huge congestion

This is to avoid breaking other types of traffic.
DataChannels
14
●
Kurento has DataChannels support
●
Protocols: DTLS-SCTP
●
Drafts
 draft-ietf-rtcweb-data-channel
 draft-ietf-rtcweb-data-protocol
 draft-ietf-mmusic-data-channel-sdpneg

Impl. based on sctp(dec|enc) provided by Ericsson

What have Kurento done?
 Fixed problems when using Gstreamer 1.4
 Fixed a lot of bugs
 Implementation of the DataChannel protocol

AppSrc, AppSink
Thank you
Suggestions, comments and complains:
mparisdiaz@gmail.com
santoscadenas@gmail.com
http://www.kurento.org
http://www.github.com/kurento
info@kurento.org
Twitter: @kurentoms
http://www.nubomedia.eu
http://www.fi-ware.org
http://ec.europa.eu

More Related Content

What's hot

Intro to Single / Two Rate Three Color Marker (srTCM / trTCM)
Intro to Single / Two Rate Three Color Marker (srTCM / trTCM)Intro to Single / Two Rate Three Color Marker (srTCM / trTCM)
Intro to Single / Two Rate Three Color Marker (srTCM / trTCM)
Kentaro Ebisawa
 
Introduction to OpenFlow
Introduction to OpenFlowIntroduction to OpenFlow
Introduction to OpenFlow
Joel W. King
 
Collaborating with Direct Spend Suppliers in the Life Sciences Industry - 56556
Collaborating with Direct Spend Suppliers in the Life Sciences Industry - 56556Collaborating with Direct Spend Suppliers in the Life Sciences Industry - 56556
Collaborating with Direct Spend Suppliers in the Life Sciences Industry - 56556
SAP Ariba Live 2018
 
IMS presentation
IMS presentationIMS presentation
IMS presentation
Anirudh Yadav
 
SENSOR NETWORK PLATFORMS AND TOOLS
SENSOR NETWORK PLATFORMS AND TOOLSSENSOR NETWORK PLATFORMS AND TOOLS
SENSOR NETWORK PLATFORMS AND TOOLS
juno susi
 
Resiliency in Distributed Systems
Resiliency in Distributed SystemsResiliency in Distributed Systems
Resiliency in Distributed Systems
Rajeev Bharshetty
 
IoT with 5G-Network
IoT with 5G-NetworkIoT with 5G-Network
IoT with 5G-Network
Belal Ashraf
 
LoRaWAN in Depth
LoRaWAN in DepthLoRaWAN in Depth
LoRaWAN in Depth
APNIC
 
Extracting Data from GE Smallworld into Common Information Model (CIM XML)
Extracting Data from GE Smallworld into Common Information Model (CIM XML)Extracting Data from GE Smallworld into Common Information Model (CIM XML)
Extracting Data from GE Smallworld into Common Information Model (CIM XML)
Safe Software
 
Scaling server side web rtc applications the janus challenge by lorenzo miniero
Scaling server side web rtc applications the janus challenge by lorenzo minieroScaling server side web rtc applications the janus challenge by lorenzo miniero
Scaling server side web rtc applications the janus challenge by lorenzo miniero
Greg Kawere
 
Elastic-Engineering
Elastic-EngineeringElastic-Engineering
Elastic-Engineering
Araf Karsh Hamid
 
NAT64 and DNS64 in 30 minutes
NAT64 and DNS64 in 30 minutesNAT64 and DNS64 in 30 minutes
NAT64 and DNS64 in 30 minutes
Ivan Pepelnjak
 
SP Routing Innovation with Segment Routing, VXLAN and EVPN - Ismail Ali
SP Routing Innovation with Segment Routing, VXLAN and EVPN - Ismail AliSP Routing Innovation with Segment Routing, VXLAN and EVPN - Ismail Ali
SP Routing Innovation with Segment Routing, VXLAN and EVPN - Ismail Ali
MyNOG
 
OpenShift Kubernetes Native Infrastructure for 5GC and Telco Edge Cloud
OpenShift  Kubernetes Native Infrastructure for 5GC and Telco Edge Cloud OpenShift  Kubernetes Native Infrastructure for 5GC and Telco Edge Cloud
OpenShift Kubernetes Native Infrastructure for 5GC and Telco Edge Cloud
Hidetsugu Sugiyama
 
WINS: Peering and IXPs
WINS: Peering and IXPsWINS: Peering and IXPs
WINS: Peering and IXPs
APNIC
 
Mixed-critical adaptive AUTOSAR stack based on VxWorks, Linux, and virtualiza...
Mixed-critical adaptive AUTOSAR stack based on VxWorks, Linux, and virtualiza...Mixed-critical adaptive AUTOSAR stack based on VxWorks, Linux, and virtualiza...
Mixed-critical adaptive AUTOSAR stack based on VxWorks, Linux, and virtualiza...
Andrei Kholodnyi
 
Introduction to QUIC
Introduction to QUICIntroduction to QUIC
Introduction to QUIC
Shuya Osaki
 
Mikrotik fasttrack
Mikrotik fasttrackMikrotik fasttrack
Mikrotik fasttrack
Achmad Mardiansyah
 
Open vSwitch Offload: Conntrack and the Upstream Kernel
Open vSwitch Offload: Conntrack and the Upstream KernelOpen vSwitch Offload: Conntrack and the Upstream Kernel
Open vSwitch Offload: Conntrack and the Upstream Kernel
Netronome
 

What's hot (20)

Intro to Single / Two Rate Three Color Marker (srTCM / trTCM)
Intro to Single / Two Rate Three Color Marker (srTCM / trTCM)Intro to Single / Two Rate Three Color Marker (srTCM / trTCM)
Intro to Single / Two Rate Three Color Marker (srTCM / trTCM)
 
Introduction to OpenFlow
Introduction to OpenFlowIntroduction to OpenFlow
Introduction to OpenFlow
 
Collaborating with Direct Spend Suppliers in the Life Sciences Industry - 56556
Collaborating with Direct Spend Suppliers in the Life Sciences Industry - 56556Collaborating with Direct Spend Suppliers in the Life Sciences Industry - 56556
Collaborating with Direct Spend Suppliers in the Life Sciences Industry - 56556
 
IMS presentation
IMS presentationIMS presentation
IMS presentation
 
Sdn ppt
Sdn pptSdn ppt
Sdn ppt
 
SENSOR NETWORK PLATFORMS AND TOOLS
SENSOR NETWORK PLATFORMS AND TOOLSSENSOR NETWORK PLATFORMS AND TOOLS
SENSOR NETWORK PLATFORMS AND TOOLS
 
Resiliency in Distributed Systems
Resiliency in Distributed SystemsResiliency in Distributed Systems
Resiliency in Distributed Systems
 
IoT with 5G-Network
IoT with 5G-NetworkIoT with 5G-Network
IoT with 5G-Network
 
LoRaWAN in Depth
LoRaWAN in DepthLoRaWAN in Depth
LoRaWAN in Depth
 
Extracting Data from GE Smallworld into Common Information Model (CIM XML)
Extracting Data from GE Smallworld into Common Information Model (CIM XML)Extracting Data from GE Smallworld into Common Information Model (CIM XML)
Extracting Data from GE Smallworld into Common Information Model (CIM XML)
 
Scaling server side web rtc applications the janus challenge by lorenzo miniero
Scaling server side web rtc applications the janus challenge by lorenzo minieroScaling server side web rtc applications the janus challenge by lorenzo miniero
Scaling server side web rtc applications the janus challenge by lorenzo miniero
 
Elastic-Engineering
Elastic-EngineeringElastic-Engineering
Elastic-Engineering
 
NAT64 and DNS64 in 30 minutes
NAT64 and DNS64 in 30 minutesNAT64 and DNS64 in 30 minutes
NAT64 and DNS64 in 30 minutes
 
SP Routing Innovation with Segment Routing, VXLAN and EVPN - Ismail Ali
SP Routing Innovation with Segment Routing, VXLAN and EVPN - Ismail AliSP Routing Innovation with Segment Routing, VXLAN and EVPN - Ismail Ali
SP Routing Innovation with Segment Routing, VXLAN and EVPN - Ismail Ali
 
OpenShift Kubernetes Native Infrastructure for 5GC and Telco Edge Cloud
OpenShift  Kubernetes Native Infrastructure for 5GC and Telco Edge Cloud OpenShift  Kubernetes Native Infrastructure for 5GC and Telco Edge Cloud
OpenShift Kubernetes Native Infrastructure for 5GC and Telco Edge Cloud
 
WINS: Peering and IXPs
WINS: Peering and IXPsWINS: Peering and IXPs
WINS: Peering and IXPs
 
Mixed-critical adaptive AUTOSAR stack based on VxWorks, Linux, and virtualiza...
Mixed-critical adaptive AUTOSAR stack based on VxWorks, Linux, and virtualiza...Mixed-critical adaptive AUTOSAR stack based on VxWorks, Linux, and virtualiza...
Mixed-critical adaptive AUTOSAR stack based on VxWorks, Linux, and virtualiza...
 
Introduction to QUIC
Introduction to QUICIntroduction to QUIC
Introduction to QUIC
 
Mikrotik fasttrack
Mikrotik fasttrackMikrotik fasttrack
Mikrotik fasttrack
 
Open vSwitch Offload: Conntrack and the Upstream Kernel
Open vSwitch Offload: Conntrack and the Upstream KernelOpen vSwitch Offload: Conntrack and the Upstream Kernel
Open vSwitch Offload: Conntrack and the Upstream Kernel
 

Viewers also liked

Improving GStreamer performance on large pipelines: from profiling to optimiz...
Improving GStreamer performance on large pipelines: from profiling to optimiz...Improving GStreamer performance on large pipelines: from profiling to optimiz...
Improving GStreamer performance on large pipelines: from profiling to optimiz...
Luis Lopez
 
Developing rich multimedia applications with Kurento: a tutorial for Java Dev...
Developing rich multimedia applications with Kurento: a tutorial for Java Dev...Developing rich multimedia applications with Kurento: a tutorial for Java Dev...
Developing rich multimedia applications with Kurento: a tutorial for Java Dev...
Luis Lopez
 
NUBOMEDIA: an elastic Platform as a Service (PaaS) cloud for interactive soci...
NUBOMEDIA: an elastic Platform as a Service (PaaS) cloud for interactive soci...NUBOMEDIA: an elastic Platform as a Service (PaaS) cloud for interactive soci...
NUBOMEDIA: an elastic Platform as a Service (PaaS) cloud for interactive soci...
Luis Lopez
 
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
 
Nubomedia: the cloud infrastructure for WebRTC and IMS multimedia real-time c...
Nubomedia: the cloud infrastructure for WebRTC and IMS multimedia real-time c...Nubomedia: the cloud infrastructure for WebRTC and IMS multimedia real-time c...
Nubomedia: the cloud infrastructure for WebRTC and IMS multimedia real-time c...Luis Lopez
 
Developing rich multimedia applications with FI-WARE.
Developing rich multimedia applications with FI-WARE.Developing rich multimedia applications with FI-WARE.
Developing rich multimedia applications with FI-WARE.
Luis Lopez
 
FOSDEM 2016 - Creating rich WebRTC Applications with Kurento
FOSDEM 2016 - Creating rich WebRTC Applications with KurentoFOSDEM 2016 - Creating rich WebRTC Applications with Kurento
FOSDEM 2016 - Creating rich WebRTC Applications with Kurento
Luis Lopez
 
kurento-nubomedia-first-steps-v1
kurento-nubomedia-first-steps-v1kurento-nubomedia-first-steps-v1
kurento-nubomedia-first-steps-v1
Luis Lopez
 
WebRTC business models beyond calls
WebRTC business models beyond callsWebRTC business models beyond calls
WebRTC business models beyond calls
Luis Lopez
 
Developing applications with Kurento
Developing applications with KurentoDeveloping applications with Kurento
Developing applications with Kurento
Luis Lopez
 
Developing rich multimedia applications with Kurento: a tutorial for JavaScri...
Developing rich multimedia applications with Kurento: a tutorial for JavaScri...Developing rich multimedia applications with Kurento: a tutorial for JavaScri...
Developing rich multimedia applications with Kurento: a tutorial for JavaScri...
Luis Lopez
 
The future of multimedia communications and services: Kurento and it's role
The future of multimedia communications and services: Kurento and it's roleThe future of multimedia communications and services: Kurento and it's role
The future of multimedia communications and services: Kurento and it's role
Luis Lopez
 
WebRTC infrastructures in the large (with experiences on real cloud deployments)
WebRTC infrastructures in the large (with experiences on real cloud deployments)WebRTC infrastructures in the large (with experiences on real cloud deployments)
WebRTC infrastructures in the large (with experiences on real cloud deployments)
Luis Lopez
 
Recording and media manipulation of WebRTC streams
Recording and media manipulation of WebRTC streamsRecording and media manipulation of WebRTC streams
Recording and media manipulation of WebRTC streams
Luis Lopez
 
elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...
elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...
elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...
Luis Lopez
 
Server-side WebRTC Infrastructure
Server-side WebRTC InfrastructureServer-side WebRTC Infrastructure
Server-side WebRTC Infrastructure
Dialogic Inc.
 
SthlmWebRTC #1 :: OpenWEBRTC introduction
SthlmWebRTC #1 :: OpenWEBRTC introductionSthlmWebRTC #1 :: OpenWEBRTC introduction
SthlmWebRTC #1 :: OpenWEBRTC introduction
Edvina AB
 
OpenWebRTC and Bowser
OpenWebRTC and BowserOpenWebRTC and Bowser
OpenWebRTC and Bowser
Ericsson
 
WebRTC for Mobile - Challenges and Solutions
WebRTC for Mobile - Challenges and SolutionsWebRTC for Mobile - Challenges and Solutions
WebRTC for Mobile - Challenges and Solutions
Amir Zmora
 
Webrtc 동향과 이슈 2016.08
Webrtc 동향과 이슈 2016.08Webrtc 동향과 이슈 2016.08
Webrtc 동향과 이슈 2016.08
sung young son
 

Viewers also liked (20)

Improving GStreamer performance on large pipelines: from profiling to optimiz...
Improving GStreamer performance on large pipelines: from profiling to optimiz...Improving GStreamer performance on large pipelines: from profiling to optimiz...
Improving GStreamer performance on large pipelines: from profiling to optimiz...
 
Developing rich multimedia applications with Kurento: a tutorial for Java Dev...
Developing rich multimedia applications with Kurento: a tutorial for Java Dev...Developing rich multimedia applications with Kurento: a tutorial for Java Dev...
Developing rich multimedia applications with Kurento: a tutorial for Java Dev...
 
NUBOMEDIA: an elastic Platform as a Service (PaaS) cloud for interactive soci...
NUBOMEDIA: an elastic Platform as a Service (PaaS) cloud for interactive soci...NUBOMEDIA: an elastic Platform as a Service (PaaS) cloud for interactive soci...
NUBOMEDIA: an elastic Platform as a Service (PaaS) cloud for interactive soci...
 
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...
 
Nubomedia: the cloud infrastructure for WebRTC and IMS multimedia real-time c...
Nubomedia: the cloud infrastructure for WebRTC and IMS multimedia real-time c...Nubomedia: the cloud infrastructure for WebRTC and IMS multimedia real-time c...
Nubomedia: the cloud infrastructure for WebRTC and IMS multimedia real-time c...
 
Developing rich multimedia applications with FI-WARE.
Developing rich multimedia applications with FI-WARE.Developing rich multimedia applications with FI-WARE.
Developing rich multimedia applications with FI-WARE.
 
FOSDEM 2016 - Creating rich WebRTC Applications with Kurento
FOSDEM 2016 - Creating rich WebRTC Applications with KurentoFOSDEM 2016 - Creating rich WebRTC Applications with Kurento
FOSDEM 2016 - Creating rich WebRTC Applications with Kurento
 
kurento-nubomedia-first-steps-v1
kurento-nubomedia-first-steps-v1kurento-nubomedia-first-steps-v1
kurento-nubomedia-first-steps-v1
 
WebRTC business models beyond calls
WebRTC business models beyond callsWebRTC business models beyond calls
WebRTC business models beyond calls
 
Developing applications with Kurento
Developing applications with KurentoDeveloping applications with Kurento
Developing applications with Kurento
 
Developing rich multimedia applications with Kurento: a tutorial for JavaScri...
Developing rich multimedia applications with Kurento: a tutorial for JavaScri...Developing rich multimedia applications with Kurento: a tutorial for JavaScri...
Developing rich multimedia applications with Kurento: a tutorial for JavaScri...
 
The future of multimedia communications and services: Kurento and it's role
The future of multimedia communications and services: Kurento and it's roleThe future of multimedia communications and services: Kurento and it's role
The future of multimedia communications and services: Kurento and it's role
 
WebRTC infrastructures in the large (with experiences on real cloud deployments)
WebRTC infrastructures in the large (with experiences on real cloud deployments)WebRTC infrastructures in the large (with experiences on real cloud deployments)
WebRTC infrastructures in the large (with experiences on real cloud deployments)
 
Recording and media manipulation of WebRTC streams
Recording and media manipulation of WebRTC streamsRecording and media manipulation of WebRTC streams
Recording and media manipulation of WebRTC streams
 
elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...
elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...
elasticRTC -- how to have your own WebRTC cloud scaling to be billions in min...
 
Server-side WebRTC Infrastructure
Server-side WebRTC InfrastructureServer-side WebRTC Infrastructure
Server-side WebRTC Infrastructure
 
SthlmWebRTC #1 :: OpenWEBRTC introduction
SthlmWebRTC #1 :: OpenWEBRTC introductionSthlmWebRTC #1 :: OpenWEBRTC introduction
SthlmWebRTC #1 :: OpenWEBRTC introduction
 
OpenWebRTC and Bowser
OpenWebRTC and BowserOpenWebRTC and Bowser
OpenWebRTC and Bowser
 
WebRTC for Mobile - Challenges and Solutions
WebRTC for Mobile - Challenges and SolutionsWebRTC for Mobile - Challenges and Solutions
WebRTC for Mobile - Challenges and Solutions
 
Webrtc 동향과 이슈 2016.08
Webrtc 동향과 이슈 2016.08Webrtc 동향과 이슈 2016.08
Webrtc 동향과 이슈 2016.08
 

Similar to Implementing a WebRTC endpoint in GStreamer: challenges, problems and perspectives

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
 
Web rtc 동향과 이슈 2017년_정리
Web rtc 동향과 이슈 2017년_정리Web rtc 동향과 이슈 2017년_정리
Web rtc 동향과 이슈 2017년_정리
sung young son
 
Media processing with serverless architecture
Media processing with serverless architectureMedia processing with serverless architecture
Media processing with serverless architecture
Kensaku Komatsu
 
FIWARE Global Summit - Real-time Media Stream Processing Using Kurento
FIWARE Global Summit - Real-time Media Stream Processing Using KurentoFIWARE Global Summit - Real-time Media Stream Processing Using Kurento
FIWARE Global Summit - Real-time Media Stream Processing Using Kurento
FIWARE
 
RTBkit Meetup - Developer Spotlight, Behind the Scenes of RTBkit and Intro to...
RTBkit Meetup - Developer Spotlight, Behind the Scenes of RTBkit and Intro to...RTBkit Meetup - Developer Spotlight, Behind the Scenes of RTBkit and Intro to...
RTBkit Meetup - Developer Spotlight, Behind the Scenes of RTBkit and Intro to...
Datacratic
 
WebRTC standards update - November 2014
WebRTC standards update - November 2014WebRTC standards update - November 2014
WebRTC standards update - November 2014
Victor Pascual Ávila
 
Webinar WebRTC HTML5 (english)
Webinar WebRTC HTML5 (english)Webinar WebRTC HTML5 (english)
Webinar WebRTC HTML5 (english)Quobis
 
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
Qualcomm Developer Network
 
VozDigital DevFest 31/10/14
VozDigital DevFest 31/10/14VozDigital DevFest 31/10/14
VozDigital DevFest 31/10/14
javier_fernandez_seco
 
WebRTC on Mobile
WebRTC on MobileWebRTC on Mobile
WebRTC on Mobile
Buşra Deniz, CSM
 
APIs at the Edge
APIs at the EdgeAPIs at the Edge
APIs at the Edge
Red Hat
 
Kubernetes and Gitops at Quicksign - Koncrete Kube Oct 2018
Kubernetes and Gitops at Quicksign - Koncrete Kube Oct 2018Kubernetes and Gitops at Quicksign - Koncrete Kube Oct 2018
Kubernetes and Gitops at Quicksign - Koncrete Kube Oct 2018
Cedric Vidal
 
Upperside Webinar- WebRTC from the service provider prism-final
Upperside Webinar- WebRTC from the service provider prism-finalUpperside Webinar- WebRTC from the service provider prism-final
Upperside Webinar- WebRTC from the service provider prism-final
Amir Zmora
 
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
Amir Zmora
 
FIWARE Tech Summit - Stream Processing with Kurento Media Server
FIWARE Tech Summit - Stream Processing with Kurento Media ServerFIWARE Tech Summit - Stream Processing with Kurento Media Server
FIWARE Tech Summit - Stream Processing with Kurento Media Server
FIWARE
 
Xpdays: Kubernetes CI-CD Frameworks Case Study
Xpdays: Kubernetes CI-CD Frameworks Case StudyXpdays: Kubernetes CI-CD Frameworks Case Study
Xpdays: Kubernetes CI-CD Frameworks Case Study
Denys Vasyliev
 
WebRTC Standards & Implementation Q&A - WebRTC Standards Feature Complete 
No...
WebRTC Standards & Implementation Q&A - WebRTC Standards Feature Complete 
No...WebRTC Standards & Implementation Q&A - WebRTC Standards Feature Complete 
No...
WebRTC Standards & Implementation Q&A - WebRTC Standards Feature Complete 
No...
Amir Zmora
 
WebRTC Webinar & Q&A - Sumilcast Standards & Implementation
WebRTC Webinar & Q&A - Sumilcast Standards & ImplementationWebRTC Webinar & Q&A - Sumilcast Standards & Implementation
WebRTC Webinar & Q&A - Sumilcast Standards & Implementation
Amir Zmora
 
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOpsHybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Sonja Schweigert
 
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOpsHybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Weaveworks
 

Similar to Implementing a WebRTC endpoint in GStreamer: challenges, problems and perspectives (20)

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...
 
Web rtc 동향과 이슈 2017년_정리
Web rtc 동향과 이슈 2017년_정리Web rtc 동향과 이슈 2017년_정리
Web rtc 동향과 이슈 2017년_정리
 
Media processing with serverless architecture
Media processing with serverless architectureMedia processing with serverless architecture
Media processing with serverless architecture
 
FIWARE Global Summit - Real-time Media Stream Processing Using Kurento
FIWARE Global Summit - Real-time Media Stream Processing Using KurentoFIWARE Global Summit - Real-time Media Stream Processing Using Kurento
FIWARE Global Summit - Real-time Media Stream Processing Using Kurento
 
RTBkit Meetup - Developer Spotlight, Behind the Scenes of RTBkit and Intro to...
RTBkit Meetup - Developer Spotlight, Behind the Scenes of RTBkit and Intro to...RTBkit Meetup - Developer Spotlight, Behind the Scenes of RTBkit and Intro to...
RTBkit Meetup - Developer Spotlight, Behind the Scenes of RTBkit and Intro to...
 
WebRTC standards update - November 2014
WebRTC standards update - November 2014WebRTC standards update - November 2014
WebRTC standards update - November 2014
 
Webinar WebRTC HTML5 (english)
Webinar WebRTC HTML5 (english)Webinar WebRTC HTML5 (english)
Webinar WebRTC HTML5 (english)
 
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
 
VozDigital DevFest 31/10/14
VozDigital DevFest 31/10/14VozDigital DevFest 31/10/14
VozDigital DevFest 31/10/14
 
WebRTC on Mobile
WebRTC on MobileWebRTC on Mobile
WebRTC on Mobile
 
APIs at the Edge
APIs at the EdgeAPIs at the Edge
APIs at the Edge
 
Kubernetes and Gitops at Quicksign - Koncrete Kube Oct 2018
Kubernetes and Gitops at Quicksign - Koncrete Kube Oct 2018Kubernetes and Gitops at Quicksign - Koncrete Kube Oct 2018
Kubernetes and Gitops at Quicksign - Koncrete Kube Oct 2018
 
Upperside Webinar- WebRTC from the service provider prism-final
Upperside Webinar- WebRTC from the service provider prism-finalUpperside Webinar- WebRTC from the service provider prism-final
Upperside Webinar- WebRTC from the service provider prism-final
 
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
 
FIWARE Tech Summit - Stream Processing with Kurento Media Server
FIWARE Tech Summit - Stream Processing with Kurento Media ServerFIWARE Tech Summit - Stream Processing with Kurento Media Server
FIWARE Tech Summit - Stream Processing with Kurento Media Server
 
Xpdays: Kubernetes CI-CD Frameworks Case Study
Xpdays: Kubernetes CI-CD Frameworks Case StudyXpdays: Kubernetes CI-CD Frameworks Case Study
Xpdays: Kubernetes CI-CD Frameworks Case Study
 
WebRTC Standards & Implementation Q&A - WebRTC Standards Feature Complete 
No...
WebRTC Standards & Implementation Q&A - WebRTC Standards Feature Complete 
No...WebRTC Standards & Implementation Q&A - WebRTC Standards Feature Complete 
No...
WebRTC Standards & Implementation Q&A - WebRTC Standards Feature Complete 
No...
 
WebRTC Webinar & Q&A - Sumilcast Standards & Implementation
WebRTC Webinar & Q&A - Sumilcast Standards & ImplementationWebRTC Webinar & Q&A - Sumilcast Standards & Implementation
WebRTC Webinar & Q&A - Sumilcast Standards & Implementation
 
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOpsHybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
 
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOpsHybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
 

Recently uploaded

原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
3ipehhoa
 
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC
 
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
keoku
 
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
eutxy
 
Comptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guideComptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guide
GTProductions1
 
This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!
nirahealhty
 
BASIC C++ lecture NOTE C++ lecture 3.pptx
BASIC C++ lecture NOTE C++ lecture 3.pptxBASIC C++ lecture NOTE C++ lecture 3.pptx
BASIC C++ lecture NOTE C++ lecture 3.pptx
natyesu
 
The+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptxThe+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptx
laozhuseo02
 
How to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptxHow to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptx
Gal Baras
 
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
3ipehhoa
 
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
3ipehhoa
 
1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...
JeyaPerumal1
 
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Brad Spiegel Macon GA
 
Internet-Security-Safeguarding-Your-Digital-World (1).pptx
Internet-Security-Safeguarding-Your-Digital-World (1).pptxInternet-Security-Safeguarding-Your-Digital-World (1).pptx
Internet-Security-Safeguarding-Your-Digital-World (1).pptx
VivekSinghShekhawat2
 
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and GuidelinesMulti-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Sanjeev Rampal
 
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shopHistory+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
laozhuseo02
 
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
ufdana
 
guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...
Rogerio Filho
 
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdfJAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
Javier Lasa
 
Latest trends in computer networking.pptx
Latest trends in computer networking.pptxLatest trends in computer networking.pptx
Latest trends in computer networking.pptx
JungkooksNonexistent
 

Recently uploaded (20)

原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
 
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
 
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
 
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
 
Comptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guideComptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guide
 
This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!
 
BASIC C++ lecture NOTE C++ lecture 3.pptx
BASIC C++ lecture NOTE C++ lecture 3.pptxBASIC C++ lecture NOTE C++ lecture 3.pptx
BASIC C++ lecture NOTE C++ lecture 3.pptx
 
The+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptxThe+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptx
 
How to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptxHow to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptx
 
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
 
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
 
1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...
 
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
 
Internet-Security-Safeguarding-Your-Digital-World (1).pptx
Internet-Security-Safeguarding-Your-Digital-World (1).pptxInternet-Security-Safeguarding-Your-Digital-World (1).pptx
Internet-Security-Safeguarding-Your-Digital-World (1).pptx
 
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and GuidelinesMulti-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
 
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shopHistory+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
 
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
 
guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...
 
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdfJAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
 
Latest trends in computer networking.pptx
Latest trends in computer networking.pptxLatest trends in computer networking.pptx
Latest trends in computer networking.pptx
 

Implementing a WebRTC endpoint in GStreamer: challenges, problems and perspectives

  • 1. Implementing a WebRTC endpoint in GStreamer: challenges, problems and perspectives 8-9 October 2015 Dublin, Ireland Conference 2015 Miguel París Jose A. Santos santoscadenas@gmail.com mparisdiaz@gmail.com
  • 2. 2 Who we are José Antonio Santos Cadenas ● Software Engineer ● Telematic Systems Master's ● Developer at Naevatec (Madrid, Spain) ● Kurento Media Server (KMS) manager ● Integrating with client APIs ● santoscadenas@gmail.com Miguel París ● Software Engineer ● Telematic Systems Master's ● Researcher at Universidad Rey Juan Carlos (Madrid, Spain) ● Kurento real-time manager ● mparisdiaz@gmail.com ● Twitter: @mparisdiaz
  • 3. What is WebRTC 3 ● WebRTC is a new movement bringing RTC to the WWW ● It is based on standards ● Supported by Chrome & Firefox ● Windows Edge added partial support recently ● Safari is rumored to be on the way of providing it ● FOSS implementations for Smartphone platforms (iOS and Android) ● More tan 1B devices currently support WebRTC Developing RTC applications for the WWW Before WebRTC After WebRTC Begin End • Unified APIs • Standards • FOSS • Multiplatform
  • 4. WebRTC standards 4 ● Standard APIs: Standardized by the WebRTC WG at W3C  Media Capture APIs ● Standardize APIs for media capture  PeerConnection APIs (WebRTC 1.0 almost finished) ● Standardize API for P2P media communications ● Media = Audio + Video + Data ● DataChannel API: low latency  WebRTC stats ● RTP stats for inbound and outbound directions ● encode/decode stats ● DataChannel stats
  • 5. Implementing WebRTC in GStreamer 5 ● Deep interest in the GStreamer community ● Several implementations  OpenWebRTC (Ericsson) ● Design for working as part of client applications  Kurento Media Server (Kurento.org) ● Design for working as part of media server infrastructures  Main differences between them:  OpenWebRTC captures media from camera and mic. KMS doesn't  OpenWebRTC renders to display and speakers. KMS doesn't  OpenWebRTC encodes/decodes audio/video. KMS only if needed.
  • 6. 6 <GstPipeline> pipeline0 [>] KmsWebrtcEndpoint kmswebrtcendpoint1 [>] GstRTPRtxQueue rtprtxqueue1 [>] GstRtpVP8Pay rtpvp8pay1 [>] GstRtpOPUSPay rtpopuspay1 [>] KmsWebrtcSession kmswebrtcsession1 [>] KmsRtcpDemux kmsrtcpdemux1 [>] GstRtpSsrcDemux rtpssrcdemux5 [>] KmsWebrtcTransportSinkNice kmswebrtctransportsinknice1 [>] GstNiceSink nicesink1 [>] GstDtlsSrtpEnc dtlssrtpenc1 [>] GstFunnel funnel [>] GstSrtpEnc srtp-encoder [>] GstDtlsEnc dtls-encoder [>] KmsWebrtcTransportSrcNice kmswebrtctransportsrcnice1 [>] GstDtlsSrtpDec dtlssrtpdec1 [>] GstSrtpDec srtp-decoder [>] GstDtlsDec dtls-decoder [>] GstDtlsSrtpDemux dtls-srtp-demux [>] GstNiceSrc nicesrc1 [>] GstRtpBin rtpbin1 [>] GstRtpSsrcDemux rtpssrcdemux4 [>] GstRtpSession rtpsession3 [>] GstRtpSsrcDemux rtpssrcdemux3 [>] GstRtpSession rtpsession2 [>] KmsWebrtcEndpoint kmswebrtcendpoint0 [>] GstRtpVP8Depay rtpvp8depay0 [>] KmsAgnosticBin2 kmsagnosticbin2-1 [>] GstQueue queue3 [>] KmsParseTreeBin kmsparsetreebin1 [>] KmsVp8Parse kmsvp8parse0 [>] GstFakeSink fakesink3 [>] GstTee tee3 [>] GstFakeSink fakesink2 [>] GstTee tee2 [>] GstRTPOpusDepay rtpopusdepay0 [>] KmsAgnosticBin2 kmsagnosticbin2-0 [>] GstQueue queue1 [>] KmsParseTreeBin kmsparsetreebin0 [>] GstOpusParse opusparse0 [>] GstFakeSink fakesink1 [>] GstTee tee1 [>] GstFakeSink fakesink0 [>] GstTee tee0 [>] GstRTPRtxQueue rtprtxqueue0 [>] GstRtpVP8Pay rtpvp8pay0 [>] GstRtpOPUSPay rtpopuspay0 [>] KmsWebrtcSession kmswebrtcsession0 [>] KmsRtcpDemux kmsrtcpdemux0 [>] GstRtpSsrcDemux rtpssrcdemux2 [>] KmsWebrtcTransportSinkNice kmswebrtctransportsinknice0 [>] GstNiceSink nicesink0 [>] GstDtlsSrtpEnc dtlssrtpenc0 [>] GstFunnel funnel [>] GstSrtpEnc srtp-encoder [>] GstDtlsEnc dtls-encoder [>] KmsWebrtcTransportSrcNice kmswebrtctransportsrcnice0 [>] GstDtlsSrtpDec dtlssrtpdec0 [>] GstSrtpDec srtp-decoder [>] GstDtlsDec dtls-decoder [>] GstDtlsSrtpDemux dtls-srtp-demux [>] GstNiceSrc nicesrc0 [>] GstRtpBin rtpbin0 [>] GstRtpJitterBuffer rtpjitterbuffer1 [>] GstRtpPtDemux rtpptdemux1 [>] GstRtpJitterBuffer rtpjitterbuffer0 [>] GstRtpPtDemux rtpptdemux0 [>] GstRtpSsrcDemux rtpssrcdemux1 [>] GstRtpSession rtpsession1 [>] GstRtpSsrcDemux rtpssrcdemux0 [>] GstRtpSession rtpsession0 [>] Legend Element-States: [~] void-pending, [0] null, [-] ready, [=] paused, [>] playing Pad-Activation: [-] none, [>] push, [<] pull Pad-Flags: [b]locked, [f]lushing, [b]locking; upper-case is set Pad-Task: [T] has started task, [t] has paused task proxypad40 [>][bfb] sink [>][bfb] sink_audio [>][bfb] proxypad42 [>][bfb] sink [>][bfb] sink_video [>][bfb] sink [>][bfb] src [>][bfb] send_rtp_sink_1 [>][bfb] proxypad33 [>][bfb] src [>][bfb] src [>][bfb] send_rtp_sink_0 [>][bfb] proxypad31 [>][bfb] send_rtp_src_0 [>][bfb] sink [>][bfb] rtp_src [>][bfb] rtcp_src [>][bfb] rtcp_sink [>][bfb] sink [>][bfb] src_1 [>][bfb] recv_rtp_sink_1 [>][bfb] rtcp_src_1 [>][bfb] recv_rtcp_sink_1 [>][bfb] src_421259003 [>][bfb] recv_rtp_sink_0 [>][bfb] rtcp_src_421259003 [>][bfb] recv_rtcp_sink_0 [>][bfb] proxypad44 [>][bfb] proxypad45 [>][bfb] proxypad46 [>][bfb] proxypad47 [>][bfb] sink [>][bfb] proxypad34 [>][bfb] rtp_sink_0 [>][bfb] rtp_sink_0 [>][bfb] src [>][bfb] proxypad36 [>][bfb] rtcp_sink_0 [>][bfb] rtcp_sink_0 [>][bfb] proxypad37 [>][bfb] rtp_sink_1 [>][bfb] rtp_sink_1 [>][bfb] proxypad39 [>][bfb] rtcp_sink_1 [>][bfb] rtcp_sink_1 [>][bfb] proxypad29 [>][bfb] funnelpad5 [>][bfb] src [>][bfb] funnelpad6 [>][bfb] funnelpad7 [>][bfb] funnelpad8 [>][bfb] funnelpad9 [>][bfb] rtp_src_0 [>][bfb] rtcp_src_0 [>][bfb] rtp_src_1 [>][bfb] rtcp_src_1 [>][bfb] src [>][bfb][T] proxypad28 [>][bfb] sink [>][bfb] sink [>][bfb] rtp_src [>][bfb] proxypad26 [>][bfb] proxypad27 [>][bfb] rtcp_src [>][bfb] rtp_sink [>][bfb] rtp_src [>][bfb] rtcp_sink [>][bfb] rtcp_src [>][bfb] sink [>][bfb] rtp_src [>][bfb] dtls_src [>][bfb] src [>][bfb][T] send_rtp_sink [>][bfb] send_rtp_sink [>][bfb] recv_rtp_sink [>][bfb] recv_rtcp_sink [>][bfb] recv_rtp_sink [>][bfb] recv_rtcp_sink [>][bfb] proxypad30 [>][bfb] proxypad32 [>][bfb] send_rtp_src_1 [>][bfb] proxypad35 [>][bfb] send_rtcp_src_0 [>][bfb] proxypad38 [>][bfb] send_rtcp_src_1 [>][bfb] sink [>][bfb] rtcp_sink [>][bfb] send_rtp_src [>][bfb] send_rtcp_src [>][bfb] recv_rtp_src [>][bfb] sync_src [>][bfb] sink [>][bfb] rtcp_sink [>][bfb] send_rtp_src [>][bfb] send_rtcp_src [>][bfb] recv_rtp_src [>][bfb] sync_src [>][bfb] proxypad14 [>][bfb] sink [>][bfb] sink_audio [>][bfb] audio_src_0 [>][bfb] proxypad15 [>][bfb] sink [>][bfb] sink_video [>][bfb] proxypad24 [>][bfb] proxypad25 [>][bfb] video_src_0 [>][bfb] sink [>][bfb] src [>][bfb] sink [>][bfb] proxypad23 [>][bfb] src_0 [>][bfb] sink [>][bfb] proxypad43 [>][bfb]sink [>][bfb] src [>][bfb][T] sink [>][bfb] src [>][bfb] sink [>][bfb] src_0 [>][bfb] sink [>][bfb] src_2 [>][bfb] sink [>][bfb] src_0 [>][bfb] src_1 [>][bfb] sink [>][bfb] src [>][bfb] sink [>][bfb] proxypad19 [>][bfb] src_0 [>][bfb] sink [>][bfb] proxypad41 [>][bfb]sink [>][bfb] src [>][bfb][T] sink [>][bfb] src [>][bfb] sink [>][bfb] src_0 [>][bfb] sink [>][bfb] src_2 [>][bfb] sink [>][bfb] src_0 [>][bfb] src_1 [>][bfb] sink [>][bfb] src [>][bfb] send_rtp_sink_1 [>][bfb] proxypad7 [>][bfb] src [>][bfb] src [>][bfb] send_rtp_sink_0 [>][bfb] proxypad5 [>][bfb] send_rtp_src_0 [>][bfb] sink [>][bfb] rtp_src [>][bfb] rtcp_src [>][bfb] rtcp_sink [>][bfb] sink [>][bfb] src_1442068093 [>][bfb] recv_rtp_sink_0 [>][bfb] rtcp_src_1442068093 [>][bfb] recv_rtcp_sink_0 [>][bfb] src_836061664 [>][bfb] recv_rtp_sink_1 [>][bfb] rtcp_src_836061664 [>][bfb] recv_rtcp_sink_1 [>][bfb] proxypad16 [>][bfb] proxypad17 [>][bfb] proxypad20 [>][bfb] proxypad21 [>][bfb] sink [>][bfb] proxypad8 [>][bfb] rtp_sink_0 [>][bfb] rtp_sink_0 [>][bfb] src [>][bfb] proxypad10 [>][bfb] rtcp_sink_0 [>][bfb] rtcp_sink_0 [>][bfb] proxypad11 [>][bfb] rtp_sink_1 [>][bfb] rtp_sink_1 [>][bfb] proxypad13 [>][bfb] rtcp_sink_1 [>][bfb] rtcp_sink_1 [>][bfb] proxypad3 [>][bfb] funnelpad0 [>][bfb] src [>][bfb] funnelpad1 [>][bfb] funnelpad2 [>][bfb] funnelpad3 [>][bfb] funnelpad4 [>][bfb] rtp_src_0 [>][bfb] rtcp_src_0 [>][bfb] rtp_src_1 [>][bfb] rtcp_src_1 [>][bfb] src [>][bfb][T] proxypad2 [>][bfb] sink [>][bfb] sink [>][bfb] rtp_src [>][bfb] proxypad0 [>][bfb] proxypad1 [>][bfb] rtcp_src [>][bfb] rtp_sink [>][bfb] rtp_src [>][bfb] rtcp_sink [>][bfb] rtcp_src [>][bfb] sink [>][bfb] rtp_src [>][bfb] dtls_src [>][bfb] src [>][bfb][T] send_rtp_sink [>][bfb] send_rtp_sink [>][bfb] recv_rtp_sink [>][bfb] recv_rtcp_sink [>][bfb] recv_rtp_sink [>][bfb] recv_rtcp_sink [>][bfb] proxypad4 [>][bfb] proxypad6 [>][bfb] send_rtp_src_1 [>][bfb] proxypad9 [>][bfb] send_rtcp_src_0 [>][bfb] proxypad12 [>][bfb] send_rtcp_src_1 [>][bfb] proxypad18 [>][bfb] recv_rtp_src_0_1442068093_111 [>][bfb] proxypad22 [>][bfb] recv_rtp_src_1_836061664_100 [>][bfb] sink [>][bfb] src [>][bfb][T] sink_rtcp [>][bfb] sink [>][bfb] src_100 [>][bfb] sink [>][bfb] src [>][bfb][T] sink_rtcp [>][bfb] sink [>][bfb] src_111 [>][bfb] sink [>][bfb] src_836061664 [>][bfb] rtcp_sink [>][bfb] rtcp_src_836061664 [>][bfb] send_rtp_src [>][bfb] send_rtcp_src [>][bfb] recv_rtp_src [>][bfb] sync_src [>][bfb] sink [>][bfb] src_1442068093 [>][bfb] rtcp_sink [>][bfb] rtcp_src_1442068093 [>][bfb] send_rtp_src [>][bfb] send_rtcp_src [>][bfb] recv_rtp_src [>][bfb] sync_src [>][bfb] Kurento WebRtcEp The pipeline
  • 7. Interactive Connectivity Establishment ICE I 7 ● Using libnice (NiceSrc and NiceSink)  Involved RFCs:  RFC 5245: Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal for Offer/Answer Protocols  RFC 5389: Session Traversal Utilities for NAT (STUN)  RFC 5766: Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN)
  • 8. Interactive Connectivity Establishment ICE II 8 ● Our experience with libnice  0.1.7 version seem to be stable, but lack many required features  0.1.10 version incorporate relevant features but seem not to provide the appropriate stability yet ● Leaks of TCP sockets ● Connection states ● Connectivity problems (Fails 1/1000)  Fixed in 0.1.13 ? (we have to check it)
  • 9. ICE III 9 ● What next needed in ICE for WebRTC?  IPv6 shall be mandatory in WebRTC.  We need to check IPv6 support in libnice  draft-ietf-rtcweb-transports-09 (mandates IPv6 support)  HTTP CONNECT protocol for TURN might be important in corporate networks (connectivity)  draft-hutton-httpbis-connect-protocol-00  STUN consent freshness may become mandatory for WebRTC. This may require some adjustments on libnice for supporting consent negotiation (security)  Draft-ietf-rtcweb-stun-consent-freshness-16  ICE stated published through events  ICE state should be reported as specified in the WebRTC 1.0 WG draft
  • 10. DTLS / SRTP I 10 ● Using dtlssrtp(dec|enc) bins  dtls(dec|enc) manages DTLS handshake  srtp(dec|enc) decrypts/encrypts RTP packets ● Involved RFCs:  RFC 5764: Datagram Transport Security (DTLS) Extension to Establish Keys for the Secure Real-time Protocol (SRTP)  RFC 3711: The Secure Real-time Transport Protocol (SRTP)
  • 11. DTLS / SRTP II 11 ● What next for WebRTC?  New cryptographic framework for group communications  This is under definition at the Privacy Enhanced RTP Conferencing (PERC) IETF WG  Only early drafts here  draft-jones-perc-private-media-framework-00  draft-jones-perc-private-media-reqts-00  draft-mattsson-perc-srtp-cloud-00  draft-westerlund-perc-webrtc-use-case-00  PERC shall provide in the next few months (improve efficiency)  Enabling unicast group communications without requiring infrastructure to decipher  New mechanisms enabling unicast group communications without requiring infrastructure to cipher once per RTC session.  These may require re-factoring of current DTLS stack  DTLS state published through events.  Full connectivity requires ICE connectivity + successful DTLS handshake.  DTLS is being incorporated by the W3C in the WebRTC 1.0 spec as event generator dealing with connection health
  • 12. Congestion control I 12 ● This is an essential feature for providing satisfactory QoE for WebRTC users  How does it work?  Bandwidth estimator  Based on packet delay (useful RTP ExtHdr: abs-send-time)  Based on packet loss  REMB (Receiver Estimated Maximum Bitrate)  GStreamer does not provide any kind of features for this off the self  How Kurento estimates bandwidth?  on-sending-rtcp  Get packet-loss, bytes-sent, etc. from RtpSession stats  Advantages: simple  Drawbacks  Reactive and not predictive  Requires packet loss to detect BW constraints  Getting RtpSession stats quite inefficient
  • 13. Congestion control II 13 ● For having satisfactory congestion control we should look to the following drafts  draft-alvestrand-rmcat-remb-03: REMB mechanism implemented by Chrome  draft-ietf-rmcat-cc-requirements-09: Congestion Control Requirements for Interactive Real-Time Media  draft-ietf-avtcore-rtp-circuit-breakers-10: Multimedia Congestion Control: Circuit Breakers for Unicast RTP Sessions ● In summary, congestion control should:  be predictive  be efficient  be fair  "break the circuit" (drop the BW) in case of evidence of huge congestion  This is to avoid breaking other types of traffic.
  • 14. DataChannels 14 ● Kurento has DataChannels support ● Protocols: DTLS-SCTP ● Drafts  draft-ietf-rtcweb-data-channel  draft-ietf-rtcweb-data-protocol  draft-ietf-mmusic-data-channel-sdpneg  Impl. based on sctp(dec|enc) provided by Ericsson  What have Kurento done?  Fixed problems when using Gstreamer 1.4  Fixed a lot of bugs  Implementation of the DataChannel protocol  AppSrc, AppSink
  • 15. Thank you Suggestions, comments and complains: mparisdiaz@gmail.com santoscadenas@gmail.com http://www.kurento.org http://www.github.com/kurento info@kurento.org Twitter: @kurentoms http://www.nubomedia.eu http://www.fi-ware.org http://ec.europa.eu