Skip to content

Commit

Permalink
GPUの自動選択時にnvvfx使用の有無を考慮。
Browse files Browse the repository at this point in the history
  • Loading branch information
rigaya committed Oct 7, 2023
1 parent a7f7bfa commit 39f1168
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 0 deletions.
6 changes: 6 additions & 0 deletions NVEnc/NVEnc_readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -214,8 +214,14 @@ NVIDIA グラフィックドライバ 536.23

【メモ】
2023.10.05 (7.32)
[NVEncC]
- エンコードせずにy4m出力するオプションを追加。 (-c raw)
- 出力色空間を設定するオプションを追加。 (--output-csp)
- GPUの自動選択時にnvvfx使用の有無を考慮。

[NVEnc.auo]
- ログ出力に映像と音声の長さを表示するように。
- 一時ファイルの削除・リネーム失敗に関するエラーメッセージを拡充。

2023.08.28 (7.31)
- --audio-streamがavs読み込み時に反映されないのを修正。
Expand Down
25 changes: 25 additions & 0 deletions NVEncCore/NVEncCore.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -692,6 +692,20 @@ NVENCSTATUS NVEncCore::InitOutput(InEncodeVideoParam *inputParams, NV_ENC_BUFFER
return NV_ENC_SUCCESS;
}

bool NVEncCore::useNVVFX(const InEncodeVideoParam *inputParam) {
#if (!defined(_M_IX86))
const auto& vppnv = inputParam->vppnv;
if ( vppnv.nvvfxArtifactReduction.enable
|| vppnv.nvvfxDenoise.enable
|| vppnv.nvvfxSuperRes.enable
|| vppnv.nvvfxUpScaler.enable
|| inputParam->vpp.resize_algo == RGY_VPP_RESIZE_NVVFX_SUPER_RES) {
return true;
}
#endif
return false;
}

NVENCSTATUS NVEncCore::CheckGPUListByEncoder(std::vector<std::unique_ptr<NVGPUInfo>> &gpuList, const InEncodeVideoParam *inputParam) {
if (m_nDeviceId >= 0) {
//手動で設定されている
Expand Down Expand Up @@ -802,6 +816,17 @@ NVENCSTATUS NVEncCore::CheckGPUListByEncoder(std::vector<std::unique_ptr<NVGPUIn
continue;
}
}
//フィルタのチェック
if (useNVVFX(inputParam)) {
//nvvfxにはturing以降(CC7.0)が必要
const int nvvfxRequiredCCMajor = 7;
if ((*gpu)->cc().first < nvvfxRequiredCCMajor) {
message += strsprintf(_T("GPU #%d (%s) does not support nvvfx, CC 7.0 is required but GPU is CC %d.%d.\n"), (*gpu)->id(), (*gpu)->name().c_str(), (*gpu)->cc().first, (*gpu)->cc().second);
gpu = gpuList.erase(gpu);
continue;
}
}

PrintMes(RGY_LOG_DEBUG, _T("GPU #%d (%s) available for encode.\n"), (*gpu)->id(), (*gpu)->name().c_str());
gpu++;
}
Expand Down
3 changes: 3 additions & 0 deletions NVEncCore/NVEncCore.h
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,9 @@ class NVEncCore : public NVEncCtrl {
//perfMonitorの初期化
virtual NVENCSTATUS InitPerfMonitor(const InEncodeVideoParam *inputParam);

//nvvfxを使用するかチェック
bool useNVVFX(const InEncodeVideoParam *inputParam);

//GPUListのGPUが必要なエンコードを行えるかチェック
NVENCSTATUS CheckGPUListByEncoder(std::vector<std::unique_ptr<NVGPUInfo>> &gpuList, const InEncodeVideoParam *inputParam);

Expand Down

0 comments on commit 39f1168

Please sign in to comment.