52 lines
2.3 KiB
C#
52 lines
2.3 KiB
C#
using System.Linq;
|
||
using EmbyToolbox.Services;
|
||
|
||
namespace EmbyToolbox.ViewModels;
|
||
|
||
/// <summary>Списки для ComboBox в окне настроек (синхронизированы с MainWindowViewModel).</summary>
|
||
public sealed class ConversionFormOptions
|
||
{
|
||
public List<string> ContainerOptions { get; } = ["MKV", "MP4", "MOV", "WEBM"];
|
||
public List<string> VideoCodecOptions { get; } = ["H.264", "H.265", "AV1", "Copy"];
|
||
public List<string> PixelFormatOptions { get; } = ["yuv420p", "yuv420p10le", "yuv422p", "yuv444p"];
|
||
public List<string> ResolutionOptions { get; } = ["Без изменений", "Максимум 2160p", "Максимум 1440p", "Максимум 1080p", "Максимум 720p"];
|
||
public List<string> FpsOptions { get; } = ["Без изменений", "Максимум 60", "Максимум 30", "Максимум 25", "Максимум 24"];
|
||
public List<string> AudioCodecOptions { get; } = ["AAC", "AC3", "EAC3", "Opus", "MP3", "FLAC", "Copy"];
|
||
public List<string> AudioBitrateKbps { get; } = ["96 kbps", "128 kbps", "160 kbps", "192 kbps", "256 kbps", "320 kbps"];
|
||
public List<string> VideoBitrateModeOptions { get; } = VideoBitratePolicy.UiOptions.ToList();
|
||
|
||
internal void RestoreListsFromSerialized(IReadOnlyList<string>? containers,
|
||
IReadOnlyList<string>? video,
|
||
IReadOnlyList<string>? pixel,
|
||
IReadOnlyList<string>? resolution,
|
||
IReadOnlyList<string>? fps,
|
||
IReadOnlyList<string>? audioBitrate,
|
||
IReadOnlyList<string>? videoBitrateMode)
|
||
{
|
||
ReplaceList(ContainerOptions, containers);
|
||
ReplaceList(VideoCodecOptions, video);
|
||
ReplaceList(PixelFormatOptions, pixel);
|
||
ReplaceList(ResolutionOptions, resolution);
|
||
ReplaceList(FpsOptions, fps);
|
||
ReplaceList(AudioBitrateKbps, audioBitrate);
|
||
ReplaceList(VideoBitrateModeOptions, videoBitrateMode);
|
||
}
|
||
|
||
private static void ReplaceList(List<string> target, IReadOnlyList<string>? source)
|
||
{
|
||
if (source is null || source.Count == 0)
|
||
{
|
||
return;
|
||
}
|
||
|
||
target.Clear();
|
||
foreach (var s in source)
|
||
{
|
||
if (!string.IsNullOrWhiteSpace(s))
|
||
{
|
||
target.Add(s.Trim());
|
||
}
|
||
}
|
||
}
|
||
}
|