From d327bf7e024b7af0e89f9f5ffe02d64b0b8b64bb Mon Sep 17 00:00:00 2001 From: rigaya Date: Sat, 7 Oct 2023 09:24:14 +0900 Subject: [PATCH] =?UTF-8?q?GPU=E3=81=AE=E8=87=AA=E5=8B=95=E9=81=B8?= =?UTF-8?q?=E6=8A=9E=E6=99=82=E3=81=ABnvvfx=E4=BD=BF=E7=94=A8=E3=81=AE?= =?UTF-8?q?=E6=9C=89=E7=84=A1=E3=82=92=E8=80=83=E6=85=AE=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- NVEnc/NVEnc_readme.txt | 6 ++++++ NVEncCore/NVEncCore.cpp | 23 +++++++++++++++++++++++ NVEncCore/NVEncCore.h | 3 +++ 3 files changed, 32 insertions(+) diff --git a/NVEnc/NVEnc_readme.txt b/NVEnc/NVEnc_readme.txt index e84e70dc..62db8f5b 100644 --- a/NVEnc/NVEnc_readme.txt +++ b/NVEnc/NVEnc_readme.txt @@ -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読み込み時に反映されないのを修正。 diff --git a/NVEncCore/NVEncCore.cpp b/NVEncCore/NVEncCore.cpp index 8e9d0a7c..7890926c 100644 --- a/NVEncCore/NVEncCore.cpp +++ b/NVEncCore/NVEncCore.cpp @@ -692,6 +692,18 @@ NVENCSTATUS NVEncCore::InitOutput(InEncodeVideoParam *inputParams, NV_ENC_BUFFER return NV_ENC_SUCCESS; } +bool NVEncCore::useNVVFX(const InEncodeVideoParam *inputParam) { + 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; + } + return false; +} + NVENCSTATUS NVEncCore::CheckGPUListByEncoder(std::vector> &gpuList, const InEncodeVideoParam *inputParam) { if (m_nDeviceId >= 0) { //手動で設定されている @@ -802,6 +814,17 @@ NVENCSTATUS NVEncCore::CheckGPUListByEncoder(std::vectorcc().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++; } diff --git a/NVEncCore/NVEncCore.h b/NVEncCore/NVEncCore.h index 30ee0d41..241a9b65 100644 --- a/NVEncCore/NVEncCore.h +++ b/NVEncCore/NVEncCore.h @@ -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> &gpuList, const InEncodeVideoParam *inputParam);