Commit Graph

738 Commits

Author SHA1 Message Date
Ozkan Sezer
f0e7000f92 alsa: fix signatures of snd_pcm_info_free and snd_pcm_hw_params_get_rate
Reference issue: https://github.com/libsdl-org/SDL/issues/13845.
2025-09-02 17:02:32 +03:00
Ozkan Sezer
d2ab01b8bb openslES: really fix build.. 2025-09-01 20:38:37 +03:00
Ozkan Sezer
f5246d0181 openslES: fix build 2025-09-01 20:25:28 +03:00
Ryan C. Gordon
b8c802632b 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)
2025-09-01 11:37:10 -04:00
Sam Lantinga
5e85a29e75 Support the "ambient" value for SDL_HINT_AUDIO_CATEGORY
Fixes https://github.com/libsdl-org/SDL/issues/13732

(cherry picked from commit 4725213eef)
2025-08-12 09:54:57 -07:00
Ryan C. Gordon
afc1d9122b 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 943c4abcb4)
2025-07-29 18:21:01 -04:00
Ozkan Sezer
ead4a032d3 sun audio: remove ifdefs, always include sys/audioio.h and sys/ioctl.h 2025-07-27 00:10:02 +03:00
vanfanel
34691de22b SDL2: Fill the SDL_AudioSpec in add_device() 2025-07-20 23:47:25 -04:00
vanfanel
874ca5a678 SDL2: Add missing symbol loading for SDL_GetDefaultAudioInfo() implementation on ALSA. 2025-07-17 13:08:52 -04:00
vanfanel
8d5984464e SDL2: Implement SDL_GetDefaultAudioInfo() on the ALSA backend. 2025-07-17 13:08:52 -04:00
Neal Gompa
6be87ceb33 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)
2025-03-06 14:36:44 -05:00
Petter Reinholdtsen
24693ac285 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
2025-02-24 07:31:06 -08:00
Sam Clegg
aa00738a21 Fix SDL_emscriptenaudio.c under wasm64
Verified locally by running `browser64.test_sdl2_mixer_wav` in
emscripten.
2025-02-18 13:53:58 -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
Ryan C. Gordon
42d979a231 audio: Just use the system default stack size for the device thread.
Fixes #7367.
2023-11-19 11:10:29 -05:00
Anonymous Maarten
d81d986858 cmake: fix uses of undefined macro identifiers (-Wundef) 2023-11-17 03:06:26 +00:00
Sylvain Becker
f3419d8c04 Re-add SDL_assert() with non boolean ptr syntax (#8531) 2023-11-11 12:29:05 +03:00
Sylvain Becker
a14b948b6c [SDL2] pointer boolean (#8523) 2023-11-10 06:30:56 -08:00
Ryan C. Gordon
9d7feaaf9e coreaudio: If paused, clear any pending stream data.
This makes sure stuff that was still pending for conversion/resampling doesn't
pop in later when the device is unpaused again.

Fixes #8485.
2023-11-06 09:57:00 -05:00