From 0d56cc4fafdfd6047798fd588de60b61c582c36a Mon Sep 17 00:00:00 2001 From: Stefan Date: Sun, 12 Jan 2020 21:23:51 +0100 Subject: [PATCH] Automatic switch of aspect ratio for background If the orig aspect ratio (width / height) is below or equal to 1.5, switch to EAspect.LetterBox. If not, leave it at EAspect.Crop (like in Vocaluxe before). Unfortunately the acinerella library, used by Vocaluxe, don't support reading of the DAR value of the video file. So the SAR value has to be correct in the video file, to see this automatic in action. --- Vocaluxe/Screens/CScreenSing.cs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/Vocaluxe/Screens/CScreenSing.cs b/Vocaluxe/Screens/CScreenSing.cs index b5eb65ed..43223d3c 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 +}