Enable libwebrtc's ZeroHertzAdapterMode in FrameCadenceAdapter
Categories
(Core :: WebRTC: Audio/Video, task)
Tracking
()
People
(Reporter: pehrsons, Assigned: pehrsons)
References
(Depends on 1 open bug, Blocks 1 open bug)
Details
Attachments
(12 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
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
Bug 1920687 - In VideoConduit trigger the watch functions on the initial state. r?#webrtc-reviewers!
48 bytes,
text/x-phabricator-request
|
Details | Review |
Without ZeroHertzAdapterMode we'll use PassthroughAdapterMode which does what it sounds like -- lets frames through 1 by 1.
With ZeroHertzAdapterMode on the other hand, which is only used for desktop capture, libwebrtc assumes the capture framerate is dynamic based on whether what is visible on screen has changed. When the capture framerate is lower than configured, for instance zero for some period of time, the ZeroHertzAdapterMode schedules re-encodings of the latest frame to ensure the receiving end receives something of good visual quality.
Imagine a bandwidth-constrained scenario. On the capture side the user changes slide. That's a lot of new information to encode. Bandwidth is low so the first encoded frame is of low visual quality. But no more frames are captured because the slide is static on the screen. This is where the ZeroHertzAdapterMode re-encodes the latest frame several times so that the visual quality gradually improves. It seems to use a heuristic based on the codec's quantization parameter to decide whether quality is good or not.
This is a prerequisite of bug 1917191.
Assignee | ||
Comment 1•5 months ago
|
||
Assignee | ||
Comment 2•5 months ago
|
||
Assignee | ||
Comment 3•5 months ago
|
||
Assignee | ||
Comment 4•5 months ago
|
||
Assignee | ||
Comment 5•5 months ago
|
||
Assignee | ||
Comment 6•5 months ago
|
||
Assignee | ||
Comment 7•5 months ago
|
||
Assignee | ||
Comment 8•5 months ago
|
||
This allows these classes to be used in StateMirroring.
Assignee | ||
Comment 9•5 months ago
|
||
Assignee | ||
Comment 10•5 months ago
|
||
Passing frameRate:min == 0 and frameRate:max > 0 to the send stream sink enables
the ZeroHertz FrameCadenceAdapter mode if we're sending screen content.
Assignee | ||
Comment 11•5 months ago
|
||
Assignee | ||
Comment 12•5 months ago
|
||
Without this we can't trigger ZeroHertzAdapterMode unless some constraints were
explicitly requested.
Description
•