Chris Robinson
903d878460
Replace restrict with RESTRICT
2018-10-29 11:32:50 -07:00
Chris Robinson
c39eeb9638
Don't try to get the JNIEnv on Android
...
It's currently not used. More stuff is needed anyway which may need a different
approach.
2018-10-02 12:40:26 -07:00
Chris Robinson
79314c4461
Include the limiter's lookAhead delay in the device latency
2018-09-25 23:05:27 -07:00
Chris Robinson
952ff84b99
Properly queue buffers for OpenSL capture
2018-09-17 23:43:23 -07:00
Chris Robinson
b77e6096b8
Fix some potential race conditions with OpenSL
...
For playback, increment the ring buffer's write pointer before queueing audio,
to handle cases where the callback is invoked, advancing the read pointer,
before the write pointer is advanced.
For capture, limit the number of re-queued chunks to the number of fully read
chunks.
2018-09-17 22:49:52 -07:00
Chris Robinson
275658b6db
Some suggested changes for iOS
2018-09-07 23:01:17 -07:00
Chris Robinson
46cfedb117
Pass the device name list to the backend probe method
2018-09-07 22:02:37 -07:00
Chris Robinson
212cb8e298
Implement capture support for SoundIO
2018-09-07 20:08:24 -07:00
Chris Robinson
7394dd512d
Rename ALCsndioBackend
2018-09-07 18:45:24 -07:00
Chris Robinson
24b646dec0
Append the OpenSL capture device to the appropriate list
2018-08-23 18:20:09 -07:00
Chris Robinson
fd1458ce1b
Always prepare the ALSA PCM handle before starting capture
...
Draining the ALSA device via stopping puts it into a setup state, which
requires re-preparing before playback can start again. Preparing it prior to
the first start seems to cause no harm, so just always do it before starting.
2018-06-08 05:02:47 -07:00
Chris Robinson
525b6fe168
Clear ALSA's PCM handle after closing it
2018-04-19 12:22:39 -07:00
Chris Robinson
414b56edec
Initialize COM using the multithreaded apartment
...
I honestly have no idea which is the correct (or better) mode to use given the
confusing mess COM is, but CoInitialize uses single-threaded apartments which
seems to be a problem for with at least a couple games in the STALKER series
(the call fails, which causes us to drop back to the DSound backend).
2018-04-01 16:39:20 -07:00
Chris Robinson
e5e3b05015
Fix capture device closing in the CoreAudio backend
2018-03-24 09:25:49 -07:00
Chris Robinson
e37634e908
Remove an unused struct and move some functions to where they're used
2018-03-23 11:58:11 -07:00
Chris Robinson
63c9d95b84
Combine multiple allocations into one
2018-03-23 11:39:07 -07:00
Chris Robinson
603e3e23ac
Remove an outdated comment
2018-03-14 23:51:13 -07:00
Chris Robinson
2011421e18
Release the PulseAudio mainloop lock sooner
2018-03-14 23:48:46 -07:00
Chris Robinson
f65e83c349
Avoid using pa_stream_begin_write with PulseAudio
...
It seems to actually have a negative performance impact when the system is
under load. Without having actual measurements for any potential benefits,
simply go with the recommended (and previous fallback) method of allocating
space for the write and passing the free method.
Ideally some kind of ring buffer could be used, so rather than constantly
allocating and freeing blocks of memory, it uses the same memory over again
with the callback marking each one as reusable. Unfortunately the callback
isn't given much information to work with, and the update size (minreq) can
potentially change during playback, which complicates things.
2018-03-14 03:21:26 -07:00
Chris Robinson
a6ddeaf5f1
Rename the mmdevapi backend to wasapi
2018-03-09 18:56:24 -08:00
Chris Robinson
30821e978b
Add extern "C" to some headers
2018-03-09 17:24:03 -08:00
Chris Robinson
c0e7a5b8b0
Prefix SDL2 device names on Windows
2018-03-09 11:41:28 -08:00
Chris Robinson
8b24255557
Request the device's sample type for SDL2
2018-03-09 10:53:03 -08:00
Chris Robinson
46e7e96eb3
Store the frame size for the SDL2 backend
2018-03-08 22:23:36 -08:00
Chris Robinson
41cc82e84b
Print the unsupported values from SDL2
2018-03-08 22:09:30 -08:00
Chris Robinson
2866c6cf28
Init and quit the SDL2 audio subsystem with the factory
2018-03-08 18:59:22 -08:00
Chris Robinson
aa7df8183f
Also save the update size with SDL2
2018-03-08 18:22:03 -08:00
Chris Robinson
58760e6184
Use the audio device lock for the SDL2 backend
2018-03-08 18:16:10 -08:00
Chris Robinson
52ca70d98e
Properly close the SDL2 audio device
2018-03-08 18:12:14 -08:00
Chris Robinson
d4fc87fc9c
Avoid calling SDL_GetNumAudioDevices multiple times
2018-03-08 18:07:49 -08:00
Jan Niklas Hasse
2eb29d538b
SDL2 backend: Reset device parameters
2018-03-08 20:42:47 +01:00
Jan Niklas Hasse
0af075b5ff
SDL2 backend: Allow changes to channels and format
2018-03-08 20:27:02 +01:00
Jan Niklas Hasse
ef2b813776
SDL2 backend: Allow frequency changes
2018-03-08 10:17:02 +01:00
Jan Niklas Hasse
a6f93a501a
Handle passing NULL to SDL_OpenAudioDevice as a special device
...
https://discourse.libsdl.org/t/changing-audio-output-when-the-default-audio-playback-device-changes/22399/2
2018-03-08 10:07:22 +01:00
Jan Niklas Hasse
767807cd22
SDL2 backend: Use callback instead of a timing loop
...
The system clock and audio clock aren't necessarily synchronized.
2018-03-08 09:51:44 +01:00
Jan Niklas Hasse
86319127e3
Add SDL2 backend for playback, fix #173
2018-03-07 20:57:53 +01:00
Chris Robinson
03274a5b95
Ensure at least the specified ringbuffer size is writable
...
Previously, all but one of the specified size could be written (so for a size
of n, only n-1 was guaranteed writable). All users pretty much compensated for
this, but it makes more sense to fix it at the source.
2018-03-02 13:01:11 -08:00
Chris Robinson
6f62fed65c
Add an option to limit the write size of the ringbuffer
2018-03-01 21:23:13 -08:00
Chris Robinson
9b878c64f9
Make the Connected state atomic
...
Also don't send the Disconnected event more than once.
2018-02-04 00:01:12 -08:00
Chris Robinson
1f61472e77
Avoid potentially writing partial samples
2018-02-03 14:02:47 -08:00
Chris Robinson
b99e64a0e3
Provide more descriptive messages to disconnection events
2018-02-03 13:54:42 -08:00
Chris Robinson
ec14c98f2d
Use an atomic instead of volatile to tell a thread to quit
2018-02-01 18:59:32 -08:00
Chris Robinson
975c682ec3
Use semaphores to signal for more samples with JACK and OpenSL
2018-02-01 18:54:13 -08:00
Chris Robinson
e7217760f3
Don't bother with an explicit stop backend method
2018-01-29 01:00:53 -08:00
Chris Robinson
a042dbf305
Call the backend close method in the destructor
2018-01-28 23:32:28 -08:00
Chris Robinson
273dca2fa0
Avoid using alloca in the CoreAudio backend
2018-01-16 12:54:20 -08:00
Chris Robinson
8c19497340
Properly cast some parameters for MSVC
2018-01-16 09:40:34 -08:00
Chris Robinson
bbc4ebecab
Use GetProcBinary to get the executable name for PulseAudio
2018-01-13 03:41:56 -08:00
Chris Robinson
e634564b26
Make a couple functions inline
2018-01-12 02:37:48 -08:00
Chris Robinson
dae5faedb0
Use atomic variables in place of volatile
2018-01-11 23:28:15 -08:00