Browse Source

fix vaapi capabilities detection when display is not drm (#1949)

* fix vainfo device syntax

* update logging

* don't pass vaapi_device when display is not drm

* fix hw accel

* proper accel fix

* Revert "proper accel fix"

This reverts commit 5dbadb1f79.

* Revert "fix hw accel"

This reverts commit b6b132d7b9.

* Revert "don't pass vaapi_device when display is not drm"

This reverts commit 0459210718.

* still show vaapi device
pull/1951/head
Jason Dove 9 months ago committed by GitHub
parent
commit
375a306edc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 36
      ErsatzTV.FFmpeg/Capabilities/HardwareCapabilitiesFactory.cs
  2. 16
      ErsatzTV/Pages/FFmpegEditor.razor

36
ErsatzTV.FFmpeg/Capabilities/HardwareCapabilitiesFactory.cs

@ -172,19 +172,19 @@ public class HardwareCapabilitiesFactory : IHardwareCapabilitiesFactory @@ -172,19 +172,19 @@ public class HardwareCapabilitiesFactory : IHardwareCapabilitiesFactory
var lines = new List<string>();
string arguments = display == "drm"
? $"--display drm --device {vaapiDevice} -a"
: $"--display {display} -a";
await Cli.Wrap("vainfo")
.WithArguments($"--display {display} --device {vaapiDevice} -a")
.WithArguments(arguments)
.WithEnvironmentVariables(envVars)
.WithValidation(CommandResultValidation.None)
.WithStandardOutputPipe(PipeTarget.ToDelegate(lines.Add))
.WithStandardErrorPipe(PipeTarget.ToDelegate(lines.Add))
.ExecuteAsync();
var mergedOutput = string.Join(System.Environment.NewLine, lines);
return mergedOutput.Contains("trying display", StringComparison.OrdinalIgnoreCase)
? mergedOutput
: string.Empty;
return string.Join(System.Environment.NewLine, lines);
}
public async Task<List<string>> GetVaapiDisplays()
@ -326,12 +326,22 @@ public class HardwareCapabilitiesFactory : IHardwareCapabilitiesFactory @@ -326,12 +326,22 @@ public class HardwareCapabilitiesFactory : IHardwareCapabilitiesFactory
if (profileEntrypoints is not null && profileEntrypoints.Count != 0)
{
_logger.LogDebug(
"Detected {Count} VAAPI profile entrypoints for using {Display} {Driver} {Device}",
profileEntrypoints.Count,
display,
driver,
device);
if (display == "drm")
{
_logger.LogDebug(
"Detected {Count} VAAPI profile entrypoints using {Driver} {Device}",
profileEntrypoints.Count,
driver,
device);
}
else
{
_logger.LogDebug(
"Detected {Count} VAAPI profile entrypoints using {Display} {Driver}",
profileEntrypoints.Count,
display,
driver);
}
_memoryCache.Set(cacheKey, profileEntrypoints);
return new VaapiHardwareCapabilities(profileEntrypoints, _logger);
}
@ -394,7 +404,7 @@ public class HardwareCapabilitiesFactory : IHardwareCapabilitiesFactory @@ -394,7 +404,7 @@ public class HardwareCapabilitiesFactory : IHardwareCapabilitiesFactory
if (profileEntrypoints is not null && profileEntrypoints.Count != 0)
{
_logger.LogDebug(
"Detected {Count} VAAPI profile entrypoints for using QSV device {Device}",
"Detected {Count} VAAPI profile entrypoints using QSV device {Device}",
profileEntrypoints.Count,
device);

16
ErsatzTV/Pages/FFmpegEditor.razor

@ -110,12 +110,10 @@ @@ -110,12 +110,10 @@
@if (_model.HardwareAcceleration == HardwareAccelerationKind.Vaapi)
{
<MudElement HtmlTag="div" Class="mt-3">
<MudSelect Disabled="@(_model.HardwareAcceleration != HardwareAccelerationKind.Vaapi)"
Label="VAAPI Display"
@bind-Value="_model.VaapiDisplay" For="@(() => _model.VaapiDisplay)">
@foreach (string display in _vaapiDisplays)
<MudSelect Disabled="@(_model.HardwareAcceleration != HardwareAccelerationKind.Vaapi)" Label="VAAPI Driver" @bind-Value="_model.VaapiDriver" For="@(() => _model.VaapiDriver)">
@foreach (VaapiDriver driver in Enum.GetValues<VaapiDriver>())
{
<MudSelectItem Value="@display">@display</MudSelectItem>
<MudSelectItem Value="@driver">@driver</MudSelectItem>
}
</MudSelect>
</MudElement>
@ -124,10 +122,12 @@ @@ -124,10 +122,12 @@
@if (_model.HardwareAcceleration == HardwareAccelerationKind.Vaapi)
{
<MudElement HtmlTag="div" Class="mt-3">
<MudSelect Disabled="@(_model.HardwareAcceleration != HardwareAccelerationKind.Vaapi)" Label="VAAPI Driver" @bind-Value="_model.VaapiDriver" For="@(() => _model.VaapiDriver)">
@foreach (VaapiDriver driver in Enum.GetValues<VaapiDriver>())
<MudSelect Disabled="@(_model.HardwareAcceleration != HardwareAccelerationKind.Vaapi)"
Label="VAAPI Display"
@bind-Value="_model.VaapiDisplay" For="@(() => _model.VaapiDisplay)">
@foreach (string display in _vaapiDisplays)
{
<MudSelectItem Value="@driver">@driver</MudSelectItem>
<MudSelectItem Value="@display">@display</MudSelectItem>
}
</MudSelect>
</MudElement>

Loading…
Cancel
Save