nvenc: allow disabling CBR padding

master
Timothy Liang 2015-01-17 20:03:40 -05:00
parent 636d408593
commit 947975b062
2 changed files with 15 additions and 10 deletions

View File

@ -347,13 +347,14 @@ void NVENCEncoder::init()
if (bUseCBR)
{
auto filler = AppConfig->GetInt(TEXT("Video Encoding"), TEXT("PadCBR"), 1) != 0;
if (is2PassRC)
{
encodeConfig.rcParams.rateControlMode = NV_ENC_PARAMS_RC_2_PASS_QUALITY;
encodeConfig.rcParams.rateControlMode = filler ? NV_ENC_PARAMS_RC_2_PASS_FRAMESIZE_CAP : NV_ENC_PARAMS_RC_2_PASS_VBR;
}
else
{
encodeConfig.rcParams.rateControlMode = NV_ENC_PARAMS_RC_CBR;
encodeConfig.rcParams.rateControlMode = filler ? NV_ENC_PARAMS_RC_CBR : NV_ENC_PARAMS_RC_VBR;
}
encodeConfig.rcParams.enableMaxQP = 1;
@ -1032,14 +1033,18 @@ String NVENCEncoder::GetInfoString() const
profile = "constrained high";
String cbr = "no";
if (encodeConfig.rcParams.rateControlMode == NV_ENC_PARAMS_RC_CBR)
switch (encodeConfig.rcParams.rateControlMode)
{
case NV_ENC_PARAMS_RC_CBR:
cbr = "yes";
}
else if (encodeConfig.rcParams.rateControlMode == NV_ENC_PARAMS_RC_2_PASS_QUALITY
|| encodeConfig.rcParams.rateControlMode == NV_ENC_PARAMS_RC_2_PASS_FRAMESIZE_CAP)
{
break;
case NV_ENC_PARAMS_RC_2_PASS_QUALITY:
case NV_ENC_PARAMS_RC_2_PASS_FRAMESIZE_CAP:
cbr = "yes (2pass)";
break;
case NV_ENC_PARAMS_RC_2_PASS_VBR:
cbr = "no (2pass)";
break;
}
String cfr = "yes";

View File

@ -210,7 +210,7 @@ INT_PTR SettingsEncoding::ProcMessage(UINT message, WPARAM wParam, LPARAM lParam
SendMessage(GetDlgItem(hwnd, IDC_USECBR), BM_SETCHECK, bUseCBR ? BST_CHECKED : BST_UNCHECKED, 0);
SendMessage(GetDlgItem(hwnd, IDC_PADCBR), BM_SETCHECK, bPadCBR ? BST_CHECKED : BST_UNCHECKED, 0);
EnableWindow(GetDlgItem(hwnd, IDC_QUALITY), !bUseCBR && (usex264 || useNVENC));
EnableWindow(GetDlgItem(hwnd, IDC_PADCBR), bUseCBR && usex264);
EnableWindow(GetDlgItem(hwnd, IDC_PADCBR), bUseCBR && (usex264 || useNVENC));
ti.lpszText = (LPWSTR)Str("Settings.Advanced.PadCBRToolTip");
ti.uId = (UINT_PTR)GetDlgItem(hwnd, IDC_PADCBR);
@ -437,7 +437,7 @@ INT_PTR SettingsEncoding::ProcMessage(UINT message, WPARAM wParam, LPARAM lParam
bDataChanged = true;
EnableWindow(GetDlgItem(hwnd, IDC_QUALITY), !useCBR && (usex264 || useNVENC));
EnableWindow(GetDlgItem(hwnd, IDC_PADCBR), useCBR && usex264);
EnableWindow(GetDlgItem(hwnd, IDC_PADCBR), useCBR && (usex264 || useNVENC));
break;
case IDC_CUSTOMBUFFER:
@ -451,7 +451,7 @@ INT_PTR SettingsEncoding::ProcMessage(UINT message, WPARAM wParam, LPARAM lParam
else if(LOWORD(wParam) == IDC_USECBR)
{
EnableWindow(GetDlgItem(hwnd, IDC_QUALITY), !bChecked && (usex264 || useNVENC));
EnableWindow(GetDlgItem(hwnd, IDC_PADCBR), bChecked && usex264);
EnableWindow(GetDlgItem(hwnd, IDC_PADCBR), bChecked && (usex264 || useNVENC));
}
bDataChanged = true;