Crate libsoxr[][src]

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 Definitions

Result