Skip to content

Commit

Permalink
replace DecoderSample with Sample (which is fixed as f32)
Browse files Browse the repository at this point in the history
  • Loading branch information
dvdsk committed Feb 23, 2025
1 parent 068b559 commit 496e122
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 31 deletions.
13 changes: 7 additions & 6 deletions src/decoder/flac.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,11 @@ use std::time::Duration;
use crate::source::SeekError;
use crate::Source;

use crate::common::{ChannelCount, SampleRate};
use crate::common::{ChannelCount, Sample, SampleRate};

use claxon::FlacReader;
use dasp_sample::{Sample, I24};

use super::DecoderSample;
use dasp_sample::Sample as _;
use dasp_sample::I24;

/// Decoder for the FLAC format.
pub struct FlacDecoder<R>
Expand Down Expand Up @@ -109,7 +108,7 @@ impl<R> Iterator for FlacDecoder<R>
where
R: Read + Seek,
{
type Item = DecoderSample;
type Item = Sample;

#[inline]
fn next(&mut self) -> Option<Self::Item> {
Expand All @@ -125,7 +124,9 @@ where
let real_val = match bits {
8 => (raw_val as i8).to_sample(),
16 => (raw_val as i16).to_sample(),
24 => I24::new(raw_val).unwrap_or(Sample::EQUILIBRIUM).to_sample(),
24 => I24::new(raw_val)
.unwrap_or(dasp_sample::Sample::EQUILIBRIUM)
.to_sample(),
32 => raw_val.to_sample(),
_ => {
// FLAC also supports 12 and 20 bits per sample. We use bit
Expand Down
9 changes: 3 additions & 6 deletions src/decoder/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,6 @@ mod vorbis;
#[cfg(all(feature = "wav", not(feature = "symphonia-wav")))]
mod wav;

/// Output format of the decoders.
pub type DecoderSample = Sample;

/// Source of audio samples from decoding a file.
///
/// Supports MP3, WAV, Vorbis and Flac.
Expand Down Expand Up @@ -71,7 +68,7 @@ where

impl<R: Read + Seek> DecoderImpl<R> {
#[inline]
fn next(&mut self) -> Option<DecoderSample> {
fn next(&mut self) -> Option<Sample> {
match self {
#[cfg(all(feature = "wav", not(feature = "symphonia-wav")))]
DecoderImpl::Wav(source) => source.next(),
Expand Down Expand Up @@ -399,7 +396,7 @@ impl<R> Iterator for Decoder<R>
where
R: Read + Seek,
{
type Item = DecoderSample;
type Item = Sample;

#[inline]
fn next(&mut self) -> Option<Self::Item> {
Expand Down Expand Up @@ -445,7 +442,7 @@ impl<R> Iterator for LoopedDecoder<R>
where
R: Read + Seek,
{
type Item = DecoderSample;
type Item = Sample;

#[inline]
fn next(&mut self) -> Option<Self::Item> {
Expand Down
12 changes: 6 additions & 6 deletions src/decoder/symphonia.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ use symphonia::{
default::get_probe,
};

use super::{DecoderError, DecoderSample};
use crate::common::{ChannelCount, SampleRate};
use super::DecoderError;
use crate::common::{ChannelCount, SampleRate, Sample};
use crate::{source, Source};

// Decoder errors are not considered fatal.
Expand All @@ -28,7 +28,7 @@ pub(crate) struct SymphoniaDecoder {
current_span_offset: usize,
format: Box<dyn FormatReader>,
total_duration: Option<Time>,
buffer: SampleBuffer<DecoderSample>,
buffer: SampleBuffer<Sample>,
spec: SignalSpec,
}

Expand Down Expand Up @@ -148,9 +148,9 @@ impl SymphoniaDecoder {
}

#[inline]
fn get_buffer(decoded: AudioBufferRef, spec: &SignalSpec) -> SampleBuffer<DecoderSample> {
fn get_buffer(decoded: AudioBufferRef, spec: &SignalSpec) -> SampleBuffer<Sample> {
let duration = units::Duration::from(decoded.capacity() as u64);
let mut buffer = SampleBuffer::<DecoderSample>::new(duration, *spec);
let mut buffer = SampleBuffer::<Sample>::new(duration, *spec);
buffer.copy_interleaved_ref(decoded);
buffer
}
Expand Down Expand Up @@ -320,7 +320,7 @@ fn time_to_duration(time: Time) -> Duration {
}

impl Iterator for SymphoniaDecoder {
type Item = DecoderSample;
type Item = Sample;

#[inline]
fn next(&mut self) -> Option<Self::Item> {
Expand Down
16 changes: 8 additions & 8 deletions src/decoder/vorbis.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@ use std::time::Duration;
use crate::source::SeekError;
use crate::Source;

use crate::common::{ChannelCount, SampleRate};
use crate::common::{ChannelCount, SampleRate, Sample};
use lewton::inside_ogg::OggStreamReader;
use lewton::samples::InterleavedSamples;

use super::DecoderSample;


/// Decoder for an OGG file that contains Vorbis sound format.
pub struct VorbisDecoder<R>
where
R: Read + Seek,
{
stream_reader: OggStreamReader<R>,
current_data: Vec<DecoderSample>,
current_data: Vec<Sample>,
next: usize,
}

Expand All @@ -35,15 +35,15 @@ where
}
pub fn from_stream_reader(mut stream_reader: OggStreamReader<R>) -> Self {
let mut data =
match stream_reader.read_dec_packet_generic::<InterleavedSamples<DecoderSample>>() {
match stream_reader.read_dec_packet_generic::<InterleavedSamples<Sample>>() {
Ok(Some(d)) => d.samples,
_ => Vec::new(),
};

// The first packet is always empty, therefore
// we need to read the second frame to get some data
if let Ok(Some(mut d)) =
stream_reader.read_dec_packet_generic::<InterleavedSamples<DecoderSample>>()
stream_reader.read_dec_packet_generic::<InterleavedSamples<Sample>>()
{
data.append(&mut d.samples);
}
Expand Down Expand Up @@ -106,7 +106,7 @@ impl<R> Iterator for VorbisDecoder<R>
where
R: Read + Seek,
{
type Item = DecoderSample;
type Item = Sample;

#[inline]
fn next(&mut self) -> Option<Self::Item> {
Expand All @@ -115,7 +115,7 @@ where
if self.current_data.is_empty() {
if let Ok(Some(data)) = self
.stream_reader
.read_dec_packet_generic::<InterleavedSamples<DecoderSample>>()
.read_dec_packet_generic::<InterleavedSamples<Sample>>()
{
self.current_data = data.samples;
self.next = 0;
Expand All @@ -125,7 +125,7 @@ where
} else {
if let Ok(Some(data)) = self
.stream_reader
.read_dec_packet_generic::<InterleavedSamples<DecoderSample>>()
.read_dec_packet_generic::<InterleavedSamples<Sample>>()
{
self.current_data = data.samples;
self.next = 0;
Expand Down
11 changes: 6 additions & 5 deletions src/decoder/wav.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@ use std::io::{Read, Seek, SeekFrom};
use std::time::Duration;

use crate::source::SeekError;
use crate::Source;
use crate::{Sample, Source};

use crate::common::{ChannelCount, SampleRate};

use dasp_sample::{Sample, I24};
use dasp_sample::Sample as _;
use dasp_sample::I24;
use hound::{SampleFormat, WavReader};

use super::DecoderSample;


/// Decoder for the WAV format.
pub struct WavDecoder<R>
Expand Down Expand Up @@ -76,7 +77,7 @@ impl<R> Iterator for SamplesIterator<R>
where
R: Read + Seek,
{
type Item = DecoderSample;
type Item = Sample;

#[inline]
fn next(&mut self) -> Option<Self::Item> {
Expand Down Expand Up @@ -196,7 +197,7 @@ impl<R> Iterator for WavDecoder<R>
where
R: Read + Seek,
{
type Item = DecoderSample;
type Item = Sample;

#[inline]
fn next(&mut self) -> Option<Self::Item> {
Expand Down

0 comments on commit 496e122

Please sign in to comment.