757 Commits

Author SHA1 Message Date
mitchmindtree
a49297ec2c WIP - Add ALSA timestamp implementation.
I think this is mostly complete, however there are two major TODOs:

- There seems to be a bug where timestamps are not reported when the
  target device is `pulse`. This causes a `panic!` as the trigger
  timestamp should always precede the timestamp when retrieved while the
  stream is running.
- We need to specify the timestamp type as MONOTONIC_RAW, however the
  `alsa` and `alsa-sys` crates do not yet expose the necessary
  `set_tstamp_type` function.
2020-04-28 17:38:44 +02:00
mitchmindtree
777a6b2bd1 Change StreamInstant to use a signed representation
Using an unsigned representation was problematic as some platforms
provide no exact "capture" instant. As a result, we need to calculate
the instant of capture by subtracting the buffer duration from the
callback duration. In some cases this would occasionally cause the
unsigned representation to underflow unnecessarily.
2020-04-28 17:37:48 +02:00
mitchmindtree
4cb50663d8 WIP Begin work on the timestamp and StreamInstant APIs 2020-04-27 18:14:29 +02:00
mitchmindtree
f032557fb4
Merge pull request from mitchmindtree/callback_info
Add a `CallbackInfo` argument to the stream data callback
2020-04-27 14:32:37 +02:00
mitchmindtree
624ba659da
Merge pull request from derekdreery/recover_if_set_buffer_time_failed
Recover if hw_params_set_buffer_time failed.
2020-04-17 16:39:15 +02:00
mitchmindtree
95f5f2e54a Update CHANGELOG for addition of CallbackInfo types 2020-04-16 15:39:05 +02:00
mitchmindtree
aae44cf3d6 Fix process_callback function signatures in asio backend 2020-04-16 15:30:14 +02:00
mitchmindtree
3f69770471 Update checkout github action. Clean up workflow formatting. 2020-04-16 15:20:45 +02:00
mitchmindtree
bcf962c447 Add a CallbackInfo argument to the stream data callback
I began on an implementation of the timestamp API described in  but
quickly realised that it might be best to land the API for providing
extra information to the user's callback first.

This PR adds two new types: `InputCallbackInfo` and `OutputCallbackInfo`.
These types are delivered to the user's data callback as a new, second
argument.

While these types are currently empty, the intention is for these types
to provide information relevant to the current request for or delivery
of data. This includes:

- Timestamp information .
- Flags related to the state of the stream (e.g buffer
  underflow/overflow).

In order to maintain flexibility to avoid breaking things, I figure we
can keep the fields of these types private and provide methods for
retrieving this info.

@Ralith, @ishitatsuyuki does this seem OK to you?
2020-04-16 14:50:36 +02:00
Richard Dodd
3c3349f926 Add some comments. 2020-04-15 18:46:54 +01:00
Richard Dodd
290f464330 Cargo fmt 2020-04-15 18:42:43 +01:00
Richard Dodd
86079e6439 Rebase off new alsa-rs impl 2020-04-15 18:41:40 +01:00
mitchmindtree
608d23adc6
Merge pull request from mitchmindtree/remove-alsa-sys-publish
Remove alsa-sys publish step from cpal publish github workflow
2020-04-15 18:23:01 +02:00
mitchmindtree
38e0408412 Remove alsa-sys publish from github workflow
The `alsa-sys` crate repository has lived [here][1] for quite a while.
This commit removes the unnecessary step from the CI workflow now that
alsa-sys has finally been removed as of .

[1]: https://github.com/diwic/alsa-sys
2020-04-15 18:07:51 +02:00
mitchmindtree
7df5b4e973
Merge pull request from alexmoon/alsa
Switch from vendored alsa-sys to alsa crate
2020-04-15 17:56:18 +02:00
Alex Moon
5da315fbfe Merge remote-tracking branch 'upstream/master' into alsa 2020-04-13 16:25:30 -04:00
Alex Moon
b386e63eec Ignore play/pause errors for ALSA Stream 2020-04-12 13:11:35 -04:00
est31
fc28a8033c
Merge pull request from bschwind/master
Fix type for armv6 platforms
2020-04-12 13:38:22 +02:00
Brian Schwind
c5e1ea5919 Fix type-casting error for armv6 platforms 2020-04-12 14:19:18 +09:00
Alex Moon
62d540d396 Switch from vendored alsa-sys to alsa crate 2020-04-03 16:56:51 -04:00
mitchmindtree
f3e7c46205
Merge pull request from dansgithubuser/master
fix sample rate range assertion
2020-03-18 09:02:34 +01:00
Dan
bf276e7de6 fix sample rate range assertion 2020-03-17 23:16:04 -04:00
mitchmindtree
aac04e7263
Merge pull request from est31/master
Remove redundant 'static from &'static str
2020-02-24 09:10:08 +01:00
est31
d97983e218 Remove redundant 'static from &'static str
Specifying the static lifetime in constants and static variables
is redundant since Rust 1.17.0

https://github.com/rust-lang/rust/blob/master/RELEASES.md#version-1170-2017-04-27
2020-02-24 07:40:25 +01:00
mitchmindtree
946d646965
Merge pull request from mitchmindtree/changelog
Update changelog for changes since 0.11
2020-02-04 17:18:44 +01:00
mitchmindtree
27b4c56858 Update changelog for changes since 0.11 2020-02-04 17:16:41 +01:00
mitchmindtree
e4df8b277f
Merge pull request from mitchmindtree/stream_config
Rename stream `Format` types to `StreamConfig` and other related renamings.
2020-02-04 17:07:15 +01:00
mitchmindtree
a2e6232cd8
Merge pull request from mitchmindtree/stream_config_pub
Restrict the ways in which `SupportedStreamConfig/Range`s can be constructed
2020-02-04 15:46:22 +01:00
mitchmindtree
7a6cb0bd6a Make SupportedStreamConfigRange fields private 2020-02-02 20:20:51 +01:00
mitchmindtree
9bf5664f7d Update wasapi and emscripten backends for SupportedStreamConfig private fields 2020-02-02 19:56:30 +01:00
mitchmindtree
009b796b7c Update wasapi backend for SupportedStreamConfig private fields 2020-02-02 19:06:16 +01:00
mitchmindtree
f05ba58207 Update emscripten backend for SupportedStreamConfig private fields 2020-02-02 18:50:12 +01:00
mitchmindtree
476f6c4c2c Only allow for private construction of SupportedStreamConfig.
This should give the user a higher confidence that, if they have a
`SupportedStreamConfig` format type that it is actually supported.

Also updates the `raw` stream builder methods to take a `StreamConfig`
and `SampleFormat` as separate arguments for flexibility.

**Backends Updated**

- [x] null
- [x] alsa
- [ ] emscripten
- [ ] coreaudio
- [ ] wasapi
- [ ] asio
2020-02-02 18:43:30 +01:00
mitchmindtree
07b66f52f3 Rename FormatNotSupported to StreamConfigNotSupported 2020-01-28 22:55:43 +01:00
mitchmindtree
f292391190 Update asio backend for stream format renaming 2020-01-28 16:17:14 +01:00
mitchmindtree
3a692f8bca Update coreaudio backend for stream format renaming 2020-01-28 15:03:27 +01:00
mitchmindtree
e0da586f77 Update wasapi backend for stream format renaming 2020-01-28 00:26:15 +01:00
mitchmindtree
669aada98a Update emscripten backend for stream format renaming 2020-01-27 21:44:52 +01:00
mitchmindtree
9c781bd381 Rename stream Format types to Config
This implements the changes described at .

This commit implements only the `null` and `alsa` backends - the rest
will be implemented in follow-up commits.

Closes .
2020-01-27 21:28:07 +01:00
mitchmindtree
ae910e3fe5
Merge pull request from Ralith/polymorphic-streams
Polymorphic streams
2020-01-27 18:17:09 +01:00
Benjamin Saunders
8d471f3d0e Illustrate alternative structure in beep example 2020-01-21 22:49:31 -08:00
Benjamin Saunders
076b814a15 Introduce polymorphic stream constructors 2020-01-21 22:20:26 -08:00
Benjamin Saunders
78df791377 Add _raw suffix to stream constructors 2020-01-21 21:52:18 -08:00
mitchmindtree
5390c01641
Merge pull request from mitchmindtree/rustfmt
Remove old `.rustfmt.toml` config. Run default `cargo fmt` on repo. Add formatting check github action.
2020-01-21 20:02:17 +01:00
mitchmindtree
7e846b47ad Ensure all crates are formatted correctly, not just cpal itself. 2020-01-21 14:18:16 +01:00
mitchmindtree
ca255772fd Fix typo in rustfmt github action 2020-01-21 00:25:03 +01:00
mitchmindtree
e7979d2dfe Fix some strangely formatted commented code 2020-01-21 00:15:52 +01:00
mitchmindtree
cdd49ada2b Add a GitHub action for rustfmt
Checks formatting against the default `cargo fmt` run.
2020-01-20 23:56:04 +01:00
mitchmindtree
aab0d90add Remove old .rustfmt.toml config. Run default cargo fmt on repo.
Seeing as a few large refactors have landed recently, I thought I'd take
this opportunity to do a `cargo fmt` run and standardise on the default
rustfmt settings.
2020-01-20 20:35:23 +01:00
mitchmindtree
95cda0dbe8
Merge pull request from mitchmindtree/wasapi-warnings
Address deprecated `mem::uninitialized` warnings in WASAPI host
2020-01-20 20:31:43 +01:00