SHA256
Fix Preset Save
This commit is contained in:
5 files changed
+79
-70
No files matched your search
+20
-15
@@ -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
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user