Commit Graph

743 Commits

Author SHA1 Message Date
Sam Lantinga
522ff67cc8 Updated copyright for 2026 2026-01-01 09:56:59 -08:00
Ozkan Sezer
2430122b21 alsa: fix signature of snd_pcm_hw_params_get_rate()
Reference issue: https://github.com/libsdl-org/SDL/issues/13845.
2025-12-03 21:40:32 +03:00
vanfanel
0dcfa78be6 SDL2: Fill the SDL_AudioSpec in add_device()
(cherry picked from commit 34691de22b)
2025-12-03 10:02:20 -05:00
Ozkan Sezer
dc086d6454 Revert "pipewire: disable -Wdeclaration-after-statement for pipewire headers"
This reverts commit 876baf6b0e.

Issue in pipewire release candidate 1.5.81 has been resolved in 1.5.82

Reference issue: Fixes: https://github.com/libsdl-org/SDL/issues/14343
2025-11-06 19:55:55 +03:00
Sam Lantinga
e458305c43 Clamp the audio drain delay to 100 ms
Fixes https://github.com/libsdl-org/SDL/issues/9829

(cherry picked from commit 0882623092)
(cherry picked from commit 6db23faa44)
2025-11-02 11:20:55 -08:00
Ozkan Sezer
876baf6b0e pipewire: disable -Wdeclaration-after-statement for pipewire headers
Fixes: https://github.com/libsdl-org/SDL/issues/14343

(cherry picked from commit f9435eab16)
2025-11-01 00:45:32 +03:00
Ozkan Sezer
05c9b16183 alsa: fix signature of snd_pcm_info_free
Reference issue: https://github.com/libsdl-org/SDL/issues/13845.
2025-09-02 17:02:28 +03:00
Ozkan Sezer
fd5dcfba03 openslES: really fix build..
(cherry picked from commit d2ab01b8bb)
2025-09-01 20:38:56 +03:00
Ozkan Sezer
5806036c68 openslES: fix build
(cherry picked from commit f5246d0181)
2025-09-01 20:25:50 +03:00
Ryan C. Gordon
9f369a1736 openslES: OpenSL ES on Android only supports two formats, limit to that.
(Three with the floating point extension, which we use.)

This is according to:

https://developer.android.com/ndk/guides/audio/opensl/opensl-for-android

Previously, this would accept a request for Sint8 or Sint32 and disaster
would ensue.

Fixes #13779.

(cherry picked from commit 0b2a003a35)
(cherry picked from commit 7323104f97)
(cherry picked from commit b8c802632b)
2025-09-01 11:38:54 -04:00
Sam Lantinga
54772f345a Support the "ambient" value for SDL_HINT_AUDIO_CATEGORY
Fixes https://github.com/libsdl-org/SDL/issues/13732

(cherry picked from commit 4725213eef)
(cherry picked from commit 5e85a29e75)
2025-08-12 09:55:27 -07:00
Ryan C. Gordon
f9fc36be9e pipewire: Report correct device default formats instead of hardcoding Float32.
The comment in the source wasn't true; PipeWire doesn't _have_ to work in
float format. It presumably does if it has to mix, but if a game is the only
thing making noise on the system--a common scenario--then it might be able to
pass, say, Sint16 data straight through to the hardware without conversion.

Fixes #12129.

(cherry picked from commit afc1d9122b)
2025-07-29 18:23:33 -04:00
Ozkan Sezer
1b35c66aa8 sun audio: remove ifdefs, always include sys/audioio.h and sys/ioctl.h
(cherry picked from commit ead4a032d3)
2025-07-28 17:01:20 +03:00
vanfanel
e25c61cda8 SDL2: Add missing symbol loading for SDL_GetDefaultAudioInfo() implementation on ALSA.
(cherry picked from commit 874ca5a678)
2025-07-17 11:15:25 -07:00
vanfanel
28f2944947 SDL2: Implement SDL_GetDefaultAudioInfo() on the ALSA backend.
(cherry picked from commit 8d5984464e)
2025-07-17 11:15:25 -07:00
Neal Gompa
9e079fe9c7 pipewire: Ensure that the correct struct is used for enumeration APIs
PipeWire now requires the correct struct type is used, otherwise
it will fail to compile.

Reference: 188d920733

Fixes: https://github.com/libsdl-org/SDL/issues/12224
(cherry picked from commit d35bef64e9)
(cherry picked from commit 6be87ceb33)
2025-03-06 14:37:46 -05:00
Petter Reinholdtsen
282f7a84fc Changed PULSEAUDIO_FlushRecording() to only flush audio present when called.
When the flushing is not able to keep up with the audio stream coming in,
it will end up flushing forever and block API clients from getting any audio.

Fixes #9706

(cherry picked from commit 24693ac285)
2025-02-25 08:08:55 -08:00
Sam Clegg
7f74c1ed63 Fix SDL_emscriptenaudio.c under wasm64
Verified locally by running `browser64.test_sdl2_mixer_wav` in
emscripten.

(cherry picked from commit aa00738a21)
2025-02-19 17:00:05 -08:00
Ryan C. Gordon
20574c016a coreaudio: Workaround for crash when disconnecting a bluetooth audio device.
Our understanding of what's going on here might be incorrect, but it seems
like we're getting this callback at a point where we shouldn't be able to,
with a device we've already closed.

If we're on the wrong track, this code should still be harmless; it just
verifies a device is still in the open list before dereferencing it.

Reference Issue #10432.
2025-01-04 00:30:31 -05:00
Joshua Root
6024c2731f prepare_audioqueue: legacy OS compatibility fix 2025-01-02 14:16:33 -08:00
Sam Lantinga
2b5b8fdbd5 Updated copyright for 2025 2025-01-01 07:47:53 -08:00
Sam Lantinga
348bb53cc1 Corrected CoreAudio surround sound channel layouts
Fixes https://github.com/libsdl-org/SDL/issues/11709

(cherry picked from commit b2178857dc)
2024-12-24 15:10:35 -08:00
Ryan C. Gordon
ad93f50ee6 emscriptenaudio: Removed comment about Firefox not supporting userActivation.
It does now, and has since Firefox 120 (around November 2023).

(cherry picked from commit e0cee83a3a)
2024-12-12 10:52:49 -05:00
staphen
a4ec0b1531 Fix order of events in case audio buffer size changes 2024-11-28 22:28:24 +03:00
Ryan C. Gordon
17b9ed7d82 audio: Favor OpenSL ES over AAudio.
There are low-latency fixes in SDL3 that really need to be backported to SDL2
before AAudio will be nicer across a range of devices, so OpenSL ES is safer
in SDL2 at the moment. At least, we suspect as such.

Fixes #11457.
2024-11-13 18:22:59 -05:00
Sam Lantinga
d2b9ecd281 Revert "aaudio: Set low-latency audio mode."
This reverts commit 1e016fd5ea.

In order to use low latency mode, you need to set low latency callbacks. This has always been recommended and is apparently required on Android 15. SDL3 has these implemented correctly but SDL2 does not, so we should revert this for now.

Fixes https://github.com/libsdl-org/SDL/issues/11376
2024-10-29 22:32:59 -07:00
Ryan C. Gordon
5b0e838a74 wasapi: Deal with device buffer sizes changing.
Otherwise, it would fill the previous size's worth of data into the current
size's buffer.

Fixes #11122.
2024-10-28 13:43:48 -04:00
Sam Clegg
3deb07ea39 [emscripten] Fixes for data addresses above 2gb
This includes both wasm64 and wasm32 when addressing more than 2gb of
memory.

Fixes: #9052
2024-10-08 16:35:58 -04:00
Ryan C. Gordon
58f2586b44 pulseaudio: Hotplug thread fixes.
This used a tiny stack, which apparently upsets Blender for various
technical reasons. Instead, just use the default stack size, which should
give it plenty of space to work.

If the thread failed to create, we would then wait on a semaphore that would
never trigger, so don't do that anymore!

Fixes #10806.

(cherry-picked from commit b7dc30ca24)
2024-09-12 18:00:58 -04:00
Anonymous Maarten
248cb3ca9c Fix -Wdeclaration-after-statement warnings 2024-08-14 10:35:43 +00:00
Anonymous Maarten
11c0dfbdfe Fix UWP build in non-UNICODE mode 2024-07-19 10:20:11 +00:00
Amir
ccade50587 Fix warning for Android NDK compiler: "function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]"
https://stackoverflow.com/questions/42125/warning-error-function-declaration-isnt-a-prototype
In C int foo() and int foo(void) are different functions. int foo() accepts an arbitrary number of arguments, while int foo(void) accepts 0 arguments. In C++ they mean the same thing.
2024-07-17 10:51:30 -07:00
Ryan C. Gordon
510f413bb8 coreaudio: simplify memory leak fix.
I _did_ appreciate the explanation, but it doesn't have to live in the
source code; also we can just release `devuid` and then check for error with
the usual macro, since SDL is done with it either way at this point.

(cherry picked from commit 17af09f3a9)
2024-06-15 11:47:27 -04:00
obeecodes
a9da8dd22d Addressed memory leak in SDL_coreaudio.m
(cherry picked from commit 3b5dce10c4)
2024-06-15 08:09:14 -07:00
Ryan C. Gordon
4316c5ec02 audio: fix SSE conversion of Sint8 audio to Float32.
Fixes #9099.
2024-02-21 15:16:08 -05:00
Wohlstand
ca01016577 SDL_audiotypecvt.c: Fixed memory corruption when resampling S16 t F32 2024-02-03 08:20:04 -05:00
Ryan C. Gordon
ec25d6b1e8 aaudio: Backport headphone hotplugging support from SDL3.
Fixes #4985.
2024-01-28 00:19:48 -05:00
Ryan C. Gordon
f931b25f4c wasapi: If GetDeviceBuf can't get a full buffer, go back to waiting.
Reference Issue #8924.
2024-01-26 23:25:43 -05:00
Ryan C. Gordon
1e06a3614f wasapi: Clamp device->spec.samples to the hardware buffer size.
Reference Issue #8924.

(cherry picked from commit ad1a11164c)
2024-01-26 13:59:46 -05:00
Ryan C. Gordon
1e016fd5ea aaudio: Set low-latency audio mode.
Note that apparently this has caused some weird-sounding audio
on some Android devices, so we might wrap this in a hint later,
or try to check for specific devices.

Fixes #8888.
2024-01-22 18:23:14 -05:00
pionere
61821bd876 fix audio conversion from S16 to F32 using SSE2 2024-01-22 10:45:58 -05:00
Ryan C. Gordon
1e13aa2c98 androidaudio: same fix as AAudio for pausing thread when backgrounding app.
Reference Issue #8748.
2024-01-19 22:15:27 -05:00
Ryan C. Gordon
910e040e9e aaudio: Block the audio device thread when in the background.
Fixes #8748.
2024-01-19 15:10:43 -05:00
Ryan C. Gordon
c69e858e7a audio: Patched to compile (mixed declarations and code). 2024-01-16 10:07:14 -05:00
Ryan C. Gordon
1e2f311811 audio: backport SDL3's audio datatype converters.
These are faster and more precise.

This did not change the Uint16 versions (as SDL3 dropped them, and honestly
no one should be using them in SDL2), nor the NEON converters (as this was
not changed in SDL3, so far).

Fixes #8786.
2024-01-16 10:04:09 -05:00
Sam Lantinga
b6e97d9ff0 Fixed Xcode warnings 2024-01-13 08:15:41 -08:00
jfmu
eb1b9b418c SDL_audio.c: Fix crash if we switch from direct output to streaming, and if the buffersizes change. 2024-01-04 19:41:38 -05:00
Sam Lantinga
0fc3574464 Updated copyright for 2024 2024-01-01 13:19:49 -08:00
Ryan C. Gordon
c331b64d79 audio: Tighten up possession of detectionLock during device open.
We don't need it for most of the time, and holding it during the backend's
OpenDevice upsets ThreadSanitizer vs our PulseAudio code.

Fixes #7427.
2023-11-20 01:01:49 -05:00
Ryan C. Gordon
e51760e111 audio: Wait for device thread to set device->threadid before continuing.
This fixes a (likely harmless) race condition in `is_in_audio_device_thread`.

Reference Issue #7427.
2023-11-19 12:26:51 -05:00