SlideShare a Scribd company logo
1 of 15
Download to read offline
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

Cloud Computing vs. Traditional Computing
Cloud Computing vs. Traditional ComputingCloud Computing vs. Traditional Computing
Cloud Computing vs. Traditional ComputingRavi Kumar
 
Advanced Kurento Real Time Media Stream Processing
Advanced Kurento Real Time Media Stream ProcessingAdvanced Kurento Real Time Media Stream Processing
Advanced Kurento Real Time Media Stream ProcessingFIWARE
 
UDP - User Datagram Protocol
UDP - User Datagram ProtocolUDP - User Datagram Protocol
UDP - User Datagram ProtocolPeter R. Egli
 
Multicast Routing Protocols
Multicast Routing ProtocolsMulticast Routing Protocols
Multicast Routing ProtocolsRam Dutt Shukla
 
Comparison of MQTT and DDS as M2M Protocols for the Internet of Things
Comparison of MQTT and DDS as M2M Protocols for the Internet of ThingsComparison of MQTT and DDS as M2M Protocols for the Internet of Things
Comparison of MQTT and DDS as M2M Protocols for the Internet of ThingsReal-Time Innovations (RTI)
 
pfSense firewall workshop guide
pfSense firewall workshop guidepfSense firewall workshop guide
pfSense firewall workshop guideSopon Tumchota
 
The Inside Story: How OPC UA and DDS Can Work Together in Industrial Systems
The Inside Story: How OPC UA and DDS Can Work Together in Industrial SystemsThe Inside Story: How OPC UA and DDS Can Work Together in Industrial Systems
The Inside Story: How OPC UA and DDS Can Work Together in Industrial SystemsReal-Time Innovations (RTI)
 
The Evolution of the Datacenter
The Evolution of the DatacenterThe Evolution of the Datacenter
The Evolution of the DatacenterStackIQ
 
Insights on the configuration and performances of SOME/IP Service Discovery
Insights on the configuration and performances of SOME/IP Service DiscoveryInsights on the configuration and performances of SOME/IP Service Discovery
Insights on the configuration and performances of SOME/IP Service DiscoveryNicolas Navet
 
Deploy Secure Network Architectures for The Connected Enterprise
Deploy Secure Network Architectures for The Connected EnterpriseDeploy Secure Network Architectures for The Connected Enterprise
Deploy Secure Network Architectures for The Connected EnterpriseRockwell Automation
 
Howto createOpenFlow Switchusing FPGA (at FPGAX#6)
Howto createOpenFlow Switchusing FPGA (at FPGAX#6)Howto createOpenFlow Switchusing FPGA (at FPGAX#6)
Howto createOpenFlow Switchusing FPGA (at FPGAX#6)Kentaro Ebisawa
 
E mail protocol - SMTP
E mail protocol - SMTPE mail protocol - SMTP
E mail protocol - SMTPMd Syed Ahamad
 
cisco csr1000v
cisco csr1000vcisco csr1000v
cisco csr1000vMing914298
 
Chap2. ipv4-arp-icmp
Chap2. ipv4-arp-icmpChap2. ipv4-arp-icmp
Chap2. ipv4-arp-icmp東原 李
 
Message queuing telemetry transport (mqtt) message format
Message queuing telemetry transport (mqtt) message formatMessage queuing telemetry transport (mqtt) message format
Message queuing telemetry transport (mqtt) message formatHamdamboy (함담보이)
 
Introduction to Cloud Computing
Introduction to Cloud ComputingIntroduction to Cloud Computing
Introduction to Cloud ComputingAnimesh Chaturvedi
 
Cloud service models
Cloud service modelsCloud service models
Cloud service modelsPrem Sanil
 
Network monitoring tools
Network monitoring toolsNetwork monitoring tools
Network monitoring toolsQaswarBosan
 

What's hot (20)

Cloud Computing vs. Traditional Computing
Cloud Computing vs. Traditional ComputingCloud Computing vs. Traditional Computing
Cloud Computing vs. Traditional Computing
 
Advanced Kurento Real Time Media Stream Processing
Advanced Kurento Real Time Media Stream ProcessingAdvanced Kurento Real Time Media Stream Processing
Advanced Kurento Real Time Media Stream Processing
 
UDP - User Datagram Protocol
UDP - User Datagram ProtocolUDP - User Datagram Protocol
UDP - User Datagram Protocol
 
Multicast Routing Protocols
Multicast Routing ProtocolsMulticast Routing Protocols
Multicast Routing Protocols
 
2 vm provisioning
2 vm provisioning2 vm provisioning
2 vm provisioning
 
Comparison of MQTT and DDS as M2M Protocols for the Internet of Things
Comparison of MQTT and DDS as M2M Protocols for the Internet of ThingsComparison of MQTT and DDS as M2M Protocols for the Internet of Things
Comparison of MQTT and DDS as M2M Protocols for the Internet of Things
 
pfSense firewall workshop guide
pfSense firewall workshop guidepfSense firewall workshop guide
pfSense firewall workshop guide
 
The Inside Story: How OPC UA and DDS Can Work Together in Industrial Systems
The Inside Story: How OPC UA and DDS Can Work Together in Industrial SystemsThe Inside Story: How OPC UA and DDS Can Work Together in Industrial Systems
The Inside Story: How OPC UA and DDS Can Work Together in Industrial Systems
 
The Evolution of the Datacenter
The Evolution of the DatacenterThe Evolution of the Datacenter
The Evolution of the Datacenter
 
Insights on the configuration and performances of SOME/IP Service Discovery
Insights on the configuration and performances of SOME/IP Service DiscoveryInsights on the configuration and performances of SOME/IP Service Discovery
Insights on the configuration and performances of SOME/IP Service Discovery
 
Deploy Secure Network Architectures for The Connected Enterprise
Deploy Secure Network Architectures for The Connected EnterpriseDeploy Secure Network Architectures for The Connected Enterprise
Deploy Secure Network Architectures for The Connected Enterprise
 
Howto createOpenFlow Switchusing FPGA (at FPGAX#6)
Howto createOpenFlow Switchusing FPGA (at FPGAX#6)Howto createOpenFlow Switchusing FPGA (at FPGAX#6)
Howto createOpenFlow Switchusing FPGA (at FPGAX#6)
 
E mail protocol - SMTP
E mail protocol - SMTPE mail protocol - SMTP
E mail protocol - SMTP
 
cisco csr1000v
cisco csr1000vcisco csr1000v
cisco csr1000v
 
Chap2. ipv4-arp-icmp
Chap2. ipv4-arp-icmpChap2. ipv4-arp-icmp
Chap2. ipv4-arp-icmp
 
Chapter 3 : User Datagram Protocol (UDP)
Chapter 3 : User Datagram Protocol (UDP)Chapter 3 : User Datagram Protocol (UDP)
Chapter 3 : User Datagram Protocol (UDP)
 
Message queuing telemetry transport (mqtt) message format
Message queuing telemetry transport (mqtt) message formatMessage queuing telemetry transport (mqtt) message format
Message queuing telemetry transport (mqtt) message format
 
Introduction to Cloud Computing
Introduction to Cloud ComputingIntroduction to Cloud Computing
Introduction to Cloud Computing
 
Cloud service models
Cloud service modelsCloud service models
Cloud service models
 
Network monitoring tools
Network monitoring toolsNetwork monitoring tools
Network monitoring tools
 

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 KurentoLuis Lopez
 
kurento-nubomedia-first-steps-v1
kurento-nubomedia-first-steps-v1kurento-nubomedia-first-steps-v1
kurento-nubomedia-first-steps-v1Luis Lopez
 
WebRTC business models beyond calls
WebRTC business models beyond callsWebRTC business models beyond calls
WebRTC business models beyond callsLuis Lopez
 
Developing applications with Kurento
Developing applications with KurentoDeveloping applications with Kurento
Developing applications with KurentoLuis 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 roleLuis 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 streamsLuis 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 InfrastructureDialogic Inc.
 
Kurento: a media server architecture and API for WebRTC
Kurento: a media server architecture and API for WebRTCKurento: a media server architecture and API for WebRTC
Kurento: a media server architecture and API for WebRTCLuis Lopez
 
SthlmWebRTC #1 :: OpenWEBRTC introduction
SthlmWebRTC #1 :: OpenWEBRTC introductionSthlmWebRTC #1 :: OpenWEBRTC introduction
SthlmWebRTC #1 :: OpenWEBRTC introductionEdvina AB
 
OpenWebRTC and Bowser
OpenWebRTC and BowserOpenWebRTC and Bowser
OpenWebRTC and BowserEricsson
 
WebRTC for Mobile - Challenges and Solutions
WebRTC for Mobile - Challenges and SolutionsWebRTC for Mobile - Challenges and Solutions
WebRTC for Mobile - Challenges and SolutionsAmir Zmora
 

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
 
Kurento: a media server architecture and API for WebRTC
Kurento: a media server architecture and API for WebRTCKurento: a media server architecture and API for WebRTC
Kurento: a media server architecture and API for WebRTC
 
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
 

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 architectureKensaku 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 KurentoFIWARE
 
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 2014Victor 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 3Qualcomm Developer Network
 
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 2018Cedric 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-finalAmir 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 ServerFIWARE
 
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 StudyDenys 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 & ImplementationAmir 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 GitOpsWeaveworks
 
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 GitOpsSonja Schweigert
 

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

Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersMoving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersDamian Radcliffe
 
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...APNIC
 
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl ServiceRussian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Servicegwenoracqe6
 
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.soniya singh
 
How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)Damian Radcliffe
 
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...Call Girls in Nagpur High Profile
 
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...Neha Pandey
 
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night StandHot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Standkumarajju5765
 
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024APNIC
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call GirlVIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girladitipandeya
 
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...SofiyaSharma5
 
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.soniya singh
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Callshivangimorya083
 

Recently uploaded (20)

Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersMoving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
 
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
 
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl ServiceRussian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
 
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
 
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)
 
@9999965857 🫦 Sexy Desi Call Girls Laxmi Nagar 💓 High Profile Escorts Delhi 🫶
@9999965857 🫦 Sexy Desi Call Girls Laxmi Nagar 💓 High Profile Escorts Delhi 🫶@9999965857 🫦 Sexy Desi Call Girls Laxmi Nagar 💓 High Profile Escorts Delhi 🫶
@9999965857 🫦 Sexy Desi Call Girls Laxmi Nagar 💓 High Profile Escorts Delhi 🫶
 
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
 
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
 
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night StandHot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
 
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
 
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
 
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call GirlVIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
 
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
 
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
 
VVVIP Call Girls In Connaught Place ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Connaught Place ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...VVVIP Call Girls In Connaught Place ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Connaught Place ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
 
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
 

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