Commit 469467e
committed
Safari WebRTC screen sharing via getDisplayMedia starts at extremely low quality and takes ~30 seconds to become legible for remote participants
rdar://175425085
https://bugs.webkit.org/show_bug.cgi?id=312472
Reviewed by Jean-Yves Avenard.
By default, peer connection should favour resolution for screenshare and frame rate for camera content.
We make sure to let know the libwebrtc backend that sent content is screenshare by implementing RealtimeOutgoingVideoSource::is_screencast based on the capture device type.
We also make sure to pipe content hint information to the libwebrtc backend, which can allow canvas tracks to select easily between the two behaviors.
Covered by added test.
Test: webrtc/getDisplayMedia-pc-resolution.html
* LayoutTests/webrtc/getDisplayMedia-pc-resolution-expected.txt: Added.
* LayoutTests/webrtc/getDisplayMedia-pc-resolution.html: Added.
* Source/ThirdParty/libwebrtc/Configurations/libwebrtc.exp:
* Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::addTrack):
(WebCore::LibWebRTCMediaEndpoint::createSourceAndRTCTrack):
* Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:
(WebCore::LibWebRTCRtpSenderBackend::replaceTrack):
* Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp:
(WebCore::toWebRTCContentHint):
* Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCUtils.h:
* Source/WebCore/platform/mediastream/RealtimeOutgoingVideoSource.cpp:
(WebCore::RealtimeOutgoingVideoSource::RealtimeOutgoingVideoSource):
(WebCore::RealtimeOutgoingVideoSource::setSource):
(WebCore::RealtimeOutgoingVideoSource::is_screencast const):
* Source/WebCore/platform/mediastream/RealtimeOutgoingVideoSource.h:
Canonical link: https://commits.webkit.org/313072@main1 parent 9bc8066 commit 469467e
12 files changed
Lines changed: 194 additions & 33 deletions
File tree
- LayoutTests
- platform
- glib
- ios
- webrtc
- Source
- ThirdParty/libwebrtc/Configurations
- WebCore
- Modules/mediastream/libwebrtc
- platform/mediastream
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2834 | 2834 | | |
2835 | 2835 | | |
2836 | 2836 | | |
| 2837 | + | |
| 2838 | + | |
2837 | 2839 | | |
2838 | 2840 | | |
2839 | 2841 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3026 | 3026 | | |
3027 | 3027 | | |
3028 | 3028 | | |
| 3029 | + | |
3029 | 3030 | | |
3030 | 3031 | | |
3031 | 3032 | | |
| |||
Lines changed: 10 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
422 | 422 | | |
423 | 423 | | |
424 | 424 | | |
| 425 | + | |
Lines changed: 13 additions & 31 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
242 | 242 | | |
243 | 243 | | |
244 | 244 | | |
245 | | - | |
246 | | - | |
247 | | - | |
248 | | - | |
249 | | - | |
250 | | - | |
251 | | - | |
252 | | - | |
253 | | - | |
254 | | - | |
255 | | - | |
256 | | - | |
257 | | - | |
258 | | - | |
259 | | - | |
260 | | - | |
261 | | - | |
262 | | - | |
263 | | - | |
264 | | - | |
265 | | - | |
| 245 | + | |
266 | 246 | | |
267 | 247 | | |
268 | 248 | | |
| |||
425 | 405 | | |
426 | 406 | | |
427 | 407 | | |
428 | | - | |
| 408 | + | |
429 | 409 | | |
430 | 410 | | |
431 | | - | |
| 411 | + | |
432 | 412 | | |
433 | 413 | | |
434 | 414 | | |
435 | | - | |
| 415 | + | |
436 | 416 | | |
437 | 417 | | |
438 | 418 | | |
| |||
443 | 423 | | |
444 | 424 | | |
445 | 425 | | |
446 | | - | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
447 | 429 | | |
448 | 430 | | |
449 | 431 | | |
450 | 432 | | |
451 | | - | |
| 433 | + | |
452 | 434 | | |
453 | 435 | | |
454 | 436 | | |
| |||
457 | 439 | | |
458 | 440 | | |
459 | 441 | | |
460 | | - | |
461 | | - | |
| 442 | + | |
| 443 | + | |
462 | 444 | | |
463 | 445 | | |
464 | 446 | | |
465 | 447 | | |
466 | | - | |
467 | | - | |
468 | | - | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
469 | 451 | | |
470 | 452 | | |
471 | 453 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
174 | 174 | | |
175 | 175 | | |
176 | 176 | | |
177 | | - | |
| 177 | + | |
178 | 178 | | |
179 | 179 | | |
180 | 180 | | |
| |||
Lines changed: 8 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
111 | 111 | | |
112 | 112 | | |
113 | 113 | | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
114 | 122 | | |
115 | 123 | | |
116 | 124 | | |
| |||
Lines changed: 22 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| 31 | + | |
31 | 32 | | |
32 | 33 | | |
33 | 34 | | |
| |||
531 | 532 | | |
532 | 533 | | |
533 | 534 | | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
534 | 556 | | |
535 | 557 | | |
536 | 558 | | |
Lines changed: 4 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| 35 | + | |
35 | 36 | | |
36 | 37 | | |
37 | 38 | | |
| |||
83 | 84 | | |
84 | 85 | | |
85 | 86 | | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
86 | 90 | | |
87 | 91 | | |
88 | 92 | | |
| |||
0 commit comments