Skip to content

Commit 8052aa4

Browse files
committed
Explicitly skip processing non-valid frame invariants
1 parent 89d4e88 commit 8052aa4

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

src/api/internal.rs

+13-7
Original file line numberDiff line numberDiff line change
@@ -442,8 +442,9 @@ impl<T: Pixel> ContextInner<T> {
442442

443443
fn set_frame_properties(
444444
&mut self, output_frameno: u64,
445-
) -> Result<(), EncoderStatus> {
445+
) -> Result<bool, EncoderStatus> {
446446
let fi = self.build_frame_properties(output_frameno)?;
447+
let valid = !fi.invalid;
447448

448449
let frame =
449450
self.frame_q.get(&fi.input_frameno).as_ref().unwrap().as_ref().unwrap();
@@ -452,7 +453,7 @@ impl<T: Pixel> ContextInner<T> {
452453
FrameData::new(output_frameno, fi, frame.clone()),
453454
);
454455

455-
Ok(())
456+
Ok(valid)
456457
}
457458

458459
#[allow(unused)]
@@ -801,12 +802,17 @@ impl<T: Pixel> ContextInner<T> {
801802

802803
#[hawktracer(compute_frame_invariants)]
803804
pub fn compute_frame_invariants(&mut self) {
804-
while self.set_frame_properties(self.next_lookahead_output_frameno).is_ok()
805+
while let Ok(valid) =
806+
self.set_frame_properties(self.next_lookahead_output_frameno)
805807
{
806-
self
807-
.compute_lookahead_motion_vectors(self.next_lookahead_output_frameno);
808-
if self.config.temporal_rdo() {
809-
self.compute_lookahead_intra_costs(self.next_lookahead_output_frameno);
808+
if valid {
809+
self.compute_lookahead_motion_vectors(
810+
self.next_lookahead_output_frameno,
811+
);
812+
if self.config.temporal_rdo() {
813+
self
814+
.compute_lookahead_intra_costs(self.next_lookahead_output_frameno);
815+
}
810816
}
811817
self.next_lookahead_output_frameno += 1;
812818
}

0 commit comments

Comments
 (0)