SHA256
Add Audio Config
This commit is contained in:
7 files changed
+332
-121
No files matched your search
+31
-5
@@ -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
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user