- Don't panic when device is plugged out on Windows
- Update
parking_lot
dependency
- Add Android support via
oboe-rs
. - Add Android APK build an CI job.
- Bugfix release to get the asio feature working again.
- Large refactor removing the blocking EventLoop API.
- Rename many
Format
types toStreamConfig
:Format
type'sdata_type
field renamed tosample_format
.Shape
->StreamConfig
- The configuration input required to build a stream.Format
->SupportedStreamConfig
- Describes a single supported stream configuration.SupportedFormat
->SupportedStreamConfigRange
- Describes a range of supported configurations.Device::default_input/output_format
->Device::default_input/output_config
.Device::supported_input/output_formats
->Device::supported_input/output_configs
.Device::SupportedInput/OutputFormats
->Device::SupportedInput/OutputConfigs
.SupportedFormatsError
->SupportedStreamConfigsError
DefaultFormatError
->DefaultStreamConfigError
BuildStreamError::FormatNotSupported
->BuildStreamError::StreamConfigNotSupported
- Address deprecated use of
mem::uninitialized
in WASAPI. - Removed
UnknownTypeBuffer
in favour of specifying sample type. - Added
build_input/output_stream_raw
methods allowing for dynamically handling sample format type. - Added support for DragonFly platform.
- Add
InputCallbackInfo
andOutputCallbackInfo
types and update expected user data callback function signature to provide these.
- Fix some underruns that could occur in ALSA.
- Add name to
HostId
. - Use
snd_pcm_hw_params_set_buffer_time_near
rather thanset_buffer_time_max
in ALSA backend. - Remove many uses of
std::mem::uninitialized
. - Fix WASAPI capture logic.
- Panic on stream ID overflow rather than returning an error.
- Use
ringbuffer
crate in feedback example. - Move errors into a separate module.
- Switch from
failure
tothiserror
for error handling. - Add
winbase
winapi feature to solve windows compile error issues. - Lots of CI improvements.
- core-foundation-sys and coreaudio-rs version bumps.
- Add an ASIO host, available under Windows.
- Introduce a new Host API, adding support for alternative audio APIs.
- Remove sleep loop on macOS in favour of using a
Condvar
. - Allow users to handle stream callback errors with a new
StreamEvent
type. - Overhaul error handling throughout the crate.
- Remove unnecessary Mutex from ALSA and WASAPI backends in favour of channels.
- Remove
panic!
from OutputBuffer Deref impl as it is no longer necessary.
- Better buffer handling
- Fix logic error in frame/sample size
- Added error handling for unknown ALSA device errors
- Fix resuming a paused stream on Windows (wasapi).
- Implement
default_output_format
for emscripten backend.
- Fix the handling of non-default sample rates for coreaudio input streams.
- Add
record_wav.rs
example. Records 3 seconds to$CARGO_MANIFEST_DIR/recorded.wav
using default input device. - Update
enumerate.rs
example to display default input/output devices and formats. - Add input stream support to coreaudio, alsa and windows backends.
- Introduce
StreamData
type for handling either input or output streams inEventLoop::run
callback. - Add
Device::supported_{input/output}_formats
methods. - Add
Device::default_{input/output}_format
methods. - Add
default_{input/output}_device
functions. - Replace usage of
Voice
withStream
throughout the crate. - Remove
Endpoint
in favour ofDevice
for supporting both input and output streams.
- Rename
ChannelsCount
toChannelCount
. - Rename
SamplesRate
toSampleRate
. - Rename the
min_samples_rate
field ofSupportedFormat
tomin_sample_rate
- Rename the
with_max_samples_rate()
method ofSupportedFormat
towith_max_sample_rate()
- Rename the
samples_rate
field ofFormat
tosample_rate
- Changed the type of the
channels
field of theSupportedFormat
struct fromVec<ChannelPosition>
toChannelCount
(an alias tou16
) - Remove unused ChannelPosition API.
- Implement
Endpoint
andFormat
Enumeration for macos. - Implement format handling for macos
build_voice
method.
- Changed the emscripten backend to consume less CPU.
- Added improvements to the crate documentation.
- Implement
pause
andplay
for ALSA backend. - Reduced the number of allocations in the CoreAudio backend.
- Fixes for macos build (#186, #189).
- Added
Sample::to_i16()
,Sample::to_u16()
andSample::from
.
- Removed the dependency on the
futures
library. - Removed the
Voice
andSamplesStream
types. - Added
EventLoop::build_voice
,EventLoop::destroy_voice
,EventLoop::play
, andEventLoop::pause
that can be used to create, destroy, play and pause voices. - Added a
VoiceId
struct that is now used to identify a voice owned by anEventLoop
. - Changed
EventLoop::run()
to take a callback that is called whenever a voice requires sound data. - Changed
supported_formats()
to produce a list ofSupportedFormat
instead ofFormat
. ASupportedFormat
must then be turned into aFormat
in order to build a voice.