Revert "obs-qsv: Enable b-pyramid & change packet priority"

This reverts commit 33ff46a10e9c9844737990c567ffe497ef2cbd6f.

This is being reverted due to many people being unable to start up the
QSV encoder with these changes.
This commit is contained in:
jp9000 2019-03-05 15:20:03 -08:00
parent 4450843aa0
commit 92cb20e7a2
2 changed files with 12 additions and 19 deletions

View File

@ -267,9 +267,8 @@ bool QSV_Encoder_Internal::InitParams(qsv_param_t * pParams)
m_co2.MBBRC = MFX_CODINGOPTION_ON;
if (pParams->nRateControl == MFX_RATECONTROL_LA_ICQ ||
pParams->nRateControl == MFX_RATECONTROL_LA)
m_co2.LookAheadDepth = pParams->nLADEPTH;
if (pParams->nbFrames > 1)
m_co2.BRefType = MFX_B_REF_PYRAMID;
extendedBuffers[iBuffers++] = (mfxExtBuffer*)& m_co2;
if (iBuffers > 0) {

View File

@ -159,7 +159,7 @@ static void obs_qsv_defaults(obs_data_t *settings)
obs_data_set_default_int(settings, "la_depth", 15);
obs_data_set_default_int(settings, "keyint_sec", 3);
obs_data_set_default_int(settings, "bframes", 3);
obs_data_set_default_int(settings, "bframes", 1);
}
static inline void add_strings(obs_property_t *list, const char *const *strings)
@ -630,20 +630,8 @@ static void parse_packet(struct obs_qsv *obsqsv, struct encoder_packet *packet,
packet->size = obsqsv->packet_data.num;
packet->type = OBS_ENCODER_VIDEO;
packet->pts = pBS->TimeStamp * fps_num / 90000;
packet->keyframe = (pBS->FrameType & MFX_FRAMETYPE_IDR);
uint16_t frameType = pBS->FrameType;
uint8_t priority;
if (frameType & MFX_FRAMETYPE_I)
priority = OBS_NAL_PRIORITY_HIGHEST;
else if ((frameType & MFX_FRAMETYPE_P) || (frameType & MFX_FRAMETYPE_REF))
priority = OBS_NAL_PRIORITY_HIGH;
else
priority = OBS_NAL_PRIORITY_DISPOSABLE;
packet->priority = priority;
packet->keyframe = (pBS->FrameType &
(MFX_FRAMETYPE_I | MFX_FRAMETYPE_REF));
/* ------------------------------------ */
@ -659,9 +647,15 @@ static void parse_packet(struct obs_qsv *obsqsv, struct encoder_packet *packet,
type = start[0] & 0x1F;
if (type == OBS_NAL_SLICE_IDR || type == OBS_NAL_SLICE) {
uint8_t prev_type = (start[0] >> 5) & 0x3;
start[0] &= ~(3 << 5);
//0 for non-ref frames and not equal to 0 for ref frames
start[0] |= priority << 5;
if (pBS->FrameType & MFX_FRAMETYPE_I)
start[0] |= OBS_NAL_PRIORITY_HIGHEST << 5;
else if (pBS->FrameType & MFX_FRAMETYPE_P)
start[0] |= OBS_NAL_PRIORITY_HIGH << 5;
else
start[0] |= prev_type << 5;
}
start = (uint8_t*)obs_avc_find_startcode(start, end);