1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
//! # libsoxr-rs
//!
//! This library is a thin wrapper for [libsoxr](https://sourceforge.net/projects/soxr/) which is
//! a "High quality, one-dimensional sample-rate conversion library".
//!
//! For direct access to the libsoxr functions, you can use the [libsoxr-sys](https://github.com/lrbalt/libsoxr-sys) crate.
//!
//! This wrapper library is licensed the same as libsoxr itself: LGPLv2.
//!
//! The documentation can be found [here](https://lrbalt.github.io/libsoxr-rs/libsoxr/).
//!
//! # Install
//!
//! add the following to your Cargo.toml:
//! ```toml
//! [dependencies]
//! libsoxr = "0.2"
//! ```
//!
//! # Example
//!
//! ```rust
//! # use libsoxr::Soxr;
//! // 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)
//! }
//! ```
#[macro_use]
extern crate bitflags;
pub mod datatype;
pub mod soxr;
pub mod spec;
mod error_handling;
mod wrapper_helpers;
pub use crate::{
datatype::Datatype,
error_handling::{Error, ErrorType, Result},
soxr::{Soxr, SoxrFunction},
spec::{IOSpec, QualityFlags, QualityRecipe, QualitySpec, RuntimeSpec},
};