Browse Source

Allow decimal aspect ratio

Signed-off-by: gnattu <gnattuoc@me.com>
gnattu 1 year ago
parent
commit
f8da69f8e5
1 changed files with 3 additions and 3 deletions
  1. 3 3
      MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs

+ 3 - 3
MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs

@@ -828,15 +828,15 @@ namespace MediaBrowser.MediaEncoding.Encoder
             {
                 // For hardware trickplay encoders, we need to re-calculate the size because they used fixed scale dimensions
                 var darParts = imageStream.AspectRatio.Split(":");
-                var (wa, ha) = (int.Parse(darParts[0], CultureInfo.InvariantCulture), int.Parse(darParts[1], CultureInfo.InvariantCulture));
+                var (wa, ha) = (double.Parse(darParts[0], CultureInfo.InvariantCulture), double.Parse(darParts[1], CultureInfo.InvariantCulture));
                 // When dimension / DAR does not equal to 1:1, then the frames are most likely stored stretched.
                 // Note: this might be incorrect for 3D videos as the SAR stored might be per eye instead of per video, but we really can do little about it.
-                var shouldResetHeight = imageStream.Width * ha != imageStream.Height * wa;
+                var shouldResetHeight = Math.Abs((imageStream.Width.Value * ha) - (imageStream.Height.Value * wa)) > .05;
                 if (shouldResetHeight)
                 {
                     // SAR = DAR * Height / Width
                     // RealHeight = Height / SAR = Height / (DAR * Height / Width) = Width / DAR
-                    imageStream.Height = Convert.ToInt32(imageStream.Width.Value * (double)ha / wa);
+                    imageStream.Height = Convert.ToInt32(imageStream.Width.Value * ha / wa);
                 }
             }