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;
}
///