Portfolio
Web

Echo cancellation in video conferencing system

Eliminating echo during screen sharing and system audio transmission in WebRTC-based video conferences using Electron on Windows.

Tasks

  • Investigate the cause of echo during screen sharing and system audio transmission.
  • Find methods to enable echo cancellation (echoCancellation) in Electron’s limited getUserMedia() implementation.
  • Develop a patch to modify the Electron executable without rebuilding.
  • Create a Node.js utility for automatically applying the patch.
  • Integrate the solution into the product’s CI/CD pipeline.
Preview Echo cancellation in video conferencing system

About the Project

During video conferences with screen sharing and system audio in Electron-based applications on Windows, a critical issue arose: participants heard an echo of their own voice. This occurred because Electron disabled the audio processing module (including echo cancellation) during screen sharing to save CPU resources.

The issue was traced to Electron’s implementation: during screen capture, audio stream processing was automatically disabled, despite the presence of an echo cancellation attribute in the stream.

The solution was implemented without rebuilding Chromium/Electron and integrated into the product’s build process.

Results

100%compatibility with current Electron versions
NoElectron rebuild required—minimal overhead
Eliminatedecho during screen sharing with system audio
Integratedpatch into the product build process
Reducedcommunication errors during video calls
Video conference illustration

Limitations in Electron Implementation

Electron disabled audio processing during screen sharing, even when the echoCancellation parameter was explicitly set. The reason—Chromium’s source code disables the echo cancellation module for "desktop" type streams.

Modification Without Rebuilding
Solution—created a binary patch that directly modifies the Electron executable. This avoided the need for rebuilding.
Flexible Utility Architecture
The utility is based on signature searching rather than fixed offsets, allowing adaptation to different Electron versions without manual edits.

Details of the Implementation

Instead of rebuilding Electron from source—a resource-intensive and unstable process— we opted to modify the pre-built Electron .exe file. A specialized Node.js utility was developed to:

  • Locate the signature of the disabling code in the binary file.
  • Apply changes to enable echoCancellation.
  • Support multiple Electron versions through signature-based abstraction.

This enabled echoCancellation during screen sharing, eliminating the echo source and improving call quality without the overhead of rebuilding the browser.

Related Services

Service Outsourcing preview

Outsourcing

Our team of skilled developers is ready to create websites and applications of any complexity. We build modern web solutions using cutting-edge technologies and architectural approaches.

Read More
3D Graphics
Web
Scalability

Ready to discuss your project?

Describe your task, we will make a research and respond to you as soon as possible.

We will be happy to advise you in any of the available ways.

By leaving a request you agree to the data processing policy