Commit Graph

628 Commits

Author SHA1 Message Date
mitchmindtree 391b32f5b2 Update CPAL to version 0.10.0.
This is quite a significant update for CPAL, including a number of
breaking changes. Here is a list of the breaking changes along with
links to where you can find more information:

- A `Host` API has been introduced in #289 along with a follow-up
  refactor in #295. Please see the examples for a demonstration of how
  to update your code. The necessary changes should hopefully be
  minimal. If this has caused you any major difficulty please let us
  know in an issue!
- An ASIO host has been introduced in #292. This adds support for
  Steinberg's ASIO audio driver API on Windows. Please see the ASIO
  section of the README for more information on how to setup CPAL with
  ASIO support for your project.
- The user callback API has been overhauled to emit `StreamEvent`s
  rather than buffers in order to support handling stream errors. #288.
- Error handling in general was overhauled in #286. This meant taking
  advantage of the `failure` crate and adding support for
  backend-specific errors with custom messages. Many unnecessary
  `panic!`s have been removed, but a few remain that would indicate bugs
  in CPAL.

In general, checking out the updated examples will be the easiest way to
get a quick overview on how you can update your own code for these
changes.

The CHANGELOG.md has been updated to include these changes.
2019-07-05 19:37:17 +02:00
mitchmindtree 6cd7492f4c Add missing `Hash` constraint to `StreamId`
This existed prior to the introduction of the `Host` API, but was lost
in translation. This re-adds the bounds so that downstream code does not
suddenly break due to a lacking `Hash` implementation in the next
CPAL version.
2019-07-05 19:28:34 +02:00
mitchmindtree 5b6570e661 Add missing Cargo.toml entries to asio-sys 2019-07-05 19:20:30 +02:00
mitchmindtree 6245dd899c Add some missing re-exports from the platform module into the crate root 2019-07-05 19:20:30 +02:00
mitchmindtree 4cbbcbe316
Merge pull request #293 from EmbarkStudios/master
Bump dependencies
2019-07-05 19:17:07 +02:00
mitchmindtree 9095bbc00e
Merge pull request #292 from mitchmindtree/asio
Add ASIO Host for Windows (rebase and refactor of #221)
2019-07-05 19:02:12 +02:00
mitchmindtree 714dab7270 Refactor asio message to use a match expr. Fix some typos. 2019-07-05 13:19:42 +02:00
mitchmindtree 64dc6accf9 Rebase for the trait refactor in #295. 2019-07-05 06:03:33 +10:00
mitchmindtree b7d40d2993 Handle timed buffer switch and messaging callbacks in asio-sys
This adds an implementation of ASIO message handling in a manner that
matches that demonstrated in the SDK's `hostsample.cpp` file.

Also refactors the code to ensure that both `buffer_switch` and
`buffer_switch_time_info` callbacks are handled.
2019-07-05 05:51:32 +10:00
mitchmindtree cc5b0555c2 Refactor of asio-sys while reviewing for code correctness
Most of this is an attempt at improving readability and modularity of
the asio-sys crate while attempting to review it for correctness. Still
unsure why glitching is occasionally occuring on output, but recorded
input sounds perfectly clean.
2019-07-05 05:51:31 +10:00
mitchmindtree 91c5aa86b3 Fix Driver destructor behaviour in asio-sys 2019-07-05 05:51:31 +10:00
mitchmindtree 9182f00e20 Check that sample format is supported by ASIO when building streams 2019-07-05 05:51:31 +10:00
mitchmindtree c432f2b18d Update asio-sys to allow for having multiple handles to the same driver
ASIO has a limitation where it only supports loading a single audio
driver at a time. This fixes a common error where CPAL users would
request both the default input device and output device in separate
`load_driver` calls. Now, `load_driver` will return another handle to
the existing driver if the existing driver has the same name.
2019-07-05 05:51:31 +10:00
mitchmindtree 8b4ebeffff Address README suggestions by @ishitatsuyuki 2019-07-05 05:51:31 +10:00
mitchmindtree 7d0f9c7265 Remove unreachable_patterns gate onto relevant fns so all platforms benefit 2019-07-05 05:51:31 +10:00
mitchmindtree 86e3366063 Remove unnecessary num crate from asio-sys 2019-07-05 05:51:30 +10:00
mitchmindtree c2b7c7f648 Remove .DS_Store from asio-sys gitignore 2019-07-05 05:51:30 +10:00
mitchmindtree 8f95042b8d Add `asio` cargo feature for optional ASIO support
ASIO introduces quite a few extra crates and requires a fairly
complicated setup process (see the readme), so this feature is disabled
by default.
2019-07-05 05:51:30 +10:00
mitchmindtree 76fab4f982 Update README for ASIO v2.3.3 2019-07-05 05:51:30 +10:00
mitchmindtree 191b90909a Make Driver type responsible for managing user callbacks 2019-07-05 05:51:30 +10:00
mitchmindtree 4dafb212fb Refactor build_input_stream callback to, like recent output refactor 2019-07-05 05:51:30 +10:00
mitchmindtree cc70a10c12 Remove unused supported_formats_err function 2019-07-05 05:51:29 +10:00
mitchmindtree dc6c5c5a7c Remove unnecessary asio_utils mod 2019-07-05 05:51:29 +10:00
mitchmindtree 50aa0585be Remove unwieldy macro from output stream callback
Instead, we use some traits and generics in an attempt to retain a
little readability. See the remaining TODOs in this section for required
future work.
2019-07-05 05:51:29 +10:00
mitchmindtree b6181d4362 Add impl Send for AsioStream 2019-07-05 05:51:29 +10:00
mitchmindtree 0f510a9512 Update README for Host API tweaks. Fix typos in steps. 2019-07-05 05:51:29 +10:00
mitchmindtree d739a5b79d Majority of ASIO host update following refactor
Currently not compiling - still need to address some global items within
asio-sys, including the `set_callback` function and the double buffer
globals.
2019-07-05 05:51:29 +10:00
mitchmindtree efe683133c Refactor asio-sys to use less global state and more RAII
The asio-sys examples have been tested and still work nicely. The CPAL
asio host has not yet been updated for these changes.
2019-07-05 05:51:29 +10:00
mitchmindtree 05f8b7dc43 Fix remaining compile errors for ASIO host
Now runs the beep and enumerate examples nicely! Time to do a proper
code review of the ASIO stuff and see how to best take advantage of the
new `Host` API.
2019-07-05 05:51:28 +10:00
mitchmindtree 747caeee38 Get asio-sys examples working with latest API updates 2019-07-05 05:51:28 +10:00
mitchmindtree 09fd5562be Update ASIO implementation for new error handling and Host API
This is currently untested and will almost certainly not build. I'm
about to move into a Windows VM to get everything running properly
again.
2019-07-05 05:51:28 +10:00
mitchmindtree 2bc9f85970 Update supported_formats methods for all sample rates and channel combos
Closes #32.
2019-07-05 05:51:28 +10:00
Tom Gowan bc94d167ae fix endianess 2019-07-05 05:51:28 +10:00
Tom Gowan 49bc3ee367 remove release symbols 2019-07-05 05:51:28 +10:00
Tom Gowan f2c8099810 bug fix and comment 2019-07-05 05:51:27 +10:00
Tom Gowan 5eb311d8be float conversion fix 2019-07-05 05:51:27 +10:00
Tom Gowan a3defde208 Checks formats 2019-07-05 05:51:27 +10:00
Tom Gowan c255da24bf stream id bug 2019-07-05 05:51:27 +10:00
Tom Gowan fd808b95e9 indentation and no clean up on destroy stream 2019-07-05 05:51:27 +10:00
mitchmindtree b70e27ed87 Change step 7. to refer to VCVARS.
Also adds a note about the `CPAL_ASIO_SDK` environment variable
determining whether or not cpal will attempt to build ASIO and generate
bindings to it.
2019-07-05 05:51:27 +10:00
mitchmindtree 0ff0b65647 Add ASIO guide to README 2019-07-05 05:51:27 +10:00
Tom Gowan ab3b76ad75 fixes, remove transmute 2019-07-05 05:51:26 +10:00
Tom Gowan 7950045240 minor fixes 2019-07-05 05:51:26 +10:00
Tom Gowan 062205160c remove build.bat 2019-07-05 05:51:26 +10:00
Tom Gowan 25070464f9 git ignore, temp files, fetch_add, os cfg 2019-07-05 05:51:26 +10:00
Tom Gowan 523d25ad49 remove u16 2019-07-05 05:51:26 +10:00
Tom Gowan 616974353b opt in and bug fix 2019-07-05 05:51:26 +10:00
Tom Gowan 1f24c76e6a commenting and rustfmt for device 2019-07-05 05:51:26 +10:00
Tom Gowan 5248455cb7 commets and rustfmt for stream 2019-07-05 05:51:25 +10:00
Tom Gowan 72c5e9a8c1 asio sys lib comments and rust fmt 2019-07-05 05:51:25 +10:00