Commit Graph

695 Commits

Author SHA1 Message Date
mitchmindtree 9e832c6eb3 Update ASIO backend for removal of `UnknownBufferType` 2020-01-18 15:13:17 +01:00
mitchmindtree b5bfb8d422 Update WASAPI backend for removal of `UnknownTypeBuffer` 2020-01-18 15:13:17 +01:00
mitchmindtree 5a619877f9 Update docs for removal of UnknownTypeBuffer 2020-01-18 15:13:17 +01:00
mitchmindtree 6fc2185c99 Update emscripten backend for removal of `UnknownTypeBuffer` 2020-01-18 15:13:17 +01:00
mitchmindtree 05b62bb1c0 Remove `UnknownTypeBuffer` in favour of specifying sample type.
This is an implementation of the planned changes described in #119.

For a quick overview of how the API has changed, check out the updated
examples.

**TODO:**

- [x] Update API.
- [x] Update examples.
- [ ] Remove `data_type` field from `Format` (see [here](https://github.com/RustAudio/cpal/issues/119#issuecomment-573788380)).
- Update backends:
  - [x] null
  - [x] ALSA
  - [ ] ASIO
  - [ ] WASAPI
  - [ ] CoreAudio
  - [ ] Emscripten

Closes #119
Closes #260
2020-01-18 15:13:17 +01:00
mitchmindtree c4ef3ac14c
Merge pull request #362 from simlay/fix-macos-ci
macOS CI
2020-01-16 21:54:54 +01:00
Alex Moon 1b10f92f9d Fix undeclared module errors on Mac. 2020-01-16 12:24:33 -08:00
Sebastian Imlay 9e4ebd86d9 Second attempt at github workflow.
* Added actions/checkout
* cargo build --example beep
2020-01-16 12:01:03 -08:00
Sebastian Imlay ce1d96ea57 Fist attempt at github fix 2020-01-16 11:55:49 -08:00
mitchmindtree 2bf905f3ec
Merge pull request #358 from jbeich/dragonfly
DragonFly support
2020-01-13 15:47:45 +01:00
mitchmindtree 59ac088167
Merge pull request #354 from mitchmindtree/no-eventloop-rebased
Removing the `EventLoop` - rebased
2020-01-13 12:50:05 +01:00
mitchmindtree 4fb1c3f081
Merge pull request #2 from mitchmindtree/no-eventloop-send-sync
Explicitly make dynamically dispatched API !Send + !Sync
2020-01-12 22:53:50 +01:00
mitchmindtree 32d39bcfd3 Relax `Sync` restriction on `Device` and `Host`
Originally this restriction was placed due to uncertainty around the
thread safety of the ASIO API. While the ASIO API itself makes no
thread-safety guarantees that we are aware of, the `asio-sys` high-level
bindings enforce synchronised access to the API and state transitions
via a mutex.
2020-01-12 22:43:05 +01:00
mitchmindtree ca2aceb536 Fix state transition synchronisation in ASIO
This makes some tweaks to the ASIO backend in order to fix some cases
where races may have occured. This should allow us to remove the `Sync`
bound on the `Device` and `Host` types.
2020-01-12 22:40:05 +01:00
Jan Beich 3ac6f6a689 Enable ALSA on DragonFly
DragonFly like FreeBSD uses OSS under the hood but OSS backend isn't
available, so use ALSA.
2020-01-07 16:18:52 +00:00
Jan Beich e77634941d Drop alsa-sys dependency on OpenBSD
Unlike other BSDs it never packaged ALSA and prefers everything to use sndio.
2020-01-07 16:15:48 +00:00
mitchmindtree 33ddf74954 Explicitly make dynamically dispatched API !Send + !Sync
This is in order to ensure consistent restrictions across platforms in a
manner that ensures thread safety across each of the supported
platforms.

Please see added comments in the diff for details on which platforms
impose these restrictions.
2020-01-05 17:43:14 +01:00
mitchmindtree 2afebb2806 Clarify the current state of stream behaviour in docs and comments 2019-12-31 16:02:08 +01:00
mitchmindtree 39ade49347 RAII cleanup wthin the ASIO backend
- Shares the `Device`'s `driver` and `asio_streams` `Arc`s with the
`Stream`s to ensure they remain valid if the `Host` or `Device` are
dropped early.
- Ensures that a stream's callback is removed upon `Drop`.
2019-12-31 15:46:10 +01:00
msiglreith 972cce0f8c asio: Re-add possibility to create stream individually 2019-12-31 15:46:10 +01:00
msiglreith bfda575218 Port ASIO host to new stream-based API 2019-12-31 15:46:10 +01:00
Viktor Lazarev 64ba84de81 Move code from stream to device 2019-12-31 15:46:10 +01:00
Tatsuyuki Ishi cede7b41db Remove EventLoop and port the ALSA backend 2019-12-31 15:46:10 +01:00
mitchmindtree f34a062fac Update docs for removal of the `EventLoop` 2019-12-31 15:46:10 +01:00
mitchmindtree 27245444a7 Remove redundant from backend 2019-12-31 15:45:15 +01:00
mitchmindtree 37d80b98cf Update the `emscripten` backend for the removal of the `EventLoop`
For the most part, behaviour should be largely unchanged, however each
individual stream now has its own `set_timeout` callback loop, rather
than using one for processing all streams at once.

Many TODOs remain within the `emscripten` backend. These were left
untouched for the most part in favour of addressing this in a more
web-focused, future PR.
2019-12-31 15:45:15 +01:00
Tatsuyuki Ishi 70dcf2390a Port CoreAudio backend 2019-12-31 15:45:15 +01:00
ishitatsuyuki c09a58ac02 Fix the remainder of WASAPI backend 2019-12-31 15:42:35 +01:00
Tatsuyuki Ishi 7f7914434c Additional clippy fixes 2019-12-31 15:42:35 +01:00
Viktor Lazarev d46415a6e7 `cargo clippy` 2019-12-31 15:42:35 +01:00
Tatsuyuki Ishi 49a38c2641 Fix up WASAPI host 2019-12-31 15:42:35 +01:00
Viktor Lazarev d4965d3673 `cargo fmt` 2019-12-31 15:42:35 +01:00
Viktor Lazarev c62cb48e19 Apply suggestions proposed by Clippy 2019-12-31 15:42:35 +01:00
Viktor Lazarev 10dc779943 Return back missed play/pause implementation 2019-12-31 15:42:35 +01:00
Viktor Lazarev a218dc90e6 Fixing compile errors 2019-12-31 15:42:35 +01:00
Viktor Lazarev a412b00336 Fix the "Stream::new' method 2019-12-31 15:42:35 +01:00
Viktor Lazarev e7f708701c Remove old code 2019-12-31 15:42:35 +01:00
Viktor Lazarev 1021141d16 Fix "build_input/output_stream_inner" methods 2019-12-31 15:42:35 +01:00
Viktor Lazarev f65d0e65bc Expose Stream instead of StreamId 2019-12-31 15:42:35 +01:00
Viktor Lazarev 125bebd733 Clean up wasdapi mod 2019-12-31 15:42:35 +01:00
Viktor Lazarev d12d9f479b Remove redundant field names 2019-12-31 15:42:35 +01:00
Viktor Lazarev 7765e941ed Implement Drop for Stream 2019-12-31 15:42:35 +01:00
Viktor Lazarev 0541bf8667 Add Stream struct 2019-12-31 15:42:35 +01:00
Viktor Lazarev e25c44a4a1 Move code from stream to device 2019-12-31 15:42:35 +01:00
Viktor Lazarev dd418c08ae Adjust "process_commands" and "Command" 2019-12-31 15:42:35 +01:00
Viktor Lazarev 28cf3fee43 Fix "run_inner" fn 2019-12-31 15:42:35 +01:00
Viktor Lazarev b00630bdcc Extract "run_inner" as a standalone function 2019-12-31 15:42:35 +01:00
Viktor Lazarev 463540f370 Keep a single stream only 2019-12-31 15:42:35 +01:00
Viktor Lazarev cffd2da582 Rename "StreamDataResult" to "StreamData" 2019-12-31 15:42:35 +01:00
Viktor Lazarev 37e7b5b63b Move DeviceTrait implementation to wasapi::device 2019-12-31 15:42:35 +01:00