audio_samples_streaming 0.1.0

Chunk-based audio streaming for Rust, built on audio_samples (core audio representation and processing) and audio_samples_io. Streams AudioSamples buffers through a unified AudioStream/AudioSink trait pair; WAV, FLAC, hardware devices, rodio, and async.
Documentation
[package]
name = "audio_samples_streaming"
version = "0.1.0"
edition = "2024"
authors = ["Jack Geraghty <jgeraghty049@gmail.com>"]
license = "MIT"
readme = "README.md"
description = "Chunk-based audio streaming for Rust, built on audio_samples (core audio representation and processing) and audio_samples_io. Streams AudioSamples buffers through a unified AudioStream/AudioSink trait pair; WAV, FLAC, hardware devices, rodio, and async."
repository = "https://github.com/jmg049/audio_samples_streaming"
homepage = "https://github.com/jmg049/audio_samples_streaming"
documentation = "https://docs.rs/audio_samples_streaming"
keywords = ["audio", "streaming", "dsp", "wav", "cpal"]
categories = ["multimedia", "multimedia::audio", "asynchronous"]
exclude = ["/examples/*", "/benches/*", "/target/*", "*.wav", "*.flac"]

[package.metadata.docs.rs]
features = ["wav", "flac", "device", "rodio", "async"]
rustdoc-args = ["--cfg", "docsrs"]

[dependencies]
audio_samples = { version = "1.0.6", features = ["fixed-size-audio"] }
audio_samples_io = { version = "0.2.0", default-features = false }
thiserror = "2"
non-empty-slice = "0.5"

[dependencies.cpal]
version = "0.17.3"
optional = true

[dependencies.rtrb]
version = "0.3.4"
optional = true

[dependencies.libc]
version = "0.2"
optional = true

[dependencies.rodio]
version = "0.22.2"
optional = true
default-features = false
features = ["playback"]

[dependencies.futures-core]
version = "0.3"
optional = true

[features]
default = []
wav   = ["audio_samples_io/wav"]
flac  = ["audio_samples_io/flac"]
device = ["dep:cpal", "dep:rtrb", "dep:libc"]
rodio = ["dep:rodio"]
async = ["dep:futures-core"]

[[example]]
name = "file_to_file"
required-features = ["wav"]

[[example]]
name = "manual_loop"
required-features = ["wav"]

[[example]]
name = "device_capture"
required-features = ["device", "wav"]

[[example]]
name = "device_playback"
required-features = ["device", "wav"]

[[example]]
name = "device_passthrough"
required-features = ["device"]

[[example]]
name = "rodio_source"
required-features = ["rodio", "wav"]

[[example]]
name = "async_stream"
required-features = ["async", "wav"]

[dev-dependencies]
criterion = { version = "0.8.2" }

[[bench]]
name = "device_io"
harness = false
required-features = ["device"]

[[bench]]
name = "interleave"
harness = false

[profile.release]
lto           = "thin"
codegen-units = 1
panic         = "abort"

[profile.bench]
inherits = "release"
debug    = true