SlideShare a Scribd company logo
1 of 26
Download to read offline
ORTC Lib 
Real-time Communication Library 
Introduction | August 2014
ORTC Lib - Introduction 
What is ORTC Lib? 
A C++ library and mobile wrappers based on ORTC (Object 
Real-time Communication) API Public Draft. 
API Public Draft: http://ortc.org (upper right hand side) 
Codebase: https://github.com/openpeer/ortc-lib 
1
ORTC - Other related projects 
Other ORTC projects dependent on ORTC Lib: 
Open Peer: P2P communications project 
http://openpeer.org 
ORTC Node: Node.js implementation (will require ORTC Lib server hardening) 
https://github.com/openpeer/ortc-node 
Other related proposed projects: 
JavaScript Shims 
● Upshim (WebRTC 1.0 ORTC) 
● Downshim (ORTC WebRTC 1.0)
ORTC Project Maintainer 
Who are the maintainers? 
Hookflash Inc. is the primary sponsor of the ORTC Open Source projects. 
This Canadian company, made up industry veterans, offers a PaaS for Real-time 
Communications. Hookflash is also the creator and custodian of Open 
Peer, an Open Source project for P2P communications. 
More on Hookflash: http://hookflash.com
ORTC Lib - Introduction 
What can it be used for? 
Enabling real-time communications (Voice, Video, Data Channel) for mobile and web via C++ & 
JavaScript libraries. The JS libs are out of scope for this project. 
What are the goals? 
The primary goal is to build an open source ORTC client reference implementation that will support all 
of the ORTC API objects, methods & attributes, using WebRTC open source components for 
maximum interoperability. 
Platforms: 
Under development: C++, iOS, Android 
Under consideration: Mac, Windows, Windows Phone
ORTC Lib - Value Statement 
Why should I use ORTC Lib? 
The libs have been built to the ORTC spec as it has 
evolved. This is the open source ORTC C++ library that is 
maintained by the specification founders, editors and 
authors.
ORTC Lib - Chrome Dependencies 
A word about Chrome Dependencies 
The maintainers wanted to provide an implementation of ORTC providing 
maximum flexibility for developers. 
Signaling: As signaling on the wire is not defined as part of WebRTC 1.0, the 
the maintainers removed all “on the wire” signalling from the library, (e.g. SDP 
offer/answer and Libjingle). 
ORTC is a WebRTC wire compatible "do as I say" API, that allows the 
developer to provide their own signalling in Javascript. As a result, a built-in 
SDP parser is not needed and the PeerConnection ICE implementation was 
replaced with a custom ICE implementation.
ORTC Lib - Chrome Compatibility 
Is ORTC Lib compatible with Chrome? 
Yes, it is interoperable with Chrome “on the wire” protocols. 
ORTC Lib uses Chrome's WebRTC real-time communication engine internally, 
minus the library formerly known as “Libjingle” (XMPP/Peer Connection, ICE 
and TURN). Thus RTP, SRTP, and codecs are all compatible, as they are 
common to Chrome.
ORTC Lib - License 
What is the license model? 
ORTC Lib is utilizes the FreeBSD open source model 
(see slide 21 for details).
ORTC Lib - Coverage 
Is it compatible with the ORTC Public Draft? 
Not yet. 
The public draft specification was completed and released 
on Aug. 20, 2014. As a result, the codebase has not yet 
achieved parity with the ORTC API Public Draft.
ORTC Lib - Work Completed 
● Removed Chrome dependencies: 
○ WebRTC renderer 
○ JSEP/SDP 
○ PeerConnection 
○ Libjingle 
● Codecs 
○ VP8 Support (Non SVC) 
○ ISAC Support 
○ Opus Support 
● Security 
○ OpenSSL 
● NAT Traversal 
○ Custom ICE/STUN/TURN implementation 
(RFC Standard) 
○ IPv6 
○ Extended support for Trickle ICE 
○ Extended support for Continuous 
Gathering Mode 
○ Multiple Network Interfaces (multi-homed) 
○ ICE Consent Freshness 
● DNS 
○ IDN (Internationalized Domain Names) 
○ SRV 
○ A / AAAA 
● Mobile 
○ Reduced energy consumption 
○ Application Backgrounding 
○ Reduced footprint 
● Assembly optimizations 
○ YUV conversion 
○ ...and too much more to list here 
● Media 
○ RTP / RTCP Multiplexing 
○ A/V Multiplexing 
○ Enhanced audio routing 
○ Video rotation control 
○ Facial recognition (iOS) 
● Logging 
○ Remote 
○ Local 
● Bug fixes
ORTC Lib - Outstanding Work Items 
What’s left to do? 
● General “tidying up” of the codebase. 
● RTCRTPSender / Receiver (+ support for "encoding params") 
● RTCDtlsTransport 
○ DTLS demux 
○ DTLS/SRTP key management 
● Data Channel (e.g. SCTP/DTLS/UDP, proprietary RTP data channel, etc.) 
● ICE 
○ Wrappers for ICE Listener/ICE Transport 
○ Support for "continuous" gather vs "complete" mode 
○ ICE Transport controller (bandwidth and ICE freezing) 
○ Custom gathering options (for mobility) 
● Media 
○ MediaStreamTrack 
○ Advanced VP8 - temporal scalability and simulcast 
○ H.264 support - RFC 6184 RTP payload transport 
● DTMF Sender 
● Stats 
● IdP
ORTC Lib - H.264 Work Plan 
The goal is to support the RFC 6184 RTP payload format based on the existing 
Chromium patch and Cisco’s Open H.264 encoder/decoder. 
However, the Open H.264 source will NOT be pulled into the codebase (though 
the build process will support compiling it, if desired). 
Initial goal is to support Constrained Baseline Profile, and to interoperate with 
with Mozilla Firefox. 
H.264/SVC (e.g. temporal scalability) and the RFC 6190 RTP payload format 
will not be supported initially.
ORTC Lib - Extending 
Should I contribute or fork? 
We encourage contributions & extensions to this library versus forking. By 
potentially creating multiple incompatible implementations of the ORTC API, 
forking could cause confusion among developers as well as in the market, 
adversely impacting the viability of the ORTC initiative. Once forked, recreating 
a unified code base will be time consuming and difficult.
ORTC Lib - Standards Compliance 
How will standards compliance be handled? 
The implementers of ORTC Lib intend to produce an implementation faithful to 
the WebRTC protocol specifications as well as the ORTC API specification. In 
order to keep the ORTC toolset close to the intent of the specifications, issues 
discovered will be brought back to the IETF RTCWEB WG and ORTC CG for 
discussion and resolution. 
The ORTC API is designed to support all features of the WebRTC 1.0 API as 
well as to be backward-compatible with the WebRTC 1.0 API via “shims”.
ORTC Lib - Contributing 
How do I contribute? 
Want to help? Excellent! 
Send an email to contribute@ortc.org with your 
ideas and we will respond with next steps.
ORTC Lib - Sponsoring 
How do I sponsor work? 
If you would like to contract the maintainers to do work that 
would be contributed back to the open source project under 
BSD license, please email your project ideas to 
sponsor@ortc.org
ORTC Lib - Thanks 
This Open Source work would not have been possible without valuable 
contributions from the community. The maintainers would like to thank those who 
contributed for their effort. 
Google Inc. 
- WebRTC contributions 
Microsoft Open Tech Inc. & Microsoft Inc. 
- Demo and Node.js contributions
ORTC Lib - Links 
Codebase: https://github.com/openpeer/ortc-lib 
Dev Forum: https://groups.google.com/a/ortc.org/forum/#!forum/discuss-ortc 
W3C CG: http://www.w3.org/community/ortc/ 
Current API Specification: http://ortc.org/ 
Contribute: contribute@ortc.org 
Sponsor: sponsor@ortc.org
ORTC Deep Dive
ORTC Lib - License Details 
License: 
Copyright (c) 2014, Hookflash Inc. 
All rights reserved. 
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the 
documentation and/or other materials provided with the distribution. 
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing 
official policies, either expressed or implied, of the FreeBSD Project.
ORTC Lib - 3rd Party Libraries 
Library License Usage 
WebRTC BSD RTP, Codecs 
libvpx BSD VP8 
libyuv BSD YUV scaling and conversion 
opus BSD Audio codec 
usrsctp BSD SCTP 
libsrtp BSD SRTP 
op-services-cpp BSD Open Peer "services" submodule (ICE, TURN, STUN) 
OpenSSL BSD DTLS [replaceable] 
curl MIT/X HTTP [optional, HTTP usage outside browser context] 
CryptoPP Public Domain Crypto random, Buffering, Hex/base64 transforms [replaceable] 
UDNS LGPL DNS lookup (e.g. TURN server) [replaceable] 
zsLib BSD Asynchronous interface delegate API, timer, sockets, logging, JSON 
boost BSL Smart/weak pointer, Time, Threading, numerical parsing [replaceable]
ORTC Lib - Chrome Sync Policy 
Chrome Code Syncing 
While ORTC Lib uses Chromium's WebRTC engine, a fork of the WebRTC 
engine was performed. Updates from Chromium are synchronized periodically 
(and delta changes from Chromium are re-applied). 
Pull requests are not performed back to Chromium simply due to the amount of 
manual labour that is required to perform such duties.
Chrome WebRTC Architecture
ORTC Lib - Architecture 
RTP 
Encoding 
Params 
DTLS Transport 
IdP 
SCTP 
DNS Cache Settings 
UDNS 
3rd party library 
STUN 
zsLib 
boost 
HTTP/ 
HTTPS 
curl 
replaceable 
ICE TURN 
DTMF 
Sender 
ICE 
Transport 
Logger 
RUDP Security 
RSA 
(public 
key) 
Diffie 
Hellman 
Message 
Layer 
Security 
CryptoPP 
ICE 
Transport 
Controller 
ICE 
Listener 
RTP 
Sender 
RTP 
Receiver 
OpenSSL WebRTC 
Track 
(capture/r 
ender) 
ortc-lib 
mandatory component 
optional 
Backgro 
unding 
(mobile) 
op-services-cpp 
usrsctp
ORTC Lib - WebRTC Architecture 
Video 
Engine 
Voice 
Engine 
Audio 
Coding 
webrtc library 
webrtc media engine 
Audio 
Processing 
Audio 
Device 
Audio 
Mixer 
Video 
Coding 
Video 
Processing 
Video 
Capture 
Video 
Renderer 
libsrtp ICU JsonCPP libc++ libjpeg 
libvpx libyuv 
openssl 
/nss 
opus 
sql-lite usrsctp 
DTLS 
Transport 
ICE 
Negotiation 
JSEP/SDP 
Engine 
Peer 
Connection 
Media 
Stream/ 
Track 
RTP/RTCP 
WebRTC media component 
WebRTC library component 
removed 
3rd party library 
moved 
isac

More Related Content

What's hot

IoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT InteroperabilityIoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT InteroperabilitySamsung Open Source Group
 
Naveen nimmu sdn future of networking
Naveen nimmu sdn   future of networkingNaveen nimmu sdn   future of networking
Naveen nimmu sdn future of networkingsuniltomar04
 
Video delivery in WebRTC – VP8, VP9 and beyond
Video delivery in WebRTC – VP8, VP9 and beyondVideo delivery in WebRTC – VP8, VP9 and beyond
Video delivery in WebRTC – VP8, VP9 and beyondIMTC
 
WebRTC Real time media P2P, Server, Infrastructure, and Platform
WebRTC Real time media P2P, Server, Infrastructure, and PlatformWebRTC Real time media P2P, Server, Infrastructure, and Platform
WebRTC Real time media P2P, Server, Infrastructure, and PlatformRyan Jespersen
 
Cisco's journey from Verbs to Libfabric
Cisco's journey from Verbs to LibfabricCisco's journey from Verbs to Libfabric
Cisco's journey from Verbs to LibfabricJeff Squyres
 
WebRTC business models beyond calls
WebRTC business models beyond callsWebRTC business models beyond calls
WebRTC business models beyond callsLuis Lopez
 
OpenFlow tutorial
OpenFlow tutorialOpenFlow tutorial
OpenFlow tutorialopenflow
 
Implementation Lessons using WebRTC in Asterisk
Implementation Lessons using WebRTC in AsteriskImplementation Lessons using WebRTC in Asterisk
Implementation Lessons using WebRTC in AsteriskMoises Silva
 
Introduction to WebRTC
Introduction to WebRTCIntroduction to WebRTC
Introduction to WebRTCPatrick Cason
 
WebRTC Check-in (from WebRTC Boston 6)
WebRTC Check-in (from WebRTC Boston 6)WebRTC Check-in (from WebRTC Boston 6)
WebRTC Check-in (from WebRTC Boston 6)Chad Hart
 
Python for IoT, A return of experience
Python for IoT, A return of experiencePython for IoT, A return of experience
Python for IoT, A return of experienceAlexandre Abadie
 
Inria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoT
Inria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoTInria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoT
Inria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoTStéphanie Roger
 
Onos overview meetup sdn paris - redux
Onos overview  meetup sdn paris - reduxOnos overview  meetup sdn paris - redux
Onos overview meetup sdn paris - reduxSDN_Paris
 
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
 
WbeRTC in IOT presented in KrankyGeek
WbeRTC in IOT presented in KrankyGeekWbeRTC in IOT presented in KrankyGeek
WbeRTC in IOT presented in KrankyGeekALTANAI BISHT
 

What's hot (20)

IoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT InteroperabilityIoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT Interoperability
 
Naveen nimmu sdn future of networking
Naveen nimmu sdn   future of networkingNaveen nimmu sdn   future of networking
Naveen nimmu sdn future of networking
 
Video delivery in WebRTC – VP8, VP9 and beyond
Video delivery in WebRTC – VP8, VP9 and beyondVideo delivery in WebRTC – VP8, VP9 and beyond
Video delivery in WebRTC – VP8, VP9 and beyond
 
Workshop oracle
Workshop oracleWorkshop oracle
Workshop oracle
 
WebRTC Real time media P2P, Server, Infrastructure, and Platform
WebRTC Real time media P2P, Server, Infrastructure, and PlatformWebRTC Real time media P2P, Server, Infrastructure, and Platform
WebRTC Real time media P2P, Server, Infrastructure, and Platform
 
Cisco's journey from Verbs to Libfabric
Cisco's journey from Verbs to LibfabricCisco's journey from Verbs to Libfabric
Cisco's journey from Verbs to Libfabric
 
WebRTC business models beyond calls
WebRTC business models beyond callsWebRTC business models beyond calls
WebRTC business models beyond calls
 
WebRTC Seminar Report
WebRTC  Seminar ReportWebRTC  Seminar Report
WebRTC Seminar Report
 
OpenFlow tutorial
OpenFlow tutorialOpenFlow tutorial
OpenFlow tutorial
 
Implementation Lessons using WebRTC in Asterisk
Implementation Lessons using WebRTC in AsteriskImplementation Lessons using WebRTC in Asterisk
Implementation Lessons using WebRTC in Asterisk
 
Introduction to WebRTC
Introduction to WebRTCIntroduction to WebRTC
Introduction to WebRTC
 
Rina sim workshop
Rina sim workshopRina sim workshop
Rina sim workshop
 
WebRTC Check-in (from WebRTC Boston 6)
WebRTC Check-in (from WebRTC Boston 6)WebRTC Check-in (from WebRTC Boston 6)
WebRTC Check-in (from WebRTC Boston 6)
 
Python for IoT, A return of experience
Python for IoT, A return of experiencePython for IoT, A return of experience
Python for IoT, A return of experience
 
Inria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoT
Inria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoTInria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoT
Inria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoT
 
DevCon 5 (December 2013) - WebRTC & WebSockets
DevCon 5 (December 2013) - WebRTC & WebSocketsDevCon 5 (December 2013) - WebRTC & WebSockets
DevCon 5 (December 2013) - WebRTC & WebSockets
 
Webrtc overview
Webrtc overviewWebrtc overview
Webrtc overview
 
Onos overview meetup sdn paris - redux
Onos overview  meetup sdn paris - reduxOnos overview  meetup sdn paris - redux
Onos overview meetup sdn paris - redux
 
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...
 
WbeRTC in IOT presented in KrankyGeek
WbeRTC in IOT presented in KrankyGeekWbeRTC in IOT presented in KrankyGeek
WbeRTC in IOT presented in KrankyGeek
 

Similar to ORTC Library - Introduction

Open daylight openstack_meetup_20140218
Open daylight openstack_meetup_20140218Open daylight openstack_meetup_20140218
Open daylight openstack_meetup_20140218phrobb
 
IPMI is dead, Long live Redfish
IPMI is dead, Long live RedfishIPMI is dead, Long live Redfish
IPMI is dead, Long live RedfishBruno Cornec
 
FOSDEM 2020: How can we make WebRTC Easier?
FOSDEM 2020: How can we make WebRTC Easier?FOSDEM 2020: How can we make WebRTC Easier?
FOSDEM 2020: How can we make WebRTC Easier?SeanDuBois3
 
ONOS SDN-IP: Tutorial and Use Case for SDX
ONOS SDN-IP: Tutorial and Use Case for SDXONOS SDN-IP: Tutorial and Use Case for SDX
ONOS SDN-IP: Tutorial and Use Case for SDXAPNIC
 
WebRTC Workshop - What is (and isn't WebRTC)
WebRTC Workshop - What is (and isn't WebRTC)WebRTC Workshop - What is (and isn't WebRTC)
WebRTC Workshop - What is (and isn't WebRTC)Oracle
 
Upperside Webinar - WebRTC Standards Update
Upperside Webinar - WebRTC Standards UpdateUpperside Webinar - WebRTC Standards Update
Upperside Webinar - WebRTC Standards UpdateUppersideConferences
 
WebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge Interoperability
WebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge InteroperabilityWebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge Interoperability
WebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge InteroperabilityAmir 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
 
Charlton Barreto - The OGF | Open Cloud Computing Interface
Charlton Barreto - The OGF | Open Cloud Computing InterfaceCharlton Barreto - The OGF | Open Cloud Computing Interface
Charlton Barreto - The OGF | Open Cloud Computing InterfaceCloudCamp Hamburg
 
Presentation of lpOD (ODF automation platform) at FOSDEM 2010
Presentation of lpOD (ODF automation platform) at FOSDEM 2010Presentation of lpOD (ODF automation platform) at FOSDEM 2010
Presentation of lpOD (ODF automation platform) at FOSDEM 2010Itaapy
 
Learn more about the tremendous value Open Data Plane brings to NFV
Learn more about the tremendous value Open Data Plane brings to NFVLearn more about the tremendous value Open Data Plane brings to NFV
Learn more about the tremendous value Open Data Plane brings to NFVGhodhbane Mohamed Amine
 
Webrtc - rich communication - quobis - victor pascual
Webrtc  - rich communication - quobis - victor pascualWebrtc  - rich communication - quobis - victor pascual
Webrtc - rich communication - quobis - victor pascualAlan Quayle
 
WebRTC Standards Update (October 2014)
WebRTC Standards Update (October 2014)WebRTC Standards Update (October 2014)
WebRTC Standards Update (October 2014)Victor Pascual Ávila
 
From leading IoT Protocols to Python Dashboarding_final
From leading IoT Protocols to Python Dashboarding_finalFrom leading IoT Protocols to Python Dashboarding_final
From leading IoT Protocols to Python Dashboarding_finalLukas Ott
 
Using Python for IoT: a return of experience, Alexandre Abadie
Using Python for IoT: a return of experience, Alexandre AbadieUsing Python for IoT: a return of experience, Alexandre Abadie
Using Python for IoT: a return of experience, Alexandre AbadiePôle Systematic Paris-Region
 
OGF standards for cloud computing
OGF standards for cloud computingOGF standards for cloud computing
OGF standards for cloud computingAlan Sill
 
Day: Open Development
Day: Open DevelopmentDay: Open Development
Day: Open DevelopmentDay Software
 
CoAPing with the Internet of Things
CoAPing with the Internet of ThingsCoAPing with the Internet of Things
CoAPing with the Internet of ThingsAnmol Sarma
 

Similar to ORTC Library - Introduction (20)

Open daylight openstack_meetup_20140218
Open daylight openstack_meetup_20140218Open daylight openstack_meetup_20140218
Open daylight openstack_meetup_20140218
 
IPMI is dead, Long live Redfish
IPMI is dead, Long live RedfishIPMI is dead, Long live Redfish
IPMI is dead, Long live Redfish
 
FOSDEM 2020: How can we make WebRTC Easier?
FOSDEM 2020: How can we make WebRTC Easier?FOSDEM 2020: How can we make WebRTC Easier?
FOSDEM 2020: How can we make WebRTC Easier?
 
ONOS SDN-IP: Tutorial and Use Case for SDX
ONOS SDN-IP: Tutorial and Use Case for SDXONOS SDN-IP: Tutorial and Use Case for SDX
ONOS SDN-IP: Tutorial and Use Case for SDX
 
WebRTC Workshop - What is (and isn't WebRTC)
WebRTC Workshop - What is (and isn't WebRTC)WebRTC Workshop - What is (and isn't WebRTC)
WebRTC Workshop - What is (and isn't WebRTC)
 
Upperside Webinar - WebRTC Standards Update
Upperside Webinar - WebRTC Standards UpdateUpperside Webinar - WebRTC Standards Update
Upperside Webinar - WebRTC Standards Update
 
WebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge Interoperability
WebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge InteroperabilityWebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge Interoperability
WebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge Interoperability
 
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...
 
Webrtc and tokbox
Webrtc and tokboxWebrtc and tokbox
Webrtc and tokbox
 
Charlton Barreto - The OGF | Open Cloud Computing Interface
Charlton Barreto - The OGF | Open Cloud Computing InterfaceCharlton Barreto - The OGF | Open Cloud Computing Interface
Charlton Barreto - The OGF | Open Cloud Computing Interface
 
Presentation of lpOD (ODF automation platform) at FOSDEM 2010
Presentation of lpOD (ODF automation platform) at FOSDEM 2010Presentation of lpOD (ODF automation platform) at FOSDEM 2010
Presentation of lpOD (ODF automation platform) at FOSDEM 2010
 
OOoCon Lpod
OOoCon LpodOOoCon Lpod
OOoCon Lpod
 
Learn more about the tremendous value Open Data Plane brings to NFV
Learn more about the tremendous value Open Data Plane brings to NFVLearn more about the tremendous value Open Data Plane brings to NFV
Learn more about the tremendous value Open Data Plane brings to NFV
 
Webrtc - rich communication - quobis - victor pascual
Webrtc  - rich communication - quobis - victor pascualWebrtc  - rich communication - quobis - victor pascual
Webrtc - rich communication - quobis - victor pascual
 
WebRTC Standards Update (October 2014)
WebRTC Standards Update (October 2014)WebRTC Standards Update (October 2014)
WebRTC Standards Update (October 2014)
 
From leading IoT Protocols to Python Dashboarding_final
From leading IoT Protocols to Python Dashboarding_finalFrom leading IoT Protocols to Python Dashboarding_final
From leading IoT Protocols to Python Dashboarding_final
 
Using Python for IoT: a return of experience, Alexandre Abadie
Using Python for IoT: a return of experience, Alexandre AbadieUsing Python for IoT: a return of experience, Alexandre Abadie
Using Python for IoT: a return of experience, Alexandre Abadie
 
OGF standards for cloud computing
OGF standards for cloud computingOGF standards for cloud computing
OGF standards for cloud computing
 
Day: Open Development
Day: Open DevelopmentDay: Open Development
Day: Open Development
 
CoAPing with the Internet of Things
CoAPing with the Internet of ThingsCoAPing with the Internet of Things
CoAPing with the Internet of Things
 

Recently uploaded

Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 

Recently uploaded (20)

Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 

ORTC Library - Introduction

  • 1. ORTC Lib Real-time Communication Library Introduction | August 2014
  • 2. ORTC Lib - Introduction What is ORTC Lib? A C++ library and mobile wrappers based on ORTC (Object Real-time Communication) API Public Draft. API Public Draft: http://ortc.org (upper right hand side) Codebase: https://github.com/openpeer/ortc-lib 1
  • 3. ORTC - Other related projects Other ORTC projects dependent on ORTC Lib: Open Peer: P2P communications project http://openpeer.org ORTC Node: Node.js implementation (will require ORTC Lib server hardening) https://github.com/openpeer/ortc-node Other related proposed projects: JavaScript Shims ● Upshim (WebRTC 1.0 ORTC) ● Downshim (ORTC WebRTC 1.0)
  • 4. ORTC Project Maintainer Who are the maintainers? Hookflash Inc. is the primary sponsor of the ORTC Open Source projects. This Canadian company, made up industry veterans, offers a PaaS for Real-time Communications. Hookflash is also the creator and custodian of Open Peer, an Open Source project for P2P communications. More on Hookflash: http://hookflash.com
  • 5. ORTC Lib - Introduction What can it be used for? Enabling real-time communications (Voice, Video, Data Channel) for mobile and web via C++ & JavaScript libraries. The JS libs are out of scope for this project. What are the goals? The primary goal is to build an open source ORTC client reference implementation that will support all of the ORTC API objects, methods & attributes, using WebRTC open source components for maximum interoperability. Platforms: Under development: C++, iOS, Android Under consideration: Mac, Windows, Windows Phone
  • 6. ORTC Lib - Value Statement Why should I use ORTC Lib? The libs have been built to the ORTC spec as it has evolved. This is the open source ORTC C++ library that is maintained by the specification founders, editors and authors.
  • 7. ORTC Lib - Chrome Dependencies A word about Chrome Dependencies The maintainers wanted to provide an implementation of ORTC providing maximum flexibility for developers. Signaling: As signaling on the wire is not defined as part of WebRTC 1.0, the the maintainers removed all “on the wire” signalling from the library, (e.g. SDP offer/answer and Libjingle). ORTC is a WebRTC wire compatible "do as I say" API, that allows the developer to provide their own signalling in Javascript. As a result, a built-in SDP parser is not needed and the PeerConnection ICE implementation was replaced with a custom ICE implementation.
  • 8. ORTC Lib - Chrome Compatibility Is ORTC Lib compatible with Chrome? Yes, it is interoperable with Chrome “on the wire” protocols. ORTC Lib uses Chrome's WebRTC real-time communication engine internally, minus the library formerly known as “Libjingle” (XMPP/Peer Connection, ICE and TURN). Thus RTP, SRTP, and codecs are all compatible, as they are common to Chrome.
  • 9. ORTC Lib - License What is the license model? ORTC Lib is utilizes the FreeBSD open source model (see slide 21 for details).
  • 10. ORTC Lib - Coverage Is it compatible with the ORTC Public Draft? Not yet. The public draft specification was completed and released on Aug. 20, 2014. As a result, the codebase has not yet achieved parity with the ORTC API Public Draft.
  • 11. ORTC Lib - Work Completed ● Removed Chrome dependencies: ○ WebRTC renderer ○ JSEP/SDP ○ PeerConnection ○ Libjingle ● Codecs ○ VP8 Support (Non SVC) ○ ISAC Support ○ Opus Support ● Security ○ OpenSSL ● NAT Traversal ○ Custom ICE/STUN/TURN implementation (RFC Standard) ○ IPv6 ○ Extended support for Trickle ICE ○ Extended support for Continuous Gathering Mode ○ Multiple Network Interfaces (multi-homed) ○ ICE Consent Freshness ● DNS ○ IDN (Internationalized Domain Names) ○ SRV ○ A / AAAA ● Mobile ○ Reduced energy consumption ○ Application Backgrounding ○ Reduced footprint ● Assembly optimizations ○ YUV conversion ○ ...and too much more to list here ● Media ○ RTP / RTCP Multiplexing ○ A/V Multiplexing ○ Enhanced audio routing ○ Video rotation control ○ Facial recognition (iOS) ● Logging ○ Remote ○ Local ● Bug fixes
  • 12. ORTC Lib - Outstanding Work Items What’s left to do? ● General “tidying up” of the codebase. ● RTCRTPSender / Receiver (+ support for "encoding params") ● RTCDtlsTransport ○ DTLS demux ○ DTLS/SRTP key management ● Data Channel (e.g. SCTP/DTLS/UDP, proprietary RTP data channel, etc.) ● ICE ○ Wrappers for ICE Listener/ICE Transport ○ Support for "continuous" gather vs "complete" mode ○ ICE Transport controller (bandwidth and ICE freezing) ○ Custom gathering options (for mobility) ● Media ○ MediaStreamTrack ○ Advanced VP8 - temporal scalability and simulcast ○ H.264 support - RFC 6184 RTP payload transport ● DTMF Sender ● Stats ● IdP
  • 13. ORTC Lib - H.264 Work Plan The goal is to support the RFC 6184 RTP payload format based on the existing Chromium patch and Cisco’s Open H.264 encoder/decoder. However, the Open H.264 source will NOT be pulled into the codebase (though the build process will support compiling it, if desired). Initial goal is to support Constrained Baseline Profile, and to interoperate with with Mozilla Firefox. H.264/SVC (e.g. temporal scalability) and the RFC 6190 RTP payload format will not be supported initially.
  • 14. ORTC Lib - Extending Should I contribute or fork? We encourage contributions & extensions to this library versus forking. By potentially creating multiple incompatible implementations of the ORTC API, forking could cause confusion among developers as well as in the market, adversely impacting the viability of the ORTC initiative. Once forked, recreating a unified code base will be time consuming and difficult.
  • 15. ORTC Lib - Standards Compliance How will standards compliance be handled? The implementers of ORTC Lib intend to produce an implementation faithful to the WebRTC protocol specifications as well as the ORTC API specification. In order to keep the ORTC toolset close to the intent of the specifications, issues discovered will be brought back to the IETF RTCWEB WG and ORTC CG for discussion and resolution. The ORTC API is designed to support all features of the WebRTC 1.0 API as well as to be backward-compatible with the WebRTC 1.0 API via “shims”.
  • 16. ORTC Lib - Contributing How do I contribute? Want to help? Excellent! Send an email to contribute@ortc.org with your ideas and we will respond with next steps.
  • 17. ORTC Lib - Sponsoring How do I sponsor work? If you would like to contract the maintainers to do work that would be contributed back to the open source project under BSD license, please email your project ideas to sponsor@ortc.org
  • 18. ORTC Lib - Thanks This Open Source work would not have been possible without valuable contributions from the community. The maintainers would like to thank those who contributed for their effort. Google Inc. - WebRTC contributions Microsoft Open Tech Inc. & Microsoft Inc. - Demo and Node.js contributions
  • 19. ORTC Lib - Links Codebase: https://github.com/openpeer/ortc-lib Dev Forum: https://groups.google.com/a/ortc.org/forum/#!forum/discuss-ortc W3C CG: http://www.w3.org/community/ortc/ Current API Specification: http://ortc.org/ Contribute: contribute@ortc.org Sponsor: sponsor@ortc.org
  • 21. ORTC Lib - License Details License: Copyright (c) 2014, Hookflash Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing official policies, either expressed or implied, of the FreeBSD Project.
  • 22. ORTC Lib - 3rd Party Libraries Library License Usage WebRTC BSD RTP, Codecs libvpx BSD VP8 libyuv BSD YUV scaling and conversion opus BSD Audio codec usrsctp BSD SCTP libsrtp BSD SRTP op-services-cpp BSD Open Peer "services" submodule (ICE, TURN, STUN) OpenSSL BSD DTLS [replaceable] curl MIT/X HTTP [optional, HTTP usage outside browser context] CryptoPP Public Domain Crypto random, Buffering, Hex/base64 transforms [replaceable] UDNS LGPL DNS lookup (e.g. TURN server) [replaceable] zsLib BSD Asynchronous interface delegate API, timer, sockets, logging, JSON boost BSL Smart/weak pointer, Time, Threading, numerical parsing [replaceable]
  • 23. ORTC Lib - Chrome Sync Policy Chrome Code Syncing While ORTC Lib uses Chromium's WebRTC engine, a fork of the WebRTC engine was performed. Updates from Chromium are synchronized periodically (and delta changes from Chromium are re-applied). Pull requests are not performed back to Chromium simply due to the amount of manual labour that is required to perform such duties.
  • 25. ORTC Lib - Architecture RTP Encoding Params DTLS Transport IdP SCTP DNS Cache Settings UDNS 3rd party library STUN zsLib boost HTTP/ HTTPS curl replaceable ICE TURN DTMF Sender ICE Transport Logger RUDP Security RSA (public key) Diffie Hellman Message Layer Security CryptoPP ICE Transport Controller ICE Listener RTP Sender RTP Receiver OpenSSL WebRTC Track (capture/r ender) ortc-lib mandatory component optional Backgro unding (mobile) op-services-cpp usrsctp
  • 26. ORTC Lib - WebRTC Architecture Video Engine Voice Engine Audio Coding webrtc library webrtc media engine Audio Processing Audio Device Audio Mixer Video Coding Video Processing Video Capture Video Renderer libsrtp ICU JsonCPP libc++ libjpeg libvpx libyuv openssl /nss opus sql-lite usrsctp DTLS Transport ICE Negotiation JSEP/SDP Engine Peer Connection Media Stream/ Track RTP/RTCP WebRTC media component WebRTC library component removed 3rd party library moved isac