From 0db9f73e6b0d4399b1e5da605123642be64334d4 Mon Sep 17 00:00:00 2001 From: Andy Grundman Date: Sat, 9 May 2026 20:22:54 -0400 Subject: [PATCH] feat(nvenc): support intraRefresh for h264, add outputRecoveryPointSEI=1 to intra-refresh config for h264 and hevc (#5091) --- src/nvenc/nvenc_base.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/nvenc/nvenc_base.cpp b/src/nvenc/nvenc_base.cpp index c63dfa902..ab8aa7a91 100644 --- a/src/nvenc/nvenc_base.cpp +++ b/src/nvenc/nvenc_base.cpp @@ -340,6 +340,21 @@ namespace nvenc { set_ref_frames(format_config.maxNumRefFrames, format_config.numRefL0, 5); set_minqp_if_enabled(config.min_qp_h264); fill_h264_hevc_vui(format_config.h264VUIParameters); + if (client_config.enableIntraRefresh == 1) { + if (get_encoder_cap(NV_ENC_CAPS_SUPPORT_INTRA_REFRESH)) { + format_config.enableIntraRefresh = 1; + format_config.intraRefreshPeriod = 300; + format_config.intraRefreshCnt = 299; + format_config.outputRecoveryPointSEI = 1; + if (get_encoder_cap(NV_ENC_CAPS_SINGLE_SLICE_INTRA_REFRESH)) { + format_config.singleSliceIntraRefresh = 1; + } else { + BOOST_LOG(warning) << "NvEnc: Single Slice Intra Refresh not supported"; + } + } else { + BOOST_LOG(error) << "NvEnc: Client asked for intra-refresh but the encoder does not support intra-refresh"; + } + } break; } @@ -360,6 +375,7 @@ namespace nvenc { format_config.enableIntraRefresh = 1; format_config.intraRefreshPeriod = 300; format_config.intraRefreshCnt = 299; + format_config.outputRecoveryPointSEI = 1; if (get_encoder_cap(NV_ENC_CAPS_SINGLE_SLICE_INTRA_REFRESH)) { format_config.singleSliceIntraRefresh = 1; } else {