diff --git a/CHANGELOG.md b/CHANGELOG.md index 9eb785d..721f3e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Unreleased +# Version 0.10.0 (2019-07-05) + +- 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. + # Version 0.9.0 (2019-06-06) - Better buffer handling diff --git a/Cargo.toml b/Cargo.toml index f887bd3..00f9614 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "cpal" -version = "0.9.0" +version = "0.10.0" authors = ["The CPAL contributors", "Pierre Krieger "] -description = "Low-level cross-platform audio playing library in pure Rust." +description = "Low-level cross-platform audio I/O library in pure Rust." repository = "https://github.com/tomaka/cpal" documentation = "https://docs.rs/cpal" license = "Apache-2.0" diff --git a/asio-sys/Cargo.toml b/asio-sys/Cargo.toml index b1208d5..7a92552 100644 --- a/asio-sys/Cargo.toml +++ b/asio-sys/Cargo.toml @@ -2,6 +2,11 @@ name = "asio-sys" version = "0.1.0" authors = ["Tom Gowan "] +description = "Low-level interface and binding generation for the steinberg ASIO SDK." +repository = "https://github.com/tomaka/cpal" +documentation = "https://docs.rs/asio-sys" +license = "Apache-2.0" +keywords = ["audio", "sound", "asio", "steinberg"] build = "build.rs" [target.'cfg(any(target_os = "windows"))'.build-dependencies] diff --git a/src/lib.rs b/src/lib.rs index 244be18..0089ec5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -150,8 +150,8 @@ extern crate lazy_static; extern crate stdweb; pub use platform::{ - ALL_HOSTS, Device, EventLoop, Host, HostId, StreamId, available_hosts, - default_host, host_from_id, + ALL_HOSTS, Device, Devices, EventLoop, Host, HostId, SupportedInputFormats, + SupportedOutputFormats, StreamId, available_hosts, default_host, host_from_id, }; pub use samples_formats::{Sample, SampleFormat}; diff --git a/src/platform/mod.rs b/src/platform/mod.rs index 314705d..3957168 100644 --- a/src/platform/mod.rs +++ b/src/platform/mod.rs @@ -64,7 +64,7 @@ macro_rules! impl_platform_host { /// The **StreamId** implementation associated with the platform's dynamically dispatched /// **Host** type. - #[derive(Clone, Debug, Eq, PartialEq)] + #[derive(Clone, Debug, Eq, Hash, PartialEq)] pub struct StreamId(StreamIdInner); /// The **SupportedInputFormats** iterator associated with the platform's dynamically @@ -107,7 +107,7 @@ macro_rules! impl_platform_host { )* } - #[derive(Clone, Debug, Eq, PartialEq)] + #[derive(Clone, Debug, Eq, Hash, PartialEq)] enum StreamIdInner { $( $HostVariant(crate::host::$host_mod::StreamId), diff --git a/src/traits.rs b/src/traits.rs index fb48829..f50764e 100644 --- a/src/traits.rs +++ b/src/traits.rs @@ -195,4 +195,4 @@ pub trait EventLoopTrait { } /// The set of required bounds for host `StreamId` types. -pub trait StreamIdTrait: Clone + std::fmt::Debug + PartialEq + Eq {} +pub trait StreamIdTrait: Clone + std::fmt::Debug + std::hash::Hash + PartialEq + Eq {}