Hook up an SCContentSharingPicker MVP integration
Categories
(Core :: WebRTC: Audio/Video, task)
Tracking
()
People
(Reporter: pehrsons, Assigned: pehrsons)
References
(Blocks 1 open bug)
Details
Attachments
(18 files)
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
phab-bot
:
approval-mozilla-esr128+
|
Details | Review |
48 bytes,
text/x-phabricator-request
|
phab-bot
:
approval-mozilla-esr128+
|
Details | Review |
48 bytes,
text/x-phabricator-request
|
phab-bot
:
approval-mozilla-esr128+
|
Details | Review |
48 bytes,
text/x-phabricator-request
|
phab-bot
:
approval-mozilla-esr128+
|
Details | Review |
48 bytes,
text/x-phabricator-request
|
phab-bot
:
approval-mozilla-esr128+
|
Details | Review |
48 bytes,
text/x-phabricator-request
|
phab-bot
:
approval-mozilla-esr128+
|
Details | Review |
48 bytes,
text/x-phabricator-request
|
phab-bot
:
approval-mozilla-esr128+
|
Details | Review |
48 bytes,
text/x-phabricator-request
|
phab-bot
:
approval-mozilla-esr128+
|
Details | Review |
48 bytes,
text/x-phabricator-request
|
phab-bot
:
approval-mozilla-esr128+
|
Details | Review |
We already have Pipewire desktop capture using a system dialog. Let's hook up macOS >= 15 similarly, behind a pref, for now. This let's us integrate SCContentSharingPicker without much other patches (e.g. frontend), and provides an avenue for potential uplift into 131.
Assignee | ||
Comment 1•6 months ago
|
||
Assignee | ||
Comment 2•6 months ago
|
||
Assignee | ||
Comment 3•6 months ago
|
||
Assignee | ||
Comment 4•6 months ago
|
||
This case gets hit if the SCContentSharingPicker is cancelled by the user.
Updated•6 months ago
|
Assignee | ||
Comment 5•6 months ago
|
||
Assignee | ||
Comment 6•6 months ago
|
||
If the resolution is smaller than the allocated surface, we crop.
If the resolution is larger than the allocated surface, we reconfigure with a
larger surface.
The allocated surface has the size we told it to have in the
SCStreamConfiguration, in pixels.
If the source is a screen, the size is pretty static. Changing display settings
could affect it.
If the source is a window, the size is initially the size of the window. The
user resizing the window affects the size.
If the source is multiple windows, the size initially seems to be that of the
display they're sitting on. Windows across multiple displays are not captured
into the same surface, as of macOS 14.
Assignee | ||
Comment 7•6 months ago
|
||
No need to update the last frame unless it has changed.
Assignee | ||
Comment 8•6 months ago
|
||
Assignee | ||
Updated•6 months ago
|
Comment 10•6 months ago
|
||
Comment 11•6 months ago
|
||
Comment 12•6 months ago
|
||
bugherder |
Assignee | ||
Comment 13•6 months ago
|
||
We cannot guarantee that the thread it is used on is static, as both the
VideoCapture and DesktopCapture threads can come and go.
Comment 14•6 months ago
|
||
bugherder |
Comment 15•6 months ago
|
||
Comment 16•6 months ago
|
||
Assignee | ||
Updated•6 months ago
|
Comment 17•6 months ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/cfcdd5339805
https://hg.mozilla.org/mozilla-central/rev/07dd5fcced62
![]() |
||
Comment 18•6 months ago
|
||
[Tracking Requested - why for this release]:
We would like to uplift this work (plus the fixes in the two regressions) once it's had more bake time.
![]() |
||
Updated•6 months ago
|
Updated•6 months ago
|
Comment 19•5 months ago
|
||
FWIW, if this is going to go to ESR128, it'll need a rebased patch stack to do so. I'm also not super thrilled about taking this large of a set of changes there, so more explanation as to why it's necessary would be appreciated.
Assignee | ||
Comment 20•5 months ago
|
||
(In reply to Ryan VanderMeulen [:RyanVM] from comment #19)
FWIW, if this is going to go to ESR128, it'll need a rebased patch stack to do so. I'm also not super thrilled about taking this large of a set of changes there, so more explanation as to why it's necessary would be appreciated.
This is mainly to avoid the new system alerts in macOS 15 that are mentioned in their release notes (see ScreenCaptureKit Deprecations). There's some code in here affecting the existing desktop capture framework, but note most of it is behind a pref and a macOS 15 runtime check. We also would like this to have more time to bake in release before uplifting.
Updated•5 months ago
|
Comment 21•4 months ago
|
||
:pehrsons next week is the final week before esr128.5 goes to build.
Is this ready for an esr128 uplift request?
Comment 22•4 months ago
|
||
Will reach out in Slack to get an uplift request in time for 128.6 at least
Updated•3 months ago
|
Assignee | ||
Comment 24•3 months ago
|
||
This works by creating ScreenCapturerSck with a sck_allow_system_picker
DesktopCaptureOptions flag.
The flow is similar to the Pipewire capturer in that SelectSource has no effect.
Start() brings up the system picker, and:
- automatically starts capture on selection, also reconfigures on future
selection changes. - signals a stop by setting the permanent error flag on cancel or error.
The system picker is configured for both single display and multiple windows to
give users as much power over what they share as possible. There is an
application mode also, but other browsers are not allowing access to that as of
now.
Original Revision: https://phabricator.services.mozilla.com/D221851
Updated•3 months ago
|
Assignee | ||
Comment 25•3 months ago
|
||
Original Revision: https://phabricator.services.mozilla.com/D221852
Updated•3 months ago
|
Assignee | ||
Comment 26•3 months ago
|
||
Original Revision: https://phabricator.services.mozilla.com/D221853
Updated•3 months ago
|
Assignee | ||
Comment 27•3 months ago
|
||
This case gets hit if the SCContentSharingPicker is cancelled by the user.
Original Revision: https://phabricator.services.mozilla.com/D221854
Updated•3 months ago
|
Assignee | ||
Comment 28•3 months ago
|
||
Original Revision: https://phabricator.services.mozilla.com/D221940
Updated•3 months ago
|
Assignee | ||
Comment 29•3 months ago
|
||
If the resolution is smaller than the allocated surface, we crop.
If the resolution is larger than the allocated surface, we reconfigure with a
larger surface.
The allocated surface has the size we told it to have in the
SCStreamConfiguration, in pixels.
If the source is a screen, the size is pretty static. Changing display settings
could affect it.
If the source is a window, the size is initially the size of the window. The
user resizing the window affects the size.
If the source is multiple windows, the size initially seems to be that of the
display they're sitting on. Windows across multiple displays are not captured
into the same surface, as of macOS 14.
Original Revision: https://phabricator.services.mozilla.com/D221941
Updated•3 months ago
|
Assignee | ||
Comment 30•3 months ago
|
||
No need to update the last frame unless it has changed.
Original Revision: https://phabricator.services.mozilla.com/D221942
Updated•3 months ago
|
Assignee | ||
Comment 31•3 months ago
|
||
We cannot guarantee that the thread it is used on is static, as both the
VideoCapture and DesktopCapture threads can come and go.
Original Revision: https://phabricator.services.mozilla.com/D222082
Updated•3 months ago
|
Assignee | ||
Comment 32•3 months ago
|
||
Original Revision: https://phabricator.services.mozilla.com/D221997
Updated•3 months ago
|
Updated•2 months ago
|
Updated•2 months ago
|
Updated•2 months ago
|
Updated•2 months ago
|
Updated•2 months ago
|
Updated•2 months ago
|
Updated•2 months ago
|
Updated•2 months ago
|
Updated•2 months ago
|
Comment 33•2 months ago
|
||
uplift |
Updated•2 months ago
|
Description
•