namespace AmiReel.Models; /// Visual style applied to a YouTube Short. Mirrors the --style values of amigadb-short-fx-v4.sh. public enum ShortStyle { Brand, Pixel, Mirror, Crop, Workbench, Blur, Crt, Copper, Stars, Grid, Tiles, Scan, Starfield, Plasma, Rasterbars, Vhs, Monitor, Split, Spectrum, Video, } /// How the video style crops the Amiga source before overlaying it. public enum ShortSourceCropMode { Auto, Center, } /// One YouTube Shorts render job's parameters (port of amigadb-short-fx-v4.sh). public sealed record ShortSettings { public required string InputFile { get; init; } public required string OutputPath { get; init; } public required string Title { get; init; } public string Group { get; init; } = ""; public string Year { get; init; } = ""; public string Type { get; init; } = ""; public required string Hook { get; init; } public required string Website { get; init; } public required string Start { get; init; } public required double DurationSeconds { get; init; } public required ShortStyle Style { get; init; } public string BackgroundImage { get; init; } = ""; public string BackgroundVideo { get; init; } = ""; public double VideoBlur { get; init; } public double VideoOpacity { get; init; } = 1.0; public ShortSourceCropMode SourceCropMode { get; init; } = ShortSourceCropMode.Auto; public int CropLeft { get; init; } public int CropRight { get; init; } public int CropTop { get; init; } public int CropBottom { get; init; } public int SourceMarginX { get; init; } = 40; public double SourceFadeInSeconds { get; init; } = 1.5; public required string FontFile { get; init; } public required string FfmpegPath { get; init; } public required string FfprobePath { get; init; } public int Crf { get; init; } = 16; public string Preset { get; init; } = "slow"; }