SHA256
Add Force Software Encoder Feature
This commit is contained in:
5 files changed
+33
-10
No files matched your search
@@ -1,4 +1,3 @@
|
||||
using System.Text;
|
||||
using ADOFAIRenderer.Core;
|
||||
using ADOFAIRenderer.Data;
|
||||
using ADOFAIRenderer.Util.FFmpeg;
|
||||
@@ -103,7 +102,8 @@ namespace ADOFAIRenderer.UI
|
||||
Bitrate = config.EncodingConfig.Bitrate,
|
||||
MaxBitrate = config.EncodingConfig.MaxBitrate,
|
||||
QP = config.EncodingConfig.QP,
|
||||
KeyframeInterval = config.EncodingConfig.KeyframeInterval
|
||||
KeyframeInterval = config.EncodingConfig.KeyframeInterval,
|
||||
ForceSoftwareEncoder = config.EncodingConfig.ForceSoftwareEncoder
|
||||
};
|
||||
|
||||
if (_root.Contains(_encodingConfigContainer))
|
||||
@@ -203,6 +203,14 @@ namespace ADOFAIRenderer.UI
|
||||
keyframeRow.Add(keyframeField);
|
||||
_encodingConfigContainer.Add(keyframeRow);
|
||||
|
||||
// 6.75. 강제 소프트웨어 인코더 로우 (라벨 + 토글)
|
||||
var forceSoftwareRow = CreateRow();
|
||||
var forceSoftwareLabel = CreateFormLabel("소프트웨어 인코더");
|
||||
var forceSoftwareToggle = new Toggle { name = "ForceSoftwareEncoder", label = "", value = tempConfig.ForceSoftwareEncoder };
|
||||
forceSoftwareRow.Add(forceSoftwareLabel);
|
||||
forceSoftwareRow.Add(forceSoftwareToggle);
|
||||
_encodingConfigContainer.Add(forceSoftwareRow);
|
||||
|
||||
// 7. QP = 0 (무손실) 경고 라벨 로우 생성 (ui-row 클래스를 상속받아 NanumSquareNeo 폰트가 적용되도록 처리)
|
||||
var warningRow = CreateRow();
|
||||
warningRow.style.height = StyleKeyword.Auto;
|
||||
@@ -240,10 +248,10 @@ namespace ADOFAIRenderer.UI
|
||||
{
|
||||
if (System.Enum.TryParse<RateControlMode>(selectedModeStr, out var mode))
|
||||
{
|
||||
bitrateRow.style.display = (mode == RateControlMode.CBR || mode == RateControlMode.VBR) ? DisplayStyle.Flex : DisplayStyle.None;
|
||||
maxBitrateRow.style.display = (mode == RateControlMode.VBR) ? DisplayStyle.Flex : DisplayStyle.None;
|
||||
qpRow.style.display = (mode == RateControlMode.CQP) ? DisplayStyle.Flex : DisplayStyle.None;
|
||||
warningRow.style.display = (mode == RateControlMode.CQP && qpField.value == 0) ? DisplayStyle.Flex : DisplayStyle.None;
|
||||
bitrateRow.style.display = mode is RateControlMode.CBR or RateControlMode.VBR ? DisplayStyle.Flex : DisplayStyle.None;
|
||||
maxBitrateRow.style.display = mode == RateControlMode.VBR ? DisplayStyle.Flex : DisplayStyle.None;
|
||||
qpRow.style.display = mode == RateControlMode.CQP ? DisplayStyle.Flex : DisplayStyle.None;
|
||||
warningRow.style.display = mode == RateControlMode.CQP && qpField.value == 0 ? DisplayStyle.Flex : DisplayStyle.None;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -292,6 +300,7 @@ namespace ADOFAIRenderer.UI
|
||||
tempConfig.MaxBitrate = maxBitrateField.value;
|
||||
tempConfig.QP = qpField.value;
|
||||
tempConfig.KeyframeInterval = keyframeField.value;
|
||||
tempConfig.ForceSoftwareEncoder = forceSoftwareToggle.value;
|
||||
|
||||
if (tempConfig.RateControlMode == RateControlMode.VBR && tempConfig.MaxBitrate < tempConfig.Bitrate)
|
||||
{
|
||||
@@ -362,7 +371,8 @@ namespace ADOFAIRenderer.UI
|
||||
{
|
||||
RateControlMode = RateControlMode.CBR,
|
||||
Bitrate = 30000, MaxBitrate = 50000,
|
||||
QP = 18, KeyframeInterval = 2.0
|
||||
QP = 18, KeyframeInterval = 2.0,
|
||||
ForceSoftwareEncoder = false
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user