Browse Source

fix concat segmenter for nvidia and qsv (#1622)

pull/1623/head
Jason Dove 2 years ago committed by GitHub
parent
commit
6957a76156
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 7
      ErsatzTV.FFmpeg/Pipeline/NvidiaPipelineBuilder.cs
  2. 7
      ErsatzTV.FFmpeg/Pipeline/QsvPipelineBuilder.cs

7
ErsatzTV.FFmpeg/Pipeline/NvidiaPipelineBuilder.cs

@ -8,6 +8,7 @@ using ErsatzTV.FFmpeg.Filter.Cuda; @@ -8,6 +8,7 @@ using ErsatzTV.FFmpeg.Filter.Cuda;
using ErsatzTV.FFmpeg.Format;
using ErsatzTV.FFmpeg.GlobalOption.HardwareAcceleration;
using ErsatzTV.FFmpeg.InputOption;
using ErsatzTV.FFmpeg.OutputFormat;
using ErsatzTV.FFmpeg.OutputOption;
using ErsatzTV.FFmpeg.State;
using Microsoft.Extensions.Logging;
@ -64,6 +65,12 @@ public class NvidiaPipelineBuilder : SoftwarePipelineBuilder @@ -64,6 +65,12 @@ public class NvidiaPipelineBuilder : SoftwarePipelineBuilder
desiredState.VideoProfile,
desiredState.PixelFormat);
// use software encoding (rawvideo) when piping to parent hls segmenter
if (ffmpegState.OutputFormat is OutputFormatKind.Nut)
{
encodeCapability = FFmpegCapability.Software;
}
// mpeg2_cuvid seems to have issues when yadif_cuda is used, so just use software decoding
if (context.ShouldDeinterlace && videoStream.Codec == VideoFormat.Mpeg2Video)
{

7
ErsatzTV.FFmpeg/Pipeline/QsvPipelineBuilder.cs

@ -8,6 +8,7 @@ using ErsatzTV.FFmpeg.Filter.Qsv; @@ -8,6 +8,7 @@ using ErsatzTV.FFmpeg.Filter.Qsv;
using ErsatzTV.FFmpeg.Format;
using ErsatzTV.FFmpeg.GlobalOption.HardwareAcceleration;
using ErsatzTV.FFmpeg.InputOption;
using ErsatzTV.FFmpeg.OutputFormat;
using ErsatzTV.FFmpeg.OutputOption;
using ErsatzTV.FFmpeg.State;
using Microsoft.Extensions.Logging;
@ -66,6 +67,12 @@ public class QsvPipelineBuilder : SoftwarePipelineBuilder @@ -66,6 +67,12 @@ public class QsvPipelineBuilder : SoftwarePipelineBuilder
desiredState.VideoProfile,
desiredState.PixelFormat);
// use software encoding (rawvideo) when piping to parent hls segmenter
if (ffmpegState.OutputFormat is OutputFormatKind.Nut)
{
encodeCapability = FFmpegCapability.Software;
}
pipelineSteps.Add(new QsvHardwareAccelerationOption(ffmpegState.VaapiDevice));
bool isHevcOrH264 = videoStream.Codec is VideoFormat.Hevc or VideoFormat.H264;

Loading…
Cancel
Save