use av_denoise::MotionSearch;
#[derive(Debug, Clone, Default, clap::Args)]
pub struct MotionArgs {
#[arg(long)]
pub mc_blksize: Option<u32>,
#[arg(long)]
pub mc_overlap: Option<u32>,
#[arg(long)]
pub mc_search: Option<u32>,
#[arg(long)]
pub mc_pyramid_levels: Option<u32>,
}
impl MotionArgs {
pub fn any_set(&self) -> bool {
self.mc_blksize.is_some()
|| self.mc_overlap.is_some()
|| self.mc_search.is_some()
|| self.mc_pyramid_levels.is_some()
}
pub fn to_motion_search(&self) -> MotionSearch {
let defaults = MotionSearch::default();
MotionSearch {
blksize: self.mc_blksize.unwrap_or(defaults.blksize),
overlap: self.mc_overlap.unwrap_or(defaults.overlap),
search_radius: self.mc_search.unwrap_or(defaults.search_radius),
pyramid_levels: self.mc_pyramid_levels.unwrap_or(defaults.pyramid_levels),
estimation: defaults.estimation,
}
}
}