diff --git a/Output/Themes/Ambient/Skin Blue.xml b/Output/Themes/Ambient/Skin Blue.xml
index 7be79a61..21f5418c 100644
--- a/Output/Themes/Ambient/Skin Blue.xml
+++ b/Output/Themes/Ambient/Skin Blue.xml
@@ -218,9 +218,9 @@
Invisible.png
- [Blue]BG_Video.mkv
- [Blue]IntroIn.mkv
- [Blue]IntroMid.mkv
- [Blue]IntroOut.mkv
+ [Blue]BG_Video.mp4
+ [Blue]IntroIn.mp4
+ [Blue]IntroMid.mp4
+ [Blue]IntroOut.mp4
\ No newline at end of file
diff --git a/Output/Themes/Ambient/Skin Green.xml b/Output/Themes/Ambient/Skin Green.xml
index 2c4c0b60..63a3bdb3 100644
--- a/Output/Themes/Ambient/Skin Green.xml
+++ b/Output/Themes/Ambient/Skin Green.xml
@@ -218,9 +218,9 @@
Invisible.png
- [Green]BG_Video.mkv
- [Green]IntroIn.mkv
- [Green]IntroMid.mkv
- [Green]IntroOut.mkv
+ [Green]BG_Video.mp4
+ [Green]IntroIn.mp4
+ [Green]IntroMid.mp4
+ [Green]IntroOut.mp4
\ No newline at end of file
diff --git a/Output/Themes/Ambient/Skin Red.xml b/Output/Themes/Ambient/Skin Red.xml
index 9d1d3cde..1e53d8d3 100644
--- a/Output/Themes/Ambient/Skin Red.xml
+++ b/Output/Themes/Ambient/Skin Red.xml
@@ -218,9 +218,9 @@
Invisible.png
- [Red]BG_Video.mkv
- [Red]IntroIn.mkv
- [Red]IntroMid.mkv
- [Red]IntroOut.mkv
+ [Red]BG_Video.mp4
+ [Red]IntroIn.mp4
+ [Red]IntroMid.mp4
+ [Red]IntroOut.mp4
\ No newline at end of file
diff --git a/Output/Themes/Ambient/Skin Yellow.xml b/Output/Themes/Ambient/Skin Yellow.xml
index 126e40c2..ff096567 100644
--- a/Output/Themes/Ambient/Skin Yellow.xml
+++ b/Output/Themes/Ambient/Skin Yellow.xml
@@ -218,9 +218,9 @@
Invisible.png
- [Yellow]BG_Video.mkv
- [Yellow]IntroIn.mkv
- [Yellow]IntroMid.mkv
- [Yellow]IntroOut.mkv
+ [Yellow]BG_Video.mp4
+ [Yellow]IntroIn.mp4
+ [Yellow]IntroMid.mp4
+ [Yellow]IntroOut.mp4
\ No newline at end of file
diff --git a/Output/acinerella.dll b/Output/acinerella.dll
index b9711290..22ef1d4e 100644
Binary files a/Output/acinerella.dll and b/Output/acinerella.dll differ
diff --git a/Vocaluxe/Lib/Video/CVideoDecoderFFmpeg.cs b/Vocaluxe/Lib/Video/CVideoDecoderFFmpeg.cs
index 9238243f..2ecdcc7b 100644
--- a/Vocaluxe/Lib/Video/CVideoDecoderFFmpeg.cs
+++ b/Vocaluxe/Lib/Video/CVideoDecoderFFmpeg.cs
@@ -244,6 +244,7 @@ namespace Vocaluxe.Lib.Video
private bool _Paused = false;
private bool _NoMoreFrames = false;
private bool _Finished = false;
+ private bool _BeforeLoop = false;
private int _Width = 0;
@@ -314,7 +315,10 @@ namespace Vocaluxe.Lib.Video
public bool Finished
{
- get { return _Finished; }
+ get
+ {
+ return _Finished;
+ }
}
public bool Open(string FileName)
@@ -395,6 +399,7 @@ namespace Vocaluxe.Lib.Video
_VideoSkipTime = _Gap;
_NegativeSkipTime = _Start + _Gap;
_SkipTime = _Start + _Gap;
+ _BeforeLoop = false;
}
if (_SkipTime > 0)
@@ -575,7 +580,7 @@ namespace Vocaluxe.Lib.Video
return;
int FrameFinished = 0;
- if (DropFrame)
+ if (DropFrame && !_BeforeLoop)
{
try
{
@@ -588,7 +593,7 @@ namespace Vocaluxe.Lib.Video
}
- if (!DropFrame || FrameFinished != 0)
+ if (!_BeforeLoop && (!DropFrame || FrameFinished != 0))
{
lock (MutexFrame)
{
@@ -608,14 +613,15 @@ namespace Vocaluxe.Lib.Video
{
if (_Loop)
{
- bool doskip = false;
+ _BeforeLoop = true;
+ bool doskip = true;
float tm = 0f;
int num = -1;
lock (MutexFramebuffer)
{
for (int i = 0; i < _FrameBuffer.Length; i++)
{
- if (_FrameBuffer[i].time > tm)
+ if (_FrameBuffer[i].time > tm && !_FrameBuffer[i].displayed)
{
tm = _FrameBuffer[i].time;
num = i;
diff --git a/Vocaluxe/Screens/CScreenLoad.cs b/Vocaluxe/Screens/CScreenLoad.cs
index 1fd9f2a2..24b5180d 100644
--- a/Vocaluxe/Screens/CScreenLoad.cs
+++ b/Vocaluxe/Screens/CScreenLoad.cs
@@ -206,13 +206,13 @@ namespace Vocaluxe.Screens
if (_CurrentIntroVideoNr == 0 && _Intros[0].IsFinished)
{
_CurrentIntroVideoNr = 1;
+ _Intros[1].Loop = true;
_Intros[1].Start();
}
if (_CurrentIntroVideoNr == 1 && CSongs.CoverLoaded)
{
_CurrentIntroVideoNr = 2;
- _Intros[2].Loop = true;
_Intros[2].Start();
}
@@ -277,7 +277,7 @@ namespace Vocaluxe.Screens
{
float VideoTime = _VideoTimer.ElapsedMilliseconds / 1000f;
- _Finished = (VideoTime >= CVideo.VdGetLength(_VideoStream));
+ _Finished = CVideo.VdFinished(_VideoStream);
STexture tex = new STexture(-1);
CVideo.VdGetFrame(_VideoStream, ref tex, VideoTime, ref VideoTime);