xref: /aosp_15_r20/external/webrtc/docs/faq.md (revision d9f758449e529ab9291ac668be2861e7a55c2422)
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