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
2f14aa569e
ALSA: use period size to calculate buffer size
...
determining the buffer size before the period size sometimes results
in EINVAL.
closes #33
2015-10-13 00:47:18 -07:00
Andrew Kelley
db0e3d136c
fix double clean up corruption when opening stream fails
...
affects ALSA, CoreAudio, JACK, WASAPI, and Dummy.
2015-10-08 17:10:21 -07:00
Andrew Kelley
a3c4f85489
ALSA: fix deadlock under some circumstances
...
If the write_callback came upon an error during the prepare
phase, and never wrote any frames to the hardware buffer,
and another thread tried to soundio_outstream_destroy, this
would cause a deadlock.
This is now fixed.
2015-10-06 18:50:56 -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
2a68f63079
ALSA: pause gives error when state is invalid
2015-09-11 20:33:40 -07:00
Andrew Kelley
f0356597e2
ALSA: remove stray print statement
2015-09-08 15:05:44 -07:00
Andrew Kelley
e2e483a4d5
no longer depend on or link against libm
2015-09-05 14:56:36 -07:00
Andrew Kelley
f8cb816139
ALSA: remove duplicate assert
...
Thanks to Devin Anderson for pointing it out.
2015-09-04 11:11:14 -07:00
Andrew Kelley
918183adc6
ALSA: be ready for /dev/snd to not be available
...
If this occurs, the system has no ALSA support in the kernel,
and it is appropriate for the backend to fail.
closes #6
2015-09-03 15:40:36 -07:00
Andrew Kelley
85c2190675
build: fix build on linux with clang
...
closes #8
2015-09-03 14:05:19 -07:00
Andrew Kelley
1381cf21d3
ALSA: pass the latency test
...
See #2
2015-09-03 09:52:21 -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
06dc7704a3
ALSA: fix sometimes calling write_callback with 0 frame_count_max
2015-09-02 10:24:04 -07:00
Andrew Kelley
c14d61fa32
WASAPI: better pause/unpause and clear buffer behavior
...
See #3
2015-09-01 16:31:56 -07:00
Andrew Kelley
cd72f45f06
ALSA: fix clear buffer behavior
2015-09-01 15:06:33 -07:00
Andrew Kelley
fe4a04d93c
ALSA: better pause/unpause behavior
2015-09-01 14:43:50 -07:00
Andrew Kelley
dd6b7003d9
ALSA: better handling of raw devices
...
* Recover from xruns
* Better period size choice
2015-08-27 22:58:17 -07:00
Andrew Kelley
7a714298c1
add soundio_force_device_scan API
2015-08-27 21:45:22 -07:00
Andrew Kelley
2d8f8e7f31
ALSA: look for the control file rather than pcm files
2015-08-27 21:22:30 -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
c96405a091
rt prio warning behavior is overridable
2015-08-26 12:54:13 -07:00
Andrew Kelley
195ea59209
ALSA: fix playback on raw device
2015-08-26 12:31:09 -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
7238d29666
sample rate is exposed as a list of min/max pairs
2015-08-08 14:44:31 -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
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
f77663399f
CoreAudio: obtain most device information
2015-08-01 22:10:43 -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
5503072fc8
ALSA: recover from underflow gracefully
2015-07-29 22:39:27 -07:00
Andrew Kelley
44569708a0
Delete the concept of prebuffering
2015-07-29 20:55:28 -07:00
Andrew Kelley
a5e1c0024d
ALSA: detect 'default' (no colon) as default device
2015-07-29 01:15:01 -07:00
Andrew Kelley
754343bba6
microphone example works with JACK
2015-07-28 18:47:28 -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
3dd9e513bc
add JACK backend skeleton
2015-07-24 18:43:14 -07:00
Andrew Kelley
5906bc93d9
ALSA implement clear buffer
2015-07-24 14:03:49 -07:00
Andrew Kelley
efa7b7cbc0
ALSA input stream: add missing clean up
2015-07-23 21:07:51 -07:00
Andrew Kelley
34039b4858
microphone example working with ALSA
2015-07-23 20:55:36 -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
db06391646
ALSA: support non mmap device access
2015-07-22 00:04:17 -07:00