Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        public string GetChannelName(bool output, int index)
        {
            IntPtr name;

            XtNative.HandleError(XtNative.XtDeviceGetChannelName(d, output, index, out name));
            return(XtNative.FreeStringFromUtf8(name));
        }
Esempio n. 3
0
        public XtDevice OpenDefaultDevice(bool output)
        {
            IntPtr d;

            XtNative.HandleError(XtNative.XtServiceOpenDefaultDevice(s, output, out d));
            return(d == IntPtr.Zero ? null : new XtDevice(d));
        }
Esempio n. 4
0
        public int GetDeviceCount()
        {
            int count;

            XtNative.HandleError(XtNative.XtServiceGetDeviceCount(s, out count));
            return(count);
        }
Esempio n. 5
0
        public XtDevice OpenDevice(int index)
        {
            IntPtr d;

            XtNative.HandleError(XtNative.XtServiceOpenDevice(s, index, out d));
            return(new XtDevice(d));
        }
Esempio n. 6
0
        public int GetFrames()
        {
            int frames;

            XtNative.HandleError(XtNative.XtStreamGetFrames(s, out frames));
            return(frames);
        }
Esempio n. 7
0
        public XtLatency GetLatency()
        {
            XtLatency latency = new XtLatency();

            XtNative.HandleError(XtNative.XtStreamGetLatency(s, latency));
            return(latency);
        }
Esempio n. 8
0
        public bool SupportsAccess(bool interleaved)
        {
            bool supports;

            XtNative.HandleError(XtNative.XtDeviceSupportsAccess(d, interleaved, out supports));
            return(supports);
        }
Esempio n. 9
0
        public int GetChannelCount(bool output)
        {
            int count;

            XtNative.HandleError(XtNative.XtDeviceGetChannelCount(d, output, out count));
            return(count);
        }
Esempio n. 10
0
        public string GetName()
        {
            IntPtr name;

            XtNative.HandleError(XtNative.XtDeviceGetName(d, out name));
            return(XtNative.FreeStringFromUtf8(name));
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
        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);
        }
Esempio n. 14
0
        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);
        }
Esempio n. 15
0
 public void Start() => XtNative.HandleError(XtNative.XtStreamStart(s));
Esempio n. 16
0
 public void Stop() {
     XtNative.HandleError(XtNative.XtStreamStop(s));
 }
Esempio n. 17
0
 public void ShowControlPanel()
 {
     XtNative.HandleError(XtNative.XtDeviceShowControlPanel(d));
 }