public static XtAttributes GetSampleAttributes(XtSample sample) { XtAttributes attributes = new XtAttributes(); XtNative.XtAudioGetSampleAttributes(sample, attributes); return(attributes); }
public unsafe XtStream AggregateStream(XtDevice[] devices, XtChannels[] channels, double[] bufferSizes, int count, XtMix mix, bool interleaved, bool raw, XtDevice master, XtStreamCallback streamCallback, XtXRunCallback xRunCallback, object user) { IntPtr str; IntPtr channelsPtr = IntPtr.Zero; IntPtr[] ds = devices.Select(d => d.d).ToArray(); XtStream stream = new XtStream(raw, streamCallback, xRunCallback, user); try { int size = Marshal.SizeOf(typeof(XtChannels)); channelsPtr = Marshal.AllocHGlobal(count * size); for (int i = 0; i < count; i++) { Marshal.StructureToPtr(channels[i], new IntPtr((byte *)channelsPtr + i * size), false); } XtNative.HandleError(XtNative.XtServiceAggregateStream(s, ds, channelsPtr, bufferSizes, count, mix, interleaved, master.d, stream.streamCallbackPtr, stream.xRunCallbackPtr, IntPtr.Zero, out str)); } finally { if (channelsPtr != IntPtr.Zero) { Marshal.FreeHGlobal(channelsPtr); } } stream.Init(str); return(stream); }
public XtLatency GetLatency() { XtLatency latency = new XtLatency(); XtNative.HandleError(XtNative.XtStreamGetLatency(s, latency)); return(latency); }
public int GetFrames() { int frames; XtNative.HandleError(XtNative.XtStreamGetFrames(s, out frames)); return(frames); }
public XtDevice OpenDevice(int index) { IntPtr d; XtNative.HandleError(XtNative.XtServiceOpenDevice(s, index, out d)); return(new XtDevice(d)); }
public int GetDeviceCount() { int count; XtNative.HandleError(XtNative.XtServiceGetDeviceCount(s, out count)); return(count); }
public bool SupportsAccess(bool interleaved) { bool supports; XtNative.HandleError(XtNative.XtDeviceSupportsAccess(d, interleaved, out supports)); return(supports); }
public XtDevice OpenDefaultDevice(bool output) { IntPtr d; XtNative.HandleError(XtNative.XtServiceOpenDefaultDevice(s, output, out d)); return(d == IntPtr.Zero ? null : new XtDevice(d)); }
public int GetChannelCount(bool output) { int count; XtNative.HandleError(XtNative.XtDeviceGetChannelCount(d, output, out count)); return(count); }
public string GetName() { IntPtr name; XtNative.HandleError(XtNative.XtDeviceGetName(d, out name)); return(XtNative.FreeStringFromUtf8(name)); }
public string GetChannelName(bool output, int index) { IntPtr name; XtNative.HandleError(XtNative.XtDeviceGetChannelName(d, output, index, out name)); return(XtNative.FreeStringFromUtf8(name)); }
public bool SupportsFormat(XtFormat format) { bool supports; XtNative.Format native = XtNative.Format.ToNative(format); XtNative.HandleError(XtNative.XtDeviceSupportsFormat(d, ref native, out supports)); return(supports); }
public XtBuffer GetBuffer(XtFormat format) { XtBuffer buffer = new XtBuffer(); XtNative.Format native = XtNative.Format.ToNative(format); XtNative.HandleError(XtNative.XtDeviceGetBuffer(d, ref native, buffer)); return(buffer); }
public void Dispose() { if (d != IntPtr.Zero) { XtNative.XtDeviceDestroy(d); } d = IntPtr.Zero; }
public void Dispose() { if (s != IntPtr.Zero) { XtNative.XtStreamDestroy(s); } s = IntPtr.Zero; }
public XtMix GetMix() { IntPtr mix; XtNative.HandleError(XtNative.XtDeviceGetMix(d, out mix)); XtMix result = mix == IntPtr.Zero ? null : (XtMix)Marshal.PtrToStructure(mix, typeof(XtMix)); XtNative.XtAudioFree(mix); return(result); }
public XtStream OpenStream(XtFormat format, bool interleaved, bool raw, double bufferSize, XtStreamCallback streamCallback, XtXRunCallback xRunCallback, object user) { IntPtr s; XtStream stream = new XtStream(raw, streamCallback, xRunCallback, user); XtNative.Format native = XtNative.Format.ToNative(format); XtNative.HandleError(XtNative.XtDeviceOpenStream(d, ref native, interleaved, bufferSize, stream.streamCallbackPtr, stream.xRunCallbackPtr, IntPtr.Zero, out s)); stream.Init(s); return(stream); }
public XtAudio(string id, IntPtr window, XtTraceCallback trace, XtFatalCallback fatal) { XtAudio.trace = trace; XtAudio.win32Trace = trace == null ? null : new XtNative.TraceCallbackWin32(trace); XtAudio.linuxTrace = trace == null ? null : new XtNative.TraceCallbackLinux(trace); XtAudio.fatal = fatal; XtAudio.win32Fatal = fatal == null ? null : new XtNative.FatalCallbackWin32(fatal); XtAudio.linuxFatal = fatal == null ? null : new XtNative.FatalCallbackLinux(fatal); Delegate traceDelegate = Environment.OSVersion.Platform == PlatformID.Win32NT ? (Delegate)win32Trace : linuxTrace; Delegate fatalDelegate = Environment.OSVersion.Platform == PlatformID.Win32NT ? (Delegate)win32Fatal : linuxFatal; IntPtr tracePtr = trace == null ? IntPtr.Zero : Marshal.GetFunctionPointerForDelegate(traceDelegate); IntPtr fatalPtr = fatal == null ? IntPtr.Zero : Marshal.GetFunctionPointerForDelegate(fatalDelegate); using (XtNative.Utf8Buffer buffer = new XtNative.Utf8Buffer(id)) XtNative.XtAudioInit(buffer.ptr, window, tracePtr, fatalPtr); }
public XtSystem GetSystem() => XtNative.XtStreamGetSystem(s);
public static string GetVersion() { return(XtNative.StringFromUtf8(XtNative.XtAudioGetVersion())); }
public XtCapabilities GetCapabilities() { return(XtNative.XtServiceGetCapabilities(s)); }
public string GetName() { return(XtNative.StringFromUtf8(XtNative.XtServiceGetName(s))); }
public XtSystem GetSystem() { return(XtNative.XtServiceGetSystem(s)); }
public XtFormat GetFormat() { object native = Marshal.PtrToStructure(XtNative.XtStreamGetFormat(s), typeof(XtNative.Format)); return(((XtNative.Format)native).FromNative()); }
public static int GetServiceCount() { return(XtNative.XtAudioGetServiceCount()); }
public static XtService GetServiceByIndex(int index) { return(new XtService(XtNative.XtAudioGetServiceByIndex(index))); }
public void Start() => XtNative.HandleError(XtNative.XtStreamStart(s));
public bool IsInterleaved() => XtNative.XtStreamIsInterleaved(s);
public static XtService GetServiceBySetup(XtSetup setup) { return(new XtService(XtNative.XtAudioGetServiceBySetup(setup))); }
public static XtService GetServiceBySystem(XtSystem system) { return(new XtService(XtNative.XtAudioGetServiceBySystem(system))); }