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:
parent
39b4df12c8
commit
5b6967c359
@ -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};
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user