Fix Preset Save

This commit is contained in:
copecone committed 2026-07-25 08:18:27 +09:00
1 parent 8bc855db41
commit c07b57b273
5 files changed
+79 -70

No files matched your search

+20 -15
View File
@@ -84,9 +84,9 @@ namespace ADOFAIRenderer.Data
// 2. legacy top-level Codec -> VideoConfig.Codec
var legacyCodecToken = configObj["Codec"];
if (legacyCodecToken != null)
if (legacyCodecToken != null && legacyCodecToken.Type != JTokenType.Null)
{
if (configObj["VideoConfig"] == null)
if (configObj["VideoConfig"] == null || configObj["VideoConfig"]!.Type == JTokenType.Null)
{
configObj["VideoConfig"] = new JObject();
}
@@ -98,22 +98,27 @@ namespace ADOFAIRenderer.Data
}
// 3. legacy top-level Audio properties -> AudioConfig
if (configObj["AudioConfig"] == null)
string[] legacyAudioProps = { "RenderAudio", "AudioSampleRate", "AudioChannels", "AudioBitrate" };
foreach (var prop in legacyAudioProps)
{
var audioConfigObj = new JObject();
if (configObj["RenderAudio"] != null)
audioConfigObj["RenderAudio"] = configObj["RenderAudio"];
if (configObj["AudioSampleRate"] != null)
audioConfigObj["AudioSampleRate"] = configObj["AudioSampleRate"];
if (configObj["AudioChannels"] != null)
audioConfigObj["AudioChannels"] = configObj["AudioChannels"];
if (configObj["AudioBitrate"] != null)
audioConfigObj["AudioBitrate"] = configObj["AudioBitrate"];
if (audioConfigObj.HasValues)
var legacyToken = configObj[prop];
if (legacyToken != null && legacyToken.Type != JTokenType.Null)
{
configObj["AudioConfig"] = audioConfigObj;
if (configObj["AudioConfig"] == null || configObj["AudioConfig"]!.Type == JTokenType.Null)
{
configObj["AudioConfig"] = new JObject();
}
var audioConfigObj = (JObject)configObj["AudioConfig"]!;
audioConfigObj[prop] ??= legacyToken;
}
configObj.Remove(prop);
}
if (configObj["AudioConfig"] != null && configObj["AudioConfig"]!.Type == JTokenType.Null)
{
configObj.Remove("AudioConfig");
}
}
+30 -36
View File
@@ -10,59 +10,53 @@ namespace ADOFAIRenderer.Data
public int RenderWidth { get; set; }
public int RenderHeight { get; set; }
public VideoEncodingConfig? VideoConfig { get; set; }
public AudioEncodingConfig? AudioConfig { get; set; }
public VideoEncodingConfig VideoConfig { get; set; } = new VideoEncodingConfig();
public AudioEncodingConfig AudioConfig { get; set; } = new AudioEncodingConfig();
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 RateControlMode RateControlMode { get; set; } = RateControlMode.CBR;
public int Bitrate { get; set; }
public int MaxBitrate { get; set; }
public int Bitrate { get; set; } = 30000;
public int MaxBitrate { get; set; } = 50000;
// ReSharper disable once InconsistentNaming
public int QP { get; set; }
public double KeyframeInterval { get; set; }
public bool ForceSoftwareEncoder { get; set; }
public int QP { get; set; } = 18;
public double KeyframeInterval { get; set; } = 2.0;
public bool ForceSoftwareEncoder { get; set; } = false;
}
public class AudioEncodingConfig
{
private int _audioSampleRate = 44100;
private int _audioChannels = 2;
private int _audioBitrate = 256000;
public bool RenderAudio { get; set; } = true;
public int AudioSampleRate { get; set; } = 44100;
public int AudioChannels { get; set; } = 2;
public int AudioBitrate { get; set; } = 256000;
public int AudioSampleRate
{
get => _audioSampleRate <= 0 ? 44100 : _audioSampleRate;
set => _audioSampleRate = value <= 0 ? 44100 : value;
}
public int AudioChannels
{
get => _audioChannels <= 0 ? 2 : _audioChannels;
set => _audioChannels = value <= 0 ? 2 : value;
}
public int AudioBitrate
{
get => _audioBitrate <= 0 ? 256000 : _audioBitrate;
set => _audioBitrate = value <= 0 ? 256000 : value;
}
}
}