Add Audio Config

This commit is contained in:
copecone committed 2026-07-24 02:09:34 +09:00
1 parent 0e720b5d47
commit c1487394a9
7 files changed
+332 -121

No files matched your search

+31 -5
View File
@@ -75,20 +75,46 @@ namespace ADOFAIRenderer.Data
var configToken = jObject["Config"];
if (configToken is JObject configObj)
{
// 1. legacy EncodingConfig -> VideoConfig
if (configObj["EncodingConfig"] is JObject oldEncodingConfigObj)
{
configObj["VideoConfig"] ??= oldEncodingConfigObj;
configObj.Remove("EncodingConfig");
}
// 2. legacy top-level Codec -> VideoConfig.Codec
var legacyCodecToken = configObj["Codec"];
if (legacyCodecToken != null)
{
var encodingConfigToken = configObj["EncodingConfig"];
if (encodingConfigToken == null)
if (configObj["VideoConfig"] == null)
{
configObj["EncodingConfig"] = new JObject();
configObj["VideoConfig"] = new JObject();
}
var encodingConfigObj = (JObject)configObj["EncodingConfig"]!;
encodingConfigObj["Codec"] ??= legacyCodecToken;
var videoConfigObj = (JObject)configObj["VideoConfig"]!;
videoConfigObj["Codec"] ??= legacyCodecToken;
configObj.Remove("Codec");
}
// 3. legacy top-level Audio properties -> AudioConfig
if (configObj["AudioConfig"] == null)
{
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)
{
configObj["AudioConfig"] = audioConfigObj;
}
}
}
var preset = jObject.ToObject<RenderPreset>();
+36 -6
View File
@@ -10,20 +10,42 @@ namespace ADOFAIRenderer.Data
public int RenderWidth { get; set; }
public int RenderHeight { get; set; }
public EncodingConfig? EncodingConfig { 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; set; } = true;
public int AudioSampleRate { get; set; } = 44100;
public int AudioChannels { get; set; } = 2;
public int AudioBitrate { get; set; } = 256000;
// 하위 호환 및 편의를 위한 접근자
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 EncodingConfig
public class VideoEncodingConfig
{
public Codec Codec { get; set; } = Codec.H264;
public RateControlMode RateControlMode { get; set; }
@@ -35,4 +57,12 @@ namespace ADOFAIRenderer.Data
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;
}
}