diff --git a/Vocaluxe/Screens/CScreenSing.cs b/Vocaluxe/Screens/CScreenSing.cs index b5eb65ed..df0648d2 100644 --- a/Vocaluxe/Screens/CScreenSing.cs +++ b/Vocaluxe/Screens/CScreenSing.cs @@ -1,4 +1,4 @@ -#region license +#region license // This file is part of Vocaluxe. // // Vocaluxe is free software: you can redistribute it and/or modify @@ -112,7 +112,7 @@ namespace Vocaluxe.Screens private float _Length = -1f; private CVideoStream _CurrentVideo; - private EAspect _VideoAspect = EAspect.Crop; + private EAspect _VideoAspect = EAspect.Automatic; private CTextureRef _CurrentWebcamFrameTexture; private CTextureRef _Background; @@ -794,18 +794,21 @@ namespace Vocaluxe.Screens if (_CurrentVideo != null && CConfig.Config.Video.VideosInSongs == EOffOn.TR_CONFIG_ON && !_Webcam) { background = _CurrentVideo.Texture; - aspect = _VideoAspect; } else if (_Webcam) { background = _CurrentWebcamFrameTexture; - aspect = _VideoAspect; } else background = _Background; if (background != null) { SRectF bounds = CSettings.RenderRect; + + if (_VideoAspect == EAspect.Automatic) + _VideoAspect = (background.OrigAspect <= 1.5 ? EAspect.LetterBox : EAspect.Crop); + aspect = _VideoAspect; + SRectF rect = CHelper.FitInBounds(bounds, background.OrigAspect, aspect); CDraw.DrawTexture(background, rect, background.Color, bounds); } @@ -1087,7 +1090,7 @@ namespace Vocaluxe.Screens { _CurrentVideo = CVideo.Load(Path.Combine(song.Folder, song.VideoFileName)); CVideo.Skip(_CurrentVideo, song.Start, song.VideoGap); - _VideoAspect = song.VideoAspect; + _VideoAspect = EAspect.Automatic; } CDraw.RemoveTexture(ref _Background); @@ -1828,4 +1831,4 @@ namespace Vocaluxe.Screens } } } -} \ No newline at end of file +} diff --git a/VocaluxeLib/CHelper.cs b/VocaluxeLib/CHelper.cs index 20efe943..fa5fb2f4 100644 --- a/VocaluxeLib/CHelper.cs +++ b/VocaluxeLib/CHelper.cs @@ -1,4 +1,4 @@ -#region license +#region license // This file is part of Vocaluxe. // // Vocaluxe is free software: you can redistribute it and/or modify @@ -101,6 +101,7 @@ namespace VocaluxeLib switch (aspect) { + case EAspect.Automatic: case EAspect.Crop: if (boundsAspectRatio >= aspectRatio) { @@ -138,7 +139,12 @@ namespace VocaluxeLib } break; case EAspect.LetterBox: - if (boundsAspectRatio <= aspectRatio) + if (boundsAspectRatio == aspectRatio) // Pillarbox + { + scaledWidth = bounds.W * 0.77f; + scaledHeight = bounds.W / aspectRatio; + } + else if (boundsAspectRatio < aspectRatio) { scaledWidth = bounds.W; scaledHeight = bounds.W / aspectRatio; @@ -306,4 +312,4 @@ namespace VocaluxeLib return bmp; } } -} \ No newline at end of file +} diff --git a/VocaluxeLib/Enums.cs b/VocaluxeLib/Enums.cs index 8ba2a416..84252cfa 100644 --- a/VocaluxeLib/Enums.cs +++ b/VocaluxeLib/Enums.cs @@ -64,6 +64,7 @@ namespace VocaluxeLib #region Fonts public enum EAspect { + Automatic, Crop, LetterBox, Stretch, @@ -436,4 +437,4 @@ namespace VocaluxeLib TR_USERROLE_PROFILEEDITOR = 32 // ReSharper restore InconsistentNaming } -} \ No newline at end of file +} diff --git a/VocaluxeLib/Songs/CSong.cs b/VocaluxeLib/Songs/CSong.cs index e6ddaf4d..063eb3a0 100644 --- a/VocaluxeLib/Songs/CSong.cs +++ b/VocaluxeLib/Songs/CSong.cs @@ -101,7 +101,7 @@ namespace VocaluxeLib.Songs public readonly List BackgroundFileNames = new List(); public string VideoFileName = String.Empty; - public EAspect VideoAspect = EAspect.Crop; + public EAspect VideoAspect = EAspect.Automatic; public bool NotesLoaded { get; private set; } @@ -518,4 +518,4 @@ namespace VocaluxeLib.Songs ShortEnd.Source = EDataSource.Calculated; } } -} \ No newline at end of file +}