Browse Source

Added support for ALSA dmix audio output (thanks @sylware!)

Fixes https://github.com/libsdl-org/SDL/issues/8577
Sam Lantinga 1 year ago
parent
commit
76e7bc4c04
2 changed files with 1180 additions and 392 deletions
  1. 1174 391
      src/audio/alsa/SDL_alsa_audio.c
  2. 6 1
      src/audio/alsa/SDL_alsa_audio.h

File diff suppressed because it is too large
+ 1174 - 391
src/audio/alsa/SDL_alsa_audio.c


+ 6 - 1
src/audio/alsa/SDL_alsa_audio.h

@@ -27,16 +27,21 @@
 
 #include "../SDL_sysaudio.h"
 
+#define SDL_AUDIO_ALSA__CHMAP_CHANS_N_MAX    8
+#define SDL_AUDIO_ALSA__SDL_CHMAPS_N         9 // from 0 channels to 8 channels
 struct SDL_PrivateAudioData
 {
     // The audio device handle
-    snd_pcm_t *pcm_handle;
+    snd_pcm_t *pcm;
 
     // Raw mixing buffer
     Uint8 *mixbuf;
 
     // swizzle function
     void (*swizzle_func)(SDL_AudioDevice *_this, void *buffer, Uint32 bufferlen);
+    // Up to a channel map of 8 channels, will define the sample indexes into the alsa frame
+    // from a sdl sample index.
+    int swizzle_map[SDL_AUDIO_ALSA__CHMAP_CHANS_N_MAX];
 };
 
 #endif // SDL_ALSA_audio_h_

Some files were not shown because too many files changed in this diff