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 => Array.Empty(); public IList FilterOptions => Array.Empty(); public virtual IList OutputOptions => new List { Kind == StreamKind.Video ? "-c:v" : "-c:a", Name }; public abstract FrameState NextState(FrameState currentState); public abstract string Name { get; } public abstract StreamKind Kind { get; } public virtual string Filter => string.Empty; }