Browse Source

obs-qsv11: Update Target Usage options

Update target usage setting names from legacy names to VPL names.
Gale 2 years ago
parent
commit
1d95575088
2 changed files with 47 additions and 18 deletions
  1. 8 4
      plugins/obs-qsv11/QSV_Encoder.h
  2. 39 14
      plugins/obs-qsv11/obs-qsv11.c

+ 8 - 4
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;

+ 39 - 14
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";