From 12c2d9ab7331b41864a66b625adb888860a03f8a Mon Sep 17 00:00:00 2001 From: goddogthedoggod <60386588+goddogthedoggod@users.noreply.github.com> Date: Wed, 29 Jan 2020 11:25:36 +0100 Subject: [PATCH] Must not use AdjustedPosition when playback is paused. --- NAudio/Wave/WaveOutputs/WasapiOut.cs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/NAudio/Wave/WaveOutputs/WasapiOut.cs b/NAudio/Wave/WaveOutputs/WasapiOut.cs index d84b13f4..309ab40d 100644 --- a/NAudio/Wave/WaveOutputs/WasapiOut.cs +++ b/NAudio/Wave/WaveOutputs/WasapiOut.cs @@ -270,12 +270,19 @@ private WaveFormat GetFallbackFormat() /// Position in bytes public long GetPosition() { - if (playbackState == PlaybackState.Stopped) + ulong pos; + switch (playbackState) { - return 0; + case PlaybackState.Stopped: + return 0; + case PlaybackState.Playing: + pos = audioClient.AudioClockClient.AdjustedPosition; + break; + default: // PlaybackState.Paused + audioClient.AudioClockClient.GetPosition(out pos, out _); + break; } - var clock = audioClient.AudioClockClient; - return ((long)clock.AdjustedPosition * outputFormat.AverageBytesPerSecond) / (long)clock.Frequency; + return ((long)pos * outputFormat.AverageBytesPerSecond) / (long)audioClient.AudioClockClient.Frequency; } ///