0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 13:08:50 +02:00

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-07-12 19:55:09 -07:00 committed by Ryan Foster
parent 39b4df12c8
commit 5b6967c359
3 changed files with 9 additions and 19 deletions

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};

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;

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);