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
- Encapsulated data types for samples
- Rust API for SOXR.
- For specifying the runtime settings of the resampler For specifying the data type of input and output