60 lines
2.8 KiB
C#
60 lines
2.8 KiB
C#
using System;
|
|
using System.Runtime.InteropServices;
|
|
|
|
namespace Barotrauma.Media
|
|
{
|
|
partial class Video : IDisposable
|
|
{
|
|
private static class Internal
|
|
{
|
|
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
|
public delegate void EventCallback(IntPtr videoInternal, IntPtr data, Int32 dataElemSize, Int32 dataLen);
|
|
|
|
#if WINDOWS
|
|
private const string DLL_NAME = "webm_mem_playback_x64.dll";
|
|
#elif LINUX
|
|
private const string DLL_NAME = "webm_mem_playback_x64.so";
|
|
#elif OSX
|
|
private const string DLL_NAME = "webm_mem_playback_x64.dylib";
|
|
#endif
|
|
private const CallingConvention CALLING_CONVENTION = CallingConvention.Cdecl;
|
|
|
|
[DllImport(DLL_NAME, CallingConvention = CALLING_CONVENTION, CharSet = CharSet.Ansi)]
|
|
public static extern IntPtr loadVideo(string filename);
|
|
|
|
[DllImport(DLL_NAME, CallingConvention = CALLING_CONVENTION, CharSet = CharSet.Ansi)]
|
|
public static extern Int32 getVideoWidth(IntPtr videoInternal);
|
|
|
|
[DllImport(DLL_NAME, CallingConvention = CALLING_CONVENTION, CharSet = CharSet.Ansi)]
|
|
public static extern Int32 getVideoHeight(IntPtr videoInternal);
|
|
|
|
[DllImport(DLL_NAME, CallingConvention = CALLING_CONVENTION, CharSet = CharSet.Ansi)]
|
|
public static extern Int32 videoHasAudio(IntPtr videoInternal);
|
|
|
|
[DllImport(DLL_NAME, CallingConvention = CALLING_CONVENTION, CharSet = CharSet.Ansi)]
|
|
public static extern Int32 getVideoAudioSampleRate(IntPtr videoInternal);
|
|
|
|
[DllImport(DLL_NAME, CallingConvention = CALLING_CONVENTION, CharSet = CharSet.Ansi)]
|
|
public static extern Int32 getVideoAudioChannelCount(IntPtr videoInternal);
|
|
|
|
[DllImport(DLL_NAME, CallingConvention = CALLING_CONVENTION, CharSet = CharSet.Ansi)]
|
|
public static extern void deleteVideo(IntPtr videoInternal);
|
|
|
|
[DllImport(DLL_NAME, CallingConvention = CALLING_CONVENTION, CharSet = CharSet.Ansi)]
|
|
public static extern void playVideo(IntPtr videoInternal);
|
|
|
|
[DllImport(DLL_NAME, CallingConvention = CALLING_CONVENTION, CharSet = CharSet.Ansi)]
|
|
public static extern void stopVideo(IntPtr videoInternal);
|
|
|
|
[DllImport(DLL_NAME, CallingConvention = CALLING_CONVENTION, CharSet = CharSet.Ansi)]
|
|
public static extern Int32 isVideoPlaying(IntPtr videoInternal);
|
|
|
|
[DllImport(DLL_NAME, CallingConvention = CALLING_CONVENTION, CharSet = CharSet.Ansi)]
|
|
public static extern void setVideoFrameCallback(IntPtr videoInternal, IntPtr callback);
|
|
|
|
[DllImport(DLL_NAME, CallingConvention = CALLING_CONVENTION, CharSet = CharSet.Ansi)]
|
|
public static extern void setVideoAudioCallback(IntPtr videoInternal, IntPtr callback);
|
|
}
|
|
}
|
|
}
|