using ErsatzTV.FFmpeg.Capabilities; namespace ErsatzTV.FFmpeg.Option.HardwareAcceleration; public class VaapiHardwareAccelerationOption : GlobalOption { private readonly FFmpegCapability _decodeCapability; private readonly string _vaapiDevice; public VaapiHardwareAccelerationOption(string vaapiDevice, FFmpegCapability decodeCapability) { _vaapiDevice = vaapiDevice; _decodeCapability = decodeCapability; } public override IList GlobalOptions { get { var result = new List { "-vaapi_device", _vaapiDevice }; if (_decodeCapability == FFmpegCapability.Hardware) { result.InsertRange(0, new[] { "-hwaccel", "vaapi" }); } return result; } } public override FrameState NextState(FrameState currentState) => currentState with { FrameDataLocation = FrameDataLocation.Hardware }; }