WebAssembly enables us to use Zoom’s custom video codec in web browsers. We can utilize the Zoom native Client C / C++ code and seamlessly integrate it into Zoom’s Web Client and Web SDKs. This means we handle the codec, and developers do not need to pick or tune one. Zoom optimizes the video resolution and FPS for the device, taking into account CPU load and network conditions. Developers can always adjust these defaults to prioritize resolution over framerate so they can build for their use case. See this deep dive with the Chrome Dev team where we explain our use of WebAssembly.
Building with WebAssembly allows us to offer advanced noise suppression, virtual backgrounds, more reliable 720p video resolution, and rendering of multiple videos at a time (25 videos on desktop browsers and four on mobile browsers) while optimizing for CPU, network conditions, and performance within the browser.
Zoom also uses WebRTC in certain areas of our web media stack. We value both the progress of WebRTC and the developer community around it. That being said, we are always building beyond what’s possible with current web standards to deliver the best possible experience to our developers and end users.