From 731072425b291b4606a331777d63b20a09ff1df0 Mon Sep 17 00:00:00 2001 From: Jason Dove Date: Sat, 24 Dec 2022 13:19:27 -0600 Subject: [PATCH] fix nvidia pipeline that only requires setparams (#1074) --- ErsatzTV.Core.Tests/FFmpeg/TranscodingTests.cs | 3 +++ ErsatzTV.FFmpeg/Pipeline/NvidiaPipelineBuilder.cs | 9 +++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ErsatzTV.Core.Tests/FFmpeg/TranscodingTests.cs b/ErsatzTV.Core.Tests/FFmpeg/TranscodingTests.cs index 39c502818..7e56ad439 100644 --- a/ErsatzTV.Core.Tests/FFmpeg/TranscodingTests.cs +++ b/ErsatzTV.Core.Tests/FFmpeg/TranscodingTests.cs @@ -130,6 +130,9 @@ public class TranscodingTests // example format that requires colorspace filter 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", "yuv420p10le"), // new("libx264", "yuv444p10le"), diff --git a/ErsatzTV.FFmpeg/Pipeline/NvidiaPipelineBuilder.cs b/ErsatzTV.FFmpeg/Pipeline/NvidiaPipelineBuilder.cs index ab8829b11..1f353e0fe 100644 --- a/ErsatzTV.FFmpeg/Pipeline/NvidiaPipelineBuilder.cs +++ b/ErsatzTV.FFmpeg/Pipeline/NvidiaPipelineBuilder.cs @@ -300,13 +300,14 @@ public class NvidiaPipelineBuilder : SoftwarePipelineBuilder if (currentState.FrameDataLocation == FrameDataLocation.Hardware) { - bool noPipelineFilters = !pipelineSteps.OfType().Any(); - bool softwareColorspace = result is [ColorspaceFilter colorspace] && - !colorspace.Filter.StartsWith("setparams="); + bool noPipelineFilters = !pipelineSteps + .Filter(ps => ps is not IEncoder) + .OfType().Any(); + bool hasColorspace = result is [ColorspaceFilter]; bool softwareDecoder = ffmpegState.DecoderHardwareAccelerationMode == HardwareAccelerationMode.None; - if (softwareDecoder || (noPipelineFilters && softwareColorspace)) + if (softwareDecoder || (noPipelineFilters && hasColorspace)) { result.Add(new CudaFormatFilter(format)); }