From fc871e6f7494e1aad6d0adc93f0a89d3267fc3eb Mon Sep 17 00:00:00 2001 From: Jason Dove <1695733+jasongdove@users.noreply.github.com> Date: Sat, 2 Dec 2023 09:05:02 -0600 Subject: [PATCH] fix detection of amf hw accel on windows (#1519) --- CHANGELOG.md | 3 ++- ErsatzTV.FFmpeg/Capabilities/FFmpegCapabilities.cs | 8 +++++++- ErsatzTV.FFmpeg/Capabilities/FFmpegKnownEncoder.cs | 8 +++++++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 71807bdee..d8d2ded6b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Fix playout builder crash with improperly configured pad filler preset - Properly validate filler preset mode pad to require `filler pad to nearest minute` value - Fix bug where previously-synchronized collection tags would disappear - - This bug affected Jellyfin, Emby and Plex collections + - This bug affected Jellyfin, Emby and Plex collections +- Fix detection of AMF hardware acceleration on Windows ## [0.8.3-beta] - 2023-11-22 ### Added diff --git a/ErsatzTV.FFmpeg/Capabilities/FFmpegCapabilities.cs b/ErsatzTV.FFmpeg/Capabilities/FFmpegCapabilities.cs index 3af554904..eeb5b60fd 100644 --- a/ErsatzTV.FFmpeg/Capabilities/FFmpegCapabilities.cs +++ b/ErsatzTV.FFmpeg/Capabilities/FFmpegCapabilities.cs @@ -27,9 +27,15 @@ public class FFmpegCapabilities : IFFmpegCapabilities public bool HasHardwareAcceleration(HardwareAccelerationMode hardwareAccelerationMode) { + // AMF isn't a "hwaccel" in ffmpeg, so check for presence of encoders + if (hardwareAccelerationMode is HardwareAccelerationMode.Amf) + { + return _ffmpegEncoders.Any( + e => e.EndsWith($"_{FFmpegKnownHardwareAcceleration.Amf.Name}", StringComparison.OrdinalIgnoreCase)); + } + Option maybeAccelToCheck = hardwareAccelerationMode switch { - HardwareAccelerationMode.Amf => FFmpegKnownHardwareAcceleration.Amf, HardwareAccelerationMode.Nvenc => FFmpegKnownHardwareAcceleration.Cuda, HardwareAccelerationMode.Qsv => FFmpegKnownHardwareAcceleration.Qsv, HardwareAccelerationMode.Vaapi => FFmpegKnownHardwareAcceleration.Vaapi, diff --git a/ErsatzTV.FFmpeg/Capabilities/FFmpegKnownEncoder.cs b/ErsatzTV.FFmpeg/Capabilities/FFmpegKnownEncoder.cs index 34535045d..cd7e1cc04 100644 --- a/ErsatzTV.FFmpeg/Capabilities/FFmpegKnownEncoder.cs +++ b/ErsatzTV.FFmpeg/Capabilities/FFmpegKnownEncoder.cs @@ -9,5 +9,11 @@ public record FFmpegKnownEncoder this.Name = Name; } - public static IList AllEncoders => Array.Empty(); + // only list the encoders that we actually check for + public static IList AllEncoders => + new[] + { + "h264_amf", + "hevc_amf" + }; }