Browse Source

fixes

pull/2833/head
Jason Dove 5 months ago
parent
commit
b4e468777e
No known key found for this signature in database
  1. 1
      ErsatzTV.FFmpeg/Capabilities/HardwareCapabilitiesFactory.cs
  2. 6
      ErsatzTV.FFmpeg/Capabilities/NvidiaHardwareCapabilities.cs
  3. 4
      ErsatzTV.Infrastructure/Health/Checks/FFmpegVersionHealthCheck.cs

1
ErsatzTV.FFmpeg/Capabilities/HardwareCapabilitiesFactory.cs

@ -47,6 +47,7 @@ public partial class HardwareCapabilitiesFactory( @@ -47,6 +47,7 @@ public partial class HardwareCapabilitiesFactory(
public void ClearCache()
{
memoryCache.Remove(FFmpegVersionKey);
memoryCache.Remove(string.Format(CultureInfo.InvariantCulture, FFmpegCapabilitiesCacheKeyFormat, "hwaccels"));
memoryCache.Remove(string.Format(CultureInfo.InvariantCulture, FFmpegCapabilitiesCacheKeyFormat, "decoders"));
memoryCache.Remove(string.Format(CultureInfo.InvariantCulture, FFmpegCapabilitiesCacheKeyFormat, "filters"));

6
ErsatzTV.FFmpeg/Capabilities/NvidiaHardwareCapabilities.cs

@ -60,8 +60,10 @@ public class NvidiaHardwareCapabilities(CudaDevice cudaDevice, IFFmpegCapabiliti @@ -60,8 +60,10 @@ public class NvidiaHardwareCapabilities(CudaDevice cudaDevice, IFFmpegCapabiliti
// 10-bit h264 hardware decode is not supported until ffmpeg 8
if (isHardware && videoFormat is VideoFormat.H264 && bitDepth == 10)
{
if (!ffmpegCapabilities.Version.StartsWith("8.", StringComparison.OrdinalIgnoreCase) &&
!ffmpegCapabilities.Version.StartsWith("n8.", StringComparison.OrdinalIgnoreCase))
bool isVersion8OrNewer = int.TryParse(
ffmpegCapabilities.Version.Split('.')[0].TrimStart('n', 'N'),
out int major) && major >= 8;
if (!isVersion8OrNewer)
{
isHardware = false;
}

4
ErsatzTV.Infrastructure/Health/Checks/FFmpegVersionHealthCheck.cs

@ -39,7 +39,7 @@ public class FFmpegVersionHealthCheck( @@ -39,7 +39,7 @@ public class FFmpegVersionHealthCheck(
{
Option<string> maybeVersion =
await hardwareCapabilitiesFactory.GetFFmpegVersion(ffmpegPath.Value, cancellationToken);
if (maybeVersion.IsNone)
if (maybeVersion.IsNone || maybeVersion.Exists(string.IsNullOrWhiteSpace))
{
return WarningResult("Unable to determine ffmpeg version", "Unable to determine ffmpeg version", link);
}
@ -57,7 +57,7 @@ public class FFmpegVersionHealthCheck( @@ -57,7 +57,7 @@ public class FFmpegVersionHealthCheck(
{
Option<string> maybeVersion =
await hardwareCapabilitiesFactory.GetFFmpegVersion(ffprobePath.Value, cancellationToken);
if (maybeVersion.IsNone)
if (maybeVersion.IsNone || maybeVersion.Exists(string.IsNullOrWhiteSpace))
{
return WarningResult(
"Unable to determine ffprobe version",

Loading…
Cancel
Save