From 0b2f218d74683d3cb758fc6aaa632673dad2e246 Mon Sep 17 00:00:00 2001 From: Jason Dove <1695733+jasongdove@users.noreply.github.com> Date: Tue, 2 Dec 2025 12:00:18 -0600 Subject: [PATCH] fixes --- .../Queries/GetChannelFramerateHandler.cs | 22 ++++++++++--------- .../FFmpeg/FFmpegLibraryProcessService.cs | 2 -- ErsatzTV.FFmpeg/FrameRate.cs | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/ErsatzTV.Application/Channels/Queries/GetChannelFramerateHandler.cs b/ErsatzTV.Application/Channels/Queries/GetChannelFramerateHandler.cs index 4b617dbf5..0d93398cb 100644 --- a/ErsatzTV.Application/Channels/Queries/GetChannelFramerateHandler.cs +++ b/ErsatzTV.Application/Channels/Queries/GetChannelFramerateHandler.cs @@ -68,25 +68,27 @@ public class GetChannelFramerateHandler( if (distinct.Count > 1) { // TODO: something more intelligent than minimum framerate? - FrameRate result = frameRates.Where(x => x.ParsedFrameRate > 23).MinBy(x => x.ParsedFrameRate); - if (result.ParsedFrameRate < 23) + var validFrameRates = frameRates.Where(fr => fr.ParsedFrameRate > 23).ToList(); + if (validFrameRates.Count > 0) { + FrameRate result = validFrameRates.MinBy(fr => fr.ParsedFrameRate); logger.LogInformation( - "Normalizing frame rate for channel {ChannelNumber} from {Distinct} to {FrameRate} instead of min value {MinFrameRate}", + "Normalizing frame rate for channel {ChannelNumber} from {Distinct} to {FrameRate}", request.ChannelNumber, distinct.Map(fr => fr.RFrameRate), - FrameRate.DefaultFrameRate.RFrameRate, result.RFrameRate); - - return FrameRate.DefaultFrameRate; + return result; } + FrameRate minFrameRate = frameRates.MinBy(fr => fr.ParsedFrameRate); logger.LogInformation( - "Normalizing frame rate for channel {ChannelNumber} from {Distinct} to {FrameRate}", + "Normalizing frame rate for channel {ChannelNumber} from {Distinct} to {FrameRate} instead of min value {MinFrameRate}", request.ChannelNumber, distinct.Map(fr => fr.RFrameRate), - result.RFrameRate); - return result; + FrameRate.DefaultFrameRate.RFrameRate, + minFrameRate.RFrameRate); + + return FrameRate.DefaultFrameRate; } if (distinct.Count != 0) @@ -94,7 +96,7 @@ public class GetChannelFramerateHandler( logger.LogInformation( "All content on channel {ChannelNumber} has the same frame rate of {FrameRate}; will not normalize", request.ChannelNumber, - distinct[0]); + distinct[0].RFrameRate); } else { diff --git a/ErsatzTV.Core/FFmpeg/FFmpegLibraryProcessService.cs b/ErsatzTV.Core/FFmpeg/FFmpegLibraryProcessService.cs index 87e9410cf..fd7d782d6 100644 --- a/ErsatzTV.Core/FFmpeg/FFmpegLibraryProcessService.cs +++ b/ErsatzTV.Core/FFmpeg/FFmpegLibraryProcessService.cs @@ -523,8 +523,6 @@ public class FFmpegLibraryProcessService : IFFmpegProcessService FrameRate frameRate = await playbackSettings.FrameRate .IfNoneAsync(new FrameRate(videoVersion.MediaVersion.RFrameRate)); - Console.WriteLine($"frame rate will be {frameRate}"); - var context = new GraphicsEngineContext( channel.Number, audioVersion.MediaItem, diff --git a/ErsatzTV.FFmpeg/FrameRate.cs b/ErsatzTV.FFmpeg/FrameRate.cs index ba92479cc..d1b6c35d0 100644 --- a/ErsatzTV.FFmpeg/FrameRate.cs +++ b/ErsatzTV.FFmpeg/FrameRate.cs @@ -19,7 +19,7 @@ public record FrameRate(string? FrameRateString) else { string[] split = (rFrameRate ?? string.Empty).Split("/"); - if (int.TryParse(split[0], out int left) && int.TryParse(split[1], out int right)) + if (int.TryParse(split[0], out int left) && int.TryParse(split[1], out int right) && right != 0) { frameRate = left / (double)right; }