Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
d9818ce
feat(decoders)!: implement comprehensive seeking and bit depth detect…
roderickvd Aug 7, 2025
a2fc272
adds mic docs & example + fixes mic yielding zeros
dvdsk Aug 22, 2025
5253ff2
ci: add silent MP3 file and test for decoder silence (#411)
roderickvd Aug 24, 2025
2bea71c
fix: MP3 format probe to reject WAV files with minimp3
roderickvd Aug 24, 2025
16c3673
feat: add Decoder support for Bytes, Arc, Box, and Vec types
roderickvd Aug 25, 2025
5e815ad
docs: add doc(cfg(...)) attributes for docsrs feature documentation
roderickvd Aug 25, 2025
5474b22
docs: rewrite and clarify decoder documentation and API comments
roderickvd Aug 31, 2025
81e23f6
feat: add bits_per_sample method to Microphone source
roderickvd Aug 31, 2025
1b66519
refactor: use BitDepth for bits_per_sample
roderickvd Sep 5, 2025
4187282
refactor: use Decoder::try_from<Path> for file loading in examples an…
roderickvd Sep 6, 2025
4f5dd27
refactor: address review comments
roderickvd Sep 13, 2025
e01f1a2
refactor: move LoopedDecoder to its own module and refactor construction
roderickvd Sep 13, 2025
924fa29
refactor: move ReadSeekSource into symphonia module
roderickvd Sep 13, 2025
712b61a
fix: import Settings from decoder::builder in decoder modules
roderickvd Sep 13, 2025
46ebd9e
style: reorder imports and clean up formatting in decoder modules
roderickvd Sep 13, 2025
5ecd76b
refactor: use SampleRate type throughout
roderickvd Sep 17, 2025
2d60713
fix: warnings with no default features
roderickvd Sep 17, 2025
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
47 changes: 39 additions & 8 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,27 +10,58 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Unreleased

### Added

- `Chirp` now implements `Iterator::size_hint` and `ExactSizeIterator`.
- Added `Red` noise generator that is more practical than `Brownian` noise.
- Added `std_dev()` to `WhiteUniform` and `WhiteTriangular`.
- Added a macro `nz!` which facilitates creating NonZero's for `SampleRate` and
`ChannelCount`.
- Adds a new input source: Microphone.
- Adds a new method on source: record which collects all samples into a
SamplesBuffer.
- Adds a new input source: `Microphone`.
- Adds a new method on source: `record` which collects all samples into a
`SamplesBuffer`.
- Adds `wav_to_writer` which writes a `Source` to a writer.
- All decoders implement `try_seek()`.
- Added `Source::bits_per_sample()` method for lossless formats (FLAC, WAV).
- Added `SeekMode` enum (`Fastest`/`Nearest`) and DecoderBuilder methods:
- `with_seek_mode()` - Configure seeking precision.
- `with_total_duration()` - Provide pre-computed duration to avoid scanning.
- `with_scan_duration()` - Enable file scanning for duration computation.
- All alternative decoders now support `Settings` via `new_with_settings()`.
- Symphonia decoder handles multi-track containers and chained Ogg streams.
- Added `Decoder::TryFrom` implementations for memory-based types:
- `Vec<u8>` - Decoding from owned byte vectors
- `Box<[u8]>` - Decoding from boxed byte slices
- `Arc<[u8]>` - Decoding from shared byte slices
- `&'static [u8]` - Decoding from embedded static data
- `Cow<'static, [u8]>` - Decoding from borrowed or owned byte data
- `bytes::Bytes` - Decoding from bytes crate (requires `bytes` feature)
- `&Path` and `PathBuf` - Convenient file path decoding with format hints
- `TryFrom<BufReader<R>>` and `TryFrom<Cursor<T>>` now use `DecoderBuilder` with optimized settings
instead of basic `Decoder::new()` - enabling seeking and byte length detection where possible.

### Changed
- `output_to_wav` renamed to `wav_to_file` and now takes ownership of the `Source`.
- `Blue` noise generator uses uniform instead of Gaussian noise for better performance.
- `Gaussian` noise generator has standard deviation of 0.6 for perceptual equivalence.
- Alternative decoders (`hound`, `claxon`, `lewton`, `minimp3`) now take precedence over Symphonia
decoders when both features are enabled.
- Breaking: `SeekError::NotSupported` renamed to `SeekError::SeekingNotSupported`.
- Improved `size_hint()` accuracy across all decoders.
- Improved decoder memory allocations and efficiency

### Deprecated
- `DecoderBuilder::with_coarse_seek()` in favor of `with_seek_mode(SeekMode::Fastest)`.

### Fixed
- docs.rs will now document all features, including those that are optional.
- `Chirp::next` now returns `None` when the total duration has been reached, and will work
correctly for a number of samples greater than 2^24.
- `PeriodicAccess` is slightly more accurate for 44.1 kHz sample rate families.
- Fixed Symphonia Ogg Vorbis decoder returning zero span length that broke buffered sources and
effects.

### Changed
- `output_to_wav` renamed to `wav_to_file` and now takes ownership of the `Source`.
- `Blue` noise generator uses uniform instead of Gaussian noise for better performance.
- `Gaussian` noise generator has standard deviation of 0.6 for perceptual equivalence.
### Removed
- `WavDecoder` no longer implements `ExactSizeIterator`.
- `Source::source_intact` removed.

## Version [0.21.1] (2025-07-14)

Expand Down
Loading
Loading