[][src]Struct rustdct::DCTplanner

pub struct DCTplanner<T> { /* fields omitted */ }

The DCT planner is used to make new DCT algorithm instances.

RustDCT has several DCT algorithms available for each DCT type; For a given DCT type and problem size, the FFTplanner decides which of the available DCT algorithms to use and then initializes them.

// Perform a DCT Type 4 of size 1234
use std::sync::Arc;
use rustdct::DCTplanner;

let mut input:  Vec<f32> = vec![0f32; 1234];
let mut output: Vec<f32> = vec![0f32; 1234];

let mut planner = DCTplanner::new();
let dct4 = planner.plan_dct4(1234);
dct4.process_dct4(&mut input, &mut output);
 
// The DCT instance returned by the planner is stored behind an `Arc`, so it's cheap to clone
let dct4_clone = Arc::clone(&dct4);

If you plan on creating multiple DCT instances, it is recommnded to reuse the same planner for all of them. This is because the planner re-uses internal data across DCT instances wherever possible, saving memory and reducing setup time. (DCT instances created with one planner will never re-use data and buffers with DCT instances created by a different planner)

Each DCT instance owns Arcs to its shared internal data, rather than borrowing it from the planner, so it's perfectly safe to drop the planner after creating DCT instances.

Methods

impl<T: DCTnum> DCTplanner<T>
[src]

pub fn new() -> Self
[src]

pub fn plan_dct1(&mut self, len: usize) -> Arc<dyn DCT1<T>>
[src]

Returns a DCT Type 1 instance which processes signals of size len. If this is called multiple times, it will attempt to re-use internal data between instances

pub fn plan_dct2(&mut self, len: usize) -> Arc<dyn TransformType2And3<T>>
[src]

Returns a DCT Type 2 instance which processes signals of size len. If this is called multiple times, it will attempt to re-use internal data between instances

pub fn plan_dct3(&mut self, len: usize) -> Arc<dyn TransformType2And3<T>>
[src]

Returns DCT Type 3 instance which processes signals of size len. If this is called multiple times, it will attempt to re-use internal data between instances

pub fn plan_dct4(&mut self, len: usize) -> Arc<dyn TransformType4<T>>
[src]

Returns a DCT Type 4 instance which processes signals of size len. If this is called multiple times, it will attempt to re-use internal data between instances

pub fn plan_dst1(&mut self, len: usize) -> Arc<dyn DST1<T>>
[src]

Returns a DST Type 1 instance which processes signals of size len. If this is called multiple times, it will attempt to re-use internal data between instances

pub fn plan_dst2(&mut self, len: usize) -> Arc<dyn TransformType2And3<T>>
[src]

Returns DST Type 2 instance which processes signals of size len. If this is called multiple times, it will attempt to re-use internal data between instances

pub fn plan_dst3(&mut self, len: usize) -> Arc<dyn TransformType2And3<T>>
[src]

Returns DST Type 3 instance which processes signals of size len. If this is called multiple times, it will attempt to re-use internal data between instances

pub fn plan_dst4(&mut self, len: usize) -> Arc<dyn TransformType4<T>>
[src]

Returns DST Type 4 instance which processes signals of size len. If this is called multiple times, it will attempt to re-use internal data between instances

pub fn plan_mdct<F>(&mut self, len: usize, window_fn: F) -> Arc<dyn MDCT<T>> where
    F: FnOnce(usize) -> Vec<T>, 
[src]

Returns a MDCT instance which processes inputs of size len * 2 and produces outputs of size len.

window_fn is a function that takes a size and returns a Vec containing size window values. See the window_fn module for provided window functions.

If this is called multiple times, it will attempt to re-use internal data between instances

Auto Trait Implementations

impl<T> !Send for DCTplanner<T>

impl<T> !Sync for DCTplanner<T>

Blanket Implementations

impl<T> From for T
[src]

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom for T where
    T: From<U>, 
[src]

type Error = !

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.