Crate libsoxr

Source
Expand description

§libsoxr-rs

This library is a thin wrapper for libsoxr which is a “High quality, one-dimensional sample-rate conversion library”.

For direct access to the libsoxr functions, you can use the libsoxr-sys crate.

This wrapper library is licensed the same as libsoxr itself: LGPLv2.

The documentation can be found here.

§Install

add the following to your Cargo.toml:

[dependencies]
libsoxr = "0.2"

§Example

// upscale factor 2, one channel with all the defaults
let soxr = Soxr::create(1.0, 2.0, 1, None, None, None).unwrap();

// source data, taken from 1-single-block.c of libsoxr examples.
let source: [f32; 48] = [0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0,
                         1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0,
                         0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0,
                         -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0];

// create room for 2*48 = 96 samples
let mut target: [f32; 96] = [0.0; 96];

// Two runs. First run will convert the source data into target.
// Last run with None is to inform resampler of end-of-input so it can clean up
soxr.process(Some(&source), &mut target).unwrap();
soxr.process::<f32,_>(None, &mut target[0..]).unwrap();

// just print the values in target
for s in target.iter() {
  print!("{:?}\t", s)
}

Re-exports§

pub use crate::datatype::Datatype;
pub use crate::soxr::Soxr;
pub use crate::soxr::SoxrFunction;
pub use crate::spec::IOSpec;
pub use crate::spec::QualityFlags;
pub use crate::spec::QualityRecipe;
pub use crate::spec::QualitySpec;
pub use crate::spec::RuntimeSpec;

Modules§

datatype
Encapsulated data types for samples
soxr
Rust API for SOXR.
spec
For specifying the runtime settings of the resampler For specifying the data type of input and output

Structs§

Error

Enums§

ErrorType

Type Aliases§

Result