Files
Michael Froman 06e90addc7 Bug 1952339 - Vendor libwebrtc from 995688c8e8
We already cherry-picked this when we vendored f30c044cf9.

Upstream commit: https://webrtc.googlesource.com/src/+/995688c8e85b520d50961486abbe0cc03eae9558
    Revert "more p2p cleanups"

    This reverts commit f30c044cf9bd06f91017c171d98690094ce6d88b.

    Reason for revert: breaks roll to chromium: https://ci.chromium.org/ui/p/chromium/builders/try/mac_chromium_compile_dbg_ng/2290104/overview

    Original change's description:
    > more p2p cleanups
    >
    > Move test code from p2p/base and rtc_base/ into p2p/test/
    > This p2p/base much less crowded and
    > clarifies that the rtc_base/nat* is in fact only test code.
    >
    > BUG=webrtc:0
    >
    > Change-Id: I4d14fae24cb0eff6783962f4b4483b560367ca5d
    > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/378900
    > Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
    > Reviewed-by: Harald Alvestrand <hta@webrtc.org>
    > Auto-Submit: Jonas Oreland <jonaso@webrtc.org>
    > Cr-Commit-Position: refs/heads/main@{#43995}

    Bug: webrtc:0
    Change-Id: I6c79fa85f53fdb9a1dacbe38911771f9a4289c76
    No-Presubmit: true
    No-Tree-Checks: true
    No-Try: true
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/379040
    Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
    Owners-Override: Ilya Nikolaevskiy <ilnik@webrtc.org>
    Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#43999}

Differential Revision: https://phabricator.services.mozilla.com/D244009
2025-03-07 16:59:33 -06:00

83 lines
2.7 KiB
Diff

From: Andreas Pehrson <apehrson@mozilla.com>
Date: Tue, 27 Aug 2024 10:01:00 +0000
Subject: Bug 1914835 - With ScreenCaptureKit embed the mouse cursor directly.
r=webrtc-reviewers,ng
The MouseCursorMonitor on macOS is rather expensive, as for every pulled frame
it compares all pixels of the cursors used for the current and last frames.
Getting to the pixels may also incur a conversion.
Note that this comparison happens even if the backend reports it had embedded
the cursor already, as the embedding only affects composing the monitored cursor
into a captured frame.
Differential Revision: https://phabricator.services.mozilla.com/D220092
Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/8ca7b371646d8aa40b2c3faf54570fcd1331a677
---
.../desktop_capture/mac/screen_capturer_sck.h | 3 +++
.../desktop_capture/mac/screen_capturer_sck.mm | 17 ++++++++++++++---
2 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/modules/desktop_capture/mac/screen_capturer_sck.h b/modules/desktop_capture/mac/screen_capturer_sck.h
index 2c5241d33e..105cbf0783 100644
--- a/modules/desktop_capture/mac/screen_capturer_sck.h
+++ b/modules/desktop_capture/mac/screen_capturer_sck.h
@@ -18,6 +18,9 @@
namespace webrtc {
+// Returns true if the ScreenCaptureKit capturer is available.
+bool ScreenCapturerSckAvailable();
+
// A DesktopCapturer implementation that uses ScreenCaptureKit.
std::unique_ptr<DesktopCapturer> CreateScreenCapturerSck(
const DesktopCaptureOptions& options);
diff --git a/modules/desktop_capture/mac/screen_capturer_sck.mm b/modules/desktop_capture/mac/screen_capturer_sck.mm
index fbec429ffe..707199cd9e 100644
--- a/modules/desktop_capture/mac/screen_capturer_sck.mm
+++ b/modules/desktop_capture/mac/screen_capturer_sck.mm
@@ -24,6 +24,8 @@
using webrtc::DesktopFrameIOSurface;
+#define SCK_AVAILABLE @available(macOS 14.0, *)
+
namespace webrtc {
class ScreenCapturerSck;
} // namespace webrtc
@@ -49,6 +51,14 @@ API_AVAILABLE(macos(14.0))
namespace webrtc {
+bool ScreenCapturerSckAvailable() {
+ bool sonomaOrHigher = false;
+ if (SCK_AVAILABLE) {
+ sonomaOrHigher = true;
+ }
+ return sonomaOrHigher;
+}
+
class API_AVAILABLE(macos(14.0)) ScreenCapturerSck final
: public DesktopCapturer {
public:
@@ -376,11 +386,10 @@ void ScreenCapturerSck::StartOrReconfigureCapturer() {
std::unique_ptr<DesktopCapturer> CreateScreenCapturerSck(
const DesktopCaptureOptions& options) {
- if (@available(macOS 14.0, *)) {
+ if (SCK_AVAILABLE) {
return std::make_unique<ScreenCapturerSck>(options);
- } else {
- return nullptr;
}
+ return nullptr;
}
} // namespace webrtc
@@ -442,3 +451,5 @@ std::unique_ptr<DesktopCapturer> CreateScreenCapturerSck(
}
@end
+
+#undef SCK_AVAILABLE