Commit graph

66 commits

Author SHA1 Message Date
Andrew Kelley ee7c0d3e11 convert source code to pure C
List<T> is now a really ugly macro.

Added a workaround for jack.h not putting `void` in function
prototypes for functions that take no arguments. I made upstream
pull requests to jack1 and jack2 but I don't have high hopes
about them getting merged.

I removed the lock-free atomic asserts. clang reports
non-lock-free atomics when in fact it does have lock-free
atomics. I inspected the generated code for gcc and clang
for fetch_add, load, and store, on x86_64 and armhf, and
it's all lock free.

Closes #45.
2015-11-10 02:24:18 -07:00
Andrew Kelley 2633b1bd60 PulseAudio: pass the latency test 2015-11-01 12:39:21 -07:00
Andrew Kelley dbed33abd2 os: remove superfluous condition on init
remove superfluous #include math.h
2015-09-17 13:55:47 -07:00
Andrew Kelley 7e95d9f9c0 PulseAudio: fix soundio_outstream_pause triggering assertion
when called from within write_callback. closes #24
2015-09-14 04:15:02 -07:00
Andrew Kelley 749654b922 PulseAudio: better clear buffer implementation
seek instead of pa_stream_flush
2015-09-07 16:58:46 -07:00
Andrew Kelley e2e483a4d5 no longer depend on or link against libm 2015-09-05 14:56:36 -07:00
Andrew Kelley d8a7a794d3 PulseAudio: fix microphone regression
introduced by adb3cd88ee
2015-09-03 09:35:37 -07:00
Andrew Kelley adb3cd88ee PulseAudio: pass the latency test
See #2
2015-09-02 14:46:36 -07:00
Andrew Kelley e5cd076e2e dummy: pass the latency test
See #2
2015-09-02 13:31:50 -07:00
Andrew Kelley debab8e70f get latency skeleton
See #2
2015-09-02 12:22:03 -07:00
Andrew Kelley 7a714298c1 add soundio_force_device_scan API 2015-08-27 21:45:22 -07:00
Andrew Kelley 16437bd357 various code adjustments
* doc clarifications
 * examples compile with c99 not c11
 * fix pulseaudio on_backend_disconnected not firing only during
   flush events
 * make wait events more efficient
 * fix alsa devices race condition
 * fix backend disconnected code handling
 * add overflow test
 * fix on_events_signal not called at correct times
 * refactor pulseaudio device scanning
 * fix SoundIoErrorNoSuchDevice string value
2015-08-27 20:57:53 -07:00
Andrew Kelley b8a2adb4ec PulseAudio: detect server going offline 2015-08-26 17:10:52 -07:00
Andrew Kelley 8d3a32e668 PulseAudio: fix scan devices out of memory race condition 2015-08-26 15:54:03 -07:00
Andrew Kelley a0562af122 document possible errors 2015-08-26 15:17:51 -07:00
Andrew Kelley d1f27fad83 WASAPI: use stream name for session display name 2015-08-24 19:52:43 -07:00
Andrew Kelley fbc7318268 remove the concept of period duration from the API
also more progress on WASAPI
2015-08-13 22:54:15 -07:00
Andrew Kelley ba65bdb131 WASAPI: shared mode devices support any sample rate 2015-08-12 18:57:34 -07:00
Andrew Kelley 7238d29666 sample rate is exposed as a list of min/max pairs 2015-08-08 14:44:31 -07:00
Andrew Kelley bdb604cc45 PulseAudio: handle error instead of panicking 2015-08-04 22:20:07 -07:00
Andrew Kelley c381526205 callbacks supply min and max frame count parameters
This changes the semantics of the callbacks so that instead of
a single `requested_frame_count` or `available_frame_count`,
the callbacks get a minimum frame count and maximum frame count.

The callback must write at least the minimum or get an underflow.
The minimum will be 0 on ALSA, PulseAudio, and Dummy, and will
equal the maximum on CoreAudio and JACK.

This ensures optimal behavior regardless of buffer size.
2015-08-04 21:57:46 -07:00
Andrew Kelley 8da5ae0798 PulseAudio: opening out stream populates buffer_duration 2015-08-04 13:09:45 -07:00
Andrew Kelley 29a914ceba no constructors or destructors 2015-08-04 11:03:19 -07:00
Andrew Kelley f87961275d write and read functions no longer allow setting frame count
CoreAudio and JACK both have this limitation
2015-08-04 00:56:03 -07:00
Andrew Kelley c52e76928f fix build on linux 2015-08-01 22:40:55 -07:00
Andrew Kelley e6112b40ed rename purpose to aim 2015-07-30 10:39:10 -07:00
Andrew Kelley 4ba1fd91a1 rename device name and description to id and name 2015-07-30 10:26:36 -07:00
Andrew Kelley 12db5fd970 remove all calls to soundio_panic
Return codes are the way errors are communicated, not
crashing the entire program.
2015-07-30 00:46:13 -07:00
Andrew Kelley 2900616e9b flesh out buffer semantics 2015-07-29 21:50:12 -07:00
Andrew Kelley 44569708a0 Delete the concept of prebuffering 2015-07-29 20:55:28 -07:00
Andrew Kelley d3cf8f02db PulseAudio: fix using 100% CPU
soundio_wait_events wasn't blocking but now it is.
2015-07-29 13:12:04 -07:00
Andrew Kelley 0dee34a84e PulseAudio: fix microphone example 2015-07-29 13:02:17 -07:00
Andrew Kelley 0847d727b1 JACK: fix crash when refreshing devices 2015-07-29 12:27:31 -07:00
Andrew Kelley fe29bc4f45 pulseaudio: fix cork logic 2015-07-29 01:27:07 -07:00
Andrew Kelley 6df84096f3 sine example works with JACK 2015-07-28 11:28:07 -07:00
Andrew Kelley 70decb39f5 SoundIoOutStream, SoundIoInStream: void * -> union
For better cache locality and lower mlock requirements.
2015-07-27 17:06:12 -07:00
Andrew Kelley db1195877a SoundIo, SoundIoDevice: unions instead of void *
for better cache locality
2015-07-27 16:37:45 -07:00
Andrew Kelley 5906bc93d9 ALSA implement clear buffer 2015-07-24 14:03:49 -07:00
Andrew Kelley 511fcafc3b dummy: implement prebuffering 2015-07-23 16:49:44 -07:00
Andrew Kelley 69764e1afa microphone example working with dummy backend 2015-07-23 15:04:41 -07:00
Andrew Kelley e7dc300cc6 microphone example working with PulseAudio 2015-07-22 15:43:45 -07:00
Andrew Kelley a3388e792a default device index is -1 if no devices available 2015-07-22 12:07:20 -07:00
Andrew Kelley f6684a0585 PulseAudio: implement pausing input streams 2015-07-21 17:43:41 -07:00
Andrew Kelley 787a7164e0 PulseAudio: fix invalid value sent to pa_stream_write 2015-07-21 00:48:25 -07:00
Andrew Kelley 1eeeff5a24 PulseAudio works again 2015-07-20 22:55:30 -07:00
Andrew Kelley be2675e551 support stream names (used for PulseAudio) 2015-07-20 20:13:35 -07:00
Andrew Kelley 3999f57698 ability to pause and resume streams
and some cleanup
2015-07-16 13:37:41 -07:00
Andrew Kelley 454fab0ffb period_duration instead of period_count 2015-07-15 23:45:21 -07:00
Andrew Kelley 7045cb3988 ALSA sine example is making noise 2015-07-15 20:57:00 -07:00
Andrew Kelley 1e4d87e608 ALSA: open output device with parameters 2015-07-13 21:30:37 -07:00