public static PaDeviceInfo PA_GetDeviceInfo(int device) { IntPtr ptr = PA_GetDeviceInfoPtr(device); PaDeviceInfo info = (PaDeviceInfo)Marshal.PtrToStructure(ptr, typeof(PaDeviceInfo)); return(info); }
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); }
public static DeviceInfo FromNative(IntPtr ptr) { PaDeviceInfo native = Marshal.PtrToStructure <PaDeviceInfo>(ptr); DeviceInfo managed = new DeviceInfo(); managed.StructVersion = native.structVersion; managed.Name = Marshal.PtrToStringAnsi(native.name); managed.HostApi = native.hostApi; managed.DefaultLowInputLatency = native.defaultLowInputLatency; managed.DefaultLowOutputLatency = native.defaultLowOutputLatency; managed.DefaultHighInputLatency = native.defaultHighInputLatency; managed.DefaultHighOutputLatency = native.defaultHighOutputLatency; managed.DefaultSampleRate = native.defaultSampleRate; return(managed); }
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); }