using ErsatzTV.FFmpeg.Environment; namespace ErsatzTV.FFmpeg.Encoder; public abstract class EncoderBase : IEncoder { public IList EnvironmentVariables => Array.Empty(); public IList GlobalOptions => Array.Empty(); public IList InputOptions(InputFile inputFile) => Array.Empty(); public IList FilterOptions => Array.Empty(); public virtual IList OutputOptions => new List { Kind switch { StreamKind.Video => "-c:v", StreamKind.Audio => "-c:a", StreamKind.Subtitle => "-c:s", _ => throw new ArgumentOutOfRangeException() }, Name }; public virtual FrameState NextState(FrameState currentState) => currentState; public abstract string Name { get; } public abstract StreamKind Kind { get; } public virtual string Filter => string.Empty; }