Files
ADOFAIRenderer/Data/RenderConfig.cs
T
2026-07-24 02:09:34 +09:00

68 lines
2.1 KiB
C#

using ADOFAIRenderer.Util.FFmpeg;
namespace ADOFAIRenderer.Data
{
public class RenderConfig
{
public double RenderFPS { get; set; }
public double VideoFPS { get; set; }
public int RenderWidth { get; set; }
public int RenderHeight { get; set; }
public VideoEncodingConfig? VideoConfig { get; set; }
public AudioEncodingConfig? AudioConfig { get; set; }
public double DelayAfterLevelEnd { get; set; }
public bool ShowJudgementText { get; set; }
public int? RandomSeed { get; set; } = null;
public bool ProcessAudio { get; set; }
// 하위 호환 및 편의를 위한 접근자
public bool RenderAudio
{
get => AudioConfig?.RenderAudio ?? true;
set => (AudioConfig ??= new AudioEncodingConfig()).RenderAudio = value;
}
public int AudioSampleRate
{
get => AudioConfig?.AudioSampleRate ?? 44100;
set { (AudioConfig ??= new AudioEncodingConfig()).AudioSampleRate = value; }
}
public int AudioChannels
{
get => AudioConfig?.AudioChannels ?? 2;
set { (AudioConfig ??= new AudioEncodingConfig()).AudioChannels = value; }
}
public int AudioBitrate
{
get => AudioConfig?.AudioBitrate ?? 256000;
set { (AudioConfig ??= new AudioEncodingConfig()).AudioBitrate = value; }
}
}
public class VideoEncodingConfig
{
public Codec Codec { get; set; } = Codec.H264;
public RateControlMode RateControlMode { get; set; }
public int Bitrate { get; set; }
public int MaxBitrate { get; set; }
// ReSharper disable once InconsistentNaming
public int QP { get; set; }
public double KeyframeInterval { get; set; }
public bool ForceSoftwareEncoder { get; set; }
}
public class AudioEncodingConfig
{
public bool RenderAudio { get; set; } = true;
public int AudioSampleRate { get; set; } = 44100;
public int AudioChannels { get; set; } = 2;
public int AudioBitrate { get; set; } = 256000;
}
}