Allow displays to avoid probing HEVC or AV1 codecs even when H.264 is supported

This is the case for AMF which requires certain versions for HEVC Main10 and AV1 support.
This commit is contained in:
Cameron Gutman
2023-08-24 22:58:29 -05:00
parent 728a9cc66f
commit 24e7bd20fd

View File

@@ -2297,6 +2297,7 @@ namespace video {
config_max_ref_frames.videoFormat = 1;
config_autoselect.videoFormat = 1;
if (disp->is_codec_supported(encoder.hevc.name, config_autoselect)) {
retry_hevc:
auto max_ref_frames_hevc = validate_config(disp, encoder, config_max_ref_frames);
auto autoselect_hevc = max_ref_frames_hevc >= 0 ? max_ref_frames_hevc : validate_config(disp, encoder, config_autoselect);
@@ -2314,6 +2315,11 @@ namespace video {
encoder.hevc[encoder_t::REF_FRAMES_RESTRICT] = max_ref_frames_hevc >= 0;
encoder.hevc[encoder_t::PASSED] = max_ref_frames_hevc >= 0 || autoselect_hevc >= 0;
}
else {
BOOST_LOG(info) << "Encoder ["sv << encoder.hevc.name << "] is not supported on this GPU"sv;
encoder.hevc.capabilities.reset();
}
}
else {
// Clear all cap bits for HEVC if we didn't probe it
encoder.hevc.capabilities.reset();
@@ -2323,6 +2329,7 @@ namespace video {
config_max_ref_frames.videoFormat = 2;
config_autoselect.videoFormat = 2;
if (disp->is_codec_supported(encoder.av1.name, config_autoselect)) {
retry_av1:
auto max_ref_frames_av1 = validate_config(disp, encoder, config_max_ref_frames);
auto autoselect_av1 = max_ref_frames_av1 >= 0 ? max_ref_frames_av1 : validate_config(disp, encoder, config_autoselect);
@@ -2340,6 +2347,11 @@ namespace video {
encoder.av1[encoder_t::REF_FRAMES_RESTRICT] = max_ref_frames_av1 >= 0;
encoder.av1[encoder_t::PASSED] = max_ref_frames_av1 >= 0 || autoselect_av1 >= 0;
}
else {
BOOST_LOG(info) << "Encoder ["sv << encoder.av1.name << "] is not supported on this GPU"sv;
encoder.av1.capabilities.reset();
}
}
else {
// Clear all cap bits for AV1 if we didn't probe it
encoder.av1.capabilities.reset();