pub fn plan_refinement(
st: &mut StripeState,
settings: &CaptureSettings,
d: &mut HwFrameDecision,
damage: Damage,
changed: Option<&[Rectangle<i32, Physical>]>,
refines: Option<Refiner>,
last: Option<u32>,
bound: bool,
)Expand description
The block ledger’s part of a full-frame decision d (ledger): take this frame’s change
into st’s ledger, from where the source says it changed (changed, in the frame’s
coordinates, read with whether the region’s hash saw it change, StripeState::hash_changed,
through BlockLedger::frame_reported), or the whole frame where the source cannot say and
damage says something changed; and where the frame goes at the session’s own quality while the region moves, on a
session that refines (refines, how: ledger::Refiner) with the cleanup armed, name the
blocks it refines, the offset taken from the quality index the rate control last coded at
(last) where a rate binds the session (bound, FrameEncoder::rate_bound), paced against
the frame budget (ledger::RefinePace), or from the session’s own at a constant quality no
peak binds. A capped constant quality its peak let go codes again the blocks it coded while
bound that held still since, so many a frame at its own quality (BlockLedger::refresh,
ledger::RefreshPace), the rest held as skips, sending a still screen’s frames for it, and
first, at the paint-over quality, the blocks owed it (BlockLedger::refresh_owed): a
cleanup it spent under the binding peak, or one falling due on blocks it has yet to refresh
or refreshed at its own quality, which it takes in place of that cleanup’s frame; it refines
nothing on those frames and waits while the peak binds again.