FAQ

Contents

  1. 1 What is WebRTC?
  2. 2 Why should I use WebRTC?
  3. 3 What is the Opus audio codec?
  4. 4 What is the iSAC audio codec?
  5. 5 What is the iLBC audio codec?
  6. 6 What is the VP8 video codec?
  7. 7 What other components are included in the WebRTC package?
    1. 7.1 Audio
    2. 7.2 Video
    3. 7.3 Network
  8. 8 How do I access the WebRTC code?
  9. 9 How can I test the quality of WebRTC components?
  10. 10 Are WebRTC components subject to change?
  11. 11 How can I implement my own renderer or add my own hooks in the WebRTC Platform?
  12. 12 WebRTC components are open-source. How do I get the source and contribute code?
  13. 13 To be a Contributor, do I need to sign any agreements?
  14. 14 Do I have to be a programmer to use WebRTC?
  15. 15 Is the WebRTC project owned by Google or is it independent?
  16. 16 Are the WebRTC components from Google’s acquisition of Global IP Solutions?
  17. 17 What codecs are supported in WebRTC?
  18. 18 Please explain how WebRTC is free of charge?
  19. 19 What does this license let me do?
  20. 20 Do I need to release the source if I make changes?
  21. 21 Why is there a separate patent grant?
  22. 22 What if someone gets the code from Google and gives it to me without changes. Do I have a patent grant from Google?
  23. 23 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?
  24. 24 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?
  25. 25 What if my competitor uses the code and brings patent litigation against me for something unrelated to the code. Does he or she still have a patent license?

What is WebRTC?

WebRTC is an open framework for the web that enables Real Time Communications in the browser. It includes the fundamental building blocks for high quality communications on the web such as network, audio and video components used in voice and video chat applications.

These components, when implemented in a browser, can be accessed through a Javascript API, enabling developers to easily implement their own RTC web app. 

The WebRTC effort is being standardized on a API level at the W3C and at the protocol level at the IETF.

Why should I use WebRTC?

We think you'll want to build your next video chat style application using WebRTC. Here's why:
  • A key factor in the success of the Internet is that its core technologies such as HTML, HTTP, and TCP/IP are open and freely implementable. Currently, there is no free, high quality, complete solution available that enables communication in the browser.  WebRTC is a package that enables this.

  • Already integrated with best-of-breed voice and video engines that have been deployed on millions of end points over the last 8+ years. Google is not charging royalties for this technology.

  • Includes and abstracts key NAT and firewall traversal technology using STUN, ICE, TURN, RTP-over-TCP and support for proxies.

  • Builds on the strength of the web browser: WebRTC abstracts signaling by offering a signaling state machine that maps directly to PeerConnection. Web developers can therefore choose the protocol of choice for their usage scenario (for example, but not limited to: SIP, XMPP/Jingle, etc...).

What is the Opus audio codec?

Opus is a royalty free codec defined by IETF RFC 6176.  It supports constant and variable bitrate encoding from 6 kbit/s to 510 kbit/s, frame sizes from 2.5 ms to 60 ms, and various sampling rates from 8 kHz (with 4 kHz bandwidth) to 48 kHz (with 20 kHz bandwidth, where the entire hearing range of the human auditory system can be reproduced). 

What is the iSAC audio codec?

iSAC is a robust, bandwidth adaptive, wideband and super-wideband voice codec developed by Global IP Solutions used in many Voice over IP (VoIP) and streaming audio applications. iSAC is used by industry leaders in hundreds of millions of VoIP endpoints. This codec is included as part of the WebRTC project.

What is the iLBC audio codec?

iLBC is a free narrowband voice codec that was developed by Global IP Solutions used in many Voice over IP (VoIP) and streaming audio applications. In 2004, the final IETF RFC versions of the iLBC codec spec and the iLBC RTP Profile draft became available. This codec is included as part of the WebRTC project.

What is the VP8 video codec?

VP8 is a highly efficient video compression technology that was developed by On2 Technologies. Google acquired On2 in February 2010 and made it available as part of the WebM Project. It is the video codec included the WebRTC project. 

What other components are included in the WebRTC package?

Audio

The WebRTC project offers a complete stack for voice communications. It includes not only the necessary codecs, but other components crucial for a great experience. This includes software based acoustic echo cancellation (AEC), automatic gain control (AGC), noise reduction, noise suppression and hardware access and control across multiple platforms.

Video

The WebRTC project builds on the VP8 codec, introduced in 2010 as part of the WebM Project. It includes components to conceal packet loss, clean up noisy images as well as capture and playback capabilities across multiple platforms.

Network

Dynamic jitter buffers and error concealment techniques are included for audio and video that help mitigate the effects of packet loss and unreliable networks. Also included are components for establishing a Peer to Peer connection using ICE / STUN / Turn / RTP-over-TCP and support for proxies. This technology comes in part from the libjingle project.

How do I access the WebRTC code?

Go to code.google.com/p/webrtc.

How can I test the quality of WebRTC components?

We have put an early preview sample application here.

Are WebRTC components subject to change?

WebRTC is based on a API that is still under development through efforts at WHATWG, W3C and IETF. We hope to get to a stable API once a few browser vendors have implementations ready for testing. Once the API is stable, our goal will be to offer backwards compatibility and interoperability. The WebRTC API layer will be our main focus for stability and interoperability. The components under it may be modified to improve quality, performance and feature set.

How can I implement my own renderer or add my own hooks in the WebRTC Platform?

To do this, please take a look at the external renderer API.

WebRTC components are open-source. How do I get the source and contribute code?

Please see Getting started and Contributing bug fixes for more information.

To be a Contributor, do I need to sign any agreements?

Yes, each Contributor must sign and return the Contributor License Agreement.

Do I have to be a programmer to use WebRTC?

Yes, to build WebRTC support into a software application or contribute improvements, programming skills are required. However, usage of the Javascript APIs that call WebRTC in the browsers will only require typical web development skills.

Is the WebRTC project owned by Google or is it independent?

WebRTC is an open-source project supported by Google, Mozilla and Opera. The API and underlying protocols are being developed jointly at the W3C and IETF.

Are the WebRTC components from Google’s acquisition of Global IP Solutions?

Yes some components, such as VoiceEngine, VideoEngine, NetEQ, AEC, etc all stem from the GIPS acquisition.

What codecs are supported in WebRTC?

The currently supported voice codecs are G.711, G.722, iLBC, and iSAC, and VP8 is the supported video codec. The list of supported codecs may change in the future.

Please explain how WebRTC is free of charge?

Some software frameworks, voice and video codecs require end-users, distributors and manufacturers to pay patent royalties to use the intellectual property within the software technology and/or codec. Google is not charging royalties for WebRTC and its components including the codecs it supports (VP8 for video and iSAC and iLBC for audio).  For more information, see the License page

What does this license let me do?

Like most BSD licenses, this license allows you to use the WebRTC code with a minimum of restrictions on your use. You can use the code in proprietary software as well as open source software.

Do I need to release the source if I make changes?

No, the license does not require you to release source if you make changes. However, we would love to see any changes you make and possibly incorporate them, so if you want to participate please visit the code page and submit some patches.

Why is there a separate patent grant?

In order to decouple patents from copyright, thus preserving the pure BSD nature of the copyright license, the license and the patent grant are separate. This means we are using a standard (BSD) open source copyright license, and the patent grant can exist on its own. This makes WebRTC compatible with all major license scenarios.

What if someone gets the code from Google and gives it to me without changes. Do I have a patent grant from Google?

Yes, you still have the right to redistribute and you still have a patent license for Google's patents that cover the code that Google released.

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?

You still have the right to redistribute but no patent license for the changes (if there are any patents covering it). We can't give patent licenses for changes people make after we distribute the code, as we have no way to predict what those changes will be. Other common licenses take the same approach, including the Apache license.

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?

Yes, you still have the right to redistribute and you still have a patent license for Google's patents that cover the code that Google released.

What if my competitor uses the code and brings patent litigation against me for something unrelated to the code. Does he or she still have a patent license?

Yes, he/she still has the right to redistribute and he/she still has a patent license for Google's patents that cover the code that Google released.