Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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();
        }