mirror of
https://github.com/LizardByte/Sunshine.git
synced 2025-01-13 06:45:49 +00:00
fix(nvenc): Enable opt-in client refresh by client (#3415)
This commit is contained in:
parent
129abd8c26
commit
60bfcfe211
@ -321,6 +321,22 @@ namespace nvenc {
|
|||||||
set_ref_frames(format_config.maxNumRefFramesInDPB, format_config.numRefL0, 5);
|
set_ref_frames(format_config.maxNumRefFramesInDPB, format_config.numRefL0, 5);
|
||||||
set_minqp_if_enabled(config.min_qp_hevc);
|
set_minqp_if_enabled(config.min_qp_hevc);
|
||||||
fill_h264_hevc_vui(format_config.hevcVUIParameters);
|
fill_h264_hevc_vui(format_config.hevcVUIParameters);
|
||||||
|
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;
|
||||||
|
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;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -976,6 +976,7 @@ namespace rtsp_stream {
|
|||||||
args.try_emplace("x-ml-video.configuredBitrateKbps"sv, "0"sv);
|
args.try_emplace("x-ml-video.configuredBitrateKbps"sv, "0"sv);
|
||||||
args.try_emplace("x-ss-general.encryptionEnabled"sv, "0"sv);
|
args.try_emplace("x-ss-general.encryptionEnabled"sv, "0"sv);
|
||||||
args.try_emplace("x-ss-video[0].chromaSamplingType"sv, "0"sv);
|
args.try_emplace("x-ss-video[0].chromaSamplingType"sv, "0"sv);
|
||||||
|
args.try_emplace("x-ss-video[0].intraRefresh"sv, "0"sv);
|
||||||
|
|
||||||
stream::config_t config;
|
stream::config_t config;
|
||||||
|
|
||||||
@ -1012,6 +1013,7 @@ namespace rtsp_stream {
|
|||||||
config.monitor.videoFormat = util::from_view(args.at("x-nv-vqos[0].bitStreamFormat"sv));
|
config.monitor.videoFormat = util::from_view(args.at("x-nv-vqos[0].bitStreamFormat"sv));
|
||||||
config.monitor.dynamicRange = util::from_view(args.at("x-nv-video[0].dynamicRangeMode"sv));
|
config.monitor.dynamicRange = util::from_view(args.at("x-nv-video[0].dynamicRangeMode"sv));
|
||||||
config.monitor.chromaSamplingType = util::from_view(args.at("x-ss-video[0].chromaSamplingType"sv));
|
config.monitor.chromaSamplingType = util::from_view(args.at("x-ss-video[0].chromaSamplingType"sv));
|
||||||
|
config.monitor.enableIntraRefresh = util::from_view(args.at("x-ss-video[0].intraRefresh"sv));
|
||||||
|
|
||||||
configuredBitrateKbps = util::from_view(args.at("x-ml-video.configuredBitrateKbps"sv));
|
configuredBitrateKbps = util::from_view(args.at("x-ml-video.configuredBitrateKbps"sv));
|
||||||
}
|
}
|
||||||
|
@ -38,6 +38,8 @@ namespace video {
|
|||||||
int dynamicRange;
|
int dynamicRange;
|
||||||
|
|
||||||
int chromaSamplingType; // 0 - 4:2:0, 1 - 4:4:4
|
int chromaSamplingType; // 0 - 4:2:0, 1 - 4:4:4
|
||||||
|
|
||||||
|
int enableIntraRefresh; // 0 - disabled, 1 - enabled
|
||||||
};
|
};
|
||||||
|
|
||||||
platf::mem_type_e
|
platf::mem_type_e
|
||||||
|
Loading…
Reference in New Issue
Block a user