obs-qsv11: Only reinitialize bitrate

This commit is contained in:
Gale
2022-11-21 19:08:02 -08:00
committed by Jim
parent eaf243bca7
commit 4b6af813dc
4 changed files with 30 additions and 18 deletions
+5 -5
View File
@@ -267,12 +267,12 @@ int qsv_param_apply_profile(qsv_param_t *, const char *profile)
int qsv_encoder_reconfig(qsv_t *pContext, qsv_param_t *pParams)
{
QSV_Encoder_Internal *pEncoder = (QSV_Encoder_Internal *)pContext;
mfxStatus sts = pEncoder->Reset(pParams);
pEncoder->UpdateParams(pParams);
mfxStatus sts = pEncoder->ReconfigureEncoder();
if (sts == MFX_ERR_NONE)
return 0;
else
return -1;
if (sts != MFX_ERR_NONE)
return false;
return true;
}
enum qsv_cpu_platform qsv_get_cpu_platform()
@@ -333,6 +333,23 @@ bool QSV_Encoder_Internal::InitParams(qsv_param_t *pParams)
return true;
}
bool QSV_Encoder_Internal::UpdateParams(qsv_param_t *pParams)
{
switch (pParams->nRateControl) {
case MFX_RATECONTROL_CBR:
m_mfxEncParams.mfx.TargetKbps = pParams->nTargetBitRate;
default:
break;
}
return true;
}
mfxStatus QSV_Encoder_Internal::ReconfigureEncoder()
{
return m_pmfxENC->Reset(&m_mfxEncParams);
}
mfxStatus QSV_Encoder_Internal::AllocateSurfaces()
{
// Query number of required surfaces for encoder
+2
View File
@@ -75,6 +75,8 @@ public:
mfxBitstream **pBS);
mfxStatus ClearData();
mfxStatus Reset(qsv_param_t *pParams);
mfxStatus ReconfigureEncoder();
bool UpdateParams(qsv_param_t *pParams);
protected:
bool InitParams(qsv_param_t *pParams);
+6 -13
View File
@@ -602,22 +602,15 @@ static void load_headers(struct obs_qsv *obsqsv)
static bool obs_qsv_update(void *data, obs_data_t *settings)
{
struct obs_qsv *obsqsv = data;
bool success = update_settings(obsqsv, settings);
int ret;
obsqsv->params.nTargetBitRate =
(mfxU16)obs_data_get_int(settings, "bitrate");
if (success) {
AcquireSRWLockExclusive(&g_QsvLock);
ret = qsv_encoder_reconfig(obsqsv->context, &obsqsv->params);
if (ret != 0)
warn("Failed to reconfigure: %d", ret);
ReleaseSRWLockExclusive(&g_QsvLock);
return ret == 0;
if (!qsv_encoder_reconfig(obsqsv->context, &obsqsv->params)) {
warn("Failed to reconfigure");
return false;
}
return false;
return true;
}
static void *obs_qsv_create(obs_data_t *settings, obs_encoder_t *encoder)