NVENC: Replace 2pass presets with a checkbox
NVENC now supports 2pass in basicaly every mode of operation, which would result in way too many presets. So use a checkbox instead.
This commit is contained in:
parent
622a845c82
commit
e2289b68ce
1
OBS.rc
1
OBS.rc
@ -399,6 +399,7 @@ BEGIN
|
||||
COMBOBOX IDC_X264PROFILE,170,106,82,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
RTEXT "Settings.Advanced.NVENCPreset",IDC_NVENCPRESET_LABEL,7,94,160,8
|
||||
COMBOBOX IDC_NVENCPRESET,170,91,120,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
CONTROL "Settings.Advanced.NVENC2Pass",IDC_NVENC2PASS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,293,92,117,10
|
||||
RTEXT "Settings.Advanced.QSVPreset",IDC_QSVPRESET_LABEL,7,94,160,8
|
||||
COMBOBOX IDC_QSVPRESET,170,91,120,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
RTEXT "Settings.Encoding.Video.KeyframeInterval",IDC_STATIC,7,124,160,8
|
||||
|
@ -158,11 +158,11 @@ void NVENCEncoder::init()
|
||||
|
||||
GUID encoderPreset = NV_ENC_PRESET_HQ_GUID;
|
||||
dontTouchConfig = false;
|
||||
bool is2PassRC = false;
|
||||
bool is2PassRC = AppConfig->GetInt(TEXT("Video Encoding"), TEXT("NVENC2Pass"), 1) != 0;
|
||||
|
||||
String profileString = AppConfig->GetString(TEXT("Video Encoding"), TEXT("X264Profile"), TEXT("high"));
|
||||
|
||||
String presetString = AppConfig->GetString(TEXT("Video Encoding"), TEXT("NVENCPreset"), TEXT("High Quality"));
|
||||
String presetString = AppConfig->GetString(TEXT("Video Encoding"), TEXT("NVENCPreset"), TEXT("Automatic"));
|
||||
|
||||
if (presetString == TEXT("High Performance"))
|
||||
{
|
||||
@ -176,21 +176,6 @@ void NVENCEncoder::init()
|
||||
{
|
||||
encoderPreset = NV_ENC_PRESET_BD_GUID;
|
||||
}
|
||||
else if (presetString == TEXT("Low Latency (2pass)"))
|
||||
{
|
||||
encoderPreset = NV_ENC_PRESET_LOW_LATENCY_DEFAULT_GUID;
|
||||
is2PassRC = true;
|
||||
}
|
||||
else if (presetString == TEXT("High Performance Low Latency (2pass)"))
|
||||
{
|
||||
encoderPreset = NV_ENC_PRESET_LOW_LATENCY_HP_GUID;
|
||||
is2PassRC = true;
|
||||
}
|
||||
else if (presetString == TEXT("High Quality Low Latency (2pass)"))
|
||||
{
|
||||
encoderPreset = NV_ENC_PRESET_LOW_LATENCY_HQ_GUID;
|
||||
is2PassRC = true;
|
||||
}
|
||||
else if (presetString == TEXT("Low Latency"))
|
||||
{
|
||||
encoderPreset = NV_ENC_PRESET_LOW_LATENCY_DEFAULT_GUID;
|
||||
@ -222,10 +207,12 @@ void NVENCEncoder::init()
|
||||
if (height > 1080 || (height == 1080 && fps > 30))
|
||||
{
|
||||
encoderPreset = NV_ENC_PRESET_HQ_GUID;
|
||||
is2PassRC = false;
|
||||
}
|
||||
if (height > 720 || (height == 720 && fps > 30))
|
||||
{
|
||||
encoderPreset = NV_ENC_PRESET_LOW_LATENCY_HQ_GUID;
|
||||
is2PassRC = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -79,6 +79,10 @@ void SettingsAdvanced::SelectPresetDialog(bool useQSV, bool useNVENC)
|
||||
ShowWindow(hwndTemp, useNVENC ? SW_SHOW : SW_HIDE);
|
||||
EnableWindow(hwndTemp, true);
|
||||
|
||||
hwndTemp = GetDlgItem(hwnd, IDC_NVENC2PASS);
|
||||
ShowWindow(hwndTemp, useNVENC ? SW_SHOW : SW_HIDE);
|
||||
EnableWindow(hwndTemp, true);
|
||||
|
||||
hwndTemp = GetDlgItem(hwnd, IDC_QSVPRESET);
|
||||
ShowWindow(hwndTemp, useQSV ? SW_SHOW : SW_HIDE);
|
||||
EnableWindow(hwndTemp, true);
|
||||
@ -187,6 +191,11 @@ void SettingsAdvanced::ApplySettings()
|
||||
|
||||
//------------------------------------
|
||||
|
||||
BOOL bNvencUse2Pass = SendMessage(GetDlgItem(hwnd, IDC_NVENC2PASS), BM_GETCHECK, 0, 0) == BST_CHECKED;
|
||||
AppConfig->SetInt (TEXT("Video Encoding"), TEXT("NVENC2Pass"), bNvencUse2Pass);
|
||||
|
||||
//------------------------------------
|
||||
|
||||
BOOL bSyncToVideoTime = SendMessage(GetDlgItem(hwnd, IDC_SYNCTOVIDEOTIME), BM_GETCHECK, 0, 0) == BST_CHECKED;
|
||||
AppConfig->SetInt (TEXT("Audio"), TEXT("SyncToVideoTime"), bSyncToVideoTime);
|
||||
|
||||
@ -252,6 +261,8 @@ void SettingsAdvanced::SetDefaults()
|
||||
SendMessage(GetDlgItem(hwnd, IDC_ENCODEFULLRANGE), BM_SETCHECK, BST_UNCHECKED, 0);
|
||||
SendMessage(GetDlgItem(hwnd, IDC_QSVUSEVIDEOENCODERSETTINGS), BM_SETCHECK, BST_UNCHECKED, 0);
|
||||
SendMessage(GetDlgItem(hwnd, IDC_NVENCPRESET), CB_SETCURSEL, 0, 0);
|
||||
SendMessage(GetDlgItem(hwnd, IDC_NVENC2PASS), BM_SETCHECK, BST_CHECKED, 0);
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_NVENC2PASS), FALSE);
|
||||
SendMessage(GetDlgItem(hwnd, IDC_QSVPRESET), CB_SETCURSEL, 0, 0);
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_QSVVIDEOENCODERSETTINGS), FALSE);
|
||||
SendMessage(GetDlgItem(hwnd, IDC_SYNCTOVIDEOTIME), BM_SETCHECK, BST_UNCHECKED, 0);
|
||||
@ -423,9 +434,6 @@ INT_PTR SettingsAdvanced::ProcMessage(UINT message, WPARAM wParam, LPARAM lParam
|
||||
TEXT("Low Latency"),
|
||||
TEXT("High Performance Low Latency"),
|
||||
TEXT("High Quality Low Latency"),
|
||||
TEXT("Low Latency (2pass)"),
|
||||
TEXT("High Performance Low Latency (2pass)"),
|
||||
TEXT("High Quality Low Latency (2pass)"),
|
||||
TEXT("Lossless"),
|
||||
TEXT("High Performance Lossless"),
|
||||
TEXT("NVDefault"),
|
||||
@ -436,6 +444,12 @@ INT_PTR SettingsAdvanced::ProcMessage(UINT message, WPARAM wParam, LPARAM lParam
|
||||
|
||||
LoadSettingComboString(hwndTemp, TEXT("Video Encoding"), TEXT("NVENCPreset"), nv_preset_names[0]);
|
||||
|
||||
bool bNvencUse2Pass = AppConfig->GetInt(TEXT("Video Encoding"), TEXT("NVENC2Pass"), 1) != 0;
|
||||
SendMessage(GetDlgItem(hwnd, IDC_NVENC2PASS), BM_SETCHECK, bNvencUse2Pass ? BST_CHECKED : BST_UNCHECKED, 0);
|
||||
|
||||
String strNvencPreset = AppConfig->GetString(TEXT("Video Encoding"), TEXT("NVENCPreset"), nv_preset_names[0]);
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_NVENC2PASS), scmp(strNvencPreset.Array(), nv_preset_names[0]) ? TRUE : FALSE);
|
||||
|
||||
hwndTemp = GetDlgItem(hwnd, IDC_QSVPRESET);
|
||||
static const struct {
|
||||
CTSTR name;
|
||||
@ -631,7 +645,6 @@ INT_PTR SettingsAdvanced::ProcMessage(UINT message, WPARAM wParam, LPARAM lParam
|
||||
case IDC_SENDBUFFERSIZE:
|
||||
case IDC_PRIORITY:
|
||||
case IDC_BINDIP:
|
||||
case IDC_NVENCPRESET:
|
||||
case IDC_QSVPRESET:
|
||||
if(HIWORD(wParam) == CBN_SELCHANGE || HIWORD(wParam) == CBN_EDITCHANGE)
|
||||
{
|
||||
@ -641,6 +654,23 @@ INT_PTR SettingsAdvanced::ProcMessage(UINT message, WPARAM wParam, LPARAM lParam
|
||||
}
|
||||
break;
|
||||
|
||||
case IDC_NVENCPRESET:
|
||||
if (HIWORD(wParam) == CBN_SELCHANGE || HIWORD(wParam) == CBN_EDITCHANGE)
|
||||
{
|
||||
HWND hwndTemp = (HWND)lParam;
|
||||
|
||||
String strNewPreset = GetCBText(hwndTemp);
|
||||
if (scmp(strNewPreset.Array(), TEXT("Automatic")))
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_NVENC2PASS), TRUE);
|
||||
else
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_NVENC2PASS), FALSE);
|
||||
|
||||
if (App->GetVideoEncoder())
|
||||
ShowWindow(GetDlgItem(hwnd, IDC_INFO), SW_SHOW);
|
||||
SetChangedSettings(true);
|
||||
}
|
||||
break;
|
||||
|
||||
case IDC_DISABLEPREVIEWENCODING:
|
||||
case IDC_ALLOWOTHERHOTKEYMODIFIERS:
|
||||
case IDC_MICSYNCFIX:
|
||||
@ -652,6 +682,7 @@ INT_PTR SettingsAdvanced::ProcMessage(UINT message, WPARAM wParam, LPARAM lParam
|
||||
case IDC_UNLOCKHIGHFPS:
|
||||
case IDC_LATENCYMETHOD:
|
||||
case IDC_DISABLETCPOPTIMIZATIONS:
|
||||
case IDC_NVENC2PASS:
|
||||
if(HIWORD(wParam) == BN_CLICKED)
|
||||
{
|
||||
if (App->GetVideoEncoder())
|
||||
|
@ -374,6 +374,7 @@
|
||||
#define IDC_TSRCOPACITY_EDIT 1209
|
||||
#define IDC_IMPORT 1210
|
||||
#define IDC_TSRCOPACITY 1210
|
||||
#define IDC_NVENC2PASS 1211
|
||||
#define IDA_SOURCE_MOVEUP 40018
|
||||
#define IDA_SOURCE_MOVEDOWN 40019
|
||||
#define IDA_SOURCE_MOVETOTOP 40020
|
||||
|
@ -248,6 +248,7 @@ Settings.Advanced.VideoEncoderSettings="Custom x264 Encoder Settings"
|
||||
Settings.Advanced.VideoEncoderSettingsTooltip="This allows you to set custom x264 encoder settings. In the form of [parameter]=[value] (e.g. \"vbv-maxrate=1000 vbv-bufsize=1000\")."
|
||||
Settings.Advanced.X264Profile="Encoding Profile:"
|
||||
Settings.Advanced.NVENCPreset="NVENC Preset:"
|
||||
Settings.Advanced.NVENC2Pass="Twopass Encoding"
|
||||
Settings.Advanced.QSVPreset="Quick Sync Preset:"
|
||||
Settings.Advanced.EncodeFullRange="Encode in Full Range"
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user