dasp_window/lib.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
//! Module for windowing over a batch of Frames. Includes default Hanning and Rectangle window
//! types.
//!
//! ### Optional Features
//!
//! - The **hanning** feature (or **window-hanning** feature if using `dasp`) provides the
//! [**Hanning**](./struct.Hanning.html) window function implementation.
//! - The **rectangle** feature (or **window-rectangle** feature if using `dasp`) provides the
//! [**Rectangle**](./struct.Rectangle.html) window function implementation.
//!
//! ### no_std
//!
//! If working in a `no_std` context, you can disable the default **std** feature with
//! `--no-default-features`.
//!
//! To enable all of the above features in a `no_std` context, enable the **all-no-std** feature.
#![cfg_attr(not(feature = "std"), no_std)]
#![cfg_attr(not(feature = "std"), feature(core_intrinsics))]
#[cfg(feature = "hanning")]
pub use hanning::Hanning;
#[cfg(feature = "rectangle")]
pub use rectangle::Rectangle;
#[cfg(feature = "hanning")]
mod hanning;
#[cfg(feature = "rectangle")]
mod rectangle;
/// An abstraction supporting different types of `Window` functions.
///
/// The type `S` represents the phase of the window, while the `Output` represents the window
/// amplitude.
pub trait Window<S> {
/// The type used to represent the window amplitude.
type Output;
/// Returns the amplitude for the given phase, given as some `Sample` type.
fn window(phase: S) -> Self::Output;
}