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 string GetChannelName(bool output, int index) { IntPtr name; XtNative.HandleError(XtNative.XtDeviceGetChannelName(d, output, index, out name)); return(XtNative.FreeStringFromUtf8(name)); }
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 GetDeviceCount() { int count; XtNative.HandleError(XtNative.XtServiceGetDeviceCount(s, out count)); return(count); }
public XtDevice OpenDevice(int index) { IntPtr d; XtNative.HandleError(XtNative.XtServiceOpenDevice(s, index, out d)); return(new XtDevice(d)); }
public int GetFrames() { int frames; XtNative.HandleError(XtNative.XtStreamGetFrames(s, out frames)); return(frames); }
public XtLatency GetLatency() { XtLatency latency = new XtLatency(); XtNative.HandleError(XtNative.XtStreamGetLatency(s, latency)); return(latency); }
public bool SupportsAccess(bool interleaved) { bool supports; XtNative.HandleError(XtNative.XtDeviceSupportsAccess(d, interleaved, out supports)); return(supports); }
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 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 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 void Start() => XtNative.HandleError(XtNative.XtStreamStart(s));
public void Stop() { XtNative.HandleError(XtNative.XtStreamStop(s)); }
public void ShowControlPanel() { XtNative.HandleError(XtNative.XtDeviceShowControlPanel(d)); }