mirror of
https://github.com/Ryujinx/SDL2-CS.git
synced 2024-12-23 09:05:29 +00:00
SDL_audio implemented. Function pointers are a concern here.
This commit is contained in:
parent
0d4525d7cb
commit
332ab6a8ae
166
src/SDL2.cs
166
src/SDL2.cs
|
@ -3723,6 +3723,8 @@ namespace SDL2
|
|||
SDL_AUDIO_ALLOW_CHANNELS_CHANGE
|
||||
);
|
||||
|
||||
public const int SDL_MIX_MAXVOLUME = 128;
|
||||
|
||||
public enum SDL_AudioStatus
|
||||
{
|
||||
SDL_AUDIO_STOPPED,
|
||||
|
@ -3771,6 +3773,170 @@ namespace SDL2
|
|||
string driver_name
|
||||
);
|
||||
|
||||
[DllImport(nativeLibName)]
|
||||
public static extern void SDL_AudioQuit();
|
||||
|
||||
/* src_format and dst_format refer to an SDL_AudioFormat */
|
||||
[DllImport(nativeLibName)]
|
||||
public static extern int SDL_BuildAudioCVT(
|
||||
ref SDL_AudioCVT cvt,
|
||||
ushort src_format,
|
||||
byte src_channels,
|
||||
int src_rate,
|
||||
ushort dst_format,
|
||||
byte dst_channels,
|
||||
int dst_rate
|
||||
);
|
||||
|
||||
[DllImport(nativeLibName)]
|
||||
public static extern void SDL_CloseAudio();
|
||||
|
||||
/* dev refers to an SDL_AudioDeviceID */
|
||||
[DllImport(nativeLibName)]
|
||||
public static extern void SDL_CloseAudioDevice(uint dev);
|
||||
|
||||
[DllImport(nativeLibName)]
|
||||
public static extern void SDL_ConvertAudio(ref SDL_AudioCVT cvt);
|
||||
|
||||
/* audio_buf refers to a malloc()'d buffer from SDL_LoadWAV */
|
||||
[DllImport(nativeLibName)]
|
||||
public static extern void SDL_FreeWav(IntPtr audio_buf);
|
||||
|
||||
[DllImport(nativeLibName, EntryPoint = "SDL_GetAudioDeviceName")]
|
||||
private static extern IntPtr INTERNAL_SDL_GetAudioDeviceName(
|
||||
int index,
|
||||
int iscapture
|
||||
);
|
||||
public static string SDL_GetAudioDeviceName(
|
||||
int index,
|
||||
int iscapture
|
||||
) {
|
||||
return Marshal.PtrToStringAnsi(
|
||||
INTERNAL_SDL_GetAudioDeviceName(index, iscapture)
|
||||
);
|
||||
}
|
||||
|
||||
/* dev refers to an SDL_AudioDeviceID */
|
||||
[DllImport(nativeLibName)]
|
||||
public static extern SDL_AudioStatus SDL_GetAudioDeviceStatus(
|
||||
uint dev
|
||||
);
|
||||
|
||||
[DllImport(nativeLibName, EntryPoint = "SDL_GetAudioDriver")]
|
||||
private static extern IntPtr INTERNAL_SDL_GetAudioDriver(int index);
|
||||
public static string SDL_GetAudioDriver(int index)
|
||||
{
|
||||
return Marshal.PtrToStringAnsi(
|
||||
INTERNAL_SDL_GetAudioDriver(index)
|
||||
);
|
||||
}
|
||||
|
||||
[DllImport(nativeLibName)]
|
||||
public static extern SDL_AudioStatus SDL_GetAudioStatus();
|
||||
|
||||
[DllImport(nativeLibName, EntryPoint = "SDL_GetCurrentAudioDriver")]
|
||||
private static extern IntPtr INTERNAL_SDL_GetCurrentAudioDriver();
|
||||
public static string SDL_GetCurrentAudioDriver()
|
||||
{
|
||||
return Marshal.PtrToStringAnsi(
|
||||
INTERNAL_SDL_GetCurrentAudioDriver()
|
||||
);
|
||||
}
|
||||
|
||||
[DllImport(nativeLibName)]
|
||||
public static extern int SDL_GetNumAudioDevices(int iscapture);
|
||||
|
||||
[DllImport(nativeLibName)]
|
||||
public static extern int SDL_GetNumAudioDrivers();
|
||||
|
||||
/* audio_buf will refer to a malloc()'d byte buffer */
|
||||
[DllImport(nativeLibName, EntryPoint = "SDL_LoadWAV")]
|
||||
private static extern IntPtr INTERNAL_SDL_LoadWAV(
|
||||
[InAttribute()] [MarshalAsAttribute(UnmanagedType.LPStr)]
|
||||
string filename,
|
||||
ref SDL_AudioSpec spec,
|
||||
ref IntPtr audio_buf,
|
||||
ref uint audio_len
|
||||
);
|
||||
public static SDL_AudioSpec SDL_LoadWAV(
|
||||
string filename,
|
||||
ref SDL_AudioSpec spec,
|
||||
ref IntPtr audio_buf,
|
||||
ref uint audio_len
|
||||
) {
|
||||
SDL_AudioSpec result;
|
||||
IntPtr result_ptr = INTERNAL_SDL_LoadWAV(
|
||||
filename,
|
||||
ref spec,
|
||||
ref audio_buf,
|
||||
ref audio_len
|
||||
);
|
||||
result = (SDL_AudioSpec) Marshal.PtrToStructure(
|
||||
result_ptr,
|
||||
result.GetType()
|
||||
);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DllImport(nativeLibName)]
|
||||
public static extern void SDL_LockAudio();
|
||||
|
||||
/* dev refers to an SDL_AudioDeviceID */
|
||||
[DllImport(nativeLibName)]
|
||||
public static extern void SDL_LockAudioDevice(uint dev);
|
||||
|
||||
[DllImport(nativeLibName)]
|
||||
public static extern void SDL_MixAudio(
|
||||
byte[] dst,
|
||||
byte[] src,
|
||||
uint len,
|
||||
int volume
|
||||
);
|
||||
|
||||
/* format refers to an SDL_AudioFormat */
|
||||
[DllImport(nativeLibName)]
|
||||
public static extern void SDL_MixAudioFormat(
|
||||
byte[] dst,
|
||||
byte[] src,
|
||||
ushort format,
|
||||
uint len,
|
||||
int volume
|
||||
);
|
||||
|
||||
[DllImport(nativeLibName)]
|
||||
public static extern int SDL_OpenAudio(
|
||||
ref SDL_AudioSpec desired,
|
||||
ref SDL_AudioSpec obtained
|
||||
);
|
||||
|
||||
/* uint refers to an SDL_AudioDeviceID */
|
||||
[DllImport(nativeLibName)]
|
||||
public static extern uint SDL_OpenAudioDevice(
|
||||
[InAttribute()] [MarshalAsAttribute(UnmanagedType.LPStr)]
|
||||
string device,
|
||||
int iscapture,
|
||||
ref SDL_AudioSpec desired,
|
||||
ref SDL_AudioSpec obtained,
|
||||
int allowed_changes
|
||||
);
|
||||
|
||||
[DllImport(nativeLibName)]
|
||||
public static extern void SDL_PauseAudio(int pause_on);
|
||||
|
||||
/* dev refers to an SDL_AudioDeviceID */
|
||||
[DllImport(nativeLibName)]
|
||||
public static extern void SDL_PauseAudioDevice(
|
||||
uint dev,
|
||||
int pause_on
|
||||
);
|
||||
|
||||
[DllImport(nativeLibName)]
|
||||
public static extern void SDL_UnlockAudio();
|
||||
|
||||
/* dev refers to an SDL_AudioDeviceID */
|
||||
[DllImport(nativeLibName)]
|
||||
public static extern void SDL_UnlockAudioDevice(uint dev);
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue