feat(nvenc): support for split frame encoding on GPUs with 2+ nvenc blocks (#4892)

Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com>
This commit is contained in:
Andy Grundman
2026-04-19 17:44:10 -04:00
committed by GitHub
parent e180053eab
commit a5af790710
15 changed files with 136 additions and 59 deletions
+1
View File
@@ -289,6 +289,7 @@
"nvenc_spatial_aq": "disabled",
"nvenc_vbv_increase": 0,
"nvenc_realtime_hags": "enabled",
"nvenc_split_encode": "driver_decides",
"nvenc_latency_over_power": "enabled",
"nvenc_opengl_vulkan_on_dxgi": "enabled",
"nvenc_h264_cavlc": "disabled",
@@ -27,6 +27,17 @@ const config = ref(props.config)
<div class="form-text">{{ $t('config.nvenc_preset_desc') }}</div>
</div>
<!-- Split frame encoding -->
<div class="mb-3" v-if="platform === 'windows'">
<label for="nvenc_split_encode" class="form-label">{{ $t('config.nvenc_split_encode') }}</label>
<select id="nvenc_split_encode" class="form-select" v-model="config.nvenc_split_encode">
<option value="disabled">{{ $t('_common.disabled') }}</option>
<option value="driver_decides">{{ $t('config.nvenc_split_encode_driver_decides_def') }}</option>
<option value="enabled">{{ $t('_common.enabled') }}</option>
</select>
<div class="form-text">{{ $t('config.nvenc_split_encode_desc') }}</div>
</div>
<!-- Two-pass mode -->
<div class="mb-3">
<label for="nvenc_twopass" class="form-label">{{ $t('config.nvenc_twopass') }}</label>
@@ -301,6 +301,9 @@
"nvenc_realtime_hags_desc": "Currently NVIDIA drivers may freeze in encoder when HAGS is enabled, realtime priority is used and VRAM utilization is close to maximum. Disabling this option lowers the priority to high, sidestepping the freeze at the cost of reduced capture performance when the GPU is heavily loaded.",
"nvenc_spatial_aq": "Spatial AQ",
"nvenc_spatial_aq_desc": "Assign higher QP values to flat regions of the video. Recommended to enable when streaming at lower bitrates.",
"nvenc_split_encode": "Split frame encoding",
"nvenc_split_encode_desc": "Split the encoding of each video frame over multiple NVENC hardware units. Significantly reduces host processing latency with a marginal compression efficiency penalty. The default option enables SFE if the following conditions are met: there are 2+ NVENC units, the stream is 4K resolution or higher, and the preset is P1-P4. Set this to Enabled to use SFE at lower resolutions or higher presets.",
"nvenc_split_encode_driver_decides_def": "Driver decides (default)",
"nvenc_twopass": "Two-pass mode",
"nvenc_twopass_desc": "Adds preliminary encoding pass. This allows to detect more motion vectors, better distribute bitrate across the frame and more strictly adhere to bitrate limits. Disabling it is not recommended since this can lead to occasional bitrate overshoot and subsequent packet loss.",
"nvenc_twopass_disabled": "Disabled (fastest, not recommended)",