Commit Graph

2272 Commits

Author SHA1 Message Date
David Reid a2e76b00cd Merge pull request #216 from claudeha/bugfix-215-void-pointer-casts
Fix C++ compilation errors with the PulseAudio backend.
2020-11-09 17:27:52 +10:00
Claude Heiland-Allen 01c582ff6f Fix C++ compilation errors with the PulseAudio backend.
C++ does not allow implicit casts from void*, so add explict casts.

Issue: https://github.com/mackron/miniaudio/issues/215
2020-11-08 13:40:26 +00:00
David Reid d37ff4aa1d Fix compilation error. 2020-11-08 19:54:07 +10:00
David Reid 48690cf4d4 Version 0.10.22 2020-11-08 19:46:11 +10:00
David Reid 03794d9143 Clean up the deviceio test. 2020-11-08 19:26:04 +10:00
David Reid 645bb3b029 Fix compilation errors with the ALSA backend. 2020-11-08 19:25:49 +10:00
David Reid a5bd015936 Explicitly set native data format flags in custom backend example. 2020-11-08 19:15:45 +10:00
David Reid d2fb0ae853 Update revision history. 2020-11-08 17:35:26 +10:00
David Reid b24ba7d602 AAudio: Add support for configuring content type and input preset. 2020-11-08 17:33:08 +10:00
David Reid 8dd8c04a23 OpenSL: Add support for setting stream types and recording presets. 2020-11-08 17:04:24 +10:00
David Reid dd8f6c4c66 Fix warnings on the Emscripten build. 2020-11-08 14:37:40 +10:00
David Reid 8451af8a11 Fix a compilation warning. 2020-11-08 14:37:22 +10:00
David Reid 887bbeeeee Add support for custom backends.
This commit includes a few changes required for better supporting this:

  * Extra members have been added to ma_device_info which are going to
    eventually replace the min and max channels and sample rates. The
    new system is going to provide a list of supported data formats,
    groups by format/channels/rate and some flags. The only flag used
    at the moment is whether or not the format is usable in exclusive
    mode. The custom backend is the only backend currently using these
    new device info properties, and a backwards-compatibility layer has
    been implemented to fill out the old properties. Built-in backends
    will be migrated over to the new system in time.

  * A new set of backend callbacks have been implemented. Only the
    custom backend is using these at the moment. Built-in backends will
    be migrated over to these new backends soon.

  * A new public API called ma_device_get_state() has been added which
    returns the current state of the device (whether or not it's
    started or stopped). This is necessary for some custom backends.

  * A new public API called ma_device_handle_backend_data_callback()
    has been added. This is required for custom backends who use the
    callback paradigm for data delivery.

  * A new type of ring buffer has been created called ma_duplex_rb.
    This is used as an intermediary buffer for duplex devices running
    on backends that use the callback paradigm. It's used internally by
    ma_device_handle_backend_data_callback(). In the future it's
    planned to expand ma_duplex_rb to handle desyncs by dynamically
    resampling to get both sides back in sync. This is not implemented
    as of this commit.

Future work will involve converting existing built-in backends to be
consistent with the new ideas introduced with custom backend support.
2020-11-08 14:25:55 +10:00
David Reid 63aab33265 Minor cleanup. 2020-11-07 10:09:28 +10:00
David Reid 362ecfce0c Fix a compilation error with ma_vfs_or_default_open(). 2020-11-07 07:18:57 +10:00
David Reid b9667f022f Core Audio: Improvements to sample rate selection on desktop. 2020-11-06 22:20:24 +10:00
David Reid 9d1aee1a4d Core Audio: Fix a warning on the iOS build. 2020-11-06 21:12:48 +10:00
David Reid 96e8b37d1a Core Audio: Fix some issues with capture mode. 2020-11-06 19:47:41 +10:00
David Reid a9ee8cf843 Merge branch 'dev' of https://github.com/dr-soft/mini_al into dev 2020-11-05 20:20:25 +10:00
David Reid 11811d29f3 Core Audio: Fix some bugs with capture mode. 2020-11-05 20:19:25 +10:00
David Reid e13be3335c Update revision history. 2020-11-04 22:03:18 +10:00
David Reid baf6a222e5 Make the isDefault property of ma_device_info public.
Public issue https://github.com/mackron/miniaudio/issues/126
2020-11-04 21:56:32 +10:00
David Reid bda207bc87 Merge branch 'dev' of https://github.com/dr-soft/mini_al into dev 2020-11-04 20:05:31 +10:00
David Reid 61541f7e6d Core Audio: Add support for default device detection. 2020-11-04 20:05:23 +10:00
David Reid 704750269b Fix some compilation errors with MA_NO_RUNTIME_LINKING. 2020-11-03 20:26:00 +10:00
David Reid 0d0f7e4f92 Update revision history. 2020-11-03 19:12:04 +10:00
David Reid 9d180b540a Fix a build error when ALSA and JACK are disabled on Linux builds. 2020-11-03 19:07:48 +10:00
David Reid 99c96c958e PulseAudio: Remove some unnecessary code. 2020-11-03 19:05:30 +10:00
David Reid d8536197c4 PulseAudio: Minor code restructure. 2020-11-03 19:01:56 +10:00
David Reid 2dc604ecde PulseAudio: Always use the PA_STREAM_ADJUST_LATENCY flag on streams.
This should fix the following puplic issues:

  * https://github.com/mackron/miniaudio/issues/106
  * https://github.com/mackron/miniaudio/issues/187
2020-11-03 18:51:31 +10:00
David Reid 27a7fea804 Update dr_flac. 2020-11-01 21:49:01 +10:00
David Reid 89e5ae2144 Update dr_libs. 2020-11-01 21:43:34 +10:00
David Reid f6800b423a Minor change to the deviceio test. 2020-11-01 21:11:23 +10:00
David Reid c10e21c119 Fix a const warning. 2020-11-01 21:04:16 +10:00
David Reid eda3dcc866 Fix some warnings in the Speex resampler. 2020-11-01 21:00:22 +10:00
David Reid 12c7babea1 Fix compilation warnings. 2020-11-01 20:53:16 +10:00
David Reid a5612b4f9c Update c89atomic. 2020-11-01 20:50:59 +10:00
David Reid ab2fd23beb Improve compiler support for older versions of GCC. 2020-11-01 20:40:59 +10:00
David Reid 704dccf65f Fix compilation errors on BSD. 2020-11-01 20:18:43 +10:00
David Reid b61ea2461e WebAudio: Add support for default device detection.
Public issue https://github.com/mackron/miniaudio/issues/126
2020-11-01 18:50:47 +10:00
David Reid a1052923b0 WinMM, DirectSound: Add support for default device detection.
Public issue https://github.com/mackron/miniaudio/issues/126
2020-11-01 18:46:23 +10:00
David Reid 9b4e524b3f JACK: Add support for default device detection.
Public issue https://github.com/mackron/miniaudio/issues/126
2020-11-01 18:29:14 +10:00
David Reid 7c937c491e ALSA: Add basic support for detecting default devices.
Public issue https://github.com/mackron/miniaudio/issues/126
2020-11-01 17:55:43 +10:00
David Reid edfc9bbcaf ALSA: Fix a bug in ma_context_get_device_info(). 2020-11-01 17:29:48 +10:00
David Reid c4099c86c6 PulseAudio: Add support for detecting default devices.
Public issue https://github.com/mackron/miniaudio/issues/126
2020-11-01 17:09:36 +10:00
David Reid c844455059 Fix bugs with ma_decoder_init_file*().
Public issue https://github.com/mackron/miniaudio/issues/213
2020-11-01 15:19:35 +10:00
David Reid e808a67777 Refactor to the PulseAudio backend.
* The main loop is now handled properly by pa_threaded_mainloop.
  * Rather than waiting for operations to complete inline, the main
    loop is now iterated on a separate thread.
  * Data is now written and read to and from the relevant stream via
    callbacks rather than a hacky loop.
  * Code overall has been simplified.
  * Includes a rant about bad API design in PulseAudio.

This should hopefully address these public issues:

  * https://github.com/mackron/miniaudio/issues/106
  * https://github.com/mackron/miniaudio/issues/187
2020-11-01 14:30:06 +10:00
David Reid 3018ba3ee5 Some refactoring to the PulseAudio backend.
The PulseAudio mainloop and context objects have been moved out of the
device and into the context.
2020-10-31 16:43:25 +10:00
David Reid ae88112e4f Version 0.10.21 2020-10-30 20:23:21 +10:00
David Reid 447e22e09f Update dr_libs. 2020-10-30 20:20:29 +10:00