Browse Source

don't pass vaapi_device when display is not drm

pull/1949/head
Jason Dove 8 months ago
parent
commit
0459210718
No known key found for this signature in database
  1. 3
      ErsatzTV.Core/FFmpeg/FFmpegLibraryProcessService.cs
  2. 4
      ErsatzTV.FFmpeg.Tests/PipelineBuilderBaseTests.cs
  3. 2
      ErsatzTV.FFmpeg/FFmpegState.cs
  4. 11
      ErsatzTV.FFmpeg/Pipeline/VaapiPipelineBuilder.cs

3
ErsatzTV.Core/FFmpeg/FFmpegLibraryProcessService.cs

@ -382,6 +382,7 @@ public class FFmpegLibraryProcessService : IFFmpegProcessService @@ -382,6 +382,7 @@ public class FFmpegLibraryProcessService : IFFmpegProcessService
saveReports,
hwAccel,
hwAccel,
VaapiDisplayName(hwAccel, vaapiDisplay),
VaapiDriverName(hwAccel, vaapiDriver),
VaapiDeviceName(hwAccel, vaapiDevice),
playbackSettings.StreamSeek,
@ -536,6 +537,7 @@ public class FFmpegLibraryProcessService : IFFmpegProcessService @@ -536,6 +537,7 @@ public class FFmpegLibraryProcessService : IFFmpegProcessService
false,
HardwareAccelerationMode.None, // no hw accel decode since errors loop
hwAccel,
VaapiDisplayName(hwAccel, vaapiDisplay),
VaapiDriverName(hwAccel, vaapiDriver),
VaapiDeviceName(hwAccel, vaapiDevice),
playbackSettings.StreamSeek,
@ -730,6 +732,7 @@ public class FFmpegLibraryProcessService : IFFmpegProcessService @@ -730,6 +732,7 @@ public class FFmpegLibraryProcessService : IFFmpegProcessService
saveReports,
HardwareAccelerationMode.None,
hwAccel,
vaapiDisplay,
vaapiDriver,
vaapiDevice,
playbackSettings.StreamSeek,

4
ErsatzTV.FFmpeg.Tests/PipelineBuilderBaseTests.cs

@ -79,6 +79,7 @@ public class PipelineBuilderBaseTests @@ -79,6 +79,7 @@ public class PipelineBuilderBaseTests
HardwareAccelerationMode.None,
Option<string>.None,
Option<string>.None,
Option<string>.None,
TimeSpan.FromSeconds(1),
Option<TimeSpan>.None,
false,
@ -173,6 +174,7 @@ public class PipelineBuilderBaseTests @@ -173,6 +174,7 @@ public class PipelineBuilderBaseTests
HardwareAccelerationMode.None,
Option<string>.None,
Option<string>.None,
Option<string>.None,
TimeSpan.FromSeconds(1),
Option<TimeSpan>.None,
false,
@ -323,6 +325,7 @@ public class PipelineBuilderBaseTests @@ -323,6 +325,7 @@ public class PipelineBuilderBaseTests
HardwareAccelerationMode.None,
Option<string>.None,
Option<string>.None,
Option<string>.None,
Option<TimeSpan>.None,
Option<TimeSpan>.None,
false,
@ -411,6 +414,7 @@ public class PipelineBuilderBaseTests @@ -411,6 +414,7 @@ public class PipelineBuilderBaseTests
HardwareAccelerationMode.None,
Option<string>.None,
Option<string>.None,
Option<string>.None,
Option<TimeSpan>.None,
Option<TimeSpan>.None,
false,

2
ErsatzTV.FFmpeg/FFmpegState.cs

@ -6,6 +6,7 @@ public record FFmpegState( @@ -6,6 +6,7 @@ public record FFmpegState(
bool SaveReport,
HardwareAccelerationMode DecoderHardwareAccelerationMode,
HardwareAccelerationMode EncoderHardwareAccelerationMode,
Option<string> VaapiDisplay,
Option<string> VaapiDriver,
Option<string> VaapiDevice,
Option<TimeSpan> Start,
@ -33,6 +34,7 @@ public record FFmpegState( @@ -33,6 +34,7 @@ public record FFmpegState(
HardwareAccelerationMode.None,
Option<string>.None,
Option<string>.None,
Option<string>.None,
Option<TimeSpan>.None,
Option<TimeSpan>.None,
true, // do not map metadata

11
ErsatzTV.FFmpeg/Pipeline/VaapiPipelineBuilder.cs

@ -75,14 +75,17 @@ public class VaapiPipelineBuilder : SoftwarePipelineBuilder @@ -75,14 +75,17 @@ public class VaapiPipelineBuilder : SoftwarePipelineBuilder
encodeCapability = FFmpegCapability.Software;
}
foreach (string vaapiDevice in ffmpegState.VaapiDevice)
{
pipelineSteps.Add(new VaapiHardwareAccelerationOption(vaapiDevice, decodeCapability));
foreach (string driverName in ffmpegState.VaapiDriver)
{
pipelineSteps.Add(new LibvaDriverNameVariable(driverName));
}
if (ffmpegState.VaapiDisplay.IfNone("drm") == "drm")
{
foreach (string vaapiDevice in ffmpegState.VaapiDevice)
{
pipelineSteps.Add(new VaapiHardwareAccelerationOption(vaapiDevice, decodeCapability));
}
}
// use software decoding with an extensive pipeline

Loading…
Cancel
Save