obs-qsv11: Update Target Usage options

Update target usage setting names from legacy names to VPL names.
This commit is contained in:
Gale 2023-07-13 14:28:55 -07:00 committed by Ryan Foster
parent c9fd128d74
commit 1d95575088
2 changed files with 47 additions and 18 deletions

View file

@ -80,10 +80,14 @@ static const struct qsv_rate_control_info qsv_ratecontrols[] = {{"CBR", false},
static const char *const qsv_profile_names[] = {"high", "main", "baseline", 0};
static const char *const qsv_profile_names_av1[] = {"main", 0};
static const char *const qsv_profile_names_hevc[] = {"main", "main10", 0};
static const char *const qsv_usage_names[] = {"quality", "balanced", "speed",
"veryslow", "slower", "slow",
"medium", "fast", "faster",
"veryfast", 0};
static const char *const qsv_usage_names[] = {"TU1: Slowest (Best Quality)",
"TU2: Slower",
"TU3: Slow",
"TU4: Balanced (Medium Quality)",
"TU5: Fast",
"TU6: Faster",
"TU7: Fastest (Best Speed)",
0};
static const char *const qsv_latency_names[] = {"ultra-low", "low", "normal",
0};
typedef struct qsv_t qsv_t;

View file

@ -167,7 +167,8 @@ static void obs_qsv_destroy(void *data)
static void obs_qsv_defaults(obs_data_t *settings, int ver,
enum qsv_codec codec)
{
obs_data_set_default_string(settings, "target_usage", "balanced");
obs_data_set_default_string(settings, "target_usage",
"TU4: Balanced (Medium Quality)");
obs_data_set_default_int(settings, "bitrate", 2500);
obs_data_set_default_int(settings, "max_bitrate", 3000);
obs_data_set_default_string(settings, "profile",
@ -308,6 +309,35 @@ static bool update_enhancements(obs_data_t *settings)
return true;
}
static bool update_targetusage(obs_data_t *settings)
{
const char *target_usage =
obs_data_get_string(settings, "target_usage");
if ((astrcmpi(target_usage, "veryslow") ||
astrcmpi(target_usage, "quality")) == 0)
obs_data_set_string(settings, "target_usage",
"TU1: Slowest (Best Quality)");
else if (astrcmpi(target_usage, "slower") == 0)
obs_data_set_string(settings, "target_usage", "TU2: Slower");
else if (astrcmpi(target_usage, "slow") == 0)
obs_data_set_string(settings, "target_usage", "TU3: Slow");
else if ((astrcmpi(target_usage, "medium") ||
astrcmpi(target_usage, "balanced")) == 0)
obs_data_set_string(settings, "target_usage",
"TU4: Balanced (Medium Quality)");
else if (astrcmpi(target_usage, "fast") == 0)
obs_data_set_string(settings, "target_usage", "TU5: Fast");
else if (astrcmpi(target_usage, "faster") == 0)
obs_data_set_string(settings, "target_usage", "TU6: Faster");
else if ((astrcmpi(target_usage, "vertfast") ||
astrcmpi(target_usage, "speed")) == 0)
obs_data_set_string(settings, "target_usage",
"TU7: Fastest (Best Speed)");
return true;
}
static bool rate_control_modified(obs_properties_t *ppts, obs_property_t *p,
obs_data_t *settings)
{
@ -493,6 +523,7 @@ static void update_params(struct obs_qsv *obsqsv, obs_data_t *settings)
const struct video_output_info *voi = video_output_get_info(video);
update_latency(settings);
update_enhancements(settings);
update_targetusage(settings);
const char *target_usage =
obs_data_get_string(settings, "target_usage");
@ -525,26 +556,20 @@ static void update_params(struct obs_qsv *obsqsv, obs_data_t *settings)
int width = (int)obs_encoder_get_width(obsqsv->encoder);
int height = (int)obs_encoder_get_height(obsqsv->encoder);
if (astrcmpi(target_usage, "quality") == 0)
if (astrcmpi(target_usage, "TU1: Slowest (Best Quality)") == 0)
obsqsv->params.nTargetUsage = MFX_TARGETUSAGE_BEST_QUALITY;
else if (astrcmpi(target_usage, "balanced") == 0)
else if (astrcmpi(target_usage, "TU4: Balanced (Medium Quality)") == 0)
obsqsv->params.nTargetUsage = MFX_TARGETUSAGE_BALANCED;
else if (astrcmpi(target_usage, "speed") == 0)
else if (astrcmpi(target_usage, "TU7: Fastest (Best Speed)") == 0)
obsqsv->params.nTargetUsage = MFX_TARGETUSAGE_BEST_SPEED;
else if (astrcmpi(target_usage, "veryslow") == 0)
obsqsv->params.nTargetUsage = MFX_TARGETUSAGE_1;
else if (astrcmpi(target_usage, "slower") == 0)
else if (astrcmpi(target_usage, "TU2: Slower") == 0)
obsqsv->params.nTargetUsage = MFX_TARGETUSAGE_2;
else if (astrcmpi(target_usage, "slow") == 0)
else if (astrcmpi(target_usage, "TU3: Slow") == 0)
obsqsv->params.nTargetUsage = MFX_TARGETUSAGE_3;
else if (astrcmpi(target_usage, "medium") == 0)
obsqsv->params.nTargetUsage = MFX_TARGETUSAGE_4;
else if (astrcmpi(target_usage, "fast") == 0)
else if (astrcmpi(target_usage, "TU5: Fast") == 0)
obsqsv->params.nTargetUsage = MFX_TARGETUSAGE_5;
else if (astrcmpi(target_usage, "faster") == 0)
else if (astrcmpi(target_usage, "TU6: Faster") == 0)
obsqsv->params.nTargetUsage = MFX_TARGETUSAGE_6;
else if (astrcmpi(target_usage, "veryfast") == 0)
obsqsv->params.nTargetUsage = MFX_TARGETUSAGE_7;
if (obsqsv->codec == QSV_CODEC_AVC) {
codec = "H.264";