using ErsatzTV.FFmpeg.Capabilities.Qsv; namespace ErsatzTV.FFmpeg.Capabilities; public interface IHardwareCapabilitiesFactory { void ClearCache(); Task GetFFmpegCapabilities(string ffmpegPath, CancellationToken cancellationToken); Task GetFFmpegVersion(string ffmpegPath, CancellationToken cancellationToken); Task GetHardwareCapabilities( IFFmpegCapabilities ffmpegCapabilities, string ffmpegPath, HardwareAccelerationMode hardwareAccelerationMode, Option vaapiDisplay, Option vaapiDriver, Option vaapiDevice); Task GetNvidiaOutput(string ffmpegPath); Task GetQsvOutput(string ffmpegPath, Option qsvDevice); Task> GetVaapiOutput(string display, Option vaapiDriver, string vaapiDevice); Task> GetVaapiDisplays(); List GetCpuList(); List GetVideoControllerList(); List GetVideoToolboxDecoders(); List GetVideoToolboxEncoders(); void SetAviSynthInstalled(bool aviSynthInstalled); bool IsAviSynthInstalled(); }