private void _CaptureOnDataAvailable(object sender, WaveInEventArgs e) { bool capturingAudio = e.BytesRecorded > 0; if (capturingAudio != m_CapturingAudio) { OnCapturingAudio?.Invoke(capturingAudio, m_Device.FriendlyName); } m_CapturingAudio = capturingAudio; byte[] data = _ToPcm16(e.Buffer, e.BytesRecorded, m_Capture.WaveFormat); m_Connection.Write(data, data.Length); }
public async Task RunAsync(string address, int port) { m_Connection = new ClientConnection(address, port); m_Connection.OnConnected += _OnConnected; await m_Connection.ConnectAsync(); m_Capture = m_Device.DataFlow == DataFlow.Render ? new WasapiLoopbackCapture(m_Device) : new WasapiCapture(m_Device); m_Capture.DataAvailable += _CaptureOnDataAvailable; OnCapturingAudio?.Invoke(false, m_Device.FriendlyName); m_Capture.StartRecording(); while (m_Quit == false) { await Task.Delay(100); } m_Connection.Dispose(); m_Capture?.Dispose(); }