mirror of https://github.com/ppy/SDL3-CS.git
Merge pull request #229 from jairov4/feature/sdl_mixer
Introduce SDL_mixer build
This commit is contained in:
commit
4ced795244
|
|
@ -18,9 +18,9 @@ jobs:
|
|||
- { name: win-x86, os: windows-latest, flags: -A Win32 }
|
||||
- { name: win-arm64, os: windows-latest, flags: -A ARM64 }
|
||||
- { name: linux-x64, os: ubuntu-22.04, flags: -GNinja, target_apt_arch: ":amd64" }
|
||||
- { name: linux-x86, os: ubuntu-22.04, flags: -GNinja -DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32, target_apt_arch: ":i386" }
|
||||
- { name: linux-x86, os: ubuntu-22.04, flags: -GNinja -DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32 -DWAVPACK_ENABLE_ASM=OFF, target_apt_arch: ":i386" }
|
||||
- { name: linux-arm64, os: ubuntu-22.04-arm, flags: -GNinja, target_apt_arch: ":arm64", container: "arm64v8/ubuntu:22.04" }
|
||||
- { name: linux-arm, os: ubuntu-22.04-arm, flags: -GNinja, target_apt_arch: ":armhf", container: "arm32v7/ubuntu:22.04" }
|
||||
- { name: linux-arm, os: ubuntu-22.04-arm, flags: -GNinja -DCMAKE_C_FLAGS=-mfpu=neon -DCMAKE_CXX_FLAGS=-mfpu=neon, target_apt_arch: ":armhf", container: "arm32v7/ubuntu:22.04" }
|
||||
- { name: osx-x64, os: macos-13, flags: -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_OSX_DEPLOYMENT_TARGET=10.14 }
|
||||
# NOTE: macOS 11.0 is the first released supported by Apple Silicon.
|
||||
- { name: osx-arm64, os: macos-latest, flags: -DCMAKE_OSX_ARCHITECTURES=arm64 -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 }
|
||||
|
|
@ -39,11 +39,10 @@ jobs:
|
|||
-e NAME=${{ matrix.platform.name }}
|
||||
-e TARGET_APT_ARCH=${{ matrix.platform.target_apt_arch }}
|
||||
-e RUNNER_OS=${{ runner.os }}
|
||||
-e FLAGS=${{ matrix.platform.flags }}
|
||||
-e BUILD_TYPE=${{ env.BUILD_TYPE }}
|
||||
run: |
|
||||
cd /workspace
|
||||
./External/build.sh
|
||||
FLAGS="${{ matrix.platform.flags }}" ./External/build.sh
|
||||
|
||||
- name: Build
|
||||
if: ${{ !contains(matrix.platform.container, 'arm') }}
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ jobs:
|
|||
dotnet pack SDL3-CS/SDL3-CS.csproj -c Release /p:Version=$(git describe --exact-match --tags HEAD) -o artifacts
|
||||
dotnet pack SDL3_image-CS/SDL3_image-CS.csproj -c Release /p:Version=$(git describe --exact-match --tags HEAD) -o artifacts
|
||||
dotnet pack SDL3_ttf-CS/SDL3_ttf-CS.csproj -c Release /p:Version=$(git describe --exact-match --tags HEAD) -o artifacts
|
||||
dotnet pack SDL3_mixer-CS/SDL3_mixer-CS.csproj -c Release /p:Version=$(git describe --exact-match --tags HEAD) -o artifacts
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
|
|
|
|||
|
|
@ -9,3 +9,7 @@
|
|||
path = External/SDL_ttf
|
||||
url = https://github.com/libsdl-org/SDL_ttf.git
|
||||
branch = main
|
||||
[submodule "SDL_mixer"]
|
||||
path = External/SDL_mixer
|
||||
url = https://github.com/libsdl-org/SDL_mixer.git
|
||||
branch = main
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 30c1301055a35ee87b8679279b6fc88e10d28fa3
|
||||
|
|
@ -77,6 +77,7 @@ if [[ $RUNNER_OS == 'Linux' ]]; then
|
|||
git config --global --add safe.directory /workspace/External/SDL
|
||||
git config --global --add safe.directory /workspace/External/SDL_image
|
||||
git config --global --add safe.directory /workspace/External/SDL_ttf
|
||||
git config --global --add safe.directory /workspace/External/SDL_mixer
|
||||
fi
|
||||
|
||||
# Build SDL
|
||||
|
|
@ -147,4 +148,21 @@ elif [[ $RUNNER_OS == 'macOS' ]]; then
|
|||
cp SDL_ttf/install_output/lib/libSDL3_ttf.dylib ../native/$NAME/libSDL3_ttf.dylib
|
||||
fi
|
||||
|
||||
# Build SDL_mixer
|
||||
pushd SDL_mixer
|
||||
git reset --hard HEAD
|
||||
cmake -B build $FLAGS -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DSDL_SHARED_ENABLED_BY_DEFAULT=ON -DSDL_STATIC_ENABLED_BY_DEFAULT=ON -DCMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH -DSDLMIXER_VENDORED=ON
|
||||
cmake --build build/ --config Release
|
||||
$SUDO cmake --install build/ --prefix install_output --config Release
|
||||
popd
|
||||
|
||||
# Move build lib into correct folders
|
||||
if [[ $RUNNER_OS == 'Windows' ]]; then
|
||||
cp SDL_mixer/install_output/bin/SDL3_mixer.dll ../native/$NAME/SDL3_mixer.dll
|
||||
elif [[ $RUNNER_OS == 'Linux' ]]; then
|
||||
cp SDL_mixer/install_output/lib/libSDL3_mixer.so ../native/$NAME/libSDL3_mixer.so
|
||||
elif [[ $RUNNER_OS == 'macOS' ]]; then
|
||||
cp SDL_mixer/install_output/lib/libSDL3_mixer.dylib ../native/$NAME/libSDL3_mixer.dylib
|
||||
fi
|
||||
|
||||
popd
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ namespace SDL.SourceGeneration
|
|||
{
|
||||
public readonly Dictionary<string, List<GeneratedMethod>> Methods = new Dictionary<string, List<GeneratedMethod>>();
|
||||
|
||||
private static readonly string[] sdlPrefixes = ["SDL_", "TTF_", "IMG_"];
|
||||
private static readonly string[] sdlPrefixes = ["SDL_", "TTF_", "IMG_", "Mix_"];
|
||||
|
||||
/// <summary>
|
||||
/// Checks whether the method is from any SDL library.
|
||||
|
|
|
|||
|
|
@ -29,6 +29,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SDL3_ttf-CS", "SDL3_ttf-CS\
|
|||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SDL3_image-CS", "SDL3_image-CS\SDL3_image-CS.csproj", "{A0D6FC5F-BA26-4298-ABF0-234D2481E323}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SDL3_mixer-CS", "SDL3_mixer-CS\SDL3_mixer-CS.csproj", "{421748C4-B51F-4B00-9637-566DBFD96E02}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
|
|
@ -67,6 +69,10 @@ Global
|
|||
{A0D6FC5F-BA26-4298-ABF0-234D2481E323}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A0D6FC5F-BA26-4298-ABF0-234D2481E323}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A0D6FC5F-BA26-4298-ABF0-234D2481E323}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{421748C4-B51F-4B00-9637-566DBFD96E02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{421748C4-B51F-4B00-9637-566DBFD96E02}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{421748C4-B51F-4B00-9637-566DBFD96E02}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{421748C4-B51F-4B00-9637-566DBFD96E02}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
|
|
|||
|
|
@ -8,3 +8,4 @@ using System.Runtime.CompilerServices;
|
|||
// Allow access to internal CodeGen members (e.g. NativeTypeNameAttribute, etc.) for SDL sister projects:
|
||||
[assembly: InternalsVisibleTo("SDL3_ttf-CS")]
|
||||
[assembly: InternalsVisibleTo("SDL3_image-CS")]
|
||||
[assembly: InternalsVisibleTo("SDL3_mixer-CS")]
|
||||
|
|
|
|||
|
|
@ -36,11 +36,12 @@ unsafe_prefix = "Unsafe_"
|
|||
repository_root = pathlib.Path(__file__).resolve().parents[1]
|
||||
|
||||
SDL_lib_root = "External"
|
||||
SDL_libs = ["SDL", "SDL_image", "SDL_ttf"]
|
||||
SDL_libs = ["SDL", "SDL_image", "SDL_ttf", "SDL_mixer"]
|
||||
SDL_lib_include_root = {
|
||||
"SDL3": SDL_lib_root + "/SDL/include",
|
||||
"SDL3_image": SDL_lib_root + "/SDL_image/include",
|
||||
"SDL3_ttf": SDL_lib_root + "/SDL_ttf/include"
|
||||
"SDL3_ttf": SDL_lib_root + "/SDL_ttf/include",
|
||||
"SDL3_mixer": SDL_lib_root + "/SDL_mixer/include",
|
||||
}
|
||||
|
||||
SDL3_header_base = "SDL3" # base folder of header files
|
||||
|
|
@ -173,6 +174,7 @@ headers = [
|
|||
add("SDL3_image/SDL_image.h"),
|
||||
add("SDL3_ttf/SDL_ttf.h"),
|
||||
add("SDL3_ttf/SDL_textengine.h"),
|
||||
add("SDL3_mixer/SDL_mixer.h"),
|
||||
]
|
||||
|
||||
|
||||
|
|
@ -267,6 +269,7 @@ base_command = [
|
|||
"--include-directory", repository_root / SDL_lib_include_root["SDL3"],
|
||||
"--include-directory", repository_root / SDL_lib_include_root["SDL3_image"],
|
||||
"--include-directory", repository_root / SDL_lib_include_root["SDL3_ttf"],
|
||||
"--include-directory", repository_root / SDL_lib_include_root["SDL3_mixer"],
|
||||
"--namespace", "SDL",
|
||||
|
||||
"--remap",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,94 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<RootNamespace>SDL</RootNamespace>
|
||||
<Nullable>enable</Nullable>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<NoWarn>$(NoWarn);SYSLIB1054;CA1401</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Label="NuGet">
|
||||
<Authors>ppy Pty Ltd</Authors>
|
||||
<Company>ppy Pty Ltd</Company>
|
||||
<Copyright>Copyright (c) 2024 ppy Pty Ltd</Copyright>
|
||||
<Product>ppy.SDL3_mixer-CS</Product>
|
||||
<PackageId>ppy.SDL3_mixer-CS</PackageId>
|
||||
<PackageReleaseNotes>Automated release.</PackageReleaseNotes>
|
||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||
<PackageProjectUrl>https://github.com/ppy/SDL3-CS</PackageProjectUrl>
|
||||
<PackageReadmeFile>README_nuget.md</PackageReadmeFile>
|
||||
<RepositoryUrl>https://github.com/ppy/SDL3-CS</RepositoryUrl>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\README_nuget.md" Pack="true" PackagePath="\"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\SDL3-CS.SourceGeneration\SDL3-CS.SourceGeneration.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false"/>
|
||||
<ProjectReference Include="..\SDL3-CS\SDL3-CS.csproj"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\win-x64\SDL3_mixer.dll">
|
||||
<PackagePath>runtimes/win-x64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\win-arm64\SDL3_mixer.dll">
|
||||
<PackagePath>runtimes/win-arm64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\win-x86\SDL3_mixer.dll">
|
||||
<PackagePath>runtimes/win-x86/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\osx-x64\libSDL3_mixer.dylib">
|
||||
<PackagePath>runtimes/osx-x64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\osx-arm64\libSDL3_mixer.dylib">
|
||||
<PackagePath>runtimes/osx-arm64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\linux-x64\libSDL3_mixer.so">
|
||||
<PackagePath>runtimes/linux-x64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\linux-x86\libSDL3_mixer.so">
|
||||
<PackagePath>runtimes/linux-x86/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\linux-arm64\libSDL3_mixer.so">
|
||||
<PackagePath>runtimes/linux-arm64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\linux-arm\libSDL3_mixer.so">
|
||||
<PackagePath>runtimes/linux-arm/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<!-- Todo: Build these platforms with the CI script:
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\ios\SDL3_mixer.xcframework\**\*">
|
||||
<PackagePath>runtimes/ios/native/SDL3.xcframework</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\android\armeabi-v7a\libSDL3_mixer.so">
|
||||
<PackagePath>runtimes/android-arm/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\android\arm64-v8a\libSDL3_mixer.so">
|
||||
<PackagePath>runtimes/android-arm64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\android\x86_64\libSDL3_mixer.so">
|
||||
<PackagePath>runtimes/android-x64/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
<None Include="$(MSBuildThisFileDirectory)..\native\android\x86\libSDL3_mixer.so">
|
||||
<PackagePath>runtimes/android-x86/native</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
</None>
|
||||
-->
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,444 @@
|
|||
/*
|
||||
<auto-generated/>
|
||||
C# bindings for Simple DirectMedia Layer.
|
||||
Original copyright notice of input files:
|
||||
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace SDL
|
||||
{
|
||||
public unsafe partial struct Mix_Chunk
|
||||
{
|
||||
public int allocated;
|
||||
|
||||
[NativeTypeName("Uint8 *")]
|
||||
public byte* abuf;
|
||||
|
||||
[NativeTypeName("Uint32")]
|
||||
public uint alen;
|
||||
|
||||
[NativeTypeName("Uint8")]
|
||||
public byte volume;
|
||||
}
|
||||
|
||||
public enum Mix_Fading
|
||||
{
|
||||
MIX_NO_FADING,
|
||||
MIX_FADING_OUT,
|
||||
MIX_FADING_IN,
|
||||
}
|
||||
|
||||
public enum Mix_MusicType
|
||||
{
|
||||
MUS_NONE,
|
||||
MUS_WAV,
|
||||
MUS_MOD,
|
||||
MUS_MID,
|
||||
MUS_OGG,
|
||||
MUS_MP3,
|
||||
MUS_FLAC,
|
||||
MUS_OPUS,
|
||||
MUS_WAVPACK,
|
||||
MUS_GME,
|
||||
}
|
||||
|
||||
public partial struct Mix_Music
|
||||
{
|
||||
}
|
||||
|
||||
public static unsafe partial class SDL3_mixer
|
||||
{
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int Mix_Version();
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("MIX_InitFlags")]
|
||||
public static extern uint Mix_Init([NativeTypeName("MIX_InitFlags")] uint flags);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern void Mix_Quit();
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_OpenAudio(SDL_AudioDeviceID devid, [NativeTypeName("const SDL_AudioSpec *")] SDL_AudioSpec* spec);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern void Mix_PauseAudio(int pause_on);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_QuerySpec(int* frequency, SDL_AudioFormat* format, int* channels);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int Mix_AllocateChannels(int numchans);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern Mix_Chunk* Mix_LoadWAV_IO(SDL_IOStream* src, [NativeTypeName("bool")] SDLBool closeio);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern Mix_Chunk* Mix_LoadWAV([NativeTypeName("const char *")] byte* file);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern Mix_Music* Mix_LoadMUS([NativeTypeName("const char *")] byte* file);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern Mix_Music* Mix_LoadMUS_IO(SDL_IOStream* src, [NativeTypeName("bool")] SDLBool closeio);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern Mix_Music* Mix_LoadMUSType_IO(SDL_IOStream* src, Mix_MusicType type, [NativeTypeName("bool")] SDLBool closeio);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern Mix_Chunk* Mix_QuickLoad_WAV([NativeTypeName("Uint8 *")] byte* mem);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern Mix_Chunk* Mix_QuickLoad_RAW([NativeTypeName("Uint8 *")] byte* mem, [NativeTypeName("Uint32")] uint len);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern void Mix_FreeChunk(Mix_Chunk* chunk);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern void Mix_FreeMusic(Mix_Music* music);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int Mix_GetNumChunkDecoders();
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("const char *")]
|
||||
public static extern byte* Mix_GetChunkDecoder(int index);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_HasChunkDecoder([NativeTypeName("const char *")] byte* name);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int Mix_GetNumMusicDecoders();
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("const char *")]
|
||||
public static extern byte* Mix_GetMusicDecoder(int index);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_HasMusicDecoder([NativeTypeName("const char *")] byte* name);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern Mix_MusicType Mix_GetMusicType([NativeTypeName("const Mix_Music *")] Mix_Music* music);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("const char *")]
|
||||
public static extern byte* Mix_GetMusicTitle([NativeTypeName("const Mix_Music *")] Mix_Music* music);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("const char *")]
|
||||
public static extern byte* Mix_GetMusicTitleTag([NativeTypeName("const Mix_Music *")] Mix_Music* music);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("const char *")]
|
||||
public static extern byte* Mix_GetMusicArtistTag([NativeTypeName("const Mix_Music *")] Mix_Music* music);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("const char *")]
|
||||
public static extern byte* Mix_GetMusicAlbumTag([NativeTypeName("const Mix_Music *")] Mix_Music* music);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("const char *")]
|
||||
public static extern byte* Mix_GetMusicCopyrightTag([NativeTypeName("const Mix_Music *")] Mix_Music* music);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern void Mix_SetPostMix([NativeTypeName("Mix_MixCallback")] delegate* unmanaged[Cdecl]<IntPtr, byte*, int, void> mix_func, [NativeTypeName("void*")] IntPtr arg);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern void Mix_HookMusic([NativeTypeName("Mix_MixCallback")] delegate* unmanaged[Cdecl]<IntPtr, byte*, int, void> mix_func, [NativeTypeName("void*")] IntPtr arg);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern void Mix_HookMusicFinished([NativeTypeName("Mix_MusicFinishedCallback")] delegate* unmanaged[Cdecl]<void> music_finished);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("void*")]
|
||||
public static extern IntPtr Mix_GetMusicHookData();
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern void Mix_ChannelFinished([NativeTypeName("Mix_ChannelFinishedCallback")] delegate* unmanaged[Cdecl]<int, void> channel_finished);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_RegisterEffect(int chan, [NativeTypeName("Mix_EffectFunc_t")] delegate* unmanaged[Cdecl]<int, IntPtr, int, IntPtr, void> f, [NativeTypeName("Mix_EffectDone_t")] delegate* unmanaged[Cdecl]<int, IntPtr, void> d, [NativeTypeName("void*")] IntPtr arg);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_UnregisterEffect(int channel, [NativeTypeName("Mix_EffectFunc_t")] delegate* unmanaged[Cdecl]<int, IntPtr, int, IntPtr, void> f);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_UnregisterAllEffects(int channel);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_SetPanning(int channel, [NativeTypeName("Uint8")] byte left, [NativeTypeName("Uint8")] byte right);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_SetPosition(int channel, [NativeTypeName("Sint16")] short angle, [NativeTypeName("Uint8")] byte distance);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_SetDistance(int channel, [NativeTypeName("Uint8")] byte distance);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_SetReverseStereo(int channel, int flip);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int Mix_ReserveChannels(int num);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_GroupChannel(int which, int tag);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_GroupChannels(int from, int to, int tag);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int Mix_GroupAvailable(int tag);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int Mix_GroupCount(int tag);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int Mix_GroupOldest(int tag);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int Mix_GroupNewer(int tag);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int Mix_PlayChannel(int channel, Mix_Chunk* chunk, int loops);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int Mix_PlayChannelTimed(int channel, Mix_Chunk* chunk, int loops, int ticks);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_PlayMusic(Mix_Music* music, int loops);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_FadeInMusic(Mix_Music* music, int loops, int ms);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_FadeInMusicPos(Mix_Music* music, int loops, int ms, double position);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int Mix_FadeInChannel(int channel, Mix_Chunk* chunk, int loops, int ms);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int Mix_FadeInChannelTimed(int channel, Mix_Chunk* chunk, int loops, int ms, int ticks);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int Mix_Volume(int channel, int volume);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int Mix_VolumeChunk(Mix_Chunk* chunk, int volume);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int Mix_VolumeMusic(int volume);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int Mix_GetMusicVolume(Mix_Music* music);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int Mix_MasterVolume(int volume);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern void Mix_HaltChannel(int channel);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern void Mix_HaltGroup(int tag);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern void Mix_HaltMusic();
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int Mix_ExpireChannel(int channel, int ticks);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int Mix_FadeOutChannel(int which, int ms);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int Mix_FadeOutGroup(int tag, int ms);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_FadeOutMusic(int ms);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern Mix_Fading Mix_FadingMusic();
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern Mix_Fading Mix_FadingChannel(int which);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern void Mix_Pause(int channel);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern void Mix_PauseGroup(int tag);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern void Mix_Resume(int channel);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern void Mix_ResumeGroup(int tag);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int Mix_Paused(int channel);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern void Mix_PauseMusic();
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern void Mix_ResumeMusic();
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern void Mix_RewindMusic();
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_PausedMusic();
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_ModMusicJumpToOrder(int order);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_StartTrack(Mix_Music* music, int track);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int Mix_GetNumTracks(Mix_Music* music);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_SetMusicPosition(double position);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern double Mix_GetMusicPosition(Mix_Music* music);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern double Mix_MusicDuration(Mix_Music* music);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern double Mix_GetMusicLoopStartTime(Mix_Music* music);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern double Mix_GetMusicLoopEndTime(Mix_Music* music);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern double Mix_GetMusicLoopLengthTime(Mix_Music* music);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern int Mix_Playing(int channel);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_PlayingMusic();
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_SetSoundFonts([NativeTypeName("const char *")] byte* paths);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("const char *")]
|
||||
public static extern byte* Mix_GetSoundFonts();
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_EachSoundFont([NativeTypeName("Mix_EachSoundFontCallback")] delegate* unmanaged[Cdecl]<byte*, IntPtr, SDLBool> function, [NativeTypeName("void*")] IntPtr data);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("bool")]
|
||||
public static extern SDLBool Mix_SetTimidityCfg([NativeTypeName("const char *")] byte* path);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
[return: NativeTypeName("const char *")]
|
||||
public static extern byte* Mix_GetTimidityCfg();
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern Mix_Chunk* Mix_GetChunk(int channel);
|
||||
|
||||
[DllImport("SDL3_mixer", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
|
||||
public static extern void Mix_CloseAudio();
|
||||
|
||||
[NativeTypeName("#define SDL_MIXER_MAJOR_VERSION 3")]
|
||||
public const int SDL_MIXER_MAJOR_VERSION = 3;
|
||||
|
||||
[NativeTypeName("#define SDL_MIXER_MINOR_VERSION 0")]
|
||||
public const int SDL_MIXER_MINOR_VERSION = 0;
|
||||
|
||||
[NativeTypeName("#define SDL_MIXER_MICRO_VERSION 0")]
|
||||
public const int SDL_MIXER_MICRO_VERSION = 0;
|
||||
|
||||
[NativeTypeName("#define SDL_MIXER_VERSION SDL_VERSIONNUM(SDL_MIXER_MAJOR_VERSION, SDL_MIXER_MINOR_VERSION, SDL_MIXER_MICRO_VERSION)")]
|
||||
public const int SDL_MIXER_VERSION = ((3) * 1000000 + (0) * 1000 + (0));
|
||||
|
||||
[NativeTypeName("#define MIX_INIT_FLAC 0x00000001")]
|
||||
public const int MIX_INIT_FLAC = 0x00000001;
|
||||
|
||||
[NativeTypeName("#define MIX_INIT_MOD 0x00000002")]
|
||||
public const int MIX_INIT_MOD = 0x00000002;
|
||||
|
||||
[NativeTypeName("#define MIX_INIT_MP3 0x00000008")]
|
||||
public const int MIX_INIT_MP3 = 0x00000008;
|
||||
|
||||
[NativeTypeName("#define MIX_INIT_OGG 0x00000010")]
|
||||
public const int MIX_INIT_OGG = 0x00000010;
|
||||
|
||||
[NativeTypeName("#define MIX_INIT_MID 0x00000020")]
|
||||
public const int MIX_INIT_MID = 0x00000020;
|
||||
|
||||
[NativeTypeName("#define MIX_INIT_OPUS 0x00000040")]
|
||||
public const int MIX_INIT_OPUS = 0x00000040;
|
||||
|
||||
[NativeTypeName("#define MIX_INIT_WAVPACK 0x00000080")]
|
||||
public const int MIX_INIT_WAVPACK = 0x00000080;
|
||||
|
||||
[NativeTypeName("#define MIX_CHANNELS 8")]
|
||||
public const int MIX_CHANNELS = 8;
|
||||
|
||||
[NativeTypeName("#define MIX_DEFAULT_FREQUENCY 44100")]
|
||||
public const int MIX_DEFAULT_FREQUENCY = 44100;
|
||||
|
||||
[NativeTypeName("#define MIX_DEFAULT_CHANNELS 2")]
|
||||
public const int MIX_DEFAULT_CHANNELS = 2;
|
||||
|
||||
[NativeTypeName("#define MIX_MAX_VOLUME 128")]
|
||||
public const int MIX_MAX_VOLUME = 128;
|
||||
|
||||
[NativeTypeName("#define MIX_CHANNEL_POST (-2)")]
|
||||
public const int MIX_CHANNEL_POST = (-2);
|
||||
|
||||
[NativeTypeName("#define MIX_EFFECTSMAXSPEED \"MIX_EFFECTSMAXSPEED\"")]
|
||||
public static ReadOnlySpan<byte> MIX_EFFECTSMAXSPEED => "MIX_EFFECTSMAXSPEED"u8;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||
// See the LICENCE file in the repository root for full licence text.
|
||||
|
||||
using static SDL.SDL3;
|
||||
|
||||
namespace SDL
|
||||
{
|
||||
public static unsafe partial class SDL3_mixer
|
||||
{
|
||||
[Constant]
|
||||
public static readonly SDL_AudioFormat MIX_DEFAULT_FORMAT = SDL_AUDIO_S16;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue