diff --git a/plugins/obs-qsv11/QSV_Encoder.h b/plugins/obs-qsv11/QSV_Encoder.h index 64f0344d0..a87c67780 100644 --- a/plugins/obs-qsv11/QSV_Encoder.h +++ b/plugins/obs-qsv11/QSV_Encoder.h @@ -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; diff --git a/plugins/obs-qsv11/obs-qsv11.c b/plugins/obs-qsv11/obs-qsv11.c index a39eac0f9..6fc008e51 100644 --- a/plugins/obs-qsv11/obs-qsv11.c +++ b/plugins/obs-qsv11/obs-qsv11.c @@ -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";