No description
Find a file
Austin Orion 78c73477c7 Add DesktopCaptureOption enumerate_current_process_windows to avoid hang
Enumerating windows owned by the current process on Windows has some
complications due to the GetWindowText*() APIs potentially causing a
deadlock. The APIs will send messages to the window's message loop, and
if the message loop is waiting on this operation we will enter a
deadlock.

I previously put in a mitigation for this [1] which brought the
incidence rate down by an order of magnitude, but we are still seeing
this issue fairly frequently.

So, I've added  DesktopCaptureOption enumerate_current_process_windows
which allows consumers to avoid this issue completely by ignoring
these potentially problematic windows.

By default the flag is set to true which equates with the current
behavior, consumers can set the flag to false to get the new behavior.

I've also updated all the capturers that enumerate windows on Windows
to respect the option.

[1] https://webrtc-review.googlesource.com/c/src/+/195365

Bug: chromium:1152841
Change-Id: I0e0d868957d6fbe1e607a440b3a909d005c93ccf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/219380
Commit-Queue: Austin Orion <auorion@microsoft.com>
Reviewed-by: Joe Downing <joedow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#34191}
2021-06-01 18:20:50 +00:00
api Fix incorrect fps_allocation printed by EncoderInfo::ToString() 2021-06-01 09:53:34 +00:00
audio AudioSendStream: s/worker_queue_/rtp_transport_queue_/g 2021-06-01 08:00:22 +00:00
build_overrides Roll chromium + fix: blacklist -> ignorelist for sanitizers suppressions 2021-05-27 16:16:01 +00:00
call Remove RecordingState::keyframe_needed. 2021-06-01 15:39:41 +00:00
common_audio Avoid undefined behavior in a division operation. 2021-04-23 07:49:24 +00:00
common_video Update BitBuffer methods to style guide 2021-05-18 11:10:27 +00:00
data Remove old data files. 2018-10-05 14:40:21 +00:00
docs Create a VideoFrameTrackingId RTP header extension. 2021-03-25 17:25:18 +00:00
examples Introduce CreateDataChannelOrError 2021-05-26 09:43:29 +00:00
g3doc Add basic synchronization function info to g3doc 2021-06-01 09:05:23 +00:00
logging Revert "Deprecate microsecond timestamps in RTC event log." 2021-05-24 13:11:10 +00:00
media fall back to payload types from lower range after exhausting [96,127] 2021-06-01 07:50:43 +00:00
modules Add DesktopCaptureOption enumerate_current_process_windows to avoid hang 2021-06-01 18:20:50 +00:00
net/dcsctp dcsctp: Stay within stream while producing from it 2021-06-01 17:24:06 +00:00
p2p Remove cricket::DtlsTransportState. 2021-05-21 21:45:29 +00:00
pc Add ability to pass factory for RtpTransportControllerSend to PeerConnectionFactoryDependencies. 2021-06-01 06:57:31 +00:00
resources Disable high-pass filtering of the AEC reference 2021-02-23 07:06:11 +00:00
rtc_base Proxy: solve event tracing with compile time strings. 2021-05-28 06:53:29 +00:00
rtc_tools Convert to NTP time using the real clock. 2021-05-21 19:29:32 +00:00
sdk Fix typo in a URL in the comment 2021-05-31 20:15:17 +00:00
stats Populate qualityLimitationDurations stats for outbound RTP streams 2021-05-31 21:39:37 +00:00
system_wrappers Make Clock::ConvertTimestampToNtpTime pure virtual 2021-05-21 09:55:14 +00:00
test RtpFrameReferenceFinder return frames directly instead of via callback. 2021-05-26 15:47:03 +00:00
tools_webrtc Make generate_license.py compatible with Python 3. 2021-05-31 07:05:46 +00:00
video Remove RecordingState::keyframe_needed. 2021-06-01 15:39:41 +00:00
.clang-format Add IncludeBlocks to clang-format. 2021-02-03 16:29:07 +00:00
.git-blame-ignore-revs Let git-hyper-blame ignore new format cleanup. 2019-07-11 16:18:51 +00:00
.gitignore Add .cache to .gitignore. 2021-01-20 15:01:07 +00:00
.gn Switch from check_targets to no_check_targets in .gn 2021-05-20 10:42:21 +00:00
.vpython Update six library version 2021-04-26 16:39:07 +00:00
AUTHORS Fix incorrect SSRC in RtpPacketSendInfo for RTX packets. 2021-05-31 20:51:07 +00:00
BUILD.gn Switch from check_targets to no_check_targets in .gn 2021-05-20 10:42:21 +00:00
CODE_OF_CONDUCT.md Add code of conduct to WebRTC repo 2017-05-16 12:09:13 +00:00
codereview.settings Don't add webrtc-reviews@ to CC, it can be added globally on Gerrit 2018-10-25 08:19:53 +00:00
DEPS Roll chromium_revision 03cca1960d..ed24ed8d5d (887795:887902) 2021-06-01 10:50:04 +00:00
DIR_METADATA Move metadata in OWNERS files to DIR_METADATA files. 2021-02-08 19:09:33 +00:00
ENG_REVIEW_OWNERS Remove kwiberg@webrtc.org from OWNERS files 2020-12-04 15:11:26 +00:00
g3doc.lua Improve webrtc documentation infra. Preview at: 2021-03-30 10:29:30 +00:00
LICENSE Moving src/webrtc into src/. 2017-09-15 04:25:06 +00:00
license_template.txt Update template to follow chromium copyright style 2013-04-24 01:01:28 +00:00
native-api.md Make the remote_bitrate_estimator build target private 2020-11-26 12:21:22 +00:00
OWNERS Move style guide and abseil-in-webrtc into g3doc subfolder 2021-05-13 14:43:10 +00:00
PATENTS Moving src/webrtc into src/. 2017-09-15 04:25:06 +00:00
PRESUBMIT.py sctp: Rename SctpTransport to UsrSctpTransport 2021-04-12 10:40:34 +00:00
presubmit_test.py Reformat python files checked by pylint (part 1/2). 2020-10-30 10:13:11 +00:00
presubmit_test_mocks.py Reformat python files checked by pylint (part 1/2). 2020-10-30 10:13:11 +00:00
pylintrc Undo enforcing of PEP-8 pylint changes for method and function names. 2020-11-10 18:26:25 +00:00
README.chromium Add CPEPrefix. 2020-07-13 11:42:07 +00:00
README.md Move style guide and abseil-in-webrtc into g3doc subfolder 2021-05-13 14:43:10 +00:00
WATCHLISTS Add hta@ to rtc_base/ and api/ WATCHLISTS. 2021-01-06 09:43:34 +00:00
webrtc.gni Turn on the RTC_ENABLE_WIN_WGC build flag. 2021-05-10 20:16:52 +00:00
webrtc_lib_link_test.cc Deprecate PeerConnectionFactory::CreatePeerConnection 2021-05-10 08:47:48 +00:00
whitespace.txt Reland "Triggering CI." 2021-03-22 11:57:23 +00:00

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.

Development

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.

More info