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
|
COMBOBOX IDC_X264PROFILE,170,106,82,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||||
RTEXT "Settings.Advanced.NVENCPreset",IDC_NVENCPRESET_LABEL,7,94,160,8
|
RTEXT "Settings.Advanced.NVENCPreset",IDC_NVENCPRESET_LABEL,7,94,160,8
|
||||||
COMBOBOX IDC_NVENCPRESET,170,91,120,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
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
|
RTEXT "Settings.Advanced.QSVPreset",IDC_QSVPRESET_LABEL,7,94,160,8
|
||||||
COMBOBOX IDC_QSVPRESET,170,91,120,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
COMBOBOX IDC_QSVPRESET,170,91,120,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||||
RTEXT "Settings.Encoding.Video.KeyframeInterval",IDC_STATIC,7,124,160,8
|
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;
|
GUID encoderPreset = NV_ENC_PRESET_HQ_GUID;
|
||||||
dontTouchConfig = false;
|
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 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"))
|
if (presetString == TEXT("High Performance"))
|
||||||
{
|
{
|
||||||
@ -176,21 +176,6 @@ void NVENCEncoder::init()
|
|||||||
{
|
{
|
||||||
encoderPreset = NV_ENC_PRESET_BD_GUID;
|
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"))
|
else if (presetString == TEXT("Low Latency"))
|
||||||
{
|
{
|
||||||
encoderPreset = NV_ENC_PRESET_LOW_LATENCY_DEFAULT_GUID;
|
encoderPreset = NV_ENC_PRESET_LOW_LATENCY_DEFAULT_GUID;
|
||||||
@ -222,10 +207,12 @@ void NVENCEncoder::init()
|
|||||||
if (height > 1080 || (height == 1080 && fps > 30))
|
if (height > 1080 || (height == 1080 && fps > 30))
|
||||||
{
|
{
|
||||||
encoderPreset = NV_ENC_PRESET_HQ_GUID;
|
encoderPreset = NV_ENC_PRESET_HQ_GUID;
|
||||||
|
is2PassRC = false;
|
||||||
}
|
}
|
||||||
if (height > 720 || (height == 720 && fps > 30))
|
if (height > 720 || (height == 720 && fps > 30))
|
||||||
{
|
{
|
||||||
encoderPreset = NV_ENC_PRESET_LOW_LATENCY_HQ_GUID;
|
encoderPreset = NV_ENC_PRESET_LOW_LATENCY_HQ_GUID;
|
||||||
|
is2PassRC = false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -79,6 +79,10 @@ void SettingsAdvanced::SelectPresetDialog(bool useQSV, bool useNVENC)
|
|||||||
ShowWindow(hwndTemp, useNVENC ? SW_SHOW : SW_HIDE);
|
ShowWindow(hwndTemp, useNVENC ? SW_SHOW : SW_HIDE);
|
||||||
EnableWindow(hwndTemp, true);
|
EnableWindow(hwndTemp, true);
|
||||||
|
|
||||||
|
hwndTemp = GetDlgItem(hwnd, IDC_NVENC2PASS);
|
||||||
|
ShowWindow(hwndTemp, useNVENC ? SW_SHOW : SW_HIDE);
|
||||||
|
EnableWindow(hwndTemp, true);
|
||||||
|
|
||||||
hwndTemp = GetDlgItem(hwnd, IDC_QSVPRESET);
|
hwndTemp = GetDlgItem(hwnd, IDC_QSVPRESET);
|
||||||
ShowWindow(hwndTemp, useQSV ? SW_SHOW : SW_HIDE);
|
ShowWindow(hwndTemp, useQSV ? SW_SHOW : SW_HIDE);
|
||||||
EnableWindow(hwndTemp, true);
|
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;
|
BOOL bSyncToVideoTime = SendMessage(GetDlgItem(hwnd, IDC_SYNCTOVIDEOTIME), BM_GETCHECK, 0, 0) == BST_CHECKED;
|
||||||
AppConfig->SetInt (TEXT("Audio"), TEXT("SyncToVideoTime"), bSyncToVideoTime);
|
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_ENCODEFULLRANGE), BM_SETCHECK, BST_UNCHECKED, 0);
|
||||||
SendMessage(GetDlgItem(hwnd, IDC_QSVUSEVIDEOENCODERSETTINGS), 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_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);
|
SendMessage(GetDlgItem(hwnd, IDC_QSVPRESET), CB_SETCURSEL, 0, 0);
|
||||||
EnableWindow(GetDlgItem(hwnd, IDC_QSVVIDEOENCODERSETTINGS), FALSE);
|
EnableWindow(GetDlgItem(hwnd, IDC_QSVVIDEOENCODERSETTINGS), FALSE);
|
||||||
SendMessage(GetDlgItem(hwnd, IDC_SYNCTOVIDEOTIME), BM_SETCHECK, BST_UNCHECKED, 0);
|
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("Low Latency"),
|
||||||
TEXT("High Performance Low Latency"),
|
TEXT("High Performance Low Latency"),
|
||||||
TEXT("High Quality 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("Lossless"),
|
||||||
TEXT("High Performance Lossless"),
|
TEXT("High Performance Lossless"),
|
||||||
TEXT("NVDefault"),
|
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]);
|
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);
|
hwndTemp = GetDlgItem(hwnd, IDC_QSVPRESET);
|
||||||
static const struct {
|
static const struct {
|
||||||
CTSTR name;
|
CTSTR name;
|
||||||
@ -631,7 +645,6 @@ INT_PTR SettingsAdvanced::ProcMessage(UINT message, WPARAM wParam, LPARAM lParam
|
|||||||
case IDC_SENDBUFFERSIZE:
|
case IDC_SENDBUFFERSIZE:
|
||||||
case IDC_PRIORITY:
|
case IDC_PRIORITY:
|
||||||
case IDC_BINDIP:
|
case IDC_BINDIP:
|
||||||
case IDC_NVENCPRESET:
|
|
||||||
case IDC_QSVPRESET:
|
case IDC_QSVPRESET:
|
||||||
if(HIWORD(wParam) == CBN_SELCHANGE || HIWORD(wParam) == CBN_EDITCHANGE)
|
if(HIWORD(wParam) == CBN_SELCHANGE || HIWORD(wParam) == CBN_EDITCHANGE)
|
||||||
{
|
{
|
||||||
@ -641,6 +654,23 @@ INT_PTR SettingsAdvanced::ProcMessage(UINT message, WPARAM wParam, LPARAM lParam
|
|||||||
}
|
}
|
||||||
break;
|
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_DISABLEPREVIEWENCODING:
|
||||||
case IDC_ALLOWOTHERHOTKEYMODIFIERS:
|
case IDC_ALLOWOTHERHOTKEYMODIFIERS:
|
||||||
case IDC_MICSYNCFIX:
|
case IDC_MICSYNCFIX:
|
||||||
@ -652,6 +682,7 @@ INT_PTR SettingsAdvanced::ProcMessage(UINT message, WPARAM wParam, LPARAM lParam
|
|||||||
case IDC_UNLOCKHIGHFPS:
|
case IDC_UNLOCKHIGHFPS:
|
||||||
case IDC_LATENCYMETHOD:
|
case IDC_LATENCYMETHOD:
|
||||||
case IDC_DISABLETCPOPTIMIZATIONS:
|
case IDC_DISABLETCPOPTIMIZATIONS:
|
||||||
|
case IDC_NVENC2PASS:
|
||||||
if(HIWORD(wParam) == BN_CLICKED)
|
if(HIWORD(wParam) == BN_CLICKED)
|
||||||
{
|
{
|
||||||
if (App->GetVideoEncoder())
|
if (App->GetVideoEncoder())
|
||||||
|
@ -374,6 +374,7 @@
|
|||||||
#define IDC_TSRCOPACITY_EDIT 1209
|
#define IDC_TSRCOPACITY_EDIT 1209
|
||||||
#define IDC_IMPORT 1210
|
#define IDC_IMPORT 1210
|
||||||
#define IDC_TSRCOPACITY 1210
|
#define IDC_TSRCOPACITY 1210
|
||||||
|
#define IDC_NVENC2PASS 1211
|
||||||
#define IDA_SOURCE_MOVEUP 40018
|
#define IDA_SOURCE_MOVEUP 40018
|
||||||
#define IDA_SOURCE_MOVEDOWN 40019
|
#define IDA_SOURCE_MOVEDOWN 40019
|
||||||
#define IDA_SOURCE_MOVETOTOP 40020
|
#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.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.X264Profile="Encoding Profile:"
|
||||||
Settings.Advanced.NVENCPreset="NVENC Preset:"
|
Settings.Advanced.NVENCPreset="NVENC Preset:"
|
||||||
|
Settings.Advanced.NVENC2Pass="Twopass Encoding"
|
||||||
Settings.Advanced.QSVPreset="Quick Sync Preset:"
|
Settings.Advanced.QSVPreset="Quick Sync Preset:"
|
||||||
Settings.Advanced.EncodeFullRange="Encode in Full Range"
|
Settings.Advanced.EncodeFullRange="Encode in Full Range"
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user