| commit | 4eaf80f562748a26dce91bcfa7d6cb17985bf47f | [log] [tgz] |
|---|---|---|
| author | Sunggook Chue <sunggch@microsoft.com> | Fri May 09 23:07:46 2025 |
| committer | WebRTC LUCI CQ <webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com> | Mon May 12 19:57:07 2025 |
| tree | 53ac3fbcb35cd45cb88133f7032cbbce1989b896 | |
| parent | 1e71d089aa63e0f82451d1983863a06110e694a7 [diff] |
Desktop Capture Performance Improvement via HMONITOR Caching The GetHmonitorFromDeviceIndex API previously made repeated calls to the EnumDisplayDevicesW OS API, which is an expensive kernel operation. Specifically, EnumDisplayDevicesW was invoked twice—once in IsScreenValid and again in GetScreenRect. GetHmonitorFromDeviceIndex alone cost is 1000 counts meanwhile its parent ProcessFrame() itself is around 4000 counts, which includes memcpy (2000 counts) and other d3d11 operation (1000). This change removes the redundant call to IsScreenValid, no calling the expensive EnumDisplayDevicesW, as GetScreenRect already performs the necessary validation. Additionally, the HMONITOR value is now cached for each WgcCaptureSession used in screen capture. After this CL, GetHmonitorFromDeviceIndex cost is almost 0 as it isn't shown on the traces anymore. Bug: chromium:416088620 Change-Id: I1a9076ac9c797c3cb12f420dc60c73f174fe4f9f Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/390180 Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Reviewed-by: Alexander Cooper <alcooper@chromium.org> Commit-Queue: Sunggook Chue <sunggch@microsoft.com> Cr-Commit-Position: refs/heads/main@{#44599}
WebRTC is a free, open software project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose.
Our mission: To enable rich, high-quality RTC applications to be developed for the browser, mobile platforms, and IoT devices, and allow them all to communicate via a common set of protocols.
The WebRTC initiative is a project supported by Google, Mozilla and Opera, amongst others.
See here for instructions on how to get started developing with the native code.
Authoritative list of directories that contain the native API header files.