Commit Graph

2326 Commits

Author SHA1 Message Date
David Reid af2cf5d161 Add a new ma_audio_ring_buffer data source.
This is a wrapper around `ma_ring_buffer` and is more specialized
towards audio. It is a data source and replaces `ma_pcm_rb` which will
be removed in a future commit.

Public issue https://github.com/mackron/miniaudio/issues/671
2026-01-25 16:50:28 +10:00
David Reid edb64e6017 Add a new SPSC ring buffer.
This improves on the old ring buffer by having a much simpler
implementation and a much simpler API that does not require the caller
to do reading and writing in a loop.

Future commits will be removing the old ring buffer.

Public issue https://github.com/mackron/miniaudio/issues/671
2026-01-25 14:05:30 +10:00
David Reid bef32b4419 Fix a null pointer dereference in the audio queue. 2026-01-22 11:34:35 +10:00
David Reid 8a43271555 Initial work on the audio queue data source.
Public issue https://github.com/mackron/miniaudio/issues/744
2026-01-22 11:29:53 +10:00
David Reid ba963e46b5 Web Audio: Experimental loopback support.
This uses `getDisplayMedia()`. Support for this is extremely browser and
system specific so I'm not advertising support for this documentation.

Public issue https://github.com/mackron/miniaudio/issues/967
2026-01-21 12:19:25 +10:00
David Reid f6b973d384 Allow backends to work without stepping when threading is disabled.
This is per-backend.
2026-01-21 12:14:34 +10:00
David Reid f37ffed283 Merge PipeWire backend into the main library. 2026-01-20 17:15:32 +10:00
David Reid f794044d0a WinMM: Optimize some memory allocations. 2026-01-17 18:50:21 +10:00
David Reid 251e0e59e4 OpenSL: Optimize some memory allocations. 2026-01-17 18:00:32 +10:00
David Reid 70ff2591bc PulseAudio: Optimize some memory allocations. 2026-01-17 17:23:56 +10:00
David Reid 1b7cc965df Prioritize JACK over ALSA.
With ALSA having a higher priority JACK will never actually get picked.
2026-01-17 15:57:57 +10:00
David Reid cb0e6afe70 Update to the decoding backend system.
The `onGetEncodingFormat` callback has been removed and replaced with an
`onInfo`. This new callback fills out a struct with the supported
encoding format (is recognized by miniaudio), in addition to the name of
the decoding backend, and the decoding library and vendor.
2026-01-17 14:49:26 +10:00
David Reid 3ab17977ea Have the engine apply clipping to samples at the end of processing.
This can be disabled with the `noClip` config option.
2026-01-17 12:55:09 +10:00
David Reid 89663fa647 Merge branch 'dev' into dev-0.12 2026-01-17 12:19:20 +10:00
David Reid 347321b27c Version 0.11.24 2026-01-17 09:37:44 +10:00
David Reid 8e6283aa31 Fix a warning. 2026-01-17 09:34:34 +10:00
Richard Keller a551f0e70b Free pa_context if connecting to PulseAudio fails. 2026-01-17 08:50:10 +10:00
David Reid 7dae981ad5 Add some helpers for resetting a sound after a fade and stop.
Public issue https://github.com/mackron/miniaudio/issues/714
2026-01-17 07:32:18 +10:00
David Reid 1d6fe3efc9 JACK: Refactoring.
* Devices are now enumerated properly. It will enumerate input or output
  ports depending on the device type, and then group by the client name.
  The client name will be considered a "device" from the perspective of
  miniaudio. The number of local ports will be the channel count.

* The port auto-connection process is now done in init() rather than
  start(). I do not know why this was ever in start() in the first
  place.

* Port auto-connection will now be restricted to the client ports. The
  old system would connect across multiple clients which is just a
  nonsensical way of doing. If more ports are requested than are
  available on the client, the excess ports will just not be connected.
2026-01-16 18:26:34 +10:00
David Reid 7ac50d477e Clean up some old code relating to the new device info system. 2026-01-16 06:26:01 +10:00
David Reid a0b24f6d3d audio(4): Fix a compilation error on OpenBSD. 2026-01-16 06:20:49 +10:00
David Reid ab06cb340f WASAPI: Update to new device info system. 2026-01-15 19:41:27 +10:00
David Reid b5213e0265 DirectSound: Update to new device info system. 2026-01-15 19:41:10 +10:00
David Reid 48cc2d3cf1 WinMM: Update to new device info system. 2026-01-15 19:40:32 +10:00
David Reid 01b69f7323 Core Audio: Update to the new device info system. 2026-01-15 19:06:41 +10:00
David Reid 17a3941c94 sndio: Update to the new device info system. 2026-01-15 17:33:11 +10:00
David Reid 06394e8e90 audio(4): Update to the new device info system. 2026-01-15 17:21:08 +10:00
David Reid e0e26b5535 OSS: Update to the new device info system. 2026-01-15 16:54:02 +10:00
David Reid cfed5b09a6 Web Audio: Update to the new device info system. 2026-01-15 16:27:06 +10:00
David Reid 131fa04cd6 OpenSL: Update to the new device info system. 2026-01-15 16:06:22 +10:00
David Reid 838174a418 AAudio: Update to the new device info system. 2026-01-15 16:06:08 +10:00
David Reid 878cf797cc JACK: Update to the new device info system. 2026-01-15 15:49:47 +10:00
David Reid 3a84c31cff ALSA: Update to the new device info system. 2026-01-15 15:14:46 +10:00
David Reid 3d697c27e6 PulseAudio: Update to the new device info system. 2026-01-15 14:54:01 +10:00
David Reid 6c1206931b Null: Updates to the new device info system. 2026-01-15 14:50:03 +10:00
David Reid 91ddce1d17 PipeWire: Update to the new device info system. 2026-01-15 14:42:14 +10:00
David Reid 434bfc6a0b Set up some infrastructure for the new device info structure. 2026-01-15 14:24:41 +10:00
David Reid 461ced3280 JACK: Minor memory allocation optimization. 2026-01-15 12:34:20 +10:00
David Reid ce4f9aab39 JACK: Optimize some buffer management. 2026-01-15 12:23:34 +10:00
David Reid 2b49a81e87 JACK: Optimization for multi-threaded mode.
In multi-threaded mode we can just fire the miniaudio data callback
straight from the JACK data callback instead of going through our
helper.
2026-01-15 11:38:10 +10:00
David Reid e7d94638cf Wake up the backend when uninitializing. 2026-01-15 11:31:53 +10:00
David Reid dc7f5286ca ALSA: A pedantic optimization to avoid a malloc. 2026-01-15 10:45:36 +10:00
David Reid b4a26d21dd audio(4): Fix enumeration on OpenBSD. 2026-01-15 10:23:04 +10:00
David Reid cbe640efbf audio(4): Drain the device when stopping on OpenBSD. 2026-01-15 09:01:33 +10:00
David Reid c440b4b670 audio(4): Fix starting and stopping on OpenBSD. 2026-01-14 17:44:56 +10:00
David Reid c1831a677f sndio: Minor restructure for consistency with other backends. 2026-01-14 16:46:42 +10:00
David Reid f15717ba3e OSS: Drain the playback device when stopping. 2026-01-14 16:39:52 +10:00
David Reid 90aa390a08 OSS: Optimize memory allocations during device initialization. 2026-01-14 16:31:29 +10:00
David Reid 2a2eb5bae4 audio(4): Optimize memory allocations during device initialization. 2026-01-14 16:11:01 +10:00
David Reid f0d84c6895 sndio: Fix a playback error. 2026-01-14 15:17:49 +10:00