Browse Source

fixes

pull/2692/head
Jason Dove 8 months ago
parent
commit
0b2f218d74
No known key found for this signature in database
  1. 22
      ErsatzTV.Application/Channels/Queries/GetChannelFramerateHandler.cs
  2. 2
      ErsatzTV.Core/FFmpeg/FFmpegLibraryProcessService.cs
  3. 2
      ErsatzTV.FFmpeg/FrameRate.cs

22
ErsatzTV.Application/Channels/Queries/GetChannelFramerateHandler.cs

@ -68,25 +68,27 @@ public class GetChannelFramerateHandler( @@ -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( @@ -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
{

2
ErsatzTV.Core/FFmpeg/FFmpegLibraryProcessService.cs

@ -523,8 +523,6 @@ public class FFmpegLibraryProcessService : IFFmpegProcessService @@ -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,

2
ErsatzTV.FFmpeg/FrameRate.cs

@ -19,7 +19,7 @@ public record FrameRate(string? FrameRateString) @@ -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;
}

Loading…
Cancel
Save