Andrew Kelley
7238d29666
sample rate is exposed as a list of min/max pairs
2015-08-08 14:44:31 -07:00
Andrew Kelley
eb7308d992
CoreAudio: microphone example works
2015-08-08 11:45:21 -07:00
Andrew Kelley
29d55f59f7
CoreAudio: ability to open an input device
2015-08-07 15:28:22 -07:00
Andrew Kelley
48d927d8e3
CoreAudio: ability to set buffer duration
2015-08-07 13:40:25 -07:00
Andrew Kelley
cdb02e2b46
CoreAudio: underflow test passes
2015-08-07 13:13:10 -07:00
Andrew Kelley
c263a29b52
os: fix cond timed wait crash on large timeout
2015-08-06 21:28:02 -07:00
Andrew Kelley
bdb604cc45
PulseAudio: handle error instead of panicking
2015-08-04 22:20:07 -07:00
Andrew Kelley
753673b194
CoreAudio: fix build
2015-08-04 22:15:43 -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
a378cac92d
JACK: fix not setting outstream buffer_duration
2015-08-04 12:25:15 -07:00
Andrew Kelley
29a914ceba
no constructors or destructors
2015-08-04 11:03:19 -07:00
Andrew Kelley
28f73ba037
CoreAudio: listen for changes to device properties
2015-08-04 10:40:26 -07:00
Andrew Kelley
d00fe4db58
CoreAudio: cleanup
2015-08-04 09:52:48 -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
df0ca8a772
CoreAudio: sine wave example works
2015-08-03 22:27:09 -07:00
Andrew Kelley
a774a72958
CoreAudio: get the full list of available sample rates
2015-08-03 17:06:38 -07:00
Andrew Kelley
c347629c8d
CoreAudio: obtain device buffer duration
2015-08-03 15:14:41 -07:00
Andrew Kelley
d8aa9dce4d
CoreAudio: get the UID for the device id
2015-08-03 14:58:46 -07:00
Andrew Kelley
b0f983bd84
CoreAudio: obtain sample rate information for devices
2015-08-03 14:29:57 -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
6d185de82c
CoreAudio: emit on_backend_disconnecte when service restarts
2015-08-01 13:24:58 -07:00
Andrew Kelley
7371ce5146
Fix kqueue-based cond and signal implementation
2015-08-01 13:01:49 -07:00
Andrew Kelley
4c5742eb29
CoreAudio skeleton
2015-07-31 18:52:51 -07:00
Andrew Kelley
1829fbf073
fix build on OSX
2015-07-31 18:06:11 -07:00
Andrew Kelley
860370d859
rename examples, install them, and correct #include path
2015-07-30 14:16:22 -07:00
Andrew Kelley
2a70bdb745
add a test for underflow handling and expose os API
2015-07-30 12:07:58 -07:00
Andrew Kelley
6a439dffb9
document device pairs
2015-07-30 10:46:25 -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
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
a5e1c0024d
ALSA: detect 'default' (no colon) as default device
2015-07-29 01:15:01 -07:00
Andrew Kelley
97ee72ce5f
JACK: fix playback glitchfest
2015-07-28 23:20:30 -07:00
Andrew Kelley
754343bba6
microphone example works with JACK
2015-07-28 18:47:28 -07:00
Andrew Kelley
1eca206a24
follow PulseAudio's lead for default channel layouts
2015-07-28 15:23:08 -07:00
Andrew Kelley
70441184a1
JACK: detect channel layout based on port names
2015-07-28 14:53:54 -07:00
Andrew Kelley
eeae08e1a3
JACK emits on_backend_shutdown event
2015-07-28 13:36:31 -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
85549b59b7
ring buffer: fewer mallocs during init
2015-07-27 15:29:10 -07:00
Andrew Kelley
f37ed6ddd4
JACK: determine channel layouts of devices
2015-07-27 11:27:41 -07:00
Andrew Kelley
42961553d8
JACK: ability to list devices
2015-07-24 22:00:33 -07:00
Andrew Kelley
447a241c2e
JACK deal with the global msg callbacks
2015-07-24 19:16:48 -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
057f4ea07e
avoid linking against ___cxa_guard_acquire
...
and ___cxa_guard_release. Fixes build with clang on OSX.
2015-07-23 11:59:06 -07:00
Andrew Kelley
8177d2f46d
fix extra functions and missing prototype
2015-07-23 11:56:05 -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
Andrew Kelley
eca4bc6074
ALSA: poll instead of async handler
2015-07-21 21:21:00 -07:00
Andrew Kelley
f6684a0585
PulseAudio: implement pausing input streams
2015-07-21 17:43:41 -07:00
Andrew Kelley
29dd765aa0
warning not panic on windows when rtprio fails
2015-07-21 11:14:42 -07:00
Andrew Kelley
db8eca47ab
fix not freeing mirrored memory on Windows
2015-07-21 11:11:32 -07:00
Andrew Kelley
43d33e5a67
don't access device until open() is called
...
and then check for a probe error.
2015-07-21 02:12:28 -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
de5bb99d1f
ALSA: support mmap complex placement
2015-07-20 17:35:35 -07:00
Andrew Kelley
1e7cd145ad
rt prio warning: fix race condition
2015-07-20 16:52:07 -07:00
Andrew Kelley
20f3f76ef3
fix devices race condition
2015-07-20 14:47:51 -07:00
Andrew Kelley
71a365ca1b
dummy: implement pause/resume and improve period timing
2015-07-20 13:16:52 -07:00
Andrew Kelley
96c8332246
dummy backend: fix playback
2015-07-20 00:35:46 -07:00
Andrew Kelley
24f466a0a0
list_devices takes arguments to override backend
2015-07-20 00:00:43 -07:00
Andrew Kelley
3d2ca2a610
docs
2015-07-19 22:36:50 -07:00
Andrew Kelley
a37825d01a
add some documentation
2015-07-18 00:22:36 -07:00
Andrew Kelley
0bc918e2c8
better list_devices behavior
2015-07-16 23:37:17 -07:00
Andrew Kelley
46a6a179b6
build: clean endian ifdefs
2015-07-16 14:11:08 -07:00
Andrew Kelley
3999f57698
ability to pause and resume streams
...
and some cleanup
2015-07-16 13:37:41 -07:00
Andrew Kelley
5f2581ce2c
remove bloat
2015-07-16 00:27:22 -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
Andrew Kelley
59026ccba7
examples are smarter about device parameters
2015-07-13 09:59:42 -07:00
Andrew Kelley
5b3fd175f8
stream API update; expose multiple channel layouts
2015-07-13 09:17:20 -07:00
Andrew Kelley
f0c8c68592
detect endianness with cmake
2015-07-10 03:31:51 -07:00
Andrew Kelley
6c2226a6d7
list_devices example: more detailed output
2015-07-10 03:00:29 -07:00
Andrew Kelley
7d45b15036
rename SoundIoOutputDevice to SoundIoOutStream
...
and SoundIoInputDevice to SoundIoInStream
2015-07-10 02:42:29 -07:00
Andrew Kelley
3b8d896c8e
ALSA backend determines what formats a device supports
2015-07-10 02:21:47 -07:00
Andrew Kelley
8887a528ef
sample formats: take into account ALSA
2015-07-10 00:46:03 -07:00
Andrew Kelley
fe2040da7c
ALSA backend determines channel layout of devices
2015-07-09 23:35:58 -07:00
Andrew Kelley
c760bc4df7
default sample rate is not as important as I thought
2015-07-08 00:42:17 -07:00
Andrew Kelley
c39c1ab9f4
ALSA: expose pcm devices and introduce is_raw
2015-07-07 23:29:09 -07:00
Andrew Kelley
fe61322b23
beginning of ALSA support - list_devices works
2015-07-07 02:55:32 -07:00
Andrew Kelley
d6fcef468b
microphone example: detect incompatible in/out devices
2015-07-06 17:16:03 -07:00
Andrew Kelley
5048d7aa57
ring buffer works on windows
2015-07-06 16:02:20 -07:00
Andrew Kelley
2b0744816f
POSIX ring buffer works on OSX and is simpler
2015-07-06 14:10:26 -07:00
Andrew Kelley
a69ff6025c
add and export a ring buffer implementation
2015-07-06 01:05:22 -07:00
Andrew Kelley
93f288e8b1
sine wave example working with pulseaudio on linux
2015-07-04 14:20:52 -07:00
Andrew Kelley
664c50752a
sine example working with dummy
2015-07-04 03:55:00 -07:00
Andrew Kelley
60b731ab4f
os: make sure tv_nsec is less than 1,000,000,000
2015-07-04 03:37:50 -07:00
Andrew Kelley
a35a2b7e0a
add a couple unit tests, fix a couple bugs
2015-07-04 02:57:06 -07:00
Andrew Kelley
39cb1d4fde
os: implement cond wait and cond timed wait on windows
2015-07-03 01:24:19 -07:00
Andrew Kelley
1738edeaf9
windows: attempt high priority only when asked for it
2015-07-02 23:18:00 -07:00
Andrew Kelley
f57f691068
work around InitOnceExecuteOnce being completely broken
...
runs on Windows now
2015-07-02 23:12:58 -07:00
Andrew Kelley
15b801c820
building on windows
2015-07-02 19:15:09 -07:00
Andrew Kelley
efe95ded36
closer to building on windows
2015-07-02 03:48:27 -07:00
Andrew Kelley
a659adebd0
fix build on linux
2015-07-02 02:53:08 -07:00
Andrew Kelley
6378e6afd5
implement conditions and signals with kqueue
...
now libsoundio builds on OS X and FreeBSD
2015-07-02 02:45:02 -07:00
Andrew Kelley
24557e0ee3
closer to compiling on OS X
2015-07-01 13:24:47 -07:00
Andrew Kelley
46b43356f9
fix name collision in list
2015-07-01 12:56:21 -07:00
Andrew Kelley
70e956abdf
refactor connect/disconnect API
2015-07-01 02:53:53 -07:00
Andrew Kelley
6a5db549f5
list_devices example works with dummy backend
2015-07-01 02:37:51 -07:00
Andrew Kelley
18a37da848
implement getting devices
2015-07-01 01:29:35 -07:00
Andrew Kelley
7eaa3d3054
implement getting default device indexes
2015-07-01 01:24:57 -07:00
Andrew Kelley
d36493e1fe
implement getting audio device counts
2015-07-01 01:20:26 -07:00
Andrew Kelley
e409400f04
extracted code from Genesis
2015-07-01 01:02:44 -07:00
Andrew Kelley
c40ef12ec6
compile success
2015-06-30 14:13:02 -07:00
Andrew Kelley
c2fa8b4b4d
skeleton
2015-06-30 14:04:45 -07:00