zoomvtools 2.0.0

Video motion vector analysis utilities in pure Rust
Documentation
//! Host-neutral motion-vector analysis and interpolation filters.
//!
//! This crate contains the reusable core of `vapoursynth-zoomvtools` without any
//! VapourSynth dependency. Host integrations pass borrowed plane slices through
//! [`FrameView`] and [`FramePlanesMut`], persist vector metadata with
//! [`MVAnalysisData`], and call filter structs such as [`Super`], [`Analyse`],
//! [`Compensate`], and [`Degrain`].

#[cfg(test)]
#[macro_use]
mod tests;

mod analysis;
#[cfg(feature = "bench")]
#[doc(hidden)]
pub mod average;
#[cfg(not(feature = "bench"))]
mod average;
#[cfg(feature = "bench")]
#[doc(hidden)]
pub mod copy;
#[cfg(not(feature = "bench"))]
mod copy;
#[cfg(feature = "bench")]
#[doc(hidden)]
pub mod dct;
#[cfg(not(feature = "bench"))]
mod dct;
#[cfg(feature = "bench")]
#[doc(hidden)]
pub mod degrain;
#[cfg(not(feature = "bench"))]
mod degrain;
mod fake;
mod filters;
mod frame;
mod group_of_planes;
#[cfg(feature = "bench")]
#[doc(hidden)]
pub mod limit;
#[cfg(not(feature = "bench"))]
mod limit;
#[cfg(feature = "bench")]
#[doc(hidden)]
pub mod luma;
#[cfg(not(feature = "bench"))]
mod luma;
mod mv;
mod mv_frame;
#[cfg(feature = "bench")]
#[doc(hidden)]
pub mod mv_gof;
#[cfg(not(feature = "bench"))]
mod mv_gof;
#[cfg(feature = "bench")]
#[doc(hidden)]
pub mod mv_plane;
#[cfg(not(feature = "bench"))]
mod mv_plane;
#[cfg(feature = "bench")]
#[doc(hidden)]
pub mod overlaps;
#[cfg(not(feature = "bench"))]
mod overlaps;
#[cfg(feature = "bench")]
#[doc(hidden)]
pub mod pad;
#[cfg(not(feature = "bench"))]
mod pad;
mod params;
mod plane_of_blocks;
#[cfg(feature = "bench")]
#[doc(hidden)]
pub mod reduce;
#[cfg(not(feature = "bench"))]
mod reduce;
#[cfg(feature = "bench")]
#[doc(hidden)]
pub mod refine;
#[cfg(not(feature = "bench"))]
mod refine;
#[cfg(feature = "bench")]
#[doc(hidden)]
pub mod resize;
#[cfg(not(feature = "bench"))]
mod resize;
#[cfg(feature = "bench")]
#[doc(hidden)]
pub mod sad;
#[cfg(not(feature = "bench"))]
mod sad;
#[cfg(feature = "bench")]
#[doc(hidden)]
pub mod satd;
#[cfg(not(feature = "bench"))]
mod satd;
#[cfg(feature = "bench")]
#[doc(hidden)]
pub mod simd;
#[cfg(not(feature = "bench"))]
mod simd;
mod util;
mod video;

pub use analysis::{MVAnalysisData, PROP_MVANALYSISDATA, PROP_VECTORS};
pub use fake::{block_data::FakeBlockData, group_of_planes::FakeGroupOfPlanes};
#[cfg(feature = "bench")]
#[doc(hidden)]
pub use filters::flow_inter::{bench_flow_inter, bench_flow_inter_extra, bench_flow_inter_simple};
pub use filters::{
    analyse::{Analyse, AnalyseOptions, AnalyseResult, SuperClipInfo},
    block_fps::{BlockFPS, BlockFPSOptions},
    compensate::{Compensate, CompensateOptions},
    degrain::{Degrain, DegrainOptions, MAX_RADIUS, MAX_REFS_SIZE},
    finest::Finest,
    flow::{Flow, FlowMode, FlowOptions},
    flow_blur::{FlowBlur, FlowBlurOptions},
    flow_fps::{FlowFPS, FlowFPSOptions},
    flow_inter::{FlowInter, FlowInterExtraVectors, FlowInterOptions},
    mask::{Mask, MaskOptions},
    recalculate::{Recalculate, RecalculateOptions, RecalculateResult},
    sc_detection::SCDetection,
    super_filter::{Super, SuperOptions, SuperPelClip},
};
pub use frame::{
    Frame, FramePlane, FramePlanes, FramePlanesMut, FrameView, PlaneRef, PlaneSizeTuple,
};
pub use mv::MotionVector;
pub use params::{
    DctMode, DivideMode, MV_DEFAULT_SCD1, MV_DEFAULT_SCD2, MVPlaneSet, MaskKind, MotionFlags,
    PenaltyScaling, PlaneSelection, ReduceFilter, SceneChangeBehavior, SearchType, Subpel,
    SubpelMethod,
};
pub use plane_of_blocks::MvsOutput;
pub use util::Pixel;
#[doc(hidden)]
pub use util::{
    FrameWindow, blend_plane, check_and_pad_mask_small, frame_window,
    make_vector_occlusion_mask_time, reduce_fraction, resolve_target_fps, vs_bitblt,
};
pub use video::{ColorFamily, Framerate, Resolution, SampleType, VideoFormat, VideoInfo};