David Reid
6881209021
Put the declaration of mal_device_set_stop_callback() in a sensible location.
2016-10-21 13:46:20 +10:00
David Reid
ce99f62f63
Convert tabs to spaces and remove trailing spaces.
2016-10-21 13:35:21 +10:00
David Reid
b5831564da
Use C syntax highlighting for example.
2016-10-21 13:25:58 +10:00
David Reid
f2d0fac903
Add gitignore.
2016-10-21 13:25:17 +10:00
David Reid
3a1072e30f
Update example in readme.
2016-10-21 13:24:33 +10:00
David Reid
596a3ef966
Add onStop callback which is called when a device is stopped either explicitly or internally as a result of an error.
2016-10-21 12:54:14 +10:00
David Reid
26ccabc834
Add examples.
2016-10-21 12:53:38 +10:00
David Reid
bfc4d3ffc5
DirectSound: Add back notifications to better handle waking up the worker thread based on periods.
2016-10-21 10:59:25 +10:00
David Reid
46aaa53f2c
Update documentation and add support for default buffer sizes and periods.
2016-10-21 10:33:13 +10:00
David Reid
5cbbf0b988
Have the onSend and onRecv callbacks work on frames rather than samples.
...
The rationale for this change is to keep it consistent with the rest of the library.
2016-10-21 08:34:14 +10:00
David Reid
6ec93e902e
DirectSound: Improve rewind latency.
2016-10-21 08:19:18 +10:00
David Reid
d984e39e1b
Improve the main loop for DirectSound by making better use of periods.
2016-10-21 08:08:30 +10:00
David Reid
3180cadb4a
Fix ALSA build.
2016-10-20 21:47:30 +10:00
David Reid
bf093f22db
Remove unnecessary notifications from the DirectSound backend.
2016-10-20 21:40:08 +10:00
David Reid
05c85e5bd2
Fix some thread-safety issues with callbacks.
2016-10-20 21:22:11 +10:00
David Reid
6ed399d57b
Remove the notion of fragments and use a simplified buffer size and periods concept instead.
2016-10-20 21:16:49 +10:00
David Reid
08db9fbda8
Rename mal_device__read_samples_from_client() to mal_device__read_frames_from_client() and mal_device__send_samples_to_client() to mal_device__send_frames_to_client().
...
Rationale for this is to keep it consistent with the rest of the library.
2016-10-20 13:18:20 +10:00
David Reid
7039d4c9bf
Add support for rewinding to the DirectSound backend.
2016-10-20 12:58:55 +10:00
David Reid
59feeafc03
Add some infrastructure for better thread-safety.
2016-10-19 21:42:43 +10:00
David Reid
9698068d3e
ALSA: Have the id of enumerated devices be returned in "hw:%d,%d" format.
...
The rationale for this change is that during testing I noticed that
snd_pcm_open() would sometimes fail with "Invalid value for card"
when using the "NAME" hint returned by snd_device_name_get_hint()
verbatim. Using "hw:%d,%d" seems to fix this problem.
2016-10-19 21:14:20 +10:00
David Reid
916328c550
ALSA: Add a fallback for when snd_pcm_open() fails for "default" and "pulse" devices.
2016-10-19 19:27:17 +10:00
David Reid
1617261be1
ALSA: Fix a bug with timers for non-Windows platforms.
2016-10-19 19:00:33 +10:00
David Reid
f9130d74c1
ALSA: Make device initialization a bit more robust.
...
- The buffer size is now set with set_buffer_size_near()
- The size of the buffer is now independant of periods
- snd_pcm_sw_params_set_avail_min() is now called with the previous
power of 2 rather than the next.
- The start threshold is now called with the previous power of 2
rather than the next.
2016-10-19 18:38:33 +10:00
David Reid
e2c93382f8
ALSA: Remove some old device iteration code.
2016-10-19 17:45:45 +10:00
David Reid
a18a38f74e
Add initial implementation of the null device.
2016-10-19 16:29:20 +10:00
David Reid
56b9101cfd
Add placeholder APIs for rewinding:
...
- mal_device_get_available_rewind_amount()
- mal_device_rewind()
2016-10-19 12:00:32 +10:00
David Reid
f7a825d9de
Fix build for the DirectSound backend.
2016-10-18 12:35:26 +10:00
David Reid
bf67d5a3f0
ALSA: Experiment with a more user-friendly device enumeration.
2016-10-18 11:11:03 +10:00
David Reid
4094293cdf
ALSA: Add support for mal_format_s24.
2016-10-18 06:57:58 +10:00
David Reid
6cf9ee7cb2
Fix C++ build for GCC/ALSA.
2016-10-18 06:47:28 +10:00
David Reid
91fbc1b0da
Fix a few typos.
2016-10-18 06:31:01 +10:00
David Reid
183fdd0d16
Fix platform detection for non-MSVC compilers.
2016-10-18 06:23:22 +10:00
David Reid
f630a0153c
Fix C++ build for MSVC and DirectSound.
2016-10-18 06:17:56 +10:00
David Reid
3c4e46bcb9
DirectSound: Add support for mal_format_s24.
2016-10-18 06:15:13 +10:00
David Reid
98046e0a4f
ALSA: Address an issue where it was possible for some samples to get dropped when a capture device is closed.
2016-10-17 19:23:08 +10:00
David Reid
cc98c7efff
Have mal_device_init() take a callback for log message.
2016-10-17 17:42:31 +10:00
David Reid
2cb9a8c632
Experimental work on MMAP mode for ALSA.
2016-10-16 20:45:43 +10:00
David Reid
fd85d5ac53
Improve the DirectSound backend by not using notifications exclusively to manage data retrieval and submission.
2016-10-16 13:56:23 +10:00
David Reid
af5e5d4846
Properly initialize-to-zero device info for null and ALSA backends.
2016-10-16 11:04:26 +10:00
David Reid
be2167709d
Minor consistency fix.
2016-10-16 10:48:23 +10:00
David Reid
be95c67dc6
Clean up #includes.
2016-10-16 10:36:10 +10:00
David Reid
44a6be1e7d
Remove an unnecessary #include.
2016-10-16 10:23:55 +10:00
David Reid
907a8fc5dc
Clean up old documentation.
2016-10-16 10:21:24 +10:00
David Reid
74ea3f8381
ALSA: Don't ask the client for more data when the device is closing.
2016-10-16 08:20:14 +10:00
David Reid
8c34bbbcb7
Clean up.
2016-10-16 08:13:04 +10:00
David Reid
6f11e64689
Clean up some old unused code.
2016-10-16 08:01:51 +10:00
David Reid
9d007e9f09
Use snd_pcm_hw/sw_params_alloca() instead of *malloc()
2016-10-16 07:53:22 +10:00
David Reid
0e927cf7da
Fixes for GCC and ALSA
...
- Fix error with usleep() being undefined.
- Add support for 64-bit floating point formats for ALSA.
2016-10-16 07:47:24 +10:00
David Reid
5e9657aa60
Add basic logging and improve error reporting.
2016-10-16 07:23:57 +10:00
David Reid
1301af97ee
Clean up.
2016-10-15 23:03:25 +10:00