Commit Graph

4501 Commits

Author SHA1 Message Date
David Reid 9b66a480c7 Fix a bug with channel map retrieval with the channel converter.
This had the input and output channel maps the wrong way around.
2026-02-04 12:45:20 +10:00
David Reid cb26c7ec52 Remove an unnecessary function.
This removes the horrendously named `ma_device__post_init_setup()` which
I've been meaning to remove for years.
2026-02-04 12:44:35 +10:00
David Reid 02f8a6b952 Set up some infrastructure for some future optimizations.
This changes the way backends update the internal data format in
response to a device reroute. With this change we'll be able to remove
the `channelMap` and `internalChannel` map members from the `ma_device`
struct which should reduce its size by ~1KB.
2026-02-04 11:46:05 +10:00
David Reid dc72a5683b Add some getters:
ma_device_get_format()
  ma_device_get_channels()
  ma_device_get_sample_rate()
  ma_device_get_internal_format()
  ma_device_get_internal_channels()
  ma_device_get_internal_sample_rate()
  ma_device_get_internal_channel_map()
2026-02-04 10:52:08 +10:00
David Reid 5c4cb49ad8 Add ma_device_get_channel_map(). 2026-02-01 16:59:13 +10:00
David Reid d929fafb34 Add a specialized path for deinterleaving u8 samples.
This is not yet optimized.
2026-02-01 11:04:07 +10:00
David Reid 53fce8453c Rename a variable. 2026-02-01 11:03:46 +10:00
David Reid ac12fa70e0 Fix Dreamcast/KallistiOS build. 2026-01-29 16:29:14 +10:00
David Reid 3ab152afb3 audio(4): Failed context initialization if /dev/audioctl does not exist.
This allows initialization to abort at an earlier stage which gives the
fallback logic a chance to try a different backend.
2026-01-28 16:33:30 +10:00
David Reid 38e35935d7 Get the audio(4) backend compiling with Solaris.
I have not been able to figure out how to get audio working with my VM
so this is currently untested.
2026-01-28 16:20:09 +10:00
David Reid bbc7ad1921 audio(4): Make format encoding stuff more robust. 2026-01-28 14:47:24 +10:00
David Reid c134a1c870 Add Sun/Solaris compile-time detection. 2026-01-28 14:16:57 +10:00
David Reid 3b5b433e0c Fix some warnings with the release build. 2026-01-28 10:24:47 +10:00
David Reid 847711e291 Fix some warnings. 2026-01-28 09:48:25 +10:00
David Reid d1f34cd5db Update the audio ring buffer to use the standard config/init pattern.
This makes it consistent with everything else in the library.
2026-01-27 17:44:52 +10:00
David Reid 75b3f7dddc Update to the audio ring buffer.
This changes `write_pcm_frames()` so that when `pFramesWritten` is null,
the write is treated as all or nothing. If the entire write cannot be
performed, nothing at all will be written and `MA_NO_SPACE` will be
returned. The same applies with `read_pcm_frames()` and `pFramesRead` in
which case `MA_NO_DATA_AVAILABLE` will be returned.

The reason for this change is that if the called passes in null for
these values, they'll have no way to know how many frames were actually
written or read. Therefore the most practical way to treat it is as all
or nothing.
2026-01-27 17:04:22 +10:00
David Reid fcd386dd87 Remove ma_audio_queue. 2026-01-27 06:17:14 +10:00
David Reid 2302e58045 API CHANGE: Rename vtable to pVTable.
This applies to `ma_data_source_config` and `ma_node_config` and makes
the naming consistent with other parts of the library.
2026-01-26 15:46:58 +10:00
David Reid 28de8d8947 PipeWire: Try improving mono streams. 2026-01-26 14:04:12 +10:00
David Reid 18df387a84 Updates to ring buffers. 2026-01-26 12:18:41 +10:00
David Reid d30d1cfd89 Update ring buffer. 2026-01-26 06:26:29 +10:00
David Reid 8c2cbf6343 Fix some language in the documentation. 2026-01-25 20:45:15 +10:00
David Reid f99ff4cec0 Remove the old ring buffer.
Public issue https://github.com/mackron/miniaudio/issues/671
2026-01-25 20:30:27 +10:00
David Reid 07ea662dae Update the Emscripten test. 2026-01-25 19:45:01 +10:00
David Reid 5a7bfd7c2c Update the hilo_interop example to use the new ring buffer. 2026-01-25 18:46:25 +10:00
David Reid ca6afd1f49 Fix a bug with the audio ring buffer data source. 2026-01-25 18:45:05 +10:00
David Reid 7c3b8fab04 Remove osaudio.
This belongs in its own repository.
2026-01-25 18:32:57 +10:00
David Reid 7d1c994414 PipeWire: Use the new ring buffer. 2026-01-25 17:47:57 +10:00
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 f2b9d0b480 Merge branch 'dev' into dev-0.12 2026-01-20 09:55:35 +10:00
David Reid dec6c16539 Update social media links on website. 2026-01-20 06:16:43 +10:00
David Reid 9aa4744a94 PipeWire: Fix a memory leak. 2026-01-19 18:20:31 +10:00
David Reid 0cf35695c8 PipeWire: Set up some infrastructure for future work. 2026-01-18 16:29:40 +10:00
David Reid 3a1b85bb53 PipeWire: Rename some variables. 2026-01-18 12:48:25 +10:00
David Reid a187fb0450 PipeWire: Try fixing a compilation error. 2026-01-18 11:58:07 +10:00
David Reid 8d9d61d607 PipeWire: Improve sample rate detection for device enumeration. 2026-01-18 11:41:36 +10:00
David Reid 64b3dd6f66 PipeWire: Comment out some unshippable code.
A better workaround for this is still in progress.
2026-01-18 10:31:43 +10:00
David Reid f215062678 PipeWire: Refactoring in an attempt to work around an PipeWire issue.
It turns out this didn't actually fix the problem, but I actually prefer
this version so I'm going to keep this.
2026-01-18 09:30:49 +10:00
David Reid d043ce61b3 Merge branch 'dev' into dev-0.12 2026-01-18 06:06:51 +10:00
David Reid 13d161bc8d Update split version. 2026-01-18 06:05:35 +10:00
David Reid df405b1fb7 PipeWire: Fix a crash in device enumeration. 2026-01-17 20:30:05 +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