Skip to main content

plan_refinement

Function plan_refinement 

Source
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.