Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rename Stream to Resampler #23

Merged
merged 2 commits into from
Oct 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions examples/mix.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use std::num::NonZeroU32;

use fon::{
samp::{Samp32, Sample},
Audio, Frame, Sink, Stream,
Audio, Frame, Resampler, Sink,
};

#[derive(Debug)]
Expand Down Expand Up @@ -105,7 +105,7 @@ fn main() -> std::io::Result<()> {
let mut mixer = Mixer::new(&mut out);

// Create a stream to convert to 48k
let mut stream = Stream::<2>::new(48_000);
let mut stream = Resampler::<2>::new(48_000);
stream.pipe(&source, &mut mixer);
stream.flush(&mut mixer);

Expand Down
6 changes: 3 additions & 3 deletions src/audio.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ use crate::math::Libm;
use crate::{
frame::Frame,
samp::{Samp16, Samp24, Samp32, Samp64, Sample},
Sink, Stream,
Resampler, Sink,
};

/// Audio buffer (fixed-size array of audio [`Frame`](crate::frame::Frame)s at
Expand Down Expand Up @@ -60,7 +60,7 @@ impl<Samp: Sample, const COUNT: usize> Audio<Samp, COUNT> {
let len =
audio.len() as f64 * hz as f64 / audio.sample_rate().get() as f64;
let mut output = Self::with_silence(hz, len.ceil() as usize);
let mut stream = Stream::new(hz);
let mut stream = Resampler::new(hz);
let mut sink =
crate::SinkTo::<_, Samp, _, COUNT, N>::new(output.sink());
stream.pipe(audio, &mut sink);
Expand Down Expand Up @@ -130,7 +130,7 @@ impl<Samp: Sample, const COUNT: usize> Audio<Samp, COUNT> {
}
}

/// Sink audio into this audio buffer from a `Stream`.
/// Sink audio into this audio buffer from a [`Resampler`].
#[inline(always)]
pub fn sink(&mut self) -> AudioSink<'_, Samp, COUNT> {
AudioSink {
Expand Down
4 changes: 2 additions & 2 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -100,13 +100,13 @@ mod audio;
mod frame;
mod math;
mod private;
mod resampler;
mod sink;
mod stream;

pub mod pos;
pub mod samp;

pub use audio::{Audio, AudioSink};
pub use frame::Frame;
pub use resampler::Resampler;
pub use sink::{Sink, SinkTo};
pub use stream::Stream;
21 changes: 6 additions & 15 deletions src/stream.rs → src/resampler.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use alloc::vec::Vec;
use core::{mem, num::NonZeroU32};
use core::{array, mem, num::NonZeroU32};

use crate::{
frame::Frame,
Expand All @@ -21,39 +21,30 @@ const WINDOW_FN_KAISER_TABLE: &[f64] = &[
];
const WINDOW_FN_OVERSAMPLE: usize = 32;

/// Stream resampler.
/// Resampler stream
#[derive(Debug)]
pub struct Stream<const N: usize> {
pub struct Resampler<const N: usize> {
/// Target sample rate (constant).
output_sample_rate: u32,
/// Source sample rate (changeable)
input_sample_rate: Option<NonZeroU32>,
/// Simplified ratio of input ÷ output samples.
ratio: (u32, u32),
/// Sample data.
samples: [Resampler32; 8],
samples: [Resampler32; N],
/// Calculated input latency for resampler.
input_latency: u32,
}

impl<const N: usize> Stream<N> {
impl<const N: usize> Resampler<N> {
/// Create a new stream at target sample rate.
pub fn new(target_hz: u32) -> Self {
assert_ne!(target_hz, 0);
Self {
output_sample_rate: target_hz,
input_sample_rate: None,
ratio: (0, 1),
samples: [
Default::default(),
Default::default(),
Default::default(),
Default::default(),
Default::default(),
Default::default(),
Default::default(),
Default::default(),
],
samples: array::from_fn(|_| Default::default()),
input_latency: 0,
}
}
Expand Down
File renamed without changes.
File renamed without changes.
Loading