using ErsatzTV.FFmpeg.Environment; namespace ErsatzTV.FFmpeg.Option; public class RealtimeInputOption : IInputOption { public IList EnvironmentVariables => Array.Empty(); public IList GlobalOptions => Array.Empty(); public IList InputOptions(InputFile inputFile) => new List { "-re" }; public IList FilterOptions => Array.Empty(); public IList OutputOptions => Array.Empty(); public FrameState NextState(FrameState currentState) => currentState with { Realtime = true }; public bool AppliesTo(AudioInputFile audioInputFile) => true; // don't use realtime input for a still image public bool AppliesTo(VideoInputFile videoInputFile) => videoInputFile.VideoStreams.All(s => !s.StillImage); public bool AppliesTo(ConcatInputFile concatInputFile) => true; }