From 6dada921c9e6a4ab7fd4671f29fbc4ab5e6caaef Mon Sep 17 00:00:00 2001 From: Gale Date: Wed, 12 Jul 2023 20:25:41 -0700 Subject: [PATCH] obs-qsv11: Adjust Subjective Video Enhancements Disable MBBRC (macro block level bitrate control) because it can reduce objective quality metrics like VMAF. Use AdaptiveCQM for CBR and VBR. --- plugins/obs-qsv11/QSV_Encoder.h | 1 - plugins/obs-qsv11/QSV_Encoder_Internal.cpp | 3 +-- plugins/obs-qsv11/obs-qsv11.c | 3 +-- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/plugins/obs-qsv11/QSV_Encoder.h b/plugins/obs-qsv11/QSV_Encoder.h index b0f5129e0..64f0344d0 100644 --- a/plugins/obs-qsv11/QSV_Encoder.h +++ b/plugins/obs-qsv11/QSV_Encoder.h @@ -130,7 +130,6 @@ typedef struct { mfxU32 MinDisplayMasteringLuminance; mfxU16 MaxContentLightLevel; mfxU16 MaxPicAverageLightLevel; - bool bMBBRC; bool bCQM; bool video_fmt_10bit; } qsv_param_t; diff --git a/plugins/obs-qsv11/QSV_Encoder_Internal.cpp b/plugins/obs-qsv11/QSV_Encoder_Internal.cpp index 1f56ba608..0395c0e38 100644 --- a/plugins/obs-qsv11/QSV_Encoder_Internal.cpp +++ b/plugins/obs-qsv11/QSV_Encoder_Internal.cpp @@ -335,8 +335,6 @@ mfxStatus QSV_Encoder_Internal::InitParams(qsv_param_t *pParams, if (pParams->nRateControl == MFX_RATECONTROL_LA_ICQ || pParams->nRateControl == MFX_RATECONTROL_LA) m_co2.LookAheadDepth = pParams->nLADEPTH; - if (pParams->bMBBRC) - m_co2.MBBRC = MFX_CODINGOPTION_ON; if (pParams->nbFrames > 1) m_co2.BRefType = MFX_B_REF_PYRAMID; if (m_mfxEncParams.mfx.LowPower == MFX_CODINGOPTION_ON) { @@ -356,6 +354,7 @@ mfxStatus QSV_Encoder_Internal::InitParams(qsv_param_t *pParams, m_co3.Header.BufferId = MFX_EXTBUFF_CODING_OPTION3; m_co3.Header.BufferSz = sizeof(m_co3); m_co3.ScenarioInfo = MFX_SCENARIO_GAME_STREAMING; + m_co3.AdaptiveCQM = MFX_CODINGOPTION_ON; extendedBuffers.push_back((mfxExtBuffer *)&m_co3); } diff --git a/plugins/obs-qsv11/obs-qsv11.c b/plugins/obs-qsv11/obs-qsv11.c index 50d69cc0f..7537663a9 100644 --- a/plugins/obs-qsv11/obs-qsv11.c +++ b/plugins/obs-qsv11/obs-qsv11.c @@ -187,7 +187,7 @@ static void obs_qsv_defaults(obs_data_t *settings, int ver, obs_data_set_default_int(settings, "keyint_sec", 3); obs_data_set_default_string(settings, "latency", "normal"); obs_data_set_default_int(settings, "bframes", 3); - obs_data_set_default_bool(settings, "enhancements", false); + obs_data_set_default_bool(settings, "enhancements", true); } static void obs_qsv_defaults_h264_v1(obs_data_t *settings) @@ -717,7 +717,6 @@ static void update_params(struct obs_qsv *obsqsv, obs_data_t *settings) obsqsv->params.nbFrames = (mfxU16)bFrames; obsqsv->params.nKeyIntSec = (mfxU16)keyint_sec; obsqsv->params.nICQQuality = (mfxU16)icq_quality; - obsqsv->params.bMBBRC = enhancements; obsqsv->params.bCQM = enhancements; info("settings:\n"