Browse Source

fixes

pull/2691/head
Jason Dove 8 months ago
parent
commit
4640a6275c
No known key found for this signature in database
  1. 7
      ErsatzTV.Application/Troubleshooting/Queries/GetTroubleshootingInfoHandler.cs
  2. 11
      ErsatzTV.FFmpeg/Capabilities/HardwareCapabilitiesFactory.cs
  3. 19
      ErsatzTV.FFmpeg/Capabilities/Qsv/QsvInitModes.cs

7
ErsatzTV.Application/Troubleshooting/Queries/GetTroubleshootingInfoHandler.cs

@ -102,12 +102,7 @@ public class GetTroubleshootingInfoHandler : IRequestHandler<GetTroubleshootingI
vaapiDisplays = ["drm"]; vaapiDisplays = ["drm"];
} }
List<QsvInitMode> qsvInitModes = [QsvInitMode.None]; var qsvInitModes = QsvInitModes.GetModesToTest(_runtimeInfo).ToList();
if (_runtimeInfo.IsOSPlatform(OSPlatform.Windows))
{
qsvInitModes.Add(QsvInitMode.D3d11Va);
}
qsvInitModes.Add(QsvInitMode.Qsv);
foreach (string qsvDevice in vaapiDevices) foreach (string qsvDevice in vaapiDevices)
{ {

11
ErsatzTV.FFmpeg/Capabilities/HardwareCapabilitiesFactory.cs

@ -577,18 +577,13 @@ public partial class HardwareCapabilitiesFactory(
return new QsvHardwareCapabilities(vaapiCapabilities, qsvInitMode.Value); return new QsvHardwareCapabilities(vaapiCapabilities, qsvInitMode.Value);
} }
var initModesToTest = new Queue<QsvInitMode>(); var initModesToTest = new Queue<QsvInitMode>(QsvInitModes.GetModesToTest(runtimeInfo));
initModesToTest.Enqueue(QsvInitMode.None);
if (runtimeInfo.IsOSPlatform(OSPlatform.Windows))
{
initModesToTest.Enqueue(QsvInitMode.D3d11Va);
}
initModesToTest.Enqueue(QsvInitMode.Qsv);
QsvOutput output; QsvOutput output;
QsvInitMode initMode = initModesToTest.Dequeue(); QsvInitMode initMode;
do do
{ {
initMode = initModesToTest.Dequeue();
output = await GetQsvOutput(ffmpegPath, qsvDevice, initMode); output = await GetQsvOutput(ffmpegPath, qsvDevice, initMode);
if (output.ExitCode == 0) if (output.ExitCode == 0)
{ {

19
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<QsvInitMode> GetModesToTest(IRuntimeInfo runtimeInfo)
{
yield return QsvInitMode.None;
if (runtimeInfo.IsOSPlatform(OSPlatform.Windows))
{
yield return QsvInitMode.D3d11Va;
}
yield return QsvInitMode.Qsv;
}
}
Loading…
Cancel
Save