pub struct HwFrameDecision {
pub send: bool,
pub force_idr: bool,
pub target_qp: u32,
pub hold_qp: Option<u32>,
pub hold_band: Option<(f64, f64)>,
pub measure: bool,
pub cap: Option<usize>,
pub refine: Option<Refinement>,
pub constant: Option<Vec<bool>>,
pub refresh: Option<BlockPlan>,
pub defer: Option<BlockPlan>,
}Expand description
Outcome of the full-frame send decision produced by decide_hw_fullframe.
Fields§
§send: bool§force_idr: bool§target_qp: u32The session quality index the frame is encoded at.
hold_qp: Option<u32>The quality index this frame is held at whatever the rate control: the cleanup of a
still screen, handed to the encoder’s hold_quantizer.
hold_band: Option<(f64, f64)>The share of the picture, from and to in raster order, hold_qp covers, the rest of the
frame held at the coarsest quantizer; None for the whole picture.
measure: boolWhether the encoder is asked to measure this frame’s reconstruction
(FrameEncoder::measure).
cap: Option<usize>The bytes a still screen’s cleanup frame may come to (FrameEncoder::cap).
refine: Option<Refinement>The blocks this frame refines (plan_refinement).
constant: Option<Vec<bool>>The blocks this frame may code as skips without analysis, in raster order
(plan_refinement, BlockLedger::constant); None where none may be.
refresh: Option<BlockPlan>The coarse blocks of a capped constant quality whose peak let go that this frame codes
again at the session’s own quality, and the ones left for later frames, which it holds
as skips (BlockLedger::refresh, FrameEncoder::defer_blocks).
defer: Option<BlockPlan>Implementations§
Source§impl HwFrameDecision
impl HwFrameDecision
Sourcepub(crate) fn cleanup_quality(&self, normal: u32) -> Option<u32>
pub(crate) fn cleanup_quality(&self, normal: u32) -> Option<u32>
The quality the whole frame is coded at in place of the session’s normal one: a
quantizer held for it, or a constant quality’s paint-over one.
Sourcepub fn prepare(&self, encoder: &mut FrameEncoder)
pub fn prepare(&self, encoder: &mut FrameEncoder)
Tell encoder what the decision asks of the frame it is about to code: the quantizer
it is held at and whether its reconstruction is measured.
Auto Trait Implementations§
impl Freeze for HwFrameDecision
impl RefUnwindSafe for HwFrameDecision
impl Send for HwFrameDecision
impl Sync for HwFrameDecision
impl Unpin for HwFrameDecision
impl UnsafeUnpin for HwFrameDecision
impl UnwindSafe for HwFrameDecision
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more