From 4640a6275c74d9cab53d929c656dae022b31e767 Mon Sep 17 00:00:00 2001 From: Jason Dove <1695733+jasongdove@users.noreply.github.com> Date: Mon, 1 Dec 2025 19:54:33 -0600 Subject: [PATCH] fixes --- .../Queries/GetTroubleshootingInfoHandler.cs | 7 +------ .../HardwareCapabilitiesFactory.cs | 11 +++-------- .../Capabilities/Qsv/QsvInitModes.cs | 19 +++++++++++++++++++ 3 files changed, 23 insertions(+), 14 deletions(-) create mode 100644 ErsatzTV.FFmpeg/Capabilities/Qsv/QsvInitModes.cs diff --git a/ErsatzTV.Application/Troubleshooting/Queries/GetTroubleshootingInfoHandler.cs b/ErsatzTV.Application/Troubleshooting/Queries/GetTroubleshootingInfoHandler.cs index 419ff268a..f344eef74 100644 --- a/ErsatzTV.Application/Troubleshooting/Queries/GetTroubleshootingInfoHandler.cs +++ b/ErsatzTV.Application/Troubleshooting/Queries/GetTroubleshootingInfoHandler.cs @@ -102,12 +102,7 @@ public class GetTroubleshootingInfoHandler : IRequestHandler qsvInitModes = [QsvInitMode.None]; - if (_runtimeInfo.IsOSPlatform(OSPlatform.Windows)) - { - qsvInitModes.Add(QsvInitMode.D3d11Va); - } - qsvInitModes.Add(QsvInitMode.Qsv); + var qsvInitModes = QsvInitModes.GetModesToTest(_runtimeInfo).ToList(); foreach (string qsvDevice in vaapiDevices) { diff --git a/ErsatzTV.FFmpeg/Capabilities/HardwareCapabilitiesFactory.cs b/ErsatzTV.FFmpeg/Capabilities/HardwareCapabilitiesFactory.cs index c3f8184d6..f34544a5d 100644 --- a/ErsatzTV.FFmpeg/Capabilities/HardwareCapabilitiesFactory.cs +++ b/ErsatzTV.FFmpeg/Capabilities/HardwareCapabilitiesFactory.cs @@ -577,18 +577,13 @@ public partial class HardwareCapabilitiesFactory( return new QsvHardwareCapabilities(vaapiCapabilities, qsvInitMode.Value); } - var initModesToTest = new Queue(); - initModesToTest.Enqueue(QsvInitMode.None); - if (runtimeInfo.IsOSPlatform(OSPlatform.Windows)) - { - initModesToTest.Enqueue(QsvInitMode.D3d11Va); - } - initModesToTest.Enqueue(QsvInitMode.Qsv); + var initModesToTest = new Queue(QsvInitModes.GetModesToTest(runtimeInfo)); QsvOutput output; - QsvInitMode initMode = initModesToTest.Dequeue(); + QsvInitMode initMode; do { + initMode = initModesToTest.Dequeue(); output = await GetQsvOutput(ffmpegPath, qsvDevice, initMode); if (output.ExitCode == 0) { diff --git a/ErsatzTV.FFmpeg/Capabilities/Qsv/QsvInitModes.cs b/ErsatzTV.FFmpeg/Capabilities/Qsv/QsvInitModes.cs new file mode 100644 index 000000000..d2c6cd45d --- /dev/null +++ b/ErsatzTV.FFmpeg/Capabilities/Qsv/QsvInitModes.cs @@ -0,0 +1,19 @@ +using System.Runtime.InteropServices; +using ErsatzTV.FFmpeg.Runtime; + +namespace ErsatzTV.FFmpeg.Capabilities.Qsv; + +public static class QsvInitModes +{ + public static IEnumerable GetModesToTest(IRuntimeInfo runtimeInfo) + { + yield return QsvInitMode.None; + + if (runtimeInfo.IsOSPlatform(OSPlatform.Windows)) + { + yield return QsvInitMode.D3d11Va; + } + + yield return QsvInitMode.Qsv; + } +}