From f926263706fb684a6eea232d7dee9a36dbdd669a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20K=C3=BCpper?= Date: Fri, 22 Aug 2014 18:05:50 +0200 Subject: [PATCH] Fix video sync. --- Vocaluxe/Base/CBackgroundMusic.cs | 3 +++ VocaluxeLib/Utils/Player/CSongPlayer.cs | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/Vocaluxe/Base/CBackgroundMusic.cs b/Vocaluxe/Base/CBackgroundMusic.cs index 954692e0..be900321 100644 --- a/Vocaluxe/Base/CBackgroundMusic.cs +++ b/Vocaluxe/Base/CBackgroundMusic.cs @@ -320,6 +320,9 @@ namespace Vocaluxe.Base else if (startposition > length - 5f) startposition = Math.Max(0f, Math.Min(length / 4f, length - 5f)); + if (startposition >= 0.5f) + startposition -= 0.5f; + _PreviewPlayer.Position = startposition; Play(); diff --git a/VocaluxeLib/Utils/Player/CSongPlayer.cs b/VocaluxeLib/Utils/Player/CSongPlayer.cs index 3af9732d..fe2f9bb1 100644 --- a/VocaluxeLib/Utils/Player/CSongPlayer.cs +++ b/VocaluxeLib/Utils/Player/CSongPlayer.cs @@ -67,6 +67,24 @@ namespace VocaluxeLib.Utils.Player get { return _StreamID != -1; } } + public float Position + { + get + { + if (_StreamID == -1) + return -1; + return CBase.Sound.GetPosition(_StreamID); + } + set + { + if (_StreamID == -1) + return; + CBase.Sound.SetPosition(_StreamID, value); + CBase.Video.Skip(_Video, value, _Song.VideoGap); + _StartPosition = value; + } + } + public CSongPlayer(bool loop = false) : base(loop) { } public CSongPlayer(CSong song, bool loop = false, float position = 0f, bool autoplay = false)