public PortAudioOutputDevice(IOutputController controller, bool isDefault, PortAudioDevice device) { Name = device.Name; Controller = controller; IsDefault = isDefault; _dev = device; }
public PortAudioPlaybackHandle(AudioStream baseStream, PortAudioDevice dev) { BaseStream = new BufferedAudioStream(baseStream, baseStream.Format.SampleRate * baseStream.Format.BytesPerFrame); PortAudioSampleFormat.PortAudioNumberFormat numberFormat; switch (baseStream.Format.DataFormat.NumberFormat) { case NumberFormat.FloatingPoint: numberFormat = PortAudioSampleFormat.PortAudioNumberFormat.FloatingPoint; break; case NumberFormat.Signed: numberFormat = PortAudioSampleFormat.PortAudioNumberFormat.Signed; break; case NumberFormat.Unsigned: numberFormat = PortAudioSampleFormat.PortAudioNumberFormat.Unsigned; break; default: throw new ArgumentException(); } _pump = new PortAudioDevicePump(dev, baseStream.Format.Channels, new PortAudioSampleFormat(numberFormat, baseStream.Format.DataFormat.BytesPerSample), dev.DefaultHighOutputLatency, baseStream.Format.SampleRate, DataCallback); _pump.StreamFinished += PumpOnStreamFinished; }
/// <summary> /// Starts the media capturing/source devices. /// </summary> public override async Task Start() { if (!_isStarted) { await base.Start(); var apiType = PortAudioHostApiType.DirectSound; if (Environment.OSVersion.Platform == PlatformID.Unix) { apiType = PortAudioHostApiType.Alsa; } _portAudioOutputDevice = PortAudioHostApi.SupportedHostApis.Where(x => x.HostApiType == apiType).First().DefaultOutputDevice; _outputDevicePump = new PortAudioDevicePump(_portAudioOutputDevice, AUDIO_CHANNEL_COUNT, new PortAudioSampleFormat(PortAudioSampleFormat.PortAudioNumberFormat.Signed, AUDIO_BYTES_PER_SAMPLE), TimeSpan.FromMilliseconds(SAMPLING_PERIOD_MILLISECONDS), AUDIO_SAMPLING_RATE, ReadAudioDataCalback); _portAudioInputDevice = PortAudioHostApi.SupportedHostApis.Where(x => x.HostApiType == apiType).First().DefaultInputDevice; _inputDevicePump = new PortAudioDevicePump(_portAudioInputDevice, AUDIO_CHANNEL_COUNT, new PortAudioSampleFormat(PortAudioSampleFormat.PortAudioNumberFormat.Signed, AUDIO_BYTES_PER_SAMPLE), TimeSpan.FromMilliseconds(SAMPLING_PERIOD_MILLISECONDS), AUDIO_SAMPLING_RATE, WriteDataCallback); _outputDevicePump.Start(); _inputDevicePump.Start(); } }
public IEnumerable <IOutputDevice> GetOutputDevices() { PortAudioDevice def = default; try { def = _api.DefaultOutputDevice; } catch (PortAudioException) { //_debug.WriteLine($"Default output device for audio API \"{ApiName}\" does not exist.", DebugMessageLevel.Warning); } foreach (var device in _outputDevices) { yield return(new PortAudioOutputDevice(this, ReferenceEquals(def, device), device)); } }
#pragma warning restore CS0067 /// <summary> /// Creates a new basic RTP session that captures and renders audio to/from the default system devices. /// </summary> public PortAudioEndPoint(IAudioEncoder audioEncoder) { _audioEncoder = audioEncoder; _audioFormatManager = new MediaFormatManager <AudioFormat>(_audioEncoder.SupportedFormats); var apiType = PortAudioHostApiType.DirectSound; if (Environment.OSVersion.Platform == PlatformID.Unix) { apiType = PortAudioHostApiType.Alsa; } _portAudioOutputDevice = PortAudioHostApi.SupportedHostApis.Where(x => x.HostApiType == apiType).First().DefaultOutputDevice; _outputDevicePump = new PortAudioDevicePump(_portAudioOutputDevice, AUDIO_CHANNEL_COUNT, new PortAudioSampleFormat(PortAudioSampleFormat.PortAudioNumberFormat.Signed, AUDIO_BYTES_PER_SAMPLE), TimeSpan.FromMilliseconds(SAMPLING_PERIOD_MILLISECONDS), AUDIO_SAMPLING_RATE, ReadAudioDataCalback); _portAudioInputDevice = PortAudioHostApi.SupportedHostApis.Where(x => x.HostApiType == apiType).First().DefaultInputDevice; _inputDevicePump = new PortAudioDevicePump(_portAudioInputDevice, AUDIO_CHANNEL_COUNT, new PortAudioSampleFormat(PortAudioSampleFormat.PortAudioNumberFormat.Signed, AUDIO_BYTES_PER_SAMPLE), TimeSpan.FromMilliseconds(SAMPLING_PERIOD_MILLISECONDS), AUDIO_SAMPLING_RATE, WriteDataCallback); }
public PortAudioDeviceViewModel(PortAudioDevice model) { _model = model; }