From 76379f56f28be84ff7bc8555805d7b08063a7835 Mon Sep 17 00:00:00 2001 From: Cristian Vasile Date: Fri, 16 Jun 2023 10:23:02 +0300 Subject: [PATCH 1/3] pause/resume waveOut option defaults to old behaviour --- src/WindowsAudioEndPoint.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/WindowsAudioEndPoint.cs b/src/WindowsAudioEndPoint.cs index 7b58b71..350fd6d 100644 --- a/src/WindowsAudioEndPoint.cs +++ b/src/WindowsAudioEndPoint.cs @@ -225,17 +225,25 @@ public Task CloseAudio() return Task.CompletedTask; } - public Task PauseAudio() + public Task PauseAudio(bool affectWaveOut = false) { _isPaused = true; _waveInEvent?.StopRecording(); + if (affectWaveOut) + { + _waveOutEvent?.Pause(); + } return Task.CompletedTask; } - public Task ResumeAudio() + public Task ResumeAudio(bool affectWaveOut = false) { _isPaused = false; _waveInEvent?.StartRecording(); + if (affectWaveOut) + { + _waveOutEvent?.Play(); + } return Task.CompletedTask; } From 3f53f4d07db7b09803a11b3d12828c9c2409aadd Mon Sep 17 00:00:00 2001 From: Cristian Vasile Date: Fri, 16 Jun 2023 11:05:04 +0300 Subject: [PATCH 2/3] remove optional parameter as it's not part of external interface --- src/WindowsAudioEndPoint.cs | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/WindowsAudioEndPoint.cs b/src/WindowsAudioEndPoint.cs index 350fd6d..734f3f1 100644 --- a/src/WindowsAudioEndPoint.cs +++ b/src/WindowsAudioEndPoint.cs @@ -225,25 +225,19 @@ public Task CloseAudio() return Task.CompletedTask; } - public Task PauseAudio(bool affectWaveOut = false) + public Task PauseAudio() { _isPaused = true; _waveInEvent?.StopRecording(); - if (affectWaveOut) - { - _waveOutEvent?.Pause(); - } + _waveOutEvent?.Pause(); return Task.CompletedTask; } - public Task ResumeAudio(bool affectWaveOut = false) + public Task ResumeAudio() { _isPaused = false; _waveInEvent?.StartRecording(); - if (affectWaveOut) - { - _waveOutEvent?.Play(); - } + _waveOutEvent?.Play(); return Task.CompletedTask; } From 21abfa14c3834a6abe883b45feb3d2fddbd99085 Mon Sep 17 00:00:00 2001 From: Cristian Vasile Date: Tue, 20 Jun 2023 18:29:29 +0300 Subject: [PATCH 3/3] stop buffering when audio paused --- src/WindowsAudioEndPoint.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/WindowsAudioEndPoint.cs b/src/WindowsAudioEndPoint.cs index 734f3f1..a2b7ed1 100644 --- a/src/WindowsAudioEndPoint.cs +++ b/src/WindowsAudioEndPoint.cs @@ -229,7 +229,7 @@ public Task PauseAudio() { _isPaused = true; _waveInEvent?.StopRecording(); - _waveOutEvent?.Pause(); + _waveOutEvent?.Stop(); return Task.CompletedTask; } @@ -288,7 +288,7 @@ private void LocalAudioSampleAvailable(object sender, WaveInEventArgs args) /// Raw PCM sample from remote party. public void GotAudioSample(byte[] pcmSample) { - if (_waveProvider != null) + if (_waveProvider != null && !_isPaused) { _waveProvider.AddSamples(pcmSample, 0, pcmSample.Length); } @@ -296,7 +296,7 @@ public void GotAudioSample(byte[] pcmSample) public void GotAudioRtp(IPEndPoint remoteEndPoint, uint ssrc, uint seqnum, uint timestamp, int payloadID, bool marker, byte[] payload) { - if (_waveProvider != null && _audioEncoder != null) + if (_waveProvider != null && _audioEncoder != null && !_isPaused) { var pcmSample = _audioEncoder.DecodeAudio(payload, _audioFormatManager.SelectedFormat); byte[] pcmBytes = pcmSample.SelectMany(x => BitConverter.GetBytes(x)).ToArray();