obs-qsv11: Improve AV1 quality parameters

Enable B-frames for AV1 for Intel Arc Graphics and Meteor Lake Platform.
This commit is contained in:
Gale
2023-08-09 18:12:47 -04:00
committed by Ryan Foster
parent 39b4df12c8
commit 5b6967c359
3 changed files with 9 additions and 19 deletions
+5 -7
View File
@@ -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
View File
@@ -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
View File
@@ -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);