Commit Graph

844 Commits

Author SHA1 Message Date
David Reid f35b705fd8 WASAPI: Add a missing "if" statement. 2019-02-26 19:37:00 +10:00
David Reid c7a17d65d5 Tweaks to the WASAPI backend.
This commit attempts to address a crackling issue in full-duplex mode.

* When the capture buffer becomes over-filled it will discard some
  frames to prevent it from straddling the capacity of the internal
  buffer and causing excessive overruns.
* A fix has been implemented to the function that retrieves the number
  of available frames in the device's internal buffer.
* Low-latency shared mode (IAudioClient3) forces small buffer sizes so
  a change has been implemented which bypasses low-latency shared mode
  when a large buffer is specified.
2019-02-26 19:33:38 +10:00
David Reid cf59525ef3 Experimental fix for full-duplex on WASAPI. 2019-02-25 18:25:19 +10:00
David Reid 008cb41617 API CHANGE: Reorder parameters for some APIs.
The APIs that have changed are those that take an output pointer and an
input count in the format of "some_read_function(handle, pBuf, count)".

The updated APIs include:
  * mal_decoder_read_pcm_frames()
  * mal_pcm_converter_read()

Some APIs are scheduled to be replaced in a future version so I have
decided not to replace this at this time since it will be a waste of
time to do so.
2019-02-25 18:15:00 +10:00
David Reid 9ed608a452 Update simple playback example. 2019-02-24 21:01:53 +10:00
David Reid 08e21aae05 Add LICENSE file. 2019-02-24 20:40:34 +10:00
David Reid 8f67ba93cf Simplify Win32 #include's. 2019-02-24 20:31:29 +10:00
David Reid 125383e9ea Fix some warnings. 2019-02-24 20:07:09 +10:00
David Reid 01f04b249e More full-duplex bug fixes. 2019-02-24 20:03:50 +10:00
David Reid 26a218c1af Fix some full-duplex errors. 2019-02-24 19:04:49 +10:00
David Reid 433b7e8ed6 Fix a bug in the ring buffer. 2019-02-24 17:47:08 +10:00
David Reid bd689c560e Fix Core Audio build. 2019-02-24 17:39:07 +10:00
David Reid 0cc126245e Work on full-duplex with Core Audio. 2019-02-24 16:43:37 +10:00
David Reid a9ac84dde2 Work on full-duplex for JACK. 2019-02-24 16:11:27 +10:00
David Reid 1e1e8c0ba1 More full-duplex work on OpenSL and AAudio. 2019-02-24 15:53:20 +10:00
David Reid 5b4b7fa266 More work on full-duplex with WebAudio. 2019-02-24 13:26:18 +10:00
David Reid 51ebb048be Work in progress for full-duplex for WebAudio. 2019-02-23 15:09:39 +10:00
David Reid 212cee5982 Integrate the ring buffer into mini_al.h 2019-02-21 18:06:32 +10:00
David Reid c78aadff9c Fix device initialization with audio(4) on OpenBSD. 2019-02-20 20:01:16 +10:00
David Reid d1f26b4d3b Fix bugs with sndio. 2019-02-19 20:40:22 +10:00
David Reid 7fba7e5c13 Fix OpenBSD build. 2019-02-19 20:08:23 +10:00
David Reid 9f8a4b9a8a Bug fixes for audio(4). 2018-08-25 05:12:25 +00:00
David Reid 5f85f42b92 Fix NetBSD build. 2018-08-25 05:06:50 +00:00
David Reid 581b90d2d3 Fix OSS build. 2019-02-19 08:15:18 +10:00
David Reid 79e833135c Work in progress on full-duplex for sndio. 2019-02-17 15:22:33 +10:00
David Reid a311b9068d Work in progress on full-duplex for audio(4). 2019-02-17 13:59:22 +10:00
David Reid 9f294cf81e Work in progress on full-duplex support for OSS. 2019-02-16 15:41:22 +10:00
David Reid 31329a65eb Work on full-duplex support for OpenSL. 2019-02-16 08:47:31 +10:00
David Reid fc9cee7697 Work in progress on full-duplex for AAudio. 2019-02-14 18:32:18 +10:00
David Reid 79c46d2771 Work on full-duplex for ALSA. 2019-02-14 17:51:20 +10:00
David Reid d0dfd37c6d Work on full-duplex for PulseAudio. 2019-02-10 19:33:48 +10:00
David Reid d2ca42edd7 Work on removing unnecessary attributes from mal_device. 2019-02-10 08:55:41 +10:00
David Reid 574c1adccd Get full-duplex working with DirectSound. 2019-02-10 06:38:33 +10:00
David Reid f37df9a814 Remove some unused properties from device and config structures. 2019-02-09 20:33:01 +10:00
David Reid 32c64703dd Initial working implementation of full-duplex on WASAPI. 2019-02-09 17:39:49 +10:00
David Reid 934c7d5e63 WinMM: Prep work for full-duplex. 2019-02-06 18:19:08 +10:00
David Reid b525fc8005 DirectSound: Prep work full-duplex. 2019-02-03 20:45:02 +10:00
David Reid 8986a410cc Fix compiler errors on the Windows build. 2019-02-03 18:50:08 +10:00
David Reid 8adce03d72 Core Audio: Refactoring in preparation for full-duplex. 2019-02-03 12:35:23 +10:00
David Reid d59b08d4b8 Begin work on rearranging mal_config in preparation for full-duplex. 2019-02-03 06:44:20 +10:00
David Reid 8c276c07d3 Remove the redundant "name" parameter from mal_device.
This is now stored separately for playback can capture in the playback
and capture sub-objects respectively.
2019-02-02 19:15:55 +10:00
David Reid fd3a7e2595 WASAPI: Infrastructure work in preparation for full-duplex. 2019-02-02 17:35:58 +10:00
David Reid 6548f4e2f1 Set up some infrastructure for separate in/out device IDs. 2019-01-27 12:45:09 +10:00
David Reid 97c7c0a72d API CHANGE: Remove the onLog parameter from mal_context_config_init().
This commit also renames the onLog member of mal_context_config to
logCallback for consistency with mal_device_config callback naming
convention.
2019-01-27 06:53:48 +10:00
David Reid 88b75fdbc1 Typos. 2019-01-14 20:10:17 +10:00
David Reid 2dd522b62e Update documentation for mal_device_init(). 2019-01-13 10:51:16 +10:00
David Reid 4d03928b74 Remove some unused backend functions. 2019-01-13 10:38:54 +10:00
David Reid 23c917516d Rename more variables for consistency. 2019-01-13 10:26:22 +10:00
David Reid 54e82c74d0 Rename some variables for consistency. 2019-01-13 10:20:12 +10:00
David Reid 24167ba3c2 API CHANGE: Remove the device type and ID from mal_device_init/_ex(). 2019-01-13 09:31:08 +10:00