aboutsummaryrefslogtreecommitdiff
path: root/vendor/hare-sdl2/sdl2/mixer/general.ha
diff options
context:
space:
mode:
authorPolesznyák Márk <contact@pml68.dev>2026-04-06 23:44:45 +0200
committerPolesznyák Márk <contact@pml68.dev>2026-04-06 23:44:45 +0200
commit6637fdded6f3c5fba7e7a378ca7e30d0db11f27d (patch)
tree40f8868ae2140680645b1f90f4a1fc2a378920b3 /vendor/hare-sdl2/sdl2/mixer/general.ha
parentdocs: add README (diff)
parentAdd ! after c::fromstr calls to handle nomem (diff)
downloadhare-chip8-6637fdded6f3c5fba7e7a378ca7e30d0db11f27d.tar.gz
Add 'vendor/hare-sdl2/' from commit 'fb6008be0b79a2a24b1ac960316a83f7873b4f39'
git-subtree-dir: vendor/hare-sdl2 git-subtree-mainline: ed088aa81ac23fa48d5ae48ee739c97e0fcb4490 git-subtree-split: fb6008be0b79a2a24b1ac960316a83f7873b4f39
Diffstat (limited to 'vendor/hare-sdl2/sdl2/mixer/general.ha')
-rw-r--r--vendor/hare-sdl2/sdl2/mixer/general.ha54
1 files changed, 54 insertions, 0 deletions
diff --git a/vendor/hare-sdl2/sdl2/mixer/general.ha b/vendor/hare-sdl2/sdl2/mixer/general.ha
new file mode 100644
index 0000000..87a729f
--- /dev/null
+++ b/vendor/hare-sdl2/sdl2/mixer/general.ha
@@ -0,0 +1,54 @@
+use sdl2;
+
+// Flags for [[init]].
+export type MIX_InitFlags = enum {
+ FLAC = 0x00000001,
+ MOD = 0x00000002,
+ MP3 = 0x00000008,
+ OGG = 0x00000010,
+ MID = 0x00000020,
+ OPUS = 0x00000040
+};
+
+// The default mixer has 8 simultaneous mixing channels
+export def MIX_CHANNELS: int = 8;
+
+// Good default frequency for a PC soundcard
+export def MIX_DEFAULT_FREQUENCY: int = 22050;
+
+// Good default channels for a PC soundcard
+export def MIX_DEFAULT_CHANNELS: int = 2;
+
+// XXX: This should choose MSB on a big-endian system:
+
+// Good default format for a PC soundcard
+export def MIX_DEFAULT_FORMAT: sdl2::SDL_AudioFormat = sdl2::AUDIO_S16LSB;
+
+@symbol("Mix_Init") fn _Mix_Init(flags: int) int;
+
+// Loads dynamic libraries and prepares them for use. Flags should be
+// one or more flags from [[MIX_InitFlags]] OR'd together.
+export fn Mix_Init(flags: MIX_InitFlags) (void | sdl2::error) = {
+ if (flags & _Mix_Init(flags) != flags) {
+ return "Mixer flags not initialized": sdl2::error;
+ };
+};
+
+// Unloads libraries loaded with [[Mix_Init]].
+export @symbol("Mix_Quit") fn Mix_Quit() void;
+
+@symbol("Mix_OpenAudio") fn _Mix_OpenAudio(frequency: int,
+ format: u16, channels: int, chunksize: int) int;
+
+// Open the mixer with a certain audio format
+export fn Mix_OpenAudio(
+ frequency: int,
+ format: sdl2::SDL_AudioFormat,
+ channels: int,
+ chunksize: int,
+) (void | sdl2::error) = {
+ return sdl2::wrapvoid(_Mix_OpenAudio(frequency, format, channels, chunksize));
+};
+
+// Close the mixer, halting all playing audio
+export @symbol("Mix_CloseAudio") fn Mix_CloseAudio() void;