Exemplo n.º 1
0
        public static PaHostApiInfo PA_GetHostApiInfo(int hostId)
        {
            IntPtr        ptr  = PA_GetHostApiInfoPtr(hostId);
            PaHostApiInfo info = (PaHostApiInfo)Marshal.PtrToStructure(ptr, typeof(PaHostApiInfo));

            return(info);
        }
Exemplo n.º 2
0
        public static List <AudioDevice> GetDevices(DeviceDirection direction)
        {
            List <AudioDevice> list = new List <AudioDevice>();
            int num  = PortAudioAPI.Pa_GetDefaultInputDevice();
            int num2 = PortAudioAPI.Pa_GetDefaultOutputDevice();
            int num3 = PortAudioAPI.Pa_GetDeviceCount();

            for (int i = 0; i < num3; i++)
            {
                PaDeviceInfo    paDeviceInfo    = PortAudioAPI.Pa_GetDeviceInfo(i);
                DeviceDirection deviceDirection = (paDeviceInfo.maxInputChannels <= 0) ? DeviceDirection.Output : ((paDeviceInfo.maxOutputChannels > 0) ? DeviceDirection.InputOutput : DeviceDirection.Input);
                if (deviceDirection == direction || deviceDirection == DeviceDirection.InputOutput)
                {
                    PaHostApiInfo paHostApiInfo = PortAudioAPI.Pa_GetHostApiInfo(paDeviceInfo.hostApi);
                    AudioDevice   audioDevice   = new AudioDevice();
                    audioDevice.Name      = paDeviceInfo.name;
                    audioDevice.Host      = paHostApiInfo.name;
                    audioDevice.Index     = i;
                    audioDevice.Direction = deviceDirection;
                    audioDevice.IsDefault = (i == num || i == num2);
                    list.Add(audioDevice);
                }
            }
            return(list);
        }
Exemplo n.º 3
0
        public static HostApiInfo FromNative(IntPtr ptr)
        {
            PaHostApiInfo native  = Marshal.PtrToStructure <PaHostApiInfo>(ptr);
            HostApiInfo   managed = new HostApiInfo();

            managed.StructVersion       = native.structVersion;
            managed.Type                = (HostApiTypeId)native.type;
            managed.Name                = Marshal.PtrToStringAnsi(native.name);
            managed.DeviceCount         = native.deviceCount;
            managed.DefaultInputDevice  = native.defaultInputDevice;
            managed.DefaultOutputDevice = native.defaultOutputDevice;
            return(managed);
        }
Exemplo n.º 4
0
        public static List <AudioDevice> GetDevices(AudioDeviceDirection direction)
        {
            List <AudioDevice> audioDevices = new List <AudioDevice>();
            int count      = Pa_GetDeviceCount();
            int defaultIn  = Pa_GetDefaultInputDevice();
            int defaultOut = Pa_GetDefaultOutputDevice();

            for (int i = 0; i < count; i++)
            {
                PaDeviceInfo         deviceInfo      = Pa_GetDeviceInfo(i);
                AudioDeviceDirection deviceDirection = deviceInfo.maxInputChannels > 0 ? (deviceInfo.maxOutputChannels > 0 ? AudioDeviceDirection.InputOutput : AudioDeviceDirection.Input) : AudioDeviceDirection.Output;
                if (deviceDirection == direction || deviceDirection == AudioDeviceDirection.InputOutput)
                {
                    PaHostApiInfo hostInfo = Pa_GetHostApiInfo(deviceInfo.hostApi);
                    audioDevices.Add(new AudioDevice(deviceInfo.name, hostInfo.name, i, deviceDirection, i == defaultIn || i == defaultOut));
                }
            }

            return(audioDevices);
        }