| Lift freeq's AV media plane out of sleek 90f8b89 nandi 20d ago | 1 | # Changelog |
| 2 | |
| 3 | All notable changes to this project will be documented in this file. |
| 4 | |
| 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), |
| 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | |
| 8 | ## [Unreleased] |
| 9 | |
| 10 | ### Added |
| 11 | |
| 12 | - `DeviceBusy` error variant to `SupportedStreamConfigsError`, `DefaultStreamConfigError`, and |
| 13 | `BuildStreamError` for retryable device access errors (EBUSY, EAGAIN). |
| 14 | - `StreamConfig` now implements `Copy`. |
| 15 | - `StreamTrait::buffer_size()` to query the stream's current buffer size in frames per callback. |
| 16 | - `device_by_id` is now dispatched to each backend's implementation, allowing to override it. |
| 17 | - **ALSA**: `device_by_id` now accepts PCM shorthand names such as `hw:0,0` and `plughw:foo`. |
| 18 | - **PipeWire**: New host for Linux and some BSDs using the PipeWire API. |
| 19 | - **PulseAudio**: New host for Linux and some BSDs using the PulseAudio API. |
| 20 | |
| 21 | ### Changed |
| 22 | |
| 23 | - Public error enums are now marked `#[non_exhaustive]` to allow adding variants without |
| 24 | SemVer-breaking changes. |
| 25 | - `DeviceTrait::build_*_stream` now takes `StreamConfig` by value instead of `&StreamConfig` |
| 26 | - **AAudio**: Device names now include the device type suffix (e.g. "Speaker (Builtin Speaker)") |
| 27 | for easier identification when enumerating devices. |
| 28 | - **AAudio**: `supported_input_configs` and `supported_output_configs` now return an error for |
| 29 | direction-mismatched devices (e.g. querying input configs on an output-only device) instead of |
| 30 | silently returning an empty list. |
| 31 | - **AAudio**: Bump MSRV to 1.85. |
| 32 | - **AAudio**: Buffers with default sizes are now dynamically tuned. |
| 33 | - **ALSA**: Device disconnection now stops the stream with `StreamError::DeviceNotAvailable` instead of looping. |
| 34 | - **ALSA**: Polling errors trigger underrun recovery instead of looping. |
| 35 | - **ALSA**: Try to resume from hardware after a system suspend. |
| 36 | - **ALSA**: Loop partial reads and writes to completion. |
| 37 | - **ALSA**: Prevent reentrancy issues with non-reentrant plugins and devices. |
| 38 | - **ASIO**: `Device::driver`, `asio_streams`, and `current_callback_flag` are no longer `pub`. |
| 39 | - **ASIO**: Timestamps now include driver-reported hardware latency. |
| 40 | - **ASIO**: Hardware latency is now re-queried when the driver reports `kAsioLatenciesChanged`. |
| 41 | - **ASIO**: Stream error callback now receives `StreamError::BufferUnderrun` on `kAsioResyncRequest`. |
| 42 | - **ASIO**: Stream error callback now receives `StreamError::StreamInvalidated` when the driver reports a sample rate change (`sampleRateDidChange`) of 1 Hz or more from the configured rate. |
| 43 | - **CoreAudio**: Timestamps now include device latency and safety offset. |
| 44 | - **JACK**: Timestamps now use the precise hardware deadline. |
| 45 | - **Linux/BSD**: Default host in order from first to last available now is: PipeWire, PulseAudio, ALSA. |
| 46 | - **WASAPI**: Timestamps now include hardware pipeline latency. |
| 47 | - **WebAudio**: Bump MSRV to 1.85. |
| 48 | - **WebAudio**: Timestamps now include base and output latency. |
| 49 | - **WebAudio**: Initial buffer scheduling offset now scales with buffer duration. |
| 50 | |
| 51 | ### Fixed |
| 52 | |
| 53 | - Reintroduce `audio_thread_priority` feature. |
| 54 | - Fix numeric overflows in calls to create `StreamInstant` in ASIO, CoreAudio and JACK. |
| 55 | - **AAudio**: Fix thread lock when a stream is dropped before it fully starts. |
| 56 | - **AAudio**: Fix invalid capture and playback timestamps. |
| 57 | - **ALSA**: Fix capture stream hanging or spinning on overruns. |
| 58 | - **ALSA**: Fix non-monotonic `StreamInstant` during stream startup. |
| 59 | - **ALSA**: Fix spurious timestamp errors during stream startup. |
| 60 | - **ALSA**: Fix spurious timeout errors during polling. |
| 61 | - **ALSA**: Fix rare panics when dropping the stream is interrupted. |
| 62 | - **ALSA**: Fix timestamp overflows on 32-bit platforms. |
| 63 | - **ASIO**: Fix enumeration returning only the first device when using `collect`. |
| 64 | - **ASIO**: Fix device enumeration and stream creation failing when called from spawned threads. |
| 65 | - **ASIO**: Fix buffer size not resizing when the driver reports `kAsioBufferSizeChange`. |
| 66 | - **ASIO**: Fix latency not updating when the driver reports `kAsioLatenciesChanged`. |
| 67 | - **ASIO**: Fix distortion when buggy drivers fire the buffer callback multiple times per cycle. |
| 68 | - **CoreAudio**: Fix undefined behaviour and silent failure in loopback device creation. |
| 69 | - **Emscripten**: Fix build failure introduced by newer `wasm-bindgen` versions. |
| 70 | - **JACK**: Fix input capture timestamp using callback execution time instead of cycle start. |
| 71 | |
| 72 | ## [0.17.3] - 2026-02-18 |
| 73 | |
| 74 | ### Changed |
| 75 | |
| 76 | - Reverted SemVer-breaking `DeviceBusy` error variant addition. |
| 77 | |
| 78 | ### Fixed |
| 79 | |
| 80 | - **ASIO**: Fix linker errors. |
| 81 | |
| 82 | ## [0.17.2] - 2026-02-08 [YANKED] |
| 83 | |
| 84 | ### Added |
| 85 | |
| 86 | - `DeviceBusy` error variant for retriable device access errors (EBUSY, EAGAIN). |
| 87 | - **ALSA**: `Debug` implementations for `Host`, `Device`, `Stream`, and internal types. |
| 88 | - **ALSA**: Example demonstrating ALSA error suppression during enumeration. |
| 89 | - **ALSA**: Support for native DSD playback. |
| 90 | - **WASAPI**: Enable as-necessary resampling in the WASAPI server process. |
| 91 | |
| 92 | ### Changed |
| 93 | |
| 94 | - Bump overall MSRV to 1.78. |
| 95 | - **ALSA**: Update `alsa` dependency to 0.11. |
| 96 | - **ALSA**: Bump MSRV to 1.82. |
| 97 | - **CoreAudio**: Update `core-audio-rs` dependency to 0.14. |
| 98 | |
| 99 | ### Fixed |
| 100 | |
| 101 | - **ALSA**: Enumerating input and output devices no longer interferes with each other. |
| 102 | - **ALSA**: Device handles are no longer exclusively held between operations. |
| 103 | - **ALSA**: Reduce Valgrind memory leak reports from ALSA global configuration cache. |
| 104 | - **ALSA**: Fix possible race condition on drop. |
| 105 | - **ALSA**: Fix audio callback stalling when start threshold is not met. |
| 106 | |
| 107 | ## [0.17.1] - 2026-01-04 |
| 108 | |
| 109 | ### Added |
| 110 | |
| 111 | - **ALSA**: `Default` implementation for `Device` (returns the ALSA "default" device). |
| 112 | - **CI**: Checks default/no-default/all feature sets with platform-dependent MSRV for JACK. |
| 113 | |
| 114 | ### Changed |
| 115 | |
| 116 | - **ALSA**: Devices now report direction from hint metadata and physical hardware probing. |
| 117 | |
| 118 | ### Fixed |
| 119 | |
| 120 | - **ALSA**: Device enumeration now includes both hints and physical cards. |
| 121 | - **JACK**: No longer builds on iOS. |
| 122 | - **WASM**: WasmBindgen no longer crashes (regression from 0.17.0). |
| 123 | |
| 124 | ## [0.17.0] - 2025-12-20 |
| 125 | |
| 126 | ### Added |
| 127 | |
| 128 | - `DeviceTrait::id` method that returns a stable audio device ID. |
| 129 | - `HostTrait::device_by_id` to select a device by its stable ID. |
| 130 | - `Display` and `FromStr` implementations for `HostId`. |
| 131 | - Support for custom `Host`s, `Device`s, and `Stream`s. |
| 132 | - `Sample::bits_per_sample` method. |
| 133 | - `Copy` implementation to `InputCallbackInfo` and `OutputCallbackInfo`. |
| 134 | - `StreamError::StreamInvalidated` variant for when stream must be rebuilt. |
| 135 | - `StreamError::BufferUnderrun` variant for buffer underrun/overrun notifications. |
| 136 | - `Hash` implementation to `Device` for all backends. |
| 137 | - **AAudio**: `Send` and `Sync` implementations to `Stream`. |
| 138 | - **AAudio**: Support for 12 and 24 kHz sample rates. |
| 139 | - **ALSA**: `I24` and `U24` sample format support (24-bit samples stored in 4 bytes). |
| 140 | - **ALSA**: Support for 12, 24, 352.8, 384, 705.6, and 768 kHz sample rates. |
| 141 | - **ALSA**: `Eq` and `PartialEq` implementations to `Device`. |
| 142 | - **CI**: Native ARM64 Linux support in GitHub Actions. |
| 143 | - **CoreAudio**: `i8`, `i32` and `I24` sample format support (24-bit samples stored in 4 bytes). |
| 144 | - **CoreAudio**: Support for loopback recording (recording system audio output) on macOS > 14.6. |
| 145 | - **CoreAudio**: `Send` implementation to `Stream`. |
| 146 | - **Emscripten**: `BufferSize::Fixed` validation against supported range. |
| 147 | - **iOS**: Complete AVAudioSession integration for device enumeration and buffer size control. |
| 148 | - **JACK**: Support for macOS and Windows platforms. |
| 149 | - **JACK**: `BufferSize::Fixed` validation to reject requests that don't match server buffer size. |
| 150 | - **WASAPI**: Expose `IMMDevice` from WASAPI host Device. |
| 151 | - **WASAPI**: `I24` and `U24` sample format support (24-bit samples stored in 4 bytes). |
| 152 | - **WASAPI**: `Send` and `Sync` implementations to `Stream`. |
| 153 | - **WebAudio**: `Send` and `Sync` implementations to `Stream`. |
| 154 | - **WebAudio**: `BufferSize::Fixed` validation against supported range. |
| 155 | |
| 156 | ### Changed |
| 157 | |
| 158 | - MSRV depends on the platform and at minimum 1.77. |
| 159 | - Set examples to Rust 2021. |
| 160 | - `SampleRate` from struct to `u32` type alias. |
| 161 | - Update `audio_thread_priority` to 0.34. |
| 162 | - Migrate CHANGELOG to [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) format. |
| 163 | - **AAudio**: Configure buffer to ensure consistent callback buffer sizes. |
| 164 | - **AAudio**: Buffer size range detection to query the AudioService property correctly. |
| 165 | - **ALSA**: Improve `BufferSize::Fixed` precision and audio callback performance. |
| 166 | - **ALSA**: `BufferSize::Default` to use the device defaults. |
| 167 | - **ALSA**: Card enumeration to work like `aplay -L` does. |
| 168 | - **ALSA**: Update `alsa` to 0.10. |
| 169 | - **ALSA**: Pass `silent=true` to `PCM.try_recover`, so it doesn't write to stderr. |
| 170 | - **ALSA**: Report buffer underruns/overruns via `StreamError::BufferUnderrun`. |
| 171 | - **ASIO**: Share `sys::Asio` instance across all `Host` instances. |
| 172 | - **CI**: Fix cargo publish to trigger on GitHub releases instead of every master commit. |
| 173 | - **CI**: Replace cargo install commands with cached tool installation for faster builds. |
| 174 | - **CI**: Update actions to latest versions (checkout@v5, rust-cache@v2). |
| 175 | - **CI**: Verify compatibility with windows crates since v0.59. |
| 176 | - **CI**: Test platforms on appropriate MSRV per backend. |
| 177 | - **CI**: Fix `cargo update` syntax for compatibility with Cargo 1.70 (use `-p` flag instead of positional argument). |
| 178 | - **CoreAudio**: `Device::supported_configs` to return a single element containing the available sample rate range when all elements have the same `mMinimum` and `mMaximum` values. |
| 179 | - **CoreAudio**: Default audio device detection to be lazy when building a stream, instead of during device enumeration. |
| 180 | - **CoreAudio**: Configure device buffer to ensure predictable callback buffer sizes. |
| 181 | - **CoreAudio**: Remove `Clone` implementation from `Stream`. |
| 182 | - **JACK**: Use `StreamError::StreamInvalidated` for JACK server sample rate changes. |
| 183 | - **JACK**: Report buffer underruns/overruns via `StreamError::BufferUnderrun`. |
| 184 | - **WASAPI**: Update `windows` to >= 0.59, <= 0.62. |
| 185 | |
| 186 | ### Fixed |
| 187 | |
| 188 | - **ALSA**: Format selection to probe hardware endianness instead of assuming native byte order. |
| 189 | - **ALSA**: Data race in stream shutdown. |
| 190 | - **ASIO**: Handling for `kAsioResetRequest` message to prevent driver UI becoming unresponsive. |
| 191 | - **ASIO**: Buffer silencing logic to work with non-conformant drivers (e.g., FL Studio ASIO). |
| 192 | - **CoreAudio**: Timestamp accuracy. |
| 193 | - **CoreAudio**: Segfaults when enumerating devices. |
| 194 | - **CoreAudio**: Undefined behavior related to null pointers and aligned reads. |
| 195 | - **CoreAudio**: Unnecessary microphone permission requests when using output devices only. |
| 196 | - **iOS**: Example by properly activating audio session. |
| 197 | |
| 198 | ### Removed |
| 199 | |
| 200 | - **WebAudio**: Optional `wee-alloc` feature for security reasons. |
| 201 | |
| 202 | ## [0.16.0] - 2025-06-07 |
| 203 | |
| 204 | ### Added |
| 205 | |
| 206 | - Optional `supports_input`/`output` methods to `DeviceTrait`. |
| 207 | - 384000Hz to `COMMON_SAMPLE_RATES`. |
| 208 | - Constructors for `InputCallbackInfo`, `OutputCallbackInfo` and `StreamInstant`. |
| 209 | - `Default` impl for `Host`. |
| 210 | - `PartialOrd`, `Ord` and `Hash` implementations for `SampleFormat`. |
| 211 | - `Clone`, `PartialEq`, `Eq` and `Hash` implementations for all error enums. |
| 212 | - **ASIO**: Support for int24. |
| 213 | |
| 214 | ### Changed |
| 215 | |
| 216 | - **AAudio**: Migrate from `oboe` to `ndk::audio`. **NOTE:** This raises the minimum Android API version to 26 (Android 8/Oreo). |
| 217 | - **AAudio**: Improve device names. |
| 218 | - **ALSA**: Set realtime priority for stream threads. |
| 219 | - **ALSA**: Improved card enumeration. |
| 220 | - **CoreAudio**: Update `coreaudio-rs` dependency to 0.13. |
| 221 | - **JACK**: Update `jack` dependency to 0.13. |
| 222 | - **WASAPI**: Set realtime priority for stream threads. |
| 223 | |
| 224 | ### Fixed |
| 225 | |
| 226 | - **ALSA**: Don't panic when handling invalid stream timestamps. |
| 227 | - **ALSA**: Fix infinite loop on broken pipes. |
| 228 | - **ASIO**: Fix build failure on Windows. |
| 229 | - **CoreAudio**: Fix callback being called after dropping the stream. |
| 230 | - **CoreAudio**: Fix non-default audio output. |
| 231 | - **CoreAudio**: Fix handling of integer input formats. |
| 232 | - **WASAPI**: Fixed memory leak. |
| 233 | - **WASAPI**: Remove usage of `eval`. |
| 234 | |
| 235 | ## [0.15.3] - 2024-03-04 |
| 236 | |
| 237 | ### Added |
| 238 | |
| 239 | - `try_with_sample_rate`, a non-panicking variant of `with_sample_rate`. |
| 240 | - `#[must_use]` attribute to struct `platform::Stream`. |
| 241 | - `Copy` implementation to enum `SupportedBufferSize` and struct `SupportedStreamConfigRange`. |
| 242 | - `Clone` implementation to `platform::Device`. |
| 243 | |
| 244 | ### Changed |
| 245 | |
| 246 | - **AAudio**: Update `jni` dependency to 0.21. |
| 247 | - **AAudio**: Update `oboe` dependency to 0.6. |
| 248 | - **AAudio**: Update `ndk` dependency to 0.8 and disable `default-features`. |
| 249 | - **ALSA**: Update `alsa` dependency to 0.9. |
| 250 | - **CI**: Update actions, use Android 30 API level in CI, remove `asmjs-unknown-emscripten` target. |
| 251 | - **Examples**: Migrate wasm example to `trunk`, improve syth-thones example. |
| 252 | - **WASAPI**: Update `windows` dependency to v0.54. |
| 253 | - **WebAudio**: Update `wasm-bindgen` to 0.2.89. |
| 254 | |
| 255 | ### Fixed |
| 256 | |
| 257 | - **WebAudio**: Crash on web/wasm when `atomics` flag is enabled. |
| 258 | |
| 259 | ### Removed |
| 260 | |
| 261 | - `parking_lot` dependency in favor of the std library. |
| 262 | |
| 263 | ## [0.15.2] - 2023-03-30 |
| 264 | |
| 265 | ### Added |
| 266 | |
| 267 | - **WebAudio**: Support for multichannel output streams. |
| 268 | |
| 269 | ### Changed |
| 270 | |
| 271 | - **WASAPI**: Update `windows` dependency. |
| 272 | |
| 273 | ### Fixed |
| 274 | |
| 275 | - **WASAPI**: Fix some thread panics. |
| 276 | |
| 277 | ## [0.15.1] - 2023-03-14 |
| 278 | |
| 279 | ### Added |
| 280 | |
| 281 | - **AAudio**: Feature `oboe-shared-stdcxx` to enable `shared-stdcxx` on `oboe` for Android support. |
| 282 | |
| 283 | ### Changed |
| 284 | |
| 285 | - **CoreAudio**: Switch `mach` dependency to `mach2`. |
| 286 | |
| 287 | ### Removed |
| 288 | |
| 289 | - `thiserror` dependency. |
| 290 | |
| 291 | ## [0.15.0] - 2023-01-29 |
| 292 | |
| 293 | ### Added |
| 294 | |
| 295 | - **CoreAudio**: Disconnection detection on Mac OS. |
| 296 | |
| 297 | ### Changed |
| 298 | |
| 299 | - Switch to the `dasp_sample` crate for the sample trait. |
| 300 | - Adopt edition 2021. |
| 301 | - **AAudio**: Update `oboe` dependency. |
| 302 | - **AAudio**: Update `alsa` dependency. |
| 303 | - **CoreAudio**: Update `coreaudio-sys` dependency. |
| 304 | - **Emscripten**: Switch to `web-sys` on the emscripten target. |
| 305 | - **JACK**: Update `jack` dependency. |
| 306 | - **WASAPI**: Update `windows-rs` dependency. |
| 307 | |
| 308 | ## [0.14.2] - 2022-12-02 |
| 309 | |
| 310 | ### Removed |
| 311 | |
| 312 | - `nix` dependency. |
| 313 | |
| 314 | ## [0.14.1] - 2022-10-23 |
| 315 | |
| 316 | ### Added |
| 317 | |
| 318 | - **ALSA**: Support for the 0.6.1 release of `alsa-rs`. |
| 319 | - **NetBSD**: Platform support. |
| 320 | |
| 321 | ### Changed |
| 322 | |
| 323 | - **CI**: Various improvements. |
| 324 | |
| 325 | ### Fixed |
| 326 | |
| 327 | - **ASIO**: Feature broken in 0.14.0. |
| 328 | |
| 329 | ## [0.14.0] - 2022-08-22 |
| 330 | |
| 331 | ### Changed |
| 332 | |
| 333 | - Update `parking_lot` and `once_cell` dependencies. |
| 334 | - **AAudio**: Turn `ndk-glue` into a dev-dependency and use `ndk-context` instead. |
| 335 | - **AAudio**: Update `ndk` and `ndk-glue` dependencies. |
| 336 | - **JACK**: Update `jack` dependency. |
| 337 | - **WASAPI**: Switch to `windows-rs` crate. |
| 338 | |
| 339 | ## [0.13.5] - 2022-01-28 |
| 340 | |
| 341 | ### Changed |
| 342 | |
| 343 | - Faster sample format conversion. |
| 344 | - **AAudio**: Update `ndk`, `oboe`, and `ndk-glue` dependencies. |
| 345 | - **ALSA**: Update `alsa` and `nix` dependencies. |
| 346 | - **JACK**: Update `jack` dependency. |
| 347 | |
| 348 | ## [0.13.4] - 2021-08-08 |
| 349 | |
| 350 | ### Changed |
| 351 | |
| 352 | - **AAudio**: Update `jni` dependency. |
| 353 | - **ALSA**: Improve stream setup parameters. |
| 354 | - **CoreAudio**: Update `core-foundation-sys` dependency. |
| 355 | - **JACK**: Update `rust-jack` dependency. |
| 356 | - **WASAPI**: Allow both threading models and switch the default to STA. |
| 357 | |
| 358 | ## [0.13.3] - 2021-03-29 |
| 359 | |
| 360 | ### Added |
| 361 | |
| 362 | - Give each thread a unique name. |
| 363 | |
| 364 | ### Fixed |
| 365 | |
| 366 | - **ALSA**: Fix distortion regression on some configs. |
| 367 | |
| 368 | ## [0.13.2] - 2021-03-16 |
| 369 | |
| 370 | ### Changed |
| 371 | |
| 372 | - **AAudio**: Update `ndk`, `nix`, `oboe`, and `jni` dependencies. |
| 373 | |
| 374 | ## [0.13.1] - 2020-11-08 |
| 375 | |
| 376 | ### Changed |
| 377 | |
| 378 | - Update `parking_lot` dependency. |
| 379 | |
| 380 | ### Fixed |
| 381 | |
| 382 | - **WASAPI**: Don't panic when device is plugged out on Windows. |
| 383 | |
| 384 | ## [0.13.0] - 2020-10-28 |
| 385 | |
| 386 | ### Added |
| 387 | |
| 388 | - **AAudio**: Android support via `oboe-rs`. |
| 389 | - **CI**: Android APK build and CI job. |
| 390 | |
| 391 | ## [0.12.1] - 2020-07-23 |
| 392 | |
| 393 | ### Fixed |
| 394 | |
| 395 | - **ASIO**: Bugfix release to get the asio feature working again. |
| 396 | |
| 397 | ## [0.12.0] - 2020-07-09 |
| 398 | |
| 399 | ### Added |
| 400 | |
| 401 | - `build_input/output_stream_raw` methods allowing for dynamically handling sample format type. |
| 402 | - `InputCallbackInfo` and `OutputCallbackInfo` types and update expected user data callback function signature to provide these. |
| 403 | - **DragonFly BSD**: Platform support. |
| 404 | |
| 405 | ### Changed |
| 406 | |
| 407 | - Large refactor removing the blocking EventLoop API. |
| 408 | - Rename many `Format` types to `StreamConfig`: |
| 409 | - `Format` type's `data_type` field renamed to `sample_format`. |
| 410 | - `Shape` -> `StreamConfig` - The configuration input required to build a stream. |
| 411 | - `Format` -> `SupportedStreamConfig` - Describes a single supported stream configuration. |
| 412 | - `SupportedFormat` -> `SupportedStreamConfigRange` - Describes a range of supported configurations. |
| 413 | - `Device::default_input/output_format` -> `Device::default_input/output_config`. |
| 414 | - `Device::supported_input/output_formats` -> `Device::supported_input/output_configs`. |
| 415 | - `Device::SupportedInput/OutputFormats` -> `Device::SupportedInput/OutputConfigs`. |
| 416 | - `SupportedFormatsError` -> `SupportedStreamConfigsError`. |
| 417 | - `DefaultFormatError` -> `DefaultStreamConfigError`. |
| 418 | - `BuildStreamError::FormatNotSupported` -> `BuildStreamError::StreamConfigNotSupported`. |
| 419 | - **WASAPI**: Address deprecated use of `mem::uninitialized`. |
| 420 | |
| 421 | ### Removed |
| 422 | |
| 423 | - `UnknownTypeBuffer` in favour of specifying sample type. |
| 424 | |
| 425 | ## [0.11.0] - 2019-12-11 |
| 426 | |
| 427 | ### Added |
| 428 | |
| 429 | - Name to `HostId`. |
| 430 | - **WASAPI**: `winbase` winapi feature to solve windows compile error issues. |
| 431 | |
| 432 | ### Changed |
| 433 | |
| 434 | - Remove many uses of `std::mem::uninitialized`. |
| 435 | - Panic on stream ID overflow rather than returning an error. |
| 436 | - Move errors into a separate module. |
| 437 | - Switch from `failure` to `thiserror` for error handling. |
| 438 | - **ALSA**: Use `snd_pcm_hw_params_set_buffer_time_near` rather than `set_buffer_time_max`. |
| 439 | - **CI**: Lots of improvements. |
| 440 | - **Examples**: Use `ringbuffer` crate in feedback example. |
| 441 | |
| 442 | ### Fixed |
| 443 | |
| 444 | - **ALSA**: Fix some underruns that could occur. |
| 445 | - **WASAPI**: Fix capture logic. |
| 446 | |
| 447 | ## [0.10.0] - 2019-07-05 |
| 448 | |
| 449 | ### Added |
| 450 | |
| 451 | - New Host API, adding support for alternative audio APIs. |
| 452 | - `StreamEvent` type to allow users to handle stream callback errors. |
| 453 | - **ASIO**: ASIO host, available under Windows. |
| 454 | |
| 455 | ### Changed |
| 456 | |
| 457 | - Remove sleep loop on macOS in favour of using a `Condvar`. |
| 458 | - Overhaul error handling throughout the crate. |
| 459 | - Remove `panic!` from OutputBuffer Deref impl as it is no longer necessary. |
| 460 | - **ALSA**: Remove unnecessary Mutex in favour of channels. |
| 461 | - **CoreAudio**: Update `core-foundation-sys` and `coreaudio-rs` dependencies. |
| 462 | - **WASAPI**: Remove unnecessary Mutex in favour of channels. |
| 463 | |
| 464 | ## [0.9.0] - 2019-06-06 |
| 465 | |
| 466 | ### Added |
| 467 | |
| 468 | - **ALSA**: Error handling for unknown device errors. |
| 469 | - **Emscripten**: `default_output_format` implementation. |
| 470 | |
| 471 | ### Changed |
| 472 | |
| 473 | - Better buffer handling. |
| 474 | |
| 475 | ### Fixed |
| 476 | |
| 477 | - Logic error in frame/sample size. |
| 478 | - **WASAPI**: Fix resuming a paused stream. |
| 479 | |
| 480 | ## [0.8.2] - 2018-07-03 |
| 481 | |
| 482 | ### Added |
| 483 | |
| 484 | - `Display` and `Error` implementations for `DefaultFormatError`. |
| 485 | |
| 486 | ### Changed |
| 487 | |
| 488 | - Upgrade `lazy_static` dependency. |
| 489 | |
| 490 | ## [0.8.1] - 2018-04-01 |
| 491 | |
| 492 | ### Fixed |
| 493 | |
| 494 | - **CoreAudio**: Handling of non-default sample rates for input streams. |
| 495 | |
| 496 | ## [0.8.0] - 2018-02-15 |
| 497 | |
| 498 | ### Added |
| 499 | |
| 500 | - `Device::supported_{input/output}_formats` methods. |
| 501 | - `Device::default_{input/output}_format` methods. |
| 502 | - `default_{input/output}_device` functions. |
| 503 | - `StreamData` type for handling either input or output streams in `EventLoop::run` callback. |
| 504 | - **ALSA**: Input stream support. |
| 505 | - **CoreAudio**: Input stream support. |
| 506 | - **Examples**: `record_wav.rs` example that records 3 seconds to `$CARGO_MANIFEST_DIR/recorded.wav` using default input device. |
| 507 | - **WASAPI**: Input stream support. |
| 508 | |
| 509 | ### Changed |
| 510 | |
| 511 | - Replace usage of `Voice` with `Stream` throughout the crate. |
| 512 | - **Examples**: Update `enumerate.rs` example to display default input/output devices and formats. |
| 513 | |
| 514 | ### Removed |
| 515 | |
| 516 | - `Endpoint` in favour of `Device` for supporting both input and output streams. |
| 517 | |
| 518 | ## [0.7.0] - 2018-02-04 |
| 519 | |
| 520 | ### Added |
| 521 | |
| 522 | - **CoreAudio**: `Endpoint` and `Format` enumeration for macOS. |
| 523 | - **CoreAudio**: Format handling for `build_voice` method. |
| 524 | |
| 525 | ### Changed |
| 526 | |
| 527 | - Rename `ChannelsCount` to `ChannelCount`. |
| 528 | - Rename `SamplesRate` to `SampleRate`. |
| 529 | - Rename the `min_samples_rate` field of `SupportedFormat` to `min_sample_rate`. |
| 530 | - Rename the `with_max_samples_rate()` method of `SupportedFormat` to `with_max_sample_rate()`. |
| 531 | - Rename the `samples_rate` field of `Format` to `sample_rate`. |
| 532 | - Changed the type of the `channels` field of the `SupportedFormat` struct from `Vec<ChannelPosition>` to `ChannelCount` (an alias to `u16`). |
| 533 | |
| 534 | ### Removed |
| 535 | |
| 536 | - Unused ChannelPosition API. |
| 537 | |
| 538 | ## [0.6.0] - 2017-12-11 |
| 539 | |
| 540 | ### Added |
| 541 | |
| 542 | - Improvements to the crate documentation. |
| 543 | - **ALSA**: `pause` and `play` support. |
| 544 | |
| 545 | ### Changed |
| 546 | |
| 547 | - **CoreAudio**: Reduced the number of allocations. |
| 548 | - **Emscripten**: Backend to consume less CPU. |
| 549 | |
| 550 | ### Fixed |
| 551 | |
| 552 | - **CoreAudio**: Fixes for macOS build (#186, #189). |
| 553 | |
| 554 | ## [0.5.1] - 2017-10-21 |
| 555 | |
| 556 | ### Added |
| 557 | |
| 558 | - `Sample::to_i16()`, `Sample::to_u16()` and `Sample::from` methods. |
| 559 | |
| 560 | ## [0.5.0] - 2017-10-21 |
| 561 | |
| 562 | ### Added |
| 563 | |
| 564 | - `EventLoop::build_voice`, `EventLoop::destroy_voice`, `EventLoop::play`, and `EventLoop::pause` methods. |
| 565 | - `VoiceId` struct that is now used to identify a voice owned by an `EventLoop`. |
| 566 | |
| 567 | ### Changed |
| 568 | |
| 569 | - `EventLoop::run()` to take a callback that is called whenever a voice requires sound data. |
| 570 | - `supported_formats()` to produce a list of `SupportedFormat` instead of `Format`. A `SupportedFormat` must then be turned into a `Format` in order to build a voice. |
| 571 | |
| 572 | ### Removed |
| 573 | |
| 574 | - Dependency on the `futures` library. |
| 575 | - `Voice` and `SamplesStream` types. |
| 576 | |
| 577 | ## [0.4.6] - 2017-10-11 |
| 578 | |
| 579 | ### Added |
| 580 | |
| 581 | - **iOS**: Minimal support. |
| 582 | |
| 583 | ### Changed |
| 584 | |
| 585 | - Run rustfmt on the code. |
| 586 | |
| 587 | ### Fixed |
| 588 | |
| 589 | - **BSD**: Fixes for *BSDs. |
| 590 | |
| 591 | ### Removed |
| 592 | |
| 593 | - `get_` prefix of methods. |
| 594 | |
| 595 | ## [0.4.5] - 2017-04-29 |
| 596 | |
| 597 | ### Changed |
| 598 | |
| 599 | - Simplify the Cargo.toml. |
| 600 | - **ALSA**: Bump alsa-sys version number. |
| 601 | - **ALSA**: Mark alsa-sys as linking to alsa. |
| 602 | |
| 603 | ### Fixed |
| 604 | |
| 605 | - **CoreAudio**: SampleStream also holds on to the AudioUnit so it is not dropped. |
| 606 | - **CoreAudio**: Fix for loop in EventLoop::run being optimised out in a release build on macOS. |
| 607 | |
| 608 | ### Removed |
| 609 | |
| 610 | - Stop publishing on gh-pages. |
| 611 | |
| 612 | ## [0.4.4] - 2017-02-04 |
| 613 | |
| 614 | ### Fixed |
| 615 | |
| 616 | - **ALSA**: Pass period instead of buffer to snd_pcm_sw_params_set_avail_min. |
| 617 | |
| 618 | ## [0.4.3] - 2017-02-01 |
| 619 | |
| 620 | ### Fixed |
| 621 | |
| 622 | - **ALSA**: Set sw_params_set_avail_min based on get_params buffer size. |
| 623 | |
| 624 | ## [0.4.2] - 2017-01-19 |
| 625 | |
| 626 | ### Added |
| 627 | |
| 628 | - **CoreAudio**: coreaudio-rs dependency for i686-apple-darwin. |
| 629 | |
| 630 | ### Deprecated |
| 631 | |
| 632 | - Mark deprecated functions as deprecated. |
| 633 | |
| 634 | ## [0.4.1] - 2016-11-16 |
| 635 | |
| 636 | ### Added |
| 637 | |
| 638 | - **ALSA**: Implement play and pause. |
| 639 | - **CoreAudio**: Implement play/pause. |
| 640 | |
| 641 | ### Fixed |
| 642 | |
| 643 | - **WASAPI**: Fix compilation on windows. |
| 644 | |
| 645 | ## [0.4.0] - 2016-10-01 |
| 646 | |
| 647 | ### Changed |
| 648 | |
| 649 | - **ALSA**: Update to futures 0.1.1. |
| 650 | - **WASAPI**: Update to futures 0.1.1. |
| 651 | |
| 652 | ### Fixed |
| 653 | |
| 654 | - **CoreAudio**: Do not lock inner twice. Fixes bug in osx futures 0.1.1 update. |
| 655 | - **CoreAudio**: Try fix the OSX code with futures. |
| 656 | |
| 657 | ## [0.3.1] - 2016-08-20 |
| 658 | |
| 659 | ### Added |
| 660 | |
| 661 | - **WASAPI**: Some documentation to the winapi implementation. |
| 662 | |
| 663 | ### Changed |
| 664 | |
| 665 | - **ALSA**: Bump alsa-sys to 0.1. |
| 666 | |
| 667 | ### Fixed |
| 668 | |
| 669 | - Fix #126. |
| 670 | - Fix most warnings. |
| 671 | |
| 672 | ## [0.3.0] - 2016-08-12 |
| 673 | |
| 674 | ### Added |
| 675 | |
| 676 | - **CoreAudio**: Update backend to new futures-rs oriented design. |
| 677 | |
| 678 | ### Changed |
| 679 | |
| 680 | - Update documentation. |
| 681 | - Use a max buffer size in order to avoid problems. |
| 682 | - Update deps. |
| 683 | - **ALSA**: Make it work on Linux. |
| 684 | - **Null**: Update the null implementation. |
| 685 | |
| 686 | ## [0.2.12] - 2016-07-10 |
| 687 | |
| 688 | ### Added |
| 689 | |
| 690 | - **CoreAudio**: Add get_period to Voice. |
| 691 | |
| 692 | ### Changed |
| 693 | |
| 694 | - **CoreAudio**: Update to coreaudio-rs 0.5.0. |
| 695 | |
| 696 | ### Fixed |
| 697 | |
| 698 | - **CoreAudio**: Correct implementation of get_pending_samples. |
| 699 | - **CoreAudio**: Return correct Voice period. |
| 700 | |
| 701 | ## [0.2.11] - 2016-04-25 |
| 702 | |
| 703 | ### Fixed |
| 704 | |
| 705 | - Be more relaxed with c_void. |
| 706 | |
| 707 | ## [0.2.10] - 2016-04-22 |
| 708 | |
| 709 | ### Added |
| 710 | |
| 711 | - **ALSA**: Add pollfd. |
| 712 | |
| 713 | ### Fixed |
| 714 | |
| 715 | - **ALSA**: Fix underflow detection. |
| 716 | - **Android**: Fix the android build. |
| 717 | - **Android**: Add ARM target. |
| 718 | |
| 719 | ## [0.2.9] - 2016-01-28 |
| 720 | |
| 721 | ### Added |
| 722 | |
| 723 | - **CoreAudio**: Add support for U16/I16 PCM formats. |
| 724 | - **CoreAudio**: Implement some missing functions. |
| 725 | |
| 726 | ### Changed |
| 727 | |
| 728 | - Handle channels positionning. |
| 729 | - Update Cargo.toml after the previous changes. |
| 730 | - Allow for building for mipsel targets. |
| 731 | - **ALSA**: Use correct ALSA channels. |
| 732 | - **CoreAudio**: Implementation cleanup. |
| 733 | - **CoreAudio**: Make Voice Send/Sync. |
| 734 | - **CoreAudio**: Set sample rate to 44100. |
| 735 | - **Examples**: Update the beep example. |
| 736 | |
| 737 | ### Fixed |
| 738 | |
| 739 | - **ALSA**: Fix underflow bug on linux. |
| 740 | - **CI**: Fix for travis build. |
| 741 | - **CoreAudio**: Fix compilation on OSX with the new API for coreaudio-rs. |
| 742 | - **CoreAudio**: Return correct length of buffer, stub unimpl funcs. |
| 743 | - **CoreAudio**: Restore CoreAudio support after API overhaul. |
| 744 | - **Examples**: Add some sane error messages. |
| 745 | - **Examples**: Improve error reporting in beep example. |
| 746 | |
| 747 | ### Removed |
| 748 | |
| 749 | - Do not use a wildcard version number. |
| 750 | - **CoreAudio**: Revert "Add support for U16/I16 PCM formats" (was causing issues). |
| 751 | |
| 752 | ## [0.2.8] - 2015-11-10 |
| 753 | |
| 754 | ### Changed |
| 755 | |
| 756 | - Libc 0.2. |
| 757 | - **WASAPI**: Update winapi. |
| 758 | |
| 759 | ### Fixed |
| 760 | |
| 761 | - **WASAPI**: Catch another 'device not found' error code. |
| 762 | |
| 763 | ## [0.2.7] - 2015-09-27 |
| 764 | |
| 765 | ### Added |
| 766 | |
| 767 | - `Voice::get_period()` method. |
| 768 | |
| 769 | ## [0.2.6] - 2015-09-22 |
| 770 | |
| 771 | ### Fixed |
| 772 | |
| 773 | - **ALSA**: Make sure that all writes succeed. |
| 774 | - **ALSA**: Make the implementation more robust by recovering from underruns. |
| 775 | |
| 776 | ## [0.2.5] - 2015-09-22 |
| 777 | |
| 778 | ### Added |
| 779 | |
| 780 | - `Voice::get_pending_samples` method. |
| 781 | |
| 782 | ## [0.2.4] - 2015-09-22 |
| 783 | |
| 784 | ### Added |
| 785 | |
| 786 | - `endpoint::get_name()` method. |
| 787 | - **Examples**: An enumerate example. |
| 788 | - **WASAPI**: Device name support. |
| 789 | |
| 790 | ### Changed |
| 791 | |
| 792 | - **ALSA**: Correctly enumerate supported formats. |
| 793 | |
| 794 | ### Fixed |
| 795 | |
| 796 | - **ALSA**: Various fixes. |
| 797 | - **ALSA**: Use the correct format. |
| 798 | - **ALSA**: Use the correct device name when enumerating formats. |
| 799 | - **WASAPI**: Fix bug and filter out devices that are not "Output". |
| 800 | |
| 801 | ## [0.2.3] - 2015-09-22 |
| 802 | |
| 803 | ### Added |
| 804 | |
| 805 | - `#[inline]` attributes. |
| 806 | - `underflow()` method to Voice. |
| 807 | |
| 808 | ### Changed |
| 809 | |
| 810 | - Store the format in the public `Voice` struct. |
| 811 | - **WASAPI**: General cleanup. |
| 812 | - **WASAPI**: Update winapi dependency. |
| 813 | |
| 814 | ### Fixed |
| 815 | |
| 816 | - **WASAPI**: Fix the hack in the implementation. |
| 817 | |
| 818 | ### Removed |
| 819 | |
| 820 | - Unused extern crate libc. |
| 821 | |
| 822 | ## [0.2.2] - 2015-09-11 |
| 823 | |
| 824 | ### Added |
| 825 | |
| 826 | - `UnknownBufferType::len()` method. |
| 827 | |
| 828 | ### Fixed |
| 829 | |
| 830 | - **Null**: Restore the null implementation and compile it every time. |
| 831 | |
| 832 | ## [0.2.1] - 2015-09-10 |
| 833 | |
| 834 | ### Changed |
| 835 | |
| 836 | - Handle channels positionning. |
| 837 | - Update Cargo.toml after the previous changes. |
| 838 | - **Examples**: Update the beep example. |
| 839 | |
| 840 | ### Fixed |
| 841 | |
| 842 | - **ALSA**: Fix compilation. |
| 843 | |
| 844 | ## [0.2.0] - 2015-09-01 |
| 845 | |
| 846 | ### Added |
| 847 | |
| 848 | - Proper error handling. |
| 849 | - Supported formats enumeration. |
| 850 | - `endpoint::get_name()` method. |
| 851 | |
| 852 | ### Changed |
| 853 | |
| 854 | - **ALSA**: Make it compile again. |
| 855 | - **WASAPI**: Enable 32bits samples. |
| 856 | - **WASAPI**: Better error handling in format detection. |
| 857 | - **WASAPI**: Now decoding the format from the WAVEFORMAT returned by the winapi. |
| 858 | - **WASAPI**: Handle F32 formats in Voice::new. |
| 859 | - **WASAPI**: Use the format passed as parameter in Voice::new. |
| 860 | - **WASAPI**: Correctly enumerate audio devices (core + wasapi). |
| 861 | |
| 862 | ### Fixed |
| 863 | |
| 864 | - Fix doctests. |
| 865 | - Add more detailed message to panic. |
| 866 | |
| 867 | ### Removed |
| 868 | |
| 869 | - Conversion system. |
| 870 | - Use of box syntax. |
| 871 | |
| 872 | ## [0.1.2] - 2015-07-22 |
| 873 | |
| 874 | ### Fixed |
| 875 | |
| 876 | - **ALSA**: Correct reported sample format. |
| 877 | - **WASAPI**: Fix samples signs on win32. |
| 878 | |
| 879 | ## [0.1.1] - 2015-07-20 |
| 880 | |
| 881 | ### Fixed |
| 882 | |
| 883 | - Fix the version in the README. |
| 884 | - **WASAPI**: Fix the win32 build. |
| 885 | |
| 886 | ## [0.1.0] - 2015-07-11 |
| 887 | |
| 888 | ### Added |
| 889 | |
| 890 | - Bump to 0.1.0. |
| 891 | |
| 892 | ## [0.0.23] - 2015-07-04 |
| 893 | |
| 894 | ### Fixed |
| 895 | |
| 896 | - **WASAPI**: Fix platform-specific dependencies with MSVC. |
| 897 | |
| 898 | ## [0.0.22] - 2015-06-24 |
| 899 | |
| 900 | ### Fixed |
| 901 | |
| 902 | - **ALSA**: Calls to a single ALSA channel are not thread safe. |
| 903 | |
| 904 | ## [0.0.21] - 2015-06-05 |
| 905 | |
| 906 | ### Changed |
| 907 | |
| 908 | - **Examples**: Simplify beep example. |
| 909 | - **WASAPI**: Use shiny new COM. |
| 910 | |
| 911 | ## [0.0.20] - 2015-04-20 |
| 912 | |
| 913 | ### Changed |
| 914 | |
| 915 | - Rustup and version bumps. |
| 916 | - **ALSA**: Remove integer suffixes in alsa-sys. |
| 917 | |
| 918 | ## [0.0.19] - 2015-04-04 |
| 919 | |
| 920 | ### Changed |
| 921 | |
| 922 | - Update for Rustc 1.0.0 beta. |
| 923 | |
| 924 | ## [0.0.18] - 2015-03-30 |
| 925 | |
| 926 | ### Changed |
| 927 | |
| 928 | - Update for change in rustc and winapi. |
| 929 | |
| 930 | ## [0.0.17] - 2015-03-26 |
| 931 | |
| 932 | ### Changed |
| 933 | |
| 934 | - Rustup. |
| 935 | - **ALSA**: Publish alsa-sys before cpal. |
| 936 | |
| 937 | ## [0.0.16] - 2015-03-25 |
| 938 | |
| 939 | ### Added |
| 940 | |
| 941 | - **CoreAudio**: OSX support via the Apple Core Audio, Audio Unit C API. Only supports f32 so far. |
| 942 | - **CoreAudio**: Coreaudio bindings. |
| 943 | |
| 944 | ### Changed |
| 945 | |
| 946 | - Rustup. |
| 947 | |
| 948 | ### Fixed |
| 949 | |
| 950 | - **CI**: Fix travis build. |
| 951 | - **CoreAudio**: Fixed callback to send proper buffersize, removed code in lib where sampleformat affected buffersize. |
| 952 | - **CoreAudio**: Properly shutdown the AudioUnit on drop. |
| 953 | |
| 954 | ### Removed |
| 955 | |
| 956 | - **CoreAudio**: Removed core_audio-sys local bindings in favour of new coreaudio-rs crate. |
| 957 | |
| 958 | ## [0.0.15] - 2015-02-22 |
| 959 | |
| 960 | ### Changed |
| 961 | |
| 962 | - Bump version. |
| 963 | - Update for rustc. |
| 964 | |
| 965 | ## [0.0.14] - 2015-02-19 |
| 966 | |
| 967 | ### Changed |
| 968 | |
| 969 | - Update for rustc. |
| 970 | - **ALSA**: Bump alsa-sys version. |
| 971 | - **ALSA**: Clean up alsa-sys. |
| 972 | - **CI**: Automatically publish on crates.io on successful builds. |
| 973 | - **CI**: Publish alsa-sys too. |
| 974 | |
| 975 | ## [0.0.13] - 2015-02-12 |
| 976 | |
| 977 | ### Changed |
| 978 | |
| 979 | - Update with libc version. |
| 980 | |
| 981 | ## [0.0.12] - 2015-01-29 |
| 982 | |
| 983 | ### Changed |
| 984 | |
| 985 | - Bump version number. |
| 986 | |
| 987 | ## [0.0.11] - 2015-01-29 |
| 988 | |
| 989 | ### Changed |
| 990 | |
| 991 | - Update for rustc. |
| 992 | |
| 993 | ## [0.0.10] - 2015-01-20 |
| 994 | |
| 995 | ### Added |
| 996 | |
| 997 | - **Null**: "null" implementation for platforms that aren't supported. |
| 998 | |
| 999 | ### Changed |
| 1000 | |
| 1001 | - Changed integer suffix from 'u' to 'us'. |
| 1002 | - Bump version number (multiple times). |
| 1003 | - Update for rust-1.0 alpha. |
| 1004 | - **WASAPI**: Update for winapi. |
| 1005 | |
| 1006 | ## [0.0.8] - 2015-01-08 |
| 1007 | |
| 1008 | ### Changed |
| 1009 | |
| 1010 | - Bump version number. |
| 1011 | - Update for Rustc. |
| 1012 | |
| 1013 | ## [0.0.7] - 2015-01-05 |
| 1014 | |
| 1015 | ### Changed |
| 1016 | |
| 1017 | - Update for rustc. |
| 1018 | |
| 1019 | ## [0.0.6] - 2014-12-30 |
| 1020 | |
| 1021 | ### Added |
| 1022 | |
| 1023 | - `#[must_use]` marker for Buffer. |
| 1024 | |
| 1025 | ### Changed |
| 1026 | |
| 1027 | - Bump version number. |
| 1028 | - Update for changes in rustc. |
| 1029 | |
| 1030 | ## [0.0.5] - 2014-12-23 |
| 1031 | |
| 1032 | ### Added |
| 1033 | |
| 1034 | - `play()` and `pause()` functions. |
| 1035 | - Implement f32 to i16 and f32 to u16 conversions. |
| 1036 | - Tests for convert_samples_rate. |
| 1037 | - Tests for convert_channels. |
| 1038 | |
| 1039 | ### Changed |
| 1040 | |
| 1041 | - Cleanup convert_samples_rate. |
| 1042 | - Cleanup convert_channels. |
| 1043 | |
| 1044 | ### Fixed |
| 1045 | |
| 1046 | - **CI**: Fix the appveyor build. |
| 1047 | |
| 1048 | ## [0.0.4] - 2014-12-20 |
| 1049 | |
| 1050 | ### Changed |
| 1051 | |
| 1052 | - Update for rustc. |
| 1053 | |
| 1054 | ## [0.0.3] - 2014-12-17 |
| 1055 | |
| 1056 | ### Added |
| 1057 | |
| 1058 | - Link to documentation. |
| 1059 | - Some documentation. |
| 1060 | - Fixes and tests for samples conversions. |
| 1061 | - All samples formats. |
| 1062 | - Samples formats conversions. |
| 1063 | - **CI**: Automatic gh-pages deployment in travis. |
| 1064 | |
| 1065 | ### Changed |
| 1066 | |
| 1067 | - Bump version number. |
| 1068 | - Improve documentation. |
| 1069 | - Use Cow for formats conversions to avoid an allocation and copy. |
| 1070 | |
| 1071 | ### Fixed |
| 1072 | |
| 1073 | - Minor README update. |
| 1074 | - **CI**: Remove old section from travis.yml. |
| 1075 | - **CI**: Fix travis.yml. |
| 1076 | |
| 1077 | ### Removed |
| 1078 | |
| 1079 | - Rename `Channel` to `Voice`. |
| 1080 | |
| 1081 | ## [0.0.2] - 2014-12-17 |
| 1082 | |
| 1083 | ### Added |
| 1084 | |
| 1085 | - Basic API. |
| 1086 | - Some documentation. |
| 1087 | - Keywords. |
| 1088 | - Some formats-related functions. |
| 1089 | - Some basic data conversion. |
| 1090 | - Some samples rate conversions. |
| 1091 | - Variable input format system. |
| 1092 | - Samples iterator. |
| 1093 | - **ALSA**: Basic implementation. |
| 1094 | - **ALSA**: alsa-sys library. |
| 1095 | - **CI**: Appveyor file. |
| 1096 | - **CI**: Config for rust-ci in travis. |
| 1097 | - **Examples**: Draft for example music playing. |
| 1098 | - **Examples**: Semi-working WASAPI example. |
| 1099 | - **WASAPI**: Destructor for wasapi::Channel. |
| 1100 | |
| 1101 | ### Changed |
| 1102 | |
| 1103 | - Bump version number. |
| 1104 | - Buffer now always has the u8 format. |
| 1105 | - Modify API to use a "samples" iterator. |
| 1106 | - Change player architecture to avoid data losses. |
| 1107 | - Minor nitpicking. |
| 1108 | - Update for rustc. |
| 1109 | - **ALSA**: Use the official winapi crate. |
| 1110 | - **ALSA**: More tweaks for alsa-sys. |
| 1111 | - **ALSA**: Minor tweaks in Cargo.toml files. |
| 1112 | - **Examples**: Replace example by a smaller one. |
| 1113 | - **Examples**: Replace example by a sinusoid generator. |
| 1114 | - **Examples**: Rename example to "beep". |
| 1115 | |
| 1116 | ### Fixed |
| 1117 | |
| 1118 | - Fix warnings. |
| 1119 | - Fix PCM formats conversions not working. |
| 1120 | - Fix issue when calling `buffer.samples()` multiple times with the same buffer. |
| 1121 | - Sound output now works correctly. |
| 1122 | - Minor fixes. |
| 1123 | - **WASAPI**: Revert "Switch to retep998/winapi". |
| 1124 | |
| 1125 | ### Removed |
| 1126 | |
| 1127 | - Switch back to using buffers. |
| 1128 | - Remove old code. |
| 1129 | |
| 1130 | ## [0.0.1] - 2014-12-11 |
| 1131 | |
| 1132 | ### Added |
| 1133 | |
| 1134 | - Initial commit. |
| 1135 | |
| 1136 | [Unreleased]: https://github.com/RustAudio/cpal/compare/v0.17.3...HEAD |
| 1137 | [0.17.3]: https://github.com/RustAudio/cpal/compare/v0.17.2...v0.17.3 |
| 1138 | [0.17.2]: https://github.com/RustAudio/cpal/compare/v0.17.1...v0.17.2 |
| 1139 | [0.17.1]: https://github.com/RustAudio/cpal/compare/v0.17.0...v0.17.1 |
| 1140 | [0.17.0]: https://github.com/RustAudio/cpal/compare/v0.16.0...v0.17.0 |
| 1141 | [0.16.0]: https://github.com/RustAudio/cpal/compare/v0.15.3...v0.16.0 |
| 1142 | [0.15.3]: https://github.com/RustAudio/cpal/compare/v0.15.2...v0.15.3 |
| 1143 | [0.15.2]: https://github.com/RustAudio/cpal/compare/v0.15.1...v0.15.2 |
| 1144 | [0.15.1]: https://github.com/RustAudio/cpal/compare/v0.15.0...v0.15.1 |
| 1145 | [0.15.0]: https://github.com/RustAudio/cpal/compare/v0.14.2...v0.15.0 |
| 1146 | [0.14.2]: https://github.com/RustAudio/cpal/compare/v0.14.1...v0.14.2 |
| 1147 | [0.14.1]: https://github.com/RustAudio/cpal/compare/v0.14.0...v0.14.1 |
| 1148 | [0.14.0]: https://github.com/RustAudio/cpal/compare/v0.13.5...v0.14.0 |
| 1149 | [0.13.5]: https://github.com/RustAudio/cpal/compare/v0.13.4...v0.13.5 |
| 1150 | [0.13.4]: https://github.com/RustAudio/cpal/compare/v0.13.3...v0.13.4 |
| 1151 | [0.13.3]: https://github.com/RustAudio/cpal/compare/v0.13.2...v0.13.3 |
| 1152 | [0.13.2]: https://github.com/RustAudio/cpal/compare/v0.13.1...v0.13.2 |
| 1153 | [0.13.1]: https://github.com/RustAudio/cpal/compare/v0.13.0...v0.13.1 |
| 1154 | [0.13.0]: https://github.com/RustAudio/cpal/compare/v0.12.1...v0.13.0 |
| 1155 | [0.12.1]: https://github.com/RustAudio/cpal/compare/v0.12.0...v0.12.1 |
| 1156 | [0.12.0]: https://github.com/RustAudio/cpal/compare/v0.11.0...v0.12.0 |
| 1157 | [0.11.0]: https://github.com/RustAudio/cpal/compare/v0.10.0...v0.11.0 |
| 1158 | [0.10.0]: https://github.com/RustAudio/cpal/compare/v0.9.0...v0.10.0 |
| 1159 | [0.9.0]: https://github.com/RustAudio/cpal/compare/v0.8.2...v0.9.0 |
| 1160 | [0.8.2]: https://github.com/RustAudio/cpal/compare/v0.8.1...v0.8.2 |
| 1161 | [0.8.1]: https://github.com/RustAudio/cpal/compare/v0.8.0...v0.8.1 |
| 1162 | [0.8.0]: https://github.com/RustAudio/cpal/compare/v0.7.0...v0.8.0 |
| 1163 | [0.7.0]: https://github.com/RustAudio/cpal/compare/v0.6.0...v0.7.0 |
| 1164 | [0.6.0]: https://github.com/RustAudio/cpal/compare/v0.5.1...v0.6.0 |
| 1165 | [0.5.1]: https://github.com/RustAudio/cpal/compare/v0.5.0...v0.5.1 |
| 1166 | [0.5.0]: https://github.com/RustAudio/cpal/compare/v0.4.6...v0.5.0 |
| 1167 | [0.4.6]: https://github.com/RustAudio/cpal/compare/v0.4.5...v0.4.6 |
| 1168 | [0.4.5]: https://github.com/RustAudio/cpal/compare/v0.4.4...v0.4.5 |
| 1169 | [0.4.4]: https://github.com/RustAudio/cpal/compare/v0.4.3...v0.4.4 |
| 1170 | [0.4.3]: https://github.com/RustAudio/cpal/compare/v0.4.2...v0.4.3 |
| 1171 | [0.4.2]: https://github.com/RustAudio/cpal/compare/v0.4.1...v0.4.2 |
| 1172 | [0.4.1]: https://github.com/RustAudio/cpal/compare/v0.4.0...v0.4.1 |
| 1173 | [0.4.0]: https://github.com/RustAudio/cpal/compare/v0.3.1...v0.4.0 |
| 1174 | [0.3.1]: https://github.com/RustAudio/cpal/compare/v0.3.0...v0.3.1 |
| 1175 | [0.3.0]: https://github.com/RustAudio/cpal/compare/v0.2.12...v0.3.0 |
| 1176 | [0.2.12]: https://github.com/RustAudio/cpal/compare/v0.2.11...v0.2.12 |
| 1177 | [0.2.11]: https://github.com/RustAudio/cpal/compare/v0.2.10...v0.2.11 |
| 1178 | [0.2.10]: https://github.com/RustAudio/cpal/compare/v0.2.9...v0.2.10 |
| 1179 | [0.2.9]: https://github.com/RustAudio/cpal/compare/v0.2.8...v0.2.9 |
| 1180 | [0.2.8]: https://github.com/RustAudio/cpal/compare/v0.2.7...v0.2.8 |
| 1181 | [0.2.7]: https://github.com/RustAudio/cpal/compare/v0.2.6...v0.2.7 |
| 1182 | [0.2.6]: https://github.com/RustAudio/cpal/compare/v0.2.5...v0.2.6 |
| 1183 | [0.2.5]: https://github.com/RustAudio/cpal/compare/v0.2.4...v0.2.5 |
| 1184 | [0.2.4]: https://github.com/RustAudio/cpal/compare/v0.2.3...v0.2.4 |
| 1185 | [0.2.3]: https://github.com/RustAudio/cpal/compare/v0.2.2...v0.2.3 |
| 1186 | [0.2.2]: https://github.com/RustAudio/cpal/compare/v0.2.1...v0.2.2 |
| 1187 | [0.2.1]: https://github.com/RustAudio/cpal/compare/v0.2.0...v0.2.1 |
| 1188 | [0.2.0]: https://github.com/RustAudio/cpal/compare/v0.1.2...v0.2.0 |
| 1189 | [0.1.2]: https://github.com/RustAudio/cpal/compare/v0.1.1...v0.1.2 |
| 1190 | [0.1.1]: https://github.com/RustAudio/cpal/compare/v0.1.0...v0.1.1 |
| 1191 | [0.1.0]: https://github.com/RustAudio/cpal/compare/v0.0.23...v0.1.0 |
| 1192 | [0.0.23]: https://github.com/RustAudio/cpal/compare/v0.0.22...v0.0.23 |
| 1193 | [0.0.22]: https://github.com/RustAudio/cpal/compare/v0.0.21...v0.0.22 |
| 1194 | [0.0.21]: https://github.com/RustAudio/cpal/compare/v0.0.20...v0.0.21 |
| 1195 | [0.0.20]: https://github.com/RustAudio/cpal/compare/v0.0.19...v0.0.20 |
| 1196 | [0.0.19]: https://github.com/RustAudio/cpal/compare/v0.0.18...v0.0.19 |
| 1197 | [0.0.18]: https://github.com/RustAudio/cpal/compare/v0.0.17...v0.0.18 |
| 1198 | [0.0.17]: https://github.com/RustAudio/cpal/compare/v0.0.16...v0.0.17 |
| 1199 | [0.0.16]: https://github.com/RustAudio/cpal/compare/v0.0.15...v0.0.16 |
| 1200 | [0.0.15]: https://github.com/RustAudio/cpal/compare/v0.0.14...v0.0.15 |
| 1201 | [0.0.14]: https://github.com/RustAudio/cpal/compare/v0.0.13...v0.0.14 |
| 1202 | [0.0.13]: https://github.com/RustAudio/cpal/compare/v0.0.12...v0.0.13 |
| 1203 | [0.0.12]: https://github.com/RustAudio/cpal/compare/v0.0.11...v0.0.12 |
| 1204 | [0.0.11]: https://github.com/RustAudio/cpal/compare/v0.0.10...v0.0.11 |
| 1205 | [0.0.10]: https://github.com/RustAudio/cpal/compare/v0.0.8...v0.0.10 |
| 1206 | [0.0.8]: https://github.com/RustAudio/cpal/compare/v0.0.7...v0.0.8 |
| 1207 | [0.0.7]: https://github.com/RustAudio/cpal/compare/v0.0.6...v0.0.7 |
| 1208 | [0.0.6]: https://github.com/RustAudio/cpal/compare/v0.0.5...v0.0.6 |
| 1209 | [0.0.5]: https://github.com/RustAudio/cpal/compare/v0.0.4...v0.0.5 |
| 1210 | [0.0.4]: https://github.com/RustAudio/cpal/compare/v0.0.3...v0.0.4 |
| 1211 | [0.0.3]: https://github.com/RustAudio/cpal/compare/v0.0.2...v0.0.3 |
| 1212 | [0.0.2]: https://github.com/RustAudio/cpal/compare/v0.0.1...v0.0.2 |
| 1213 | [0.0.1]: https://github.com/RustAudio/cpal/releases/tag/v0.0.1 |