mirror of https://github.com/ErsatzTV/ErsatzTV.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.5 KiB
62 lines
1.5 KiB
using ErsatzTV.FFmpeg.Format; |
|
using ErsatzTV.FFmpeg.Option; |
|
using ErsatzTV.FFmpeg.State; |
|
|
|
namespace ErsatzTV.FFmpeg; |
|
|
|
public abstract record InputFile(string Path, IList<MediaStream> Streams) |
|
{ |
|
public List<IInputOption> InputOptions { get; } = new(); |
|
public List<IPipelineFilterStep> FilterSteps { get; } = new(); |
|
} |
|
|
|
public record ConcatInputFile(string Url, FrameSize Resolution) : InputFile( |
|
Url, |
|
new List<MediaStream> |
|
{ |
|
new VideoStream( |
|
0, |
|
string.Empty, |
|
Option<IPixelFormat>.None, |
|
Resolution, |
|
Option<string>.None, |
|
false) |
|
}) |
|
{ |
|
public void AddOption(IInputOption option) |
|
{ |
|
if (option.AppliesTo(this)) |
|
{ |
|
InputOptions.Add(option); |
|
} |
|
} |
|
} |
|
|
|
public record AudioInputFile(string Path, IList<AudioStream> AudioStreams, AudioState DesiredState) : InputFile( |
|
Path, |
|
AudioStreams.Cast<MediaStream>().ToList()) |
|
{ |
|
public void AddOption(IInputOption option) |
|
{ |
|
if (option.AppliesTo(this)) |
|
{ |
|
InputOptions.Add(option); |
|
} |
|
} |
|
} |
|
|
|
public record VideoInputFile(string Path, IList<VideoStream> VideoStreams) : InputFile( |
|
Path, |
|
VideoStreams.Cast<MediaStream>().ToList()) |
|
{ |
|
public void AddOption(IInputOption option) |
|
{ |
|
if (option.AppliesTo(this)) |
|
{ |
|
InputOptions.Add(option); |
|
} |
|
} |
|
} |
|
|
|
public record WatermarkInputFile |
|
(string Path, IList<VideoStream> VideoStreams, WatermarkState DesiredState) : VideoInputFile(Path, VideoStreams);
|
|
|