[−][src]Crate libsoxr
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 |