Commit Graph

4536 Commits

Author SHA1 Message Date
David Reid 01fd4b7662 OSS: Prime the playback buffer when starting the device. 2026-01-14 08:06:46 +10:00
David Reid bdde9c46b0 OSS: Improvements to blocking waiting logic.
This now does a single select() rather than two separate ones for
capture and playback. This should make duplex mode better.
2026-01-14 07:36:41 +10:00
David Reid 3277d995a3 ALSA: Reduce the size of a memory allocation. 2026-01-13 17:34:52 +10:00
David Reid b90341fc83 Small improvement to ma_linear_resampler_adjust_timer_for_new_rate(). 2026-01-13 15:51:33 +10:00
David Reid dd3cce3061 Add some infrastructure to the Emscripten test for testing SDL2. 2026-01-13 13:05:30 +10:00
David Reid e5743d666c SDL2: Improve Emscripten support by limiting the period size.
Setting the period size to something too small results in glitching so
this commit will clamp it to a minimum size on the Emscripten build.
2026-01-13 13:03:15 +10:00
David Reid 629e751d56 Fix the SDL2 backend for Emscripten. 2026-01-13 12:56:07 +10:00
David Reid cdd3d39ac0 Emscripten: Force MA_NO_THREADING if not compiling with pthread support. 2026-01-13 12:53:30 +10:00
David Reid b3f32437b8 Update an out of date comment. 2026-01-13 12:46:51 +10:00
David Reid 2b50979bd3 Minor reorganization. 2026-01-13 12:44:35 +10:00
David Reid 2ead596562 PulseAudio: Revert a PipeWire compatibility workaround.
This is no longer needed since a native PipeWire backend is about to be
integrated.
2026-01-13 11:22:46 +10:00
David Reid 27f7eeba91 Change default period count from 3 to 2. 2026-01-13 11:12:08 +10:00
David Reid 51f8235bef Force a minimum of two periods for duplex mode.
Not all backends have the notion of a period, but for those that do this
can make it a bit more reliable.
2026-01-13 10:47:32 +10:00
David Reid d1316a58cf ALSA: Ensure at least two periods are used for duplex mode. 2026-01-13 10:37:25 +10:00
David Reid 98a23f9551 ALSA: Fix an error with underrun recovery.
When an underrun occurs the buffer needs to be filled with data before
restarting or else snd_pcm_start() will return EPIPE.
2026-01-13 10:36:30 +10:00
David Reid 55cdba084d ALSA: Fix an error when priming the playback buffer.
There was a possibility that this process could result in
snd_pcm_writei() getting stuck because the frame count is not being
clamped to the buffer size properly.
2026-01-13 10:22:39 +10:00
David Reid 92a58fae11 ALSA: Fix some typos. 2026-01-13 09:49:10 +10:00
David Reid 1adad94ef8 Try fixing the Emscripten build. 2026-01-12 19:51:40 +10:00
David Reid 994ae48feb CMake: Minor output cleanup. 2026-01-12 19:39:15 +10:00
David Reid c50cc675c9 CMake: Try fixing the build for Clang and FORCE_C89. 2026-01-12 19:38:33 +10:00
David Reid 676b84cad1 ALSA: Remove some out of date comments. 2026-01-12 19:25:02 +10:00
David Reid cd521f9440 Comment out a printf() debugging statement. 2026-01-12 17:45:48 +10:00
David Reid 26029b2250 Add a basic engine test.
This is currently just for some specific tests, but might be expanded
later to be something a bit more practical.
2026-01-12 17:30:05 +10:00
David Reid 628f2c1640 Add a debugging VFS. 2026-01-12 17:29:18 +10:00
David Reid 82ec45e349 CMake: Fix an error with libvorbis. 2026-01-12 17:25:33 +10:00
David Reid f028249019 Add a command line option for exclusive mode to deviceio test. 2026-01-12 15:54:27 +10:00
David Reid 94a79c9cda Fix a bug in ma_calculate_frame_count_after_resampling().
This now uses the same calculation that the linear resampler uses.

Public issue https://github.com/mackron/miniaudio/issues/760
2026-01-12 12:43:09 +10:00
David Reid 9a1b551658 WASAPI: Fix an error with rerouting.
When WASAPI reports `AUDCLNT_E_DEVICE_INVALIDATED` miniaudio will
attempt to reinitialize the device and continue processing. Prior to
this commit the reinit process would use NULL as the device ID which
is incorrect when an explicit device was requested.

With this commit the reinit process will correctly pass in the ID of the
device that it was initialized with. In practice, this will mean the
device will be put into an errored state if it is unplugged.
2026-01-12 10:57:09 +10:00
David Reid e9abcccd86 Update fs. 2026-01-12 07:11:43 +10:00
David Reid c649733b34 WASAPI: Remove old unused code. 2026-01-12 06:54:35 +10:00
David Reid 4d583a4508 WASAPI: Fix device enumeration. 2026-01-12 06:37:14 +10:00
David Reid 6a3d5fde05 Remove some line breaks from log entries. 2026-01-12 06:36:14 +10:00
David Reid df88373cd0 Silence a warning. 2026-01-11 20:21:19 +10:00
David Reid d4631208f9 WASAPI: Clean up a memory leak. 2026-01-11 20:15:51 +10:00
David Reid 8709bef653 WASAPI: Improvement to buffer size negotiation for exclusive mode. 2026-01-11 20:02:47 +10:00
David Reid de3946c9ec WASAPI: Properly recover from overruns in duplex mode. 2026-01-11 17:54:37 +10:00
David Reid 12256314a9 WASAPI: Add a debug log message. 2026-01-11 17:19:58 +10:00
David Reid 39abeb167e WASAPI: Prime the playback buffer before starting. 2026-01-11 17:03:55 +10:00
David Reid 3debb4a20f ALSA: Add some missing snd_pcm_state_t values. 2026-01-11 07:23:14 +10:00
David Reid c4c484794b ALSA: Add a timeout to poll().
I don't trust there won't be edge cases that result in this getting
stuck forever.
2026-01-11 07:22:44 +10:00
David Reid adce75cba6 Show device IDs in the deviceio test. 2026-01-11 07:06:23 +10:00
David Reid 660d5f6f9e ASLA: Fall back to NAME for the device description when DESC is empty. 2026-01-10 13:39:59 +10:00
David Reid 96c4b105b0 ALSA: Use more descriptive error messages. 2026-01-10 13:07:10 +10:00
David Reid 9a4318997b ALSA: Whitespace.
This was off by one space and it was annoying me!
2026-01-10 12:45:30 +10:00
David Reid 280c118dfd ALSA: Try improving native channel count detection heuristics. 2026-01-10 12:41:19 +10:00
David Reid 999c16d834 Merge branch 'dev' into dev-0.12 2026-01-10 12:14:40 +10:00
David Reid 88776cedb7 Whitespace. 2026-01-10 08:49:12 +10:00
spevnev e00cee2af1 Cast tv_sec to 64-bit int before converting 2026-01-10 08:47:03 +10:00
David Reid 760765ec93 ALSA: Use SND_PCM_NONBLOCK when enumerating devices. 2026-01-10 08:10:21 +10:00
David Reid fb132046d4 Add command line switches for periods and period sizes to deviceio test. 2026-01-09 19:21:24 +10:00