Browse Source

fix nvidia pipeline that only requires setparams (#1074)

pull/1075/head
Jason Dove 4 years ago committed by GitHub
parent
commit
731072425b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      ErsatzTV.Core.Tests/FFmpeg/TranscodingTests.cs
  2. 9
      ErsatzTV.FFmpeg/Pipeline/NvidiaPipelineBuilder.cs

3
ErsatzTV.Core.Tests/FFmpeg/TranscodingTests.cs

@ -130,6 +130,9 @@ public class TranscodingTests
// example format that requires colorspace filter // example format that requires colorspace filter
new("libx264", "yuv420p", "tv", "smpte170m", "bt709", "smpte170m"), new("libx264", "yuv420p", "tv", "smpte170m", "bt709", "smpte170m"),
// example format that requires setparams filter
new("libx264", "yuv420p", string.Empty, string.Empty, string.Empty, string.Empty),
// new("libx264", "yuvj420p"), // new("libx264", "yuvj420p"),
new("libx264", "yuv420p10le"), new("libx264", "yuv420p10le"),
// new("libx264", "yuv444p10le"), // new("libx264", "yuv444p10le"),

9
ErsatzTV.FFmpeg/Pipeline/NvidiaPipelineBuilder.cs

@ -300,13 +300,14 @@ public class NvidiaPipelineBuilder : SoftwarePipelineBuilder
if (currentState.FrameDataLocation == FrameDataLocation.Hardware) if (currentState.FrameDataLocation == FrameDataLocation.Hardware)
{ {
bool noPipelineFilters = !pipelineSteps.OfType<IPipelineFilterStep>().Any(); bool noPipelineFilters = !pipelineSteps
bool softwareColorspace = result is [ColorspaceFilter colorspace] && .Filter(ps => ps is not IEncoder)
!colorspace.Filter.StartsWith("setparams="); .OfType<IPipelineFilterStep>().Any();
bool hasColorspace = result is [ColorspaceFilter];
bool softwareDecoder = ffmpegState.DecoderHardwareAccelerationMode == HardwareAccelerationMode.None; bool softwareDecoder = ffmpegState.DecoderHardwareAccelerationMode == HardwareAccelerationMode.None;
if (softwareDecoder || (noPipelineFilters && softwareColorspace)) if (softwareDecoder || (noPipelineFilters && hasColorspace))
{ {
result.Add(new CudaFormatFilter(format)); result.Add(new CudaFormatFilter(format));
} }

Loading…
Cancel
Save