mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-07-19 09:39:15 +00:00
obs-qsv11: Fix RepeatPPS bug
This commit is contained in:
parent
5bfc2e5150
commit
550ccc63f2
|
@ -136,6 +136,7 @@ typedef struct {
|
||||||
mfxU16 MaxPicAverageLightLevel;
|
mfxU16 MaxPicAverageLightLevel;
|
||||||
bool bCQM;
|
bool bCQM;
|
||||||
bool video_fmt_10bit;
|
bool video_fmt_10bit;
|
||||||
|
bool bRepeatHeaders;
|
||||||
} qsv_param_t;
|
} qsv_param_t;
|
||||||
|
|
||||||
enum qsv_cpu_platform {
|
enum qsv_cpu_platform {
|
||||||
|
|
|
@ -312,14 +312,15 @@ mfxStatus QSV_Encoder_Internal::InitParams(qsv_param_t *pParams,
|
||||||
memset(&m_co2, 0, sizeof(mfxExtCodingOption2));
|
memset(&m_co2, 0, sizeof(mfxExtCodingOption2));
|
||||||
m_co2.Header.BufferId = MFX_EXTBUFF_CODING_OPTION2;
|
m_co2.Header.BufferId = MFX_EXTBUFF_CODING_OPTION2;
|
||||||
m_co2.Header.BufferSz = sizeof(m_co2);
|
m_co2.Header.BufferSz = sizeof(m_co2);
|
||||||
m_co2.RepeatPPS = MFX_CODINGOPTION_OFF;
|
if (pParams->bRepeatHeaders)
|
||||||
|
m_co2.RepeatPPS = MFX_CODINGOPTION_ON;
|
||||||
|
else
|
||||||
|
m_co2.RepeatPPS = MFX_CODINGOPTION_OFF;
|
||||||
|
|
||||||
memset(&m_co3, 0, sizeof(mfxExtCodingOption3));
|
memset(&m_co3, 0, sizeof(mfxExtCodingOption3));
|
||||||
m_co3.Header.BufferId = MFX_EXTBUFF_CODING_OPTION3;
|
m_co3.Header.BufferId = MFX_EXTBUFF_CODING_OPTION3;
|
||||||
m_co3.Header.BufferSz = sizeof(m_co3);
|
m_co3.Header.BufferSz = sizeof(m_co3);
|
||||||
|
|
||||||
if (codec != QSV_CODEC_AVC)
|
|
||||||
m_co2.RepeatPPS = MFX_CODINGOPTION_ON;
|
|
||||||
if (pParams->nbFrames > 1)
|
if (pParams->nbFrames > 1)
|
||||||
m_co2.BRefType = MFX_B_REF_PYRAMID;
|
m_co2.BRefType = MFX_B_REF_PYRAMID;
|
||||||
|
|
||||||
|
@ -349,7 +350,7 @@ mfxStatus QSV_Encoder_Internal::InitParams(qsv_param_t *pParams,
|
||||||
m_co3.ScenarioInfo = MFX_SCENARIO_GAME_STREAMING;
|
m_co3.ScenarioInfo = MFX_SCENARIO_GAME_STREAMING;
|
||||||
}
|
}
|
||||||
// CQM to follow UI setting
|
// CQM to follow UI setting
|
||||||
if (pParams->bCQM) {
|
if (pParams->bCQM && !pParams->bRepeatHeaders) {
|
||||||
m_co3.AdaptiveCQM = MFX_CODINGOPTION_ON;
|
m_co3.AdaptiveCQM = MFX_CODINGOPTION_ON;
|
||||||
if (m_co3.ScenarioInfo != MFX_SCENARIO_GAME_STREAMING) {
|
if (m_co3.ScenarioInfo != MFX_SCENARIO_GAME_STREAMING) {
|
||||||
m_co3.ScenarioInfo =
|
m_co3.ScenarioInfo =
|
||||||
|
|
|
@ -187,6 +187,7 @@ static void obs_qsv_defaults(obs_data_t *settings, int ver,
|
||||||
obs_data_set_default_string(settings, "latency", "normal");
|
obs_data_set_default_string(settings, "latency", "normal");
|
||||||
obs_data_set_default_int(settings, "bframes", 3);
|
obs_data_set_default_int(settings, "bframes", 3);
|
||||||
obs_data_set_default_bool(settings, "enhancements", true);
|
obs_data_set_default_bool(settings, "enhancements", true);
|
||||||
|
obs_data_set_default_bool(settings, "repeat_headers", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void obs_qsv_defaults_h264_v1(obs_data_t *settings)
|
static void obs_qsv_defaults_h264_v1(obs_data_t *settings)
|
||||||
|
@ -550,6 +551,7 @@ static void update_params(struct obs_qsv *obsqsv, obs_data_t *settings)
|
||||||
bool cbr_override = obs_data_get_bool(settings, "cbr");
|
bool cbr_override = obs_data_get_bool(settings, "cbr");
|
||||||
int bFrames = (int)obs_data_get_int(settings, "bframes");
|
int bFrames = (int)obs_data_get_int(settings, "bframes");
|
||||||
bool enhancements = obs_data_get_bool(settings, "enhancements");
|
bool enhancements = obs_data_get_bool(settings, "enhancements");
|
||||||
|
bool repeat_headers = obs_data_get_bool(settings, "repeat_headers");
|
||||||
const char *codec = "";
|
const char *codec = "";
|
||||||
|
|
||||||
if (obs_data_has_user_value(settings, "bf"))
|
if (obs_data_has_user_value(settings, "bf"))
|
||||||
|
@ -733,6 +735,7 @@ static void update_params(struct obs_qsv *obsqsv, obs_data_t *settings)
|
||||||
obsqsv->params.nKeyIntSec = (mfxU16)keyint_sec;
|
obsqsv->params.nKeyIntSec = (mfxU16)keyint_sec;
|
||||||
obsqsv->params.nICQQuality = (mfxU16)icq_quality;
|
obsqsv->params.nICQQuality = (mfxU16)icq_quality;
|
||||||
obsqsv->params.bCQM = enhancements;
|
obsqsv->params.bCQM = enhancements;
|
||||||
|
obsqsv->params.bRepeatHeaders = repeat_headers;
|
||||||
|
|
||||||
info("settings:\n"
|
info("settings:\n"
|
||||||
"\tcodec: %s\n"
|
"\tcodec: %s\n"
|
||||||
|
|
Loading…
Reference in a new issue