@@ -357,8 +357,8 @@ impl<T: Pixel> ContextInner<T> {
357
357
let lookahead_frames = self
358
358
. frame_q
359
359
. range ( self . next_lookahead_frame - 1 ..)
360
- . filter_map ( |( & _input_frameno, frame) | frame. clone ( ) )
361
- . collect :: < Vec < _ > > ( ) ;
360
+ . filter_map ( |( & _input_frameno, frame) | frame. as_ref ( ) )
361
+ . collect :: < Vec < & Arc < Frame < T > > > > ( ) ;
362
362
363
363
if is_flushing {
364
364
// This is the last time send_frame is called, process all the
@@ -371,10 +371,22 @@ impl<T: Pixel> ContextInner<T> {
371
371
break ;
372
372
}
373
373
374
- self . compute_keyframe_placement ( cur_lookahead_frames) ;
374
+ Self :: compute_keyframe_placement (
375
+ cur_lookahead_frames,
376
+ & self . keyframes_forced ,
377
+ & mut self . keyframe_detector ,
378
+ & mut self . next_lookahead_frame ,
379
+ & mut self . keyframes ,
380
+ ) ;
375
381
}
376
382
} else {
377
- self . compute_keyframe_placement ( & lookahead_frames) ;
383
+ Self :: compute_keyframe_placement (
384
+ & lookahead_frames,
385
+ & self . keyframes_forced ,
386
+ & mut self . keyframe_detector ,
387
+ & mut self . next_lookahead_frame ,
388
+ & mut self . keyframes ,
389
+ ) ;
378
390
}
379
391
}
380
392
@@ -837,19 +849,21 @@ impl<T: Pixel> ContextInner<T> {
837
849
838
850
#[ hawktracer( compute_keyframe_placement) ]
839
851
pub fn compute_keyframe_placement (
840
- & mut self , lookahead_frames : & [ Arc < Frame < T > > ] ,
852
+ lookahead_frames : & [ & Arc < Frame < T > > ] , keyframes_forced : & BTreeSet < u64 > ,
853
+ keyframe_detector : & mut SceneChangeDetector < T > ,
854
+ next_lookahead_frame : & mut u64 , keyframes : & mut BTreeSet < u64 > ,
841
855
) {
842
- if self . keyframes_forced . contains ( & self . next_lookahead_frame )
843
- || self . keyframe_detector . analyze_next_frame (
856
+ if keyframes_forced. contains ( next_lookahead_frame)
857
+ || keyframe_detector. analyze_next_frame (
844
858
lookahead_frames,
845
- self . next_lookahead_frame ,
846
- * self . keyframes . iter ( ) . last ( ) . unwrap ( ) ,
859
+ * next_lookahead_frame,
860
+ * keyframes. iter ( ) . last ( ) . unwrap ( ) ,
847
861
)
848
862
{
849
- self . keyframes . insert ( self . next_lookahead_frame ) ;
863
+ keyframes. insert ( * next_lookahead_frame) ;
850
864
}
851
865
852
- self . next_lookahead_frame += 1 ;
866
+ * next_lookahead_frame += 1 ;
853
867
}
854
868
855
869
#[ hawktracer( compute_frame_invariants) ]
0 commit comments