INNER CODE UNIT · Rust
zoom_limit
gyroflow/gyroflow · src/core/lib.rs:511
let mut zoom_limit = params.keyframes.value_at_video_timestamp(&KeyframeType::MaxZoom, ts).unwrap_or(max_zoom_param) / 100.0;
if params.video_speed_affects_zooming_limit && (params.video_speed != 1.0 || params.keyframes.is_keyframed(&KeyframeType::VideoSpeed)) {
let vid_speed = params.keyframes.value_at_video_timestamp(&KeyframeType::VideoSpeed, ts).unwrap_or(params.video_speed).abs();
zoom_limit *= (1.0 + ((vid_speed - 1.0) / 4.0)).min(1.8);
}
let fov_limit = 1.0 / (zoom_limit * scaling_factor);
if *fov < fov_limit {
any_above_limit = true;
params.smoothing_fov_limit_per_frame[i] *= (*fov / fov_limit).min(*thresholds.get(iter).unwrap_or(thresholds.last().unwrap()));
}
}
log::debug!("Max zoom iteration {iter}/{max_zoom_iters}, any above limit: {any_above_limit}");
if !any_above_limit {
if iter == 0 {
params.smoothing_fov_limit_per_frame.clear();
}