Commit Graph

339 Commits

Author SHA1 Message Date
thiolliere f822631bc4 impl play and pause for ALSA
snd_pcm_pause could have been used but not all hardware implement it, so
I propose not to use it.

In this implementation:

there are two kind of scheduling: wait for resume signal and wait for
pcm to be available

if the stream is paused then it return notready and wait for resume

the event loop is different as it manages descriptors corresponding to
voices according to the nature of the scheduling.

there is still a FIXME: in voice.play the is signal is send even if
the event loop wasn't waiting for resume.
It doesn't seem to create any issue. But it happens when you write
voice.pause();voice.play();
2016-10-02 13:29:01 +02:00
mitchmindtree f71a95cd0e Do not lock inner twice. Fixes bug in osx futures 0.1.1 update. 2016-10-01 18:19:27 +10:00
Pierre Krieger 869af718a2 Try fix the OSX code with futures 2016-10-01 09:21:29 +02:00
thiolliere e031025abe update to futures 0.1.1: alsa wasapi 2016-10-01 00:44:22 +02:00
Boris-Chengbiao Zhou 70858ad2e5 Fix #126 2016-08-19 21:48:53 +02:00
Pierre Krieger bf051dd16f Add some documentation to the winapi implementation 2016-08-12 18:06:17 +02:00
Pierre Krieger b1add0b12b Fix most warnings 2016-08-12 17:57:06 +02:00
mitchmindtree cc26897acd Update coreaudio backend to new futures-rs oriented design.
This depends on the changes introduced in #121.

Update to coreaudio 0.6.
2016-08-12 17:49:13 +10:00
Pierre Krieger 6060582aa0 Update the null implementation 2016-08-03 13:06:23 +02:00
Pierre Krieger c2f89d8b2d Update documentation 2016-08-03 13:06:23 +02:00
Pierre Krieger 0c915cac8f Use a max buffer size in order to avoid problems 2016-08-03 10:31:02 +02:00
Pierre Krieger 7c587853ad Make it work on Linux 2016-08-03 10:17:23 +02:00
Pierre Krieger be8310da51 Draft for switching to futures 2016-08-02 18:19:03 +02:00
Jan Solanti f717817c86 coreaudio: update to coreaudio-rs 0.5.0 2016-07-06 00:13:17 +03:00
Ronald Kinard 4d2767ee42 [osx] Correct implementation of get_pending_samples 2016-06-28 18:09:54 -05:00
Ronald Kinard e9b8f46f73 [osx] Return correct Voice period. 2016-06-14 23:38:52 -05:00
Ronald Kinard b2635a52c5 [osx] Add get_period to Voice 2016-06-01 01:28:59 -05:00
Pierre Krieger 752676c818 Be more relaxed with c_void 2016-04-25 13:33:12 +02:00
Pierre Krieger c4bf6e91da Fix the android build 2016-04-22 17:31:24 +02:00
Mathijs van de Nes f3f194293a Fix underflow detection for alsa
The old method always returned _RUNNING on some machines.
This new method seems to produce the expected behaviour.

Note: -32 is probably -EPIPE, but the appropriate constant was not
available at this time.
2016-02-28 17:01:13 +01:00
Nicolas Koch 606bcf9fa6 Fix underflow bug on linux 2016-01-28 21:27:09 +01:00
psych0d0g 7c3aab71a2 Add some sane error messages 2016-01-15 21:16:34 +01:00
tomaka 1603bc8423 Merge pull request #94 from Geal/coreaudio-fix
Coreaudio compilation fixes
2016-01-12 17:49:34 +01:00
Geoffroy Couprie dd87dbc1d2 Fix compilation on OSX with the new API for coreaudio-rs
this builds upon the following pull request:
https://github.com/tomaka/cpal/pull/81
2016-01-12 17:06:14 +01:00
tomaka b049e80ca3 Merge pull request #84 from tomaka/alsa-channels
Use correct ALSA channels
2015-12-15 17:49:42 +01:00
Peter Atashian fc4e3ce823 Update winapi
Signed-off-by: Peter Atashian <retep998@gmail.com>
2015-11-09 17:52:43 -05:00
Mathijs van de Nes 951b7f5e65 Catch another 'device not found' error code 2015-10-13 12:22:07 +02:00
Pierre Krieger 55dbfa881e Use correct ALSA channels 2015-09-27 13:27:00 +02:00
Pierre Krieger c93ffcff6c Add Voice::get_period() 2015-09-27 13:00:17 +02:00
Ronald Kinard 30e96aa15a coreaudio: implementation cleanup 2015-09-26 23:04:17 -05:00
Ronald Kinard 1cdf5af808 coreaudio: Implement some missing functions.
underflow and get_pending_samples.
2015-09-24 16:24:12 -05:00
Ronald Kinard 53c5529b16 Return correct length of buffer, stub unimpl funcs 2015-09-24 13:19:42 -05:00
Ronald Kinard fd50a113a1 Revert "coreaudio: Add support for U16/I16 PCM formats."
This reverts commit bdef4fb3fe.
2015-09-24 12:54:54 -05:00
Ronald Kinard bdef4fb3fe coreaudio: Add support for U16/I16 PCM formats.
The conversion is done Rust-side instead of using AUHAL's
automatic conversion because I haven't gotten around generics
issues yet.
2015-09-23 23:19:29 -05:00
Ronald Kinard 54fb5b03cc Set coreaudio sample rate to 44100.
This makes rodio demos work correctly!
2015-09-23 22:23:57 -05:00
Ronald Kinard dbf9ae20da Make coreaudio Voice Send/Sync. 2015-09-23 22:14:32 -05:00
Ronald Kinard c841be235c Restore CoreAudio support after API overhaul. 2015-09-23 22:02:28 -05:00
Pierre Krieger 6bd28231ec Make sure that all writes succeed 2015-09-22 21:01:26 +02:00
Pierre Krieger 5fc346b34b Make the ALSA implementation more robust by recovering from underruns 2015-09-22 20:20:17 +02:00
Pierre Krieger 44e9dce43f Add Voice::get_pending_samples 2015-09-22 17:59:36 +02:00
Pierre Krieger 33dc72ab45 Add device name on WASAPI 2015-09-22 16:05:40 +02:00
Pierre Krieger 5fa41538a6 Various ALSA fixes 2015-09-22 15:46:56 +02:00
tomaka 0a13991f86 Merge pull request #75 from tomaka/alsa-format
Use the correct format in ALSA
2015-09-22 15:23:28 +02:00
Pierre Krieger 46151e09cc Use the correct format in ALSA 2015-09-22 15:20:11 +02:00
Pierre Krieger a2b8b4f4a7 Use the correct device name when enumerating formats 2015-09-22 15:12:41 +02:00
Pierre Krieger 73906885f9 Fix bug and filter out devices that are not "Output" 2015-09-22 15:04:32 +02:00
tomaka debb6c957c Merge pull request #73 from tomaka/example-enumerate
Example enumerate
2015-09-22 14:49:31 +02:00
Pierre Krieger ec48453b6f Add endpoint::get_name() and an enumerate example 2015-09-22 14:46:27 +02:00
tomaka d4c7d91fd7 Merge pull request #63 from tomaka/alsa-formats
Correctly enumerate supported formats on ALSA
2015-09-22 13:56:22 +02:00
Pierre Krieger 8d21f5ff25 Store the format in the public `Voice` struct 2015-09-22 13:34:06 +02:00
Pierre Krieger d0e5e7f4e6 General WASAPI cleanup 2015-09-22 13:26:22 +02:00
Pierre Krieger de0236b3b0 Fix the hack in the WASAPI implementation 2015-09-22 10:26:11 +02:00
tomaka d3e610a614 Merge pull request #64 from tomaka/underflowed
Add an underflow() method to Voice
2015-09-22 10:02:41 +02:00
tomaka 826ad84db4 Merge pull request #66 from tomaka/inline
Add #[inline] attributes
2015-09-22 10:01:59 +02:00
Peter Atashian 61ac0528e7 Update winapi dependency
Signed-off-by: Peter Atashian <retep998@gmail.com>
2015-09-17 14:22:52 -04:00
Peter Atashian 5b1291c215 Unused extern crate libc
Signed-off-by: Peter Atashian <retep998@gmail.com>
2015-09-17 06:29:13 -04:00
Pierre Krieger 75f828b04f Add #[inline] attributes 2015-09-11 10:55:29 +02:00
Pierre Krieger 3dd7a8abe7 Add UnknownBufferType::len() 2015-09-10 21:24:41 +02:00
Pierre Krieger c5e2cdd3c5 Add an underflow() method to Voice 2015-09-10 21:03:40 +02:00
Pierre Krieger c5f51183f4 Correctly enumerate supported formats on ALSA 2015-09-10 19:48:39 +02:00
Pierre Krieger d9eae23023 Restore the null implementation and compile it every time 2015-09-10 18:42:42 +02:00
Pierre Krieger 541af2f7f2 Fix compilation on ALSA 2015-09-10 12:43:37 +02:00
Pierre Krieger 48282a068d Handle channels positionning 2015-09-10 11:44:19 +02:00
Pierre Krieger d7a31b4762 Fix doctests 2015-09-01 17:47:55 +02:00
Pierre Krieger 3db17889a4 Make ALSA compile again 2015-09-01 17:15:49 +02:00
Pierre Krieger 078769dbbd Enable 32bits samples with WASAPI 2015-09-01 15:58:22 +02:00
Pierre Krieger 77fb55329e Better error handling in format detection 2015-09-01 15:33:44 +02:00
Pierre Krieger dc08fc4652 Now decoding the format from the WAVEFORMAT returned by the winapi 2015-09-01 15:32:03 +02:00
Pierre Krieger bf20431901 Handle F32 formats in Voice::new 2015-09-01 14:51:35 +02:00
Pierre Krieger 52052b6d07 Use the format passed as parameter in Voice::new 2015-09-01 14:26:25 +02:00
Pierre Krieger 98b931edff Add proper error handling 2015-09-01 14:17:57 +02:00
Pierre Krieger 1985c346ac Add supported formats enumeration 2015-09-01 13:53:54 +02:00
Pierre Krieger 47f966bf75 Correctly enumerate audio devices (core + wasapi) 2015-09-01 11:29:00 +02:00
Pierre Krieger ca72d1d67e Remove the conversion system 2015-08-20 14:44:23 +02:00
Mariusz Ceier 55eec8567e Add more detailed message to panic
When samples format is not supported, cpal panics with "not yet implemented" message, which is not useful in bug reports.
This adds samples format to the message.

Signed-off-by: Mariusz Ceier <mceier+cpal@gmail.com>
2015-08-18 08:54:40 +02:00
Ronald Kinard 6389ab3ece Remove use of box syntax.
Allows build on stable/beta rust.
2015-07-25 17:13:51 -05:00
Ronald Kinard 157011182a Add box syntax feature annotation.
Fixes build.
2015-07-25 17:08:31 -05:00
Pierre Krieger 2f36175d96 Fix samples signs on win32 2015-07-22 14:28:45 +02:00
Pierre Krieger c71d9d74b3 Merge branch 'sample-format' of https://github.com/kmcallister/cpal into fix-signed 2015-07-22 14:28:13 +02:00
Pierre Krieger 48b7278254 Fix the win32 build 2015-07-20 19:06:58 +02:00
Pierre Krieger b813aa168a Calls to a single ALSA channel are not thread safe 2015-06-24 15:17:52 +02:00
Peter Atashian 618ef2a4f9 Use shiny new COM
Signed-off-by: Peter Atashian <retep998@gmail.com>
2015-05-27 12:24:14 -04:00
Pierre Krieger d85f969caf Rustup and version bumps 2015-04-20 09:30:36 +02:00
Pierre Krieger 07b2009dae Update for Rustc 1.0.0 beta 2015-04-04 09:22:23 +02:00
Pierre Krieger 93073f1ff7 Update for change in rustc and winapi 2015-03-30 11:19:03 +02:00
Pierre Krieger a6c1b14d66 Rustup 2015-03-26 10:03:40 +01:00
Pierre Krieger 84326cb4a7 Rustup 2015-03-25 13:50:52 +01:00
mitchmindtree 1d66e18d7e Fixed coreaudio callback to send proper buffersize, removed code in lib where sampleformat affected buffersize 2015-03-03 18:17:21 +11:00
mitchmindtree 1347c7c99d Removed core_audio-sys local bindings in favour of new coreaudio-rs crate 2015-03-01 05:50:29 +11:00
mitchmindtree d6470de74c Properly shutdown the AudioUnit on drop 2015-02-28 06:43:15 +11:00
mitchmindtree f212d85889 OSX support via the Apple Core Audio, Audio Unit C API. Only supports f32 so far. 2015-02-28 06:05:24 +11:00
Keegan McAllister 8692eb2fc6 Correct reported ALSA sample format 2015-02-24 14:02:22 -08:00
mitchmindtree 2b86445c9a Merge remote-tracking branch 'upstream/master'
merging with upstream changes
2015-02-23 00:50:10 +11:00
mitchmindtree c9fe2a132a Commiting pre-merge 2015-02-23 00:50:06 +11:00
Pierre Krieger 28bd368658 Update for rustc 2015-02-22 11:24:49 +01:00
Pierre Krieger 0fa579d885 Update for rustc 2015-02-19 21:22:22 +01:00
Pierre Krieger 2e6143269a Update for rustc 2015-01-29 14:57:11 +01:00
Pierre Krieger 284f12f1cb Update for winapi 2015-01-20 16:45:47 +01:00
Pierre Krieger 48efe03661 Add a "null" implementation for platforms that aren't supported 2015-01-09 22:52:12 +01:00
Pierre Krieger 2bc50adf4d Update for rust-1.0 alpha 2015-01-09 21:25:51 +01:00
Pierre Krieger 23e1e0639c Update for Rustc 2015-01-08 21:24:04 +01:00
Pierre Krieger 420a0f0fd4 Update for rustc 2015-01-05 10:52:59 +01:00
Pierre Krieger 7adfdb4461 Update for changes in rustc 2014-12-30 08:35:13 +01:00
Pierre Krieger 7389ebf84b Add `#[must_use]` marker for Buffer 2014-12-26 10:39:19 +01:00
tomaka 73cd809636 Merge pull request #5 from tomaka/add-play-pause
Add play() and pause() functions
2014-12-23 15:28:43 +01:00
Pierre Krieger d947014084 Add play() and pause() functions 2014-12-23 15:25:25 +01:00
tomaka 0f76134359 Merge pull request #8 from tomaka/clean-convert-samples
Cleanup and add tests for convert_samples_rate
2014-12-23 15:02:26 +01:00
Pierre Krieger 6f01c38a62 Implement f32 to i16 and f32 to u16 conversions 2014-12-22 16:35:10 +01:00
Pierre Krieger aa83f64443 Cleanup and add tests for convert_samples_rate 2014-12-22 16:31:37 +01:00
Pierre Krieger fb11478bf6 Cleanup and add tests for convert_channels 2014-12-22 15:34:18 +01:00
Pierre Krieger 56cb67989e Update for rustc 2014-12-20 18:55:44 +01:00
Pierre Krieger e607e65379 Improve documentation 2014-12-17 09:45:14 +01:00
Pierre Krieger 04f9aac2c3 Rename `Channel` to `Voice` 2014-12-17 09:16:26 +01:00
Pierre Krieger 094dbef0e4 Add some documentation 2014-12-17 09:13:58 +01:00
Pierre Krieger f096a3b3a9 Add fixes and tests for samples conversions 2014-12-17 09:08:13 +01:00
Pierre Krieger 9721004ad0 Use Cow for formats conversions to avoid an allocation and copy 2014-12-17 08:53:09 +01:00
Pierre Krieger f4ac8a5492 Implement all samples formats 2014-12-17 08:47:19 +01:00
Pierre Krieger d3d6dd94db Implement samples formats conversions 2014-12-17 08:39:00 +01:00
Pierre Krieger c2ed846765 Add basic implementation for alsa 2014-12-16 16:54:58 +01:00
Pierre Krieger 302a1941ab Fix warnings 2014-12-15 16:41:57 +01:00
Pierre Krieger d06a67a97b Fix PCM formats conversions not working 2014-12-15 16:40:55 +01:00
Pierre Krieger 49636365d8 Switch back to using buffers 2014-12-15 16:32:13 +01:00
Pierre Krieger 1a556514b0 Sound output now works correctly 2014-12-15 16:26:55 +01:00
Pierre Krieger 9598f68d3c Minor fixes 2014-12-15 16:06:37 +01:00
Pierre Krieger 5c6fa4384f Fix issue when calling `buffer.samples()` multiple times with the same buffer 2014-12-15 15:48:30 +01:00
Pierre Krieger e26a8c4cb2 Minor nitpicking 2014-12-15 15:40:30 +01:00
Pierre Krieger 04d07c27dc Modify API to use a "samples" iterator 2014-12-15 15:29:59 +01:00
Pierre Krieger 081912c5fb Implement some samples rate conversions 2014-12-15 11:58:52 +01:00
Pierre Krieger 32bca93cc9 Implement some basic data conversion 2014-12-15 11:45:38 +01:00
Pierre Krieger b23857a57c Restore variable input format system 2014-12-15 10:29:29 +01:00
Pierre Krieger f00bb5a2b8 Update for rustc 2014-12-15 10:16:18 +01:00
Pierre Krieger b4b75f526a Remove old code 2014-12-11 19:42:49 +01:00
Pierre Krieger 8efaf06ec2 Add destructor for wasapi::Channel 2014-12-11 19:42:04 +01:00
Pierre Krieger 99c23327d8 Add some formats-related functions 2014-12-11 19:07:58 +01:00
Pierre Krieger 0bdafdab9b Buffer now always has the u8 format 2014-12-11 19:02:04 +01:00
Pierre Krieger b98ac14bf4 Add some documentation 2014-12-11 18:09:48 +01:00
Pierre Krieger 873779aaa8 Add basic API 2014-12-11 17:41:18 +01:00
Pierre Krieger 6b48a00758 Semi-working WASAPI example 2014-12-11 16:28:26 +01:00
Pierre Krieger 4f96e54e31 Initial commit 2014-12-11 14:23:51 +01:00