1*d9f75844SAndroid Build Coastguard Worker# FAQ 2*d9f75844SAndroid Build Coastguard Worker 3*d9f75844SAndroid Build Coastguard Worker### What is WebRTC? 4*d9f75844SAndroid Build Coastguard Worker 5*d9f75844SAndroid Build Coastguard WorkerWebRTC is an open framework for the web that enables Real Time Communications 6*d9f75844SAndroid Build Coastguard Workerin the browser. It includes the fundamental building blocks for high-quality 7*d9f75844SAndroid Build Coastguard Workercommunications on the web, such as network, audio and video components used in 8*d9f75844SAndroid Build Coastguard Workervoice and video chat applications. 9*d9f75844SAndroid Build Coastguard Worker 10*d9f75844SAndroid Build Coastguard WorkerThese components, when implemented in a browser, can be accessed through a 11*d9f75844SAndroid Build Coastguard WorkerJavaScript API, enabling developers to easily implement their own RTC web app. 12*d9f75844SAndroid Build Coastguard Worker 13*d9f75844SAndroid Build Coastguard WorkerThe WebRTC effort is being standardized on an API level at the W3C and at the 14*d9f75844SAndroid Build Coastguard Workerprotocol level at the IETF. 15*d9f75844SAndroid Build Coastguard Worker 16*d9f75844SAndroid Build Coastguard Worker 17*d9f75844SAndroid Build Coastguard Worker### Why should I use WebRTC? 18*d9f75844SAndroid Build Coastguard Worker 19*d9f75844SAndroid Build Coastguard WorkerWe think you'll want to build your next video-chat style application using 20*d9f75844SAndroid Build Coastguard WorkerWebRTC. Here's why: 21*d9f75844SAndroid Build Coastguard Worker 22*d9f75844SAndroid Build Coastguard Worker * A key factor in the success of the web is that its core technologies -- 23*d9f75844SAndroid Build Coastguard Worker such as HTML, HTTP, and TCP/IP -- are open and freely implementable. 24*d9f75844SAndroid Build Coastguard Worker Currently, there is no free, high-quality, complete solution available 25*d9f75844SAndroid Build Coastguard Worker that enables communication in the browser. WebRTC enables this. 26*d9f75844SAndroid Build Coastguard Worker 27*d9f75844SAndroid Build Coastguard Worker * Already integrated with best-of-breed voice and video engines that have 28*d9f75844SAndroid Build Coastguard Worker been deployed on millions of endpoints over the last 8+ years. Google does 29*d9f75844SAndroid Build Coastguard Worker not charge royalties for WebRTC. 30*d9f75844SAndroid Build Coastguard Worker 31*d9f75844SAndroid Build Coastguard Worker * Includes and abstracts key NAT and firewall traversal technology, using 32*d9f75844SAndroid Build Coastguard Worker STUN, ICE, TURN, RTP-over-TCP and support for proxies. 33*d9f75844SAndroid Build Coastguard Worker 34*d9f75844SAndroid Build Coastguard Worker * Builds on the strength of the web browser: WebRTC abstracts signaling by 35*d9f75844SAndroid Build Coastguard Worker offering a signaling state machine that maps directly to `PeerConnection`. 36*d9f75844SAndroid Build Coastguard Worker Web developers can therefore choose the protocol of choice for their usage 37*d9f75844SAndroid Build Coastguard Worker scenario (for example, but not limited to, SIP, XMPP/Jingle, et al.). 38*d9f75844SAndroid Build Coastguard Worker 39*d9f75844SAndroid Build Coastguard Worker 40*d9f75844SAndroid Build Coastguard Worker### What is the Opus audio codec? 41*d9f75844SAndroid Build Coastguard Worker 42*d9f75844SAndroid Build Coastguard Worker[Opus][opus-link] is a royalty-free audio codec defined by IETF 43*d9f75844SAndroid Build Coastguard WorkerRFC 6176. It supports constant and variable bitrate encoding from 6 kbit/s to 44*d9f75844SAndroid Build Coastguard Worker510 kbit/s, frame sizes from 2.5 ms to 60 ms, and various sampling rates from 45*d9f75844SAndroid Build Coastguard Worker8 kHz (with 4 kHz bandwidth) to 48 kHz (with 20 kHz bandwidth, where the 46*d9f75844SAndroid Build Coastguard Workerentire hearing range of the human auditory system can be reproduced). 47*d9f75844SAndroid Build Coastguard Worker 48*d9f75844SAndroid Build Coastguard Worker[opus-link]: http://opus-codec.org/ 49*d9f75844SAndroid Build Coastguard Worker 50*d9f75844SAndroid Build Coastguard Worker### What is the iSAC audio codec? 51*d9f75844SAndroid Build Coastguard Worker 52*d9f75844SAndroid Build Coastguard WorkeriSAC is a robust, bandwidth-adaptive, wideband and super-wideband voice codec 53*d9f75844SAndroid Build Coastguard Workerdeveloped by Global IP Solutions, and is used in many Voice over IP (VoIP) and 54*d9f75844SAndroid Build Coastguard Workerstreaming audio applications. iSAC is used by industry leaders in hundreds of 55*d9f75844SAndroid Build Coastguard Workermillions of VoIP endpoints. This codec is included as part of the WebRTC 56*d9f75844SAndroid Build Coastguard Workerproject. 57*d9f75844SAndroid Build Coastguard Worker 58*d9f75844SAndroid Build Coastguard Worker 59*d9f75844SAndroid Build Coastguard Worker### What is the iLBC audio codec? 60*d9f75844SAndroid Build Coastguard Worker 61*d9f75844SAndroid Build Coastguard WorkeriLBC is a free narrowband voice codec that was developed by Global IP 62*d9f75844SAndroid Build Coastguard WorkerSolutions, and is used in many Voice over IP (VoIP) and streaming audio 63*d9f75844SAndroid Build Coastguard Workerapplications. In 2004, the final IETF RFC versions of the iLBC codec 64*d9f75844SAndroid Build Coastguard Workerspecification and the iLBC RTP Profile draft became available. This codec is 65*d9f75844SAndroid Build Coastguard Workerincluded as part of the WebRTC project. 66*d9f75844SAndroid Build Coastguard Worker 67*d9f75844SAndroid Build Coastguard Worker 68*d9f75844SAndroid Build Coastguard Worker### What is the VP8 video codec? 69*d9f75844SAndroid Build Coastguard Worker 70*d9f75844SAndroid Build Coastguard WorkerVP8 is a highly-efficient video compression technology developed by the WebM Project. It is the video codec included with WebRTC. 71*d9f75844SAndroid Build Coastguard Worker 72*d9f75844SAndroid Build Coastguard Worker### What is the VP9 video codec? 73*d9f75844SAndroid Build Coastguard Worker 74*d9f75844SAndroid Build Coastguard WorkerSimilar to VP8, VP9 is also from the WebM Project. Its a next-generation open video codec. From Chrome 48 on desktop and Android, VP9 will be an optional video codec for video calls. More details in [Google Developers][vp9-link]. 75*d9f75844SAndroid Build Coastguard Worker 76*d9f75844SAndroid Build Coastguard Worker[vp9-link]: https://developers.google.com/web/updates/2016/01/vp9-webrtc/ 77*d9f75844SAndroid Build Coastguard Worker 78*d9f75844SAndroid Build Coastguard Worker### What other components are included in the WebRTC package? 79*d9f75844SAndroid Build Coastguard Worker 80*d9f75844SAndroid Build Coastguard Worker#### Audio 81*d9f75844SAndroid Build Coastguard Worker 82*d9f75844SAndroid Build Coastguard WorkerWebRTC offers a complete stack for voice communications. It includes not only 83*d9f75844SAndroid Build Coastguard Workerthe necessary codecs, but other components necessary to great user 84*d9f75844SAndroid Build Coastguard Workerexperiences. This includes software-based acoustic echo cancellation (AEC), 85*d9f75844SAndroid Build Coastguard Workerautomatic gain control (AGC), noise reduction, noise suppression, and 86*d9f75844SAndroid Build Coastguard Workerhardware access and control across multiple platforms. 87*d9f75844SAndroid Build Coastguard Worker 88*d9f75844SAndroid Build Coastguard Worker 89*d9f75844SAndroid Build Coastguard Worker#### Video 90*d9f75844SAndroid Build Coastguard Worker 91*d9f75844SAndroid Build Coastguard WorkerThe WebRTC project builds on the VP8 codec, introduced in 2010 as part of the 92*d9f75844SAndroid Build Coastguard Worker[WebM Project][webm-link]. It includes components to conceal 93*d9f75844SAndroid Build Coastguard Workerpacket loss and clean up noisy images, as well as capture and playback 94*d9f75844SAndroid Build Coastguard Workercapabilities across multiple platforms. 95*d9f75844SAndroid Build Coastguard Worker 96*d9f75844SAndroid Build Coastguard Worker[webm-link]: http://www.webmproject.org/ 97*d9f75844SAndroid Build Coastguard Worker 98*d9f75844SAndroid Build Coastguard Worker#### Network 99*d9f75844SAndroid Build Coastguard Worker 100*d9f75844SAndroid Build Coastguard WorkerDynamic jitter buffers and error concealment techniques are included for audio 101*d9f75844SAndroid Build Coastguard Workerand video, which help mitigate the effects of packet loss and unreliable 102*d9f75844SAndroid Build Coastguard Workernetworks. Also included are components for establishing a peer-to-peer 103*d9f75844SAndroid Build Coastguard Workerconnection using ICE / STUN / Turn / RTP-over-TCP and support for proxies. 104*d9f75844SAndroid Build Coastguard Worker 105*d9f75844SAndroid Build Coastguard Worker 106*d9f75844SAndroid Build Coastguard Worker### How do I access the WebRTC code? 107*d9f75844SAndroid Build Coastguard Worker 108*d9f75844SAndroid Build Coastguard WorkerGo to [https://webrtc.googlesource.com/src][webrtc-repo-link]. 109*d9f75844SAndroid Build Coastguard Worker 110*d9f75844SAndroid Build Coastguard Worker[webrtc-repo-link]: https://webrtc.googlesource.com/src 111*d9f75844SAndroid Build Coastguard Worker 112*d9f75844SAndroid Build Coastguard Worker 113*d9f75844SAndroid Build Coastguard Worker### How can I test the quality of WebRTC components? 114*d9f75844SAndroid Build Coastguard Worker 115*d9f75844SAndroid Build Coastguard WorkerWe have put sample applications [here][examples-link]. 116*d9f75844SAndroid Build Coastguard Worker 117*d9f75844SAndroid Build Coastguard Worker[examples-link]: https://webrtc.googlesource.com/src/+/main/docs/native-code/development/index.md#example-applications 118*d9f75844SAndroid Build Coastguard Worker 119*d9f75844SAndroid Build Coastguard Worker 120*d9f75844SAndroid Build Coastguard Worker### Are WebRTC components subject to change? 121*d9f75844SAndroid Build Coastguard Worker 122*d9f75844SAndroid Build Coastguard WorkerWebRTC is based on a API that is still under development through efforts at 123*d9f75844SAndroid Build Coastguard WorkerWHATWG, W3C and IETF. We hope to get to a stable API once a few browser 124*d9f75844SAndroid Build Coastguard Workervendors have implementations ready for testing. Once the API is stable, our 125*d9f75844SAndroid Build Coastguard Workergoal will be to offer backwards compatibility and interoperability. The WebRTC 126*d9f75844SAndroid Build Coastguard WorkerAPI layer will be our main focus for stability and interoperability. The 127*d9f75844SAndroid Build Coastguard Workercomponents under it may be modified to improve quality, performance and 128*d9f75844SAndroid Build Coastguard Workerfeature set. 129*d9f75844SAndroid Build Coastguard Worker 130*d9f75844SAndroid Build Coastguard Worker 131*d9f75844SAndroid Build Coastguard Worker### WebRTC components are open-source. How do I get the source and contribute code? 132*d9f75844SAndroid Build Coastguard Worker 133*d9f75844SAndroid Build Coastguard WorkerPlease see [Getting Started][getting-started-link] and 134*d9f75844SAndroid Build Coastguard Worker[Contributing bug fixes][contributing-link] for more information. 135*d9f75844SAndroid Build Coastguard Worker 136*d9f75844SAndroid Build Coastguard Worker[getting-started-link]: https://webrtc.googlesource.com/src/+/main/docs/native-code/development/index.md 137*d9f75844SAndroid Build Coastguard Worker[contributing-link]: https://webrtc.org/support/contributing 138*d9f75844SAndroid Build Coastguard Worker 139*d9f75844SAndroid Build Coastguard Worker 140*d9f75844SAndroid Build Coastguard Worker### To be a Contributor, do I need to sign any agreements? 141*d9f75844SAndroid Build Coastguard Worker 142*d9f75844SAndroid Build Coastguard WorkerYes, each Contributor must sign and return the 143*d9f75844SAndroid Build Coastguard Worker[Contributor License Agreement][cla-link] 144*d9f75844SAndroid Build Coastguard Worker 145*d9f75844SAndroid Build Coastguard Worker[cla-link]: https://developers.google.com/open-source/cla/individual?hl=en 146*d9f75844SAndroid Build Coastguard Worker 147*d9f75844SAndroid Build Coastguard Worker### How can I become a WebRTC committer? 148*d9f75844SAndroid Build Coastguard Worker 149*d9f75844SAndroid Build Coastguard WorkerThe process of becoming a committer is documented in a 150*d9f75844SAndroid Build Coastguard Worker[separate page][become-a-committer]. 151*d9f75844SAndroid Build Coastguard Worker 152*d9f75844SAndroid Build Coastguard Worker[become-a-committer]: https://webrtc.googlesource.com/src/+/refs/heads/main/g3doc/become_a_committer.md 153*d9f75844SAndroid Build Coastguard Worker 154*d9f75844SAndroid Build Coastguard Worker### Do I have to be a programmer to use WebRTC? 155*d9f75844SAndroid Build Coastguard Worker 156*d9f75844SAndroid Build Coastguard WorkerYes, to build WebRTC support into a software application or contribute 157*d9f75844SAndroid Build Coastguard Workerimprovements, programming skills are required. However, usage of the 158*d9f75844SAndroid Build Coastguard WorkerJavaScript APIs that call WebRTC in the browsers will only require typical web 159*d9f75844SAndroid Build Coastguard Workerdevelopment skills. 160*d9f75844SAndroid Build Coastguard Worker 161*d9f75844SAndroid Build Coastguard Worker 162*d9f75844SAndroid Build Coastguard Worker### Is the WebRTC project owned by Google or is it independent? 163*d9f75844SAndroid Build Coastguard Worker 164*d9f75844SAndroid Build Coastguard WorkerWebRTC is an open-source project supported by Google, Mozilla and Opera. The 165*d9f75844SAndroid Build Coastguard WorkerAPI and underlying protocols are being developed jointly at the W3C and IETF. 166*d9f75844SAndroid Build Coastguard Worker 167*d9f75844SAndroid Build Coastguard Worker 168*d9f75844SAndroid Build Coastguard Worker### Are the WebRTC components from Google's acquisition of Global IP Solutions? 169*d9f75844SAndroid Build Coastguard Worker 170*d9f75844SAndroid Build Coastguard WorkerYes. Some components, such as VoiceEngine, VideoEngine, NetEQ, AEC, et al. all 171*d9f75844SAndroid Build Coastguard Workerstem from the GIPS acquisition. 172*d9f75844SAndroid Build Coastguard Worker 173*d9f75844SAndroid Build Coastguard Worker 174*d9f75844SAndroid Build Coastguard Worker### What codecs are supported in WebRTC? 175*d9f75844SAndroid Build Coastguard Worker 176*d9f75844SAndroid Build Coastguard WorkerThe currently supported voice codecs are G.711, G.722, iLBC, and iSAC, and VP8 177*d9f75844SAndroid Build Coastguard Workeris the supported video codec. The list of supported codecs may change in the 178*d9f75844SAndroid Build Coastguard Workerfuture. 179*d9f75844SAndroid Build Coastguard Worker 180*d9f75844SAndroid Build Coastguard Worker 181*d9f75844SAndroid Build Coastguard Worker### Please explain how WebRTC is free of charge? 182*d9f75844SAndroid Build Coastguard Worker 183*d9f75844SAndroid Build Coastguard WorkerSome software frameworks, voice and video codecs require end-users, 184*d9f75844SAndroid Build Coastguard Workerdistributors and manufacturers to pay patent royalties to use the intellectual 185*d9f75844SAndroid Build Coastguard Workerproperty within the software technology and/or codec. Google is not charging 186*d9f75844SAndroid Build Coastguard Workerroyalties for WebRTC and its components including the codecs it supports (VP8 187*d9f75844SAndroid Build Coastguard Workerfor video and iSAC and iLBC for audio). For more information, see the [License 188*d9f75844SAndroid Build Coastguard Workerpage][license-link]. 189*d9f75844SAndroid Build Coastguard Worker 190*d9f75844SAndroid Build Coastguard Worker[license-link]: https://webrtc.googlesource.com/src/+/main/LICENSE 191*d9f75844SAndroid Build Coastguard Worker 192*d9f75844SAndroid Build Coastguard Worker 193*d9f75844SAndroid Build Coastguard Worker### What does this license let me do? 194*d9f75844SAndroid Build Coastguard Worker 195*d9f75844SAndroid Build Coastguard WorkerLike most BSD licenses, this license allows you to use the WebRTC code with a 196*d9f75844SAndroid Build Coastguard Workerminimum of restrictions on your use. You can use the code in proprietary 197*d9f75844SAndroid Build Coastguard Workersoftware as well as open source software. 198*d9f75844SAndroid Build Coastguard Worker 199*d9f75844SAndroid Build Coastguard Worker 200*d9f75844SAndroid Build Coastguard Worker### Do I need to release the source if I make changes? 201*d9f75844SAndroid Build Coastguard Worker 202*d9f75844SAndroid Build Coastguard WorkerNo, the license does not require you to release source if you make changes. 203*d9f75844SAndroid Build Coastguard WorkerHowever, we would love to see any changes you make and possibly incorporate 204*d9f75844SAndroid Build Coastguard Workerthem, so if you want to participate please visit the 205*d9f75844SAndroid Build Coastguard Worker[code review page][code-review-link] and submit some patches. 206*d9f75844SAndroid Build Coastguard Worker 207*d9f75844SAndroid Build Coastguard Worker[code-review-link]: https://webrtc-review.googlesource.com/ 208*d9f75844SAndroid Build Coastguard Worker 209*d9f75844SAndroid Build Coastguard Worker 210*d9f75844SAndroid Build Coastguard Worker### Why is there a separate patent grant? 211*d9f75844SAndroid Build Coastguard Worker 212*d9f75844SAndroid Build Coastguard WorkerIn order to decouple patents from copyright, thus preserving the pure BSD 213*d9f75844SAndroid Build Coastguard Workernature of the copyright license, the license and the patent grant are 214*d9f75844SAndroid Build Coastguard Workerseparate. This means we are using a standard (BSD) open source copyright 215*d9f75844SAndroid Build Coastguard Workerlicense, and the patent grant can exist on its own. This makes WebRTC 216*d9f75844SAndroid Build Coastguard Workercompatible with all major license scenarios. 217*d9f75844SAndroid Build Coastguard Worker 218*d9f75844SAndroid Build Coastguard Worker 219*d9f75844SAndroid Build Coastguard Worker### What if someone gets the code from Google and gives it to me without changes. Do I have a patent grant from Google? 220*d9f75844SAndroid Build Coastguard Worker 221*d9f75844SAndroid Build Coastguard WorkerYes, you still have the right to redistribute and you still have a patent 222*d9f75844SAndroid Build Coastguard Workerlicense for Google's patents that cover the code that Google released. 223*d9f75844SAndroid Build Coastguard Worker 224*d9f75844SAndroid Build Coastguard Worker 225*d9f75844SAndroid Build Coastguard Worker### What if someone makes a change to the code and gives it to me. Do I have a patent license from Google for that change? 226*d9f75844SAndroid Build Coastguard Worker 227*d9f75844SAndroid Build Coastguard WorkerYou still have the right to redistribute but no patent license for the changes 228*d9f75844SAndroid Build Coastguard Worker(if there are any patents covering it). We can't give patent licenses for 229*d9f75844SAndroid Build Coastguard Workerchanges people make after we distribute the code, as we have no way to predict 230*d9f75844SAndroid Build Coastguard Workerwhat those changes will be. Other common licenses take the same approach, 231*d9f75844SAndroid Build Coastguard Workerincluding the Apache license. 232*d9f75844SAndroid Build Coastguard Worker 233*d9f75844SAndroid Build Coastguard Worker 234*d9f75844SAndroid Build Coastguard Worker### What if Google receives or buys a patent that covers the code I receive sometime after I receive the code. Do I have a patent grant for that patent? 235*d9f75844SAndroid Build Coastguard Worker 236*d9f75844SAndroid Build Coastguard WorkerYes, you still have the right to redistribute and you still have a patent 237*d9f75844SAndroid Build Coastguard Workerlicense for Google's patents that cover the code that Google released. 238*d9f75844SAndroid Build Coastguard Worker 239*d9f75844SAndroid Build Coastguard Worker 240*d9f75844SAndroid Build Coastguard Worker### What if my competitor uses the code and brings patent litigation against me for something unrelated to the code. Do they still have a patent license? 241*d9f75844SAndroid Build Coastguard Worker 242*d9f75844SAndroid Build Coastguard WorkerYes, they still have the right to redistribute and they still have a patent 243*d9f75844SAndroid Build Coastguard Workerlicense for Google's patents that cover the code that Google released. 244