diff --git a/CSCore/CSCore.csproj b/CSCore/CSCore.csproj
index 8c572ca7..8acc7186 100644
--- a/CSCore/CSCore.csproj
+++ b/CSCore/CSCore.csproj
@@ -15,6 +15,10 @@
false
+
+ WINDOWS
+
+
true
full
diff --git a/CSCore/SoundOut/AL/ALInterops.cs b/CSCore/SoundOut/AL/ALInterops.cs
index 33bb942d..1a3a4166 100644
--- a/CSCore/SoundOut/AL/ALInterops.cs
+++ b/CSCore/SoundOut/AL/ALInterops.cs
@@ -8,132 +8,138 @@ namespace CSCore.SoundOut.AL
[CLSCompliant(false)]
internal class ALInterops
{
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ #if WINDOWS
+ private const string libLocation = "openal32.dll";
+ #else
+ private const string libLocation = "libopenal";
+ #endif
+
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern IntPtr alGetString(int name);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern IntPtr alcGetString([In] IntPtr device, int name);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern sbyte alcIsExtensionPresent([In] IntPtr device, string extensionName);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern sbyte alIsExtensionPresent(string extensionName);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alcCaptureStart(IntPtr device);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alcCaptureStop(IntPtr device);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alcCaptureSamples(IntPtr device, IntPtr buffer, int numSamples);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern IntPtr alcCaptureOpenDevice(string deviceName, uint frequency, ALFormat format,
int bufferSize);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alcCaptureCloseDevice(IntPtr device);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern IntPtr alcOpenDevice(string deviceName);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern bool alcCloseDevice(IntPtr handle);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern IntPtr alcCreateContext(IntPtr device, IntPtr attrlist);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern bool alcMakeContextCurrent(IntPtr context);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern IntPtr alcGetContextsDevice(IntPtr context);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern IntPtr alcGetCurrentContext();
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alcDestroyContext(IntPtr context);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alGetSourcei(uint sourceId, ALSourceParameters param, out int value);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alSourcePlay(uint sourceId);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alSourcePause(uint sourceId);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alSourceStop(uint sourceId);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alSourceQueueBuffers(uint sourceId, int number, uint[] bufferIDs);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alSourceUnqueueBuffers(uint sourceId, int buffers, uint[] buffersDequeued);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alGenSources(int count, uint[] sources);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alDeleteSources(int count, uint[] sources);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alGetSourcef(uint sourceId, ALSourceParameters param, out float value);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alGetSource3f(uint sourceId, ALSourceParameters param, out float val1,
out float val2, out float val3);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alSourcef(uint sourceId, ALSourceParameters param, float value);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alSourcefv(uint sourceId, ALSourceParameters param, float[] value);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alSource3f(uint sourceId, ALSourceParameters param, float val1, float val2,
float val3);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alSourcei(uint sourceId, ALSourceParameters param, float val1);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alGenBuffers(int count, uint[] bufferIDs);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alBufferData(uint bufferId, ALFormat format, byte[] data, int byteSize,
uint frequency);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alDeleteBuffers(int numBuffers, uint[] bufferIDs);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alListenerf(ALSourceParameters param, float val);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alListenerfv(ALSourceParameters param, float[] val);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alListener3f(ALSourceParameters param, float val1, float val2, float val3);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alGetListener3f(ALSourceParameters param, out float val1, out float val2,
out float val3);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alGetListenerf(ALSourceParameters param, out float val);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern void alGetListenerfv(ALSourceParameters param, float[] val);
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern ALErrorCode alGetError();
- [DllImport("openal32.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport(libLocation, CallingConvention = CallingConvention.Cdecl)]
internal static extern ALErrorCode alcGetError(IntPtr handle);
public const int DeviceSpecifier = 0x1005;