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(
public void ClearCache() public void ClearCache()
{ {
memoryCache.Remove(FFmpegVersionKey);
memoryCache.Remove(string.Format(CultureInfo.InvariantCulture, FFmpegCapabilitiesCacheKeyFormat, "hwaccels")); memoryCache.Remove(string.Format(CultureInfo.InvariantCulture, FFmpegCapabilitiesCacheKeyFormat, "hwaccels"));
memoryCache.Remove(string.Format(CultureInfo.InvariantCulture, FFmpegCapabilitiesCacheKeyFormat, "decoders")); memoryCache.Remove(string.Format(CultureInfo.InvariantCulture, FFmpegCapabilitiesCacheKeyFormat, "decoders"));
memoryCache.Remove(string.Format(CultureInfo.InvariantCulture, FFmpegCapabilitiesCacheKeyFormat, "filters")); memoryCache.Remove(string.Format(CultureInfo.InvariantCulture, FFmpegCapabilitiesCacheKeyFormat, "filters"));

6
ErsatzTV.FFmpeg/Capabilities/NvidiaHardwareCapabilities.cs

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

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

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

Loading…
Cancel
Save