Skip to content

Conversation

@Be-ing
Copy link

@Be-ing Be-ing commented Oct 8, 2025

No description provided.

@CLAassistant
Copy link

CLAassistant commented Oct 8, 2025

CLA assistant check
All committers have signed the CLA.

println!("cargo:rustc-link-lib=dylib=gio-2.0");
println!("cargo:rustc-link-lib=dylib=drm");
println!("cargo:rustc-link-lib=dylib=gbm");
if std::env::var("LK_CUSTOM_WEBRTC").is_ok() {
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With livekit#730, this is a proxy for whether the Debian sysroot was used to build libwebrtc.

@Be-ing Be-ing force-pushed the expose_desktop_capturer branch from c51d568 to 0bc29a7 Compare October 8, 2025 23:07
@iparaskev iparaskev merged commit 21c54ef into gethopp:expose_desktop_capturer Oct 13, 2025
1 check passed
iparaskev pushed a commit that referenced this pull request Oct 13, 2025
iparaskev pushed a commit that referenced this pull request Nov 17, 2025
iparaskev added a commit that referenced this pull request Dec 5, 2025
* feat: expose DesktopCapturer

Implements screen sharing by exposing libwebrtc's
DesktopCapturer.

A few platform specific notes:
  - macos:
    * It is using screen capture kit and the system picker by
      default. If the system picker is disabled then get_sources
      returns an empty list when trying to capture a display. The
      display native id needs to be acquired using different means
      from the client.
  - linux:
    * With pipewire the only way to select window or display is via
      the system picker.

* use pkg-config to find Linux libraries (#2)

* Support x11 dependencies

* Modify example to work on x11

* Address comments

* Properly guard sck options

* Address review comments

In particular:
   - Adds support for the generic capturer.
   - Exposes the desktop_capturer module only on macos, linux and
     windows.
   - Updates the example

* Update license

* Set callback on start

* Make the callback FnMut

* cpp formatting

* Allow disabling system picker in example

* Address review comments

* Remove reference to temporary

* Run screen-sharing example only on supported platforms

* cargo fmt

* Update build runner with DesktopCapturer deps on linux

* Update runner

* Update tests runner

* fix Android build (#7)

* screensharing example: remove rustls-native feature from livekit

This was breaking the Android builds.

* improve error handling for File::open

* webrtc-sys-build: skip parsing desktop_capture.ninja on Android

* webrtc-sys-build: bump prebuilt library to webrtc-0001d84-2

* Enable TLS features for the screenshare example

---------

Co-authored-by: Be <be.0@gmx.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants