Просмотр исходного кода

obs-qsv11: Improve AV1 quality parameters

Enable B-frames for AV1 for Intel Arc Graphics and Meteor Lake Platform.
Gale 2 лет назад
Родитель
Сommit
5b6967c359

+ 5 - 7
plugins/obs-qsv11/QSV_Encoder.h

@@ -71,13 +71,11 @@ struct qsv_rate_control_info {
 	bool haswell_or_greater;
 };
 
-static const struct qsv_rate_control_info qsv_ratecontrols[] = {
-	{"CBR", false},   {"VBR", false}, {"VCM", true},    {"CQP", false},
-	{"AVBR", false},  {"ICQ", true},  {"LA_ICQ", true}, {"LA_CBR", true},
-	{"LA_VBR", true}, {0, false}};
-
-static const struct qsv_rate_control_info qsv_av1_ratecontrols[] =
-	{{"CBR", false}, {"VBR", false}, {"CQP", false}, {0, false}};
+static const struct qsv_rate_control_info qsv_ratecontrols[] = {{"CBR", false},
+								{"VBR", false},
+								{"CQP", false},
+								{"ICQ", true},
+								{0, false}};
 
 static const char *const qsv_profile_names[] = {"high", "main", "baseline", 0};
 static const char *const qsv_profile_names_av1[] = {"main", 0};

+ 1 - 4
plugins/obs-qsv11/QSV_Encoder_Internal.cpp

@@ -257,10 +257,7 @@ mfxStatus QSV_Encoder_Internal::InitParams(qsv_param_t *pParams,
 	m_mfxEncParams.mfx.FrameInfo.CropY = 0;
 	m_mfxEncParams.mfx.FrameInfo.CropW = pParams->nWidth;
 	m_mfxEncParams.mfx.FrameInfo.CropH = pParams->nHeight;
-	if (codec == QSV_CODEC_AV1)
-		m_mfxEncParams.mfx.GopRefDist = 1;
-	else
-		m_mfxEncParams.mfx.GopRefDist = pParams->nbFrames + 1;
+	m_mfxEncParams.mfx.GopRefDist = pParams->nbFrames + 1;
 
 	if (codec == QSV_CODEC_HEVC)
 		m_mfxEncParams.mfx.LowPower = MFX_CODINGOPTION_OFF;

+ 3 - 8
plugins/obs-qsv11/obs-qsv11.c

@@ -399,10 +399,7 @@ static obs_properties_t *obs_qsv_props(enum qsv_codec codec, void *unused,
 				       OBS_COMBO_TYPE_LIST,
 				       OBS_COMBO_FORMAT_STRING);
 
-	if (codec == QSV_CODEC_AVC || codec == QSV_CODEC_HEVC)
-		add_rate_controls(prop, qsv_ratecontrols);
-	else if (codec == QSV_CODEC_AV1)
-		add_rate_controls(prop, qsv_av1_ratecontrols);
+	add_rate_controls(prop, qsv_ratecontrols);
 
 	obs_property_set_modified_callback(prop, rate_control_modified);
 
@@ -458,8 +455,7 @@ static obs_properties_t *obs_qsv_props(enum qsv_codec codec, void *unused,
 	obs_property_set_long_description(prop,
 					  obs_module_text("Latency.ToolTip"));
 
-	if (codec != QSV_CODEC_AV1)
-		obs_properties_add_int(props, "bframes", TEXT_BFRAMES, 0, 3, 1);
+	obs_properties_add_int(props, "bframes", TEXT_BFRAMES, 0, 3, 1);
 
 	if (is_skl_or_greater_platform())
 		obs_properties_add_bool(props, "enhancements",
@@ -524,8 +520,7 @@ static void update_params(struct obs_qsv *obsqsv, obs_data_t *settings)
 		bFrames = (int)obs_data_get_int(settings, "bf");
 
 	enum qsv_cpu_platform plat = qsv_get_cpu_platform();
-	if (obsqsv->codec == QSV_CODEC_AV1 || plat == QSV_CPU_PLATFORM_IVB ||
-	    plat == QSV_CPU_PLATFORM_SNB)
+	if (plat == QSV_CPU_PLATFORM_IVB || plat == QSV_CPU_PLATFORM_SNB)
 		bFrames = 0;
 
 	int width = (int)obs_encoder_get_width(obsqsv->encoder);