using ErsatzTV.FFmpeg.Environment; namespace ErsatzTV.FFmpeg.Encoder; public abstract class EncoderBase : IEncoder { public EnvironmentVariable[] EnvironmentVariables => Array.Empty(); public string[] GlobalOptions => Array.Empty(); public string[] InputOptions(InputFile inputFile) => Array.Empty(); public string[] FilterOptions => Array.Empty(); public virtual string[] OutputOptions => new[] { 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; }