symphonium 0.9.1

An unofficial easy-to-use wrapper around Symphonia for loading audio files
Documentation
use std::num::NonZeroU32;

pub use fixed_resample;
pub use fixed_resample::ResampleQuality;
use fixed_resample::{PacketResampler, Sequential};

#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct ResamplerKey {
    pub source_sample_rate: NonZeroU32,
    pub target_sample_rate: NonZeroU32,
    pub channels: u16,
    pub quality: u16,
}

impl ResamplerKey {
    pub fn create_resampler(&self) -> PacketResampler<f32, Sequential<f32>> {
        PacketResampler::new(
            self.channels as usize,
            self.source_sample_rate.get(),
            self.target_sample_rate.get(),
            fixed_resample::ResamplerConfig {
                quality: match self.quality {
                    0 => ResampleQuality::VeryLow,
                    1 => ResampleQuality::Low,
                    2 => ResampleQuality::High,
                    _ => ResampleQuality::HighWithLowLatency,
                },
                ..Default::default()
            },
        )
    }
}