Skip to content

Commit c9383eb

Browse files
committed
use ElementCapture browser feature
1 parent cd35b12 commit c9383eb

File tree

3 files changed

+15
-7
lines changed

3 files changed

+15
-7
lines changed

scripts/get-user-media.js

+12-5
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,19 @@ async function applyGetDisplayMediaCrop(mediaStream) {
5353
if (!window.GET_DISPLAY_MEDIA_CROP) {
5454
return
5555
}
56-
const area = document.querySelector(window.GET_DISPLAY_MEDIA_CROP)
56+
const element = document.querySelector(window.GET_DISPLAY_MEDIA_CROP)
5757
const videoTrack = mediaStream.getVideoTracks()[0]
58-
if (area && videoTrack && videoTrack.cropTo) {
59-
log(`applyGetDisplayMediaCrop to "${window.GET_DISPLAY_MEDIA_CROP}"`)
60-
const cropTarget = await window.CropTarget.fromElement(area)
61-
await videoTrack.cropTo(cropTarget)
58+
if (element && videoTrack) {
59+
if ('RestrictionTarget' in window && 'fromElement' in window.RestrictionTarget) {
60+
log(`applyGetDisplayMediaCrop with RestrictionTarget to "${window.GET_DISPLAY_MEDIA_CROP}"`)
61+
const restrictionTarget = await window.RestrictionTarget.fromElement(element)
62+
await videoTrack.restrictTo(restrictionTarget)
63+
} else {
64+
log(`applyGetDisplayMediaCrop to "${window.GET_DISPLAY_MEDIA_CROP}"`)
65+
element.style.zIndex = 99999
66+
const cropTarget = await window.CropTarget.fromElement(element)
67+
await videoTrack.cropTo(cropTarget)
68+
}
6269
}
6370
}
6471

scripts/screenshare.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,10 @@ webrtcperf.setupFakeScreenshare = ({
3939
wrapper.setAttribute('id', 'webrtcperf-fake-screenshare')
4040
wrapper.setAttribute(
4141
'style',
42-
'position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; z-index: 99999; background-color: black;',
42+
'position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; z-index: -1; background-color: black; isolation: isolate; transform-style: flat;',
4343
)
4444
document.body.appendChild(wrapper)
45+
window.GET_DISPLAY_MEDIA_CROP = '#webrtcperf-fake-screenshare'
4546

4647
let running = true
4748
let timeout = 0

src/session.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -568,6 +568,7 @@ export class Session extends EventEmitter {
568568
// '--auto-select-desktop-capture-source=Entire screen',
569569
// `--auto-select-tab-capture-source-by-title=about:blank`,
570570
`--remote-debugging-port=${this.debuggingPort ? this.debuggingPort + this.id : 0}`,
571+
'--enable-features=VaapiVideoDecoder,VaapiVideoEncoder,VaapiVideoDecodeLinuxGL,ElementCapture',
571572
]
572573

573574
// 'WebRTC-VP8ConferenceTemporalLayers/2',
@@ -595,7 +596,6 @@ export class Session extends EventEmitter {
595596

596597
if (this.enableGpu) {
597598
args.push(
598-
'--enable-features=VaapiVideoDecoder,VaapiVideoEncoder,VaapiVideoDecodeLinuxGL',
599599
'--ignore-gpu-blocklist',
600600
'--enable-gpu-rasterization',
601601
'--enable-zero-copy',

0 commit comments

Comments
 (0)