obs-qsv11: Fix bug mapping old qsv settings to new

Fix for an issue found where new "Latency" and "Subjective Video
Enhancement" options where always using default settings even after
being changed in UI. This issue was introduced when mapping old QSV
settings to new ones.
This commit is contained in:
brittneysclark 2020-07-25 04:31:03 -07:00 committed by jp9000
parent f22cde5073
commit d04e167ed0

View File

@ -148,7 +148,6 @@ static void obs_qsv_defaults(obs_data_t *settings)
obs_data_set_default_int(settings, "bitrate", 2500);
obs_data_set_default_int(settings, "max_bitrate", 3000);
obs_data_set_default_string(settings, "profile", "high");
obs_data_set_default_int(settings, "async_depth", 4);
obs_data_set_default_string(settings, "rate_control", "CBR");
obs_data_set_default_int(settings, "accuracy", 1000);
@ -157,13 +156,11 @@ static void obs_qsv_defaults(obs_data_t *settings)
obs_data_set_default_int(settings, "qpp", 23);
obs_data_set_default_int(settings, "qpb", 23);
obs_data_set_default_int(settings, "icq_quality", 23);
obs_data_set_default_int(settings, "la_depth", 15);
obs_data_set_default_int(settings, "keyint_sec", 3);
obs_data_set_default_string(settings, "latency", "normal");
obs_data_set_default_int(settings, "bframes", 3);
obs_data_set_default_bool(settings, "enhancements", false);
obs_data_set_default_bool(settings, "mbbrc", true);
}
static inline void add_strings(obs_property_t *list, const char *const *strings)
@ -196,10 +193,22 @@ static inline bool is_skl_or_greater_platform()
static bool update_latency(obs_data_t *settings)
{
int async_depth = (int)obs_data_get_int(settings, "async_depth");
int la_depth = (int)obs_data_get_int(settings, "la_depth");
bool update = false;
int async_depth = 4;
if (obs_data_item_byname(settings, "async_depth") != NULL) {
async_depth = (int)obs_data_get_int(settings, "async_depth");
obs_data_erase(settings, "async_depth");
update = true;
}
if (async_depth > 0 || la_depth > 0) {
int la_depth = 15;
if (obs_data_item_byname(settings, "la_depth") != NULL) {
la_depth = (int)obs_data_get_int(settings, "la_depth");
obs_data_erase(settings, "la_depth");
update = true;
}
if (update) {
const char *rate_control =
obs_data_get_string(settings, "rate_control");
@ -221,9 +230,6 @@ static bool update_latency(obs_data_t *settings)
obs_data_set_string(settings, "latency",
"ultra-low");
}
obs_data_erase(settings, "async_depth");
obs_data_erase(settings, "la_depth");
}
return true;
@ -231,20 +237,25 @@ static bool update_latency(obs_data_t *settings)
static bool update_enhancements(obs_data_t *settings)
{
bool update = false;
bool mbbrc = true;
if (obs_data_item_byname(settings, "mbbrc") != NULL) {
mbbrc = (bool)obs_data_get_bool(settings, "mbbrc");
obs_data_erase(settings, "mbbrc");
update = true;
}
bool cqm = false;
if (obs_data_item_byname(settings, "CQM") != NULL) {
cqm = (bool)obs_data_get_bool(settings, "CQM");
obs_data_erase(settings, "CQM");
update = true;
}
bool enabled = (mbbrc && cqm);
obs_data_set_bool(settings, "enhancements", enabled);
if (update) {
bool enabled = (mbbrc && cqm);
obs_data_set_bool(settings, "enhancements", enabled);
}
return true;
}