24 lines
924 B
C#
24 lines
924 B
C#
namespace ErsatzTV.FFmpeg.Filter;
|
|
|
|
public class HardwareUploadFilter : BaseFilter
|
|
{
|
|
private readonly FFmpegState _ffmpegState;
|
|
|
|
public HardwareUploadFilter(FFmpegState ffmpegState) => _ffmpegState = ffmpegState;
|
|
|
|
public override string Filter => _ffmpegState.EncoderHardwareAccelerationMode switch
|
|
{
|
|
HardwareAccelerationMode.None => string.Empty,
|
|
HardwareAccelerationMode.Nvenc => "hwupload_cuda",
|
|
HardwareAccelerationMode.Qsv => $"hwupload=extra_hw_frames={_ffmpegState.QsvExtraHardwareFrames}",
|
|
HardwareAccelerationMode.Vaapi => "format=nv12|p010le|vaapi,hwupload",
|
|
_ => "hwupload"
|
|
};
|
|
|
|
public override FrameState NextState(FrameState currentState) => _ffmpegState.EncoderHardwareAccelerationMode switch
|
|
{
|
|
HardwareAccelerationMode.None => currentState,
|
|
_ => currentState with { FrameDataLocation = FrameDataLocation.Hardware }
|
|
};
|
|
}
|