@@ -2321,9 +2321,11 @@ mfxStatus MfxHwH264Encode::CheckVideoParamQueryLike(
2321
2321
if (par.mfx .RateControlMethod == MFX_RATECONTROL_CQP
2322
2322
&& par.calcParam .cqpHrdMode == 0 )
2323
2323
{
2324
- if (!CheckRange (par.mfx .QPI , 10 , 51 )) changed = true ;
2325
- if (!CheckRange (par.mfx .QPP , 10 , 51 )) changed = true ;
2326
- if (!CheckRange (par.mfx .QPB , 10 , 51 )) changed = true ;
2324
+ mfxU8 minQP = 10 ;
2325
+ mfxU8 maxQP = 51 ;
2326
+ if (!CheckRange (par.mfx .QPI , minQP, maxQP)) changed = true ;
2327
+ if (!CheckRange (par.mfx .QPP , minQP, maxQP)) changed = true ;
2328
+ if (!CheckRange (par.mfx .QPB , minQP, maxQP)) changed = true ;
2327
2329
}
2328
2330
}
2329
2331
@@ -3902,9 +3904,11 @@ mfxStatus MfxHwH264Encode::CheckVideoParamQueryLike(
3902
3904
if (par.mfx .RateControlMethod == MFX_RATECONTROL_CQP
3903
3905
&& par.calcParam .cqpHrdMode == 0 )
3904
3906
{
3905
- if (!CheckRange (par.mfx .QPI , 0 , 51 )) changed = true ;
3906
- if (!CheckRange (par.mfx .QPP , 0 , 51 )) changed = true ;
3907
- if (!CheckRange (par.mfx .QPB , 0 , 51 )) changed = true ;
3907
+ mfxU8 maxQP = 51 ;
3908
+ mfxU8 minQP = 0 ;
3909
+ if (!CheckRange (par.mfx .QPI , minQP, maxQP)) changed = true ;
3910
+ if (!CheckRange (par.mfx .QPP , minQP, maxQP)) changed = true ;
3911
+ if (!CheckRange (par.mfx .QPB , minQP, maxQP)) changed = true ;
3908
3912
}
3909
3913
3910
3914
if (par.mfx .RateControlMethod == MFX_RATECONTROL_CBR &&
@@ -4038,8 +4042,6 @@ mfxStatus MfxHwH264Encode::CheckVideoParamQueryLike(
4038
4042
// Check of weightedPredFlag is actually not needed, as it was read from 1 bit in extBits->PPSBuffer
4039
4043
extPps->weightedPredFlag > 1 ||
4040
4044
extPps->weightedBipredIdc > 2 ||
4041
- extPps->picInitQpMinus26 < -26 ||
4042
- extPps->picInitQpMinus26 > 25 ||
4043
4045
extPps->picInitQsMinus26 != 0 ||
4044
4046
extPps->chromaQpIndexOffset < -12 ||
4045
4047
extPps->chromaQpIndexOffset > 12 ||
@@ -4724,12 +4726,15 @@ mfxStatus MfxHwH264Encode::CheckVideoParamQueryLike(
4724
4726
|| extOpt2->MinQPP || extOpt2->MaxQPP
4725
4727
|| extOpt2->MinQPB || extOpt2->MaxQPB )
4726
4728
{
4727
- if (!CheckRangeDflt (extOpt2->MaxQPI , 0 , 51 , 0 )) changed = true ;
4728
- if (!CheckRangeDflt (extOpt2->MaxQPP , 0 , 51 , 0 )) changed = true ;
4729
- if (!CheckRangeDflt (extOpt2->MaxQPB , 0 , 51 , 0 )) changed = true ;
4730
- if (!CheckRangeDflt (extOpt2->MinQPI , 0 , (extOpt2->MaxQPI ? extOpt2->MaxQPI : 51 ), 0 )) changed = true ;
4731
- if (!CheckRangeDflt (extOpt2->MinQPP , 0 , (extOpt2->MaxQPP ? extOpt2->MaxQPP : 51 ), 0 )) changed = true ;
4732
- if (!CheckRangeDflt (extOpt2->MinQPB , 0 , (extOpt2->MaxQPB ? extOpt2->MaxQPB : 51 ), 0 )) changed = true ;
4729
+ mfxU8 maxQP = 51 ;
4730
+ mfxU8 minQP = 0 ;
4731
+ mfxU8 deflt = 0 ;
4732
+ if (!CheckRangeDflt (extOpt2->MaxQPI , minQP, maxQP, deflt)) changed = true ;
4733
+ if (!CheckRangeDflt (extOpt2->MaxQPP , minQP, maxQP, deflt)) changed = true ;
4734
+ if (!CheckRangeDflt (extOpt2->MaxQPB , minQP, maxQP, deflt)) changed = true ;
4735
+ if (!CheckRangeDflt (extOpt2->MinQPI , minQP, (extOpt2->MaxQPI ? extOpt2->MaxQPI : maxQP), deflt)) changed = true ;
4736
+ if (!CheckRangeDflt (extOpt2->MinQPP , minQP, (extOpt2->MaxQPP ? extOpt2->MaxQPP : maxQP), deflt)) changed = true ;
4737
+ if (!CheckRangeDflt (extOpt2->MinQPB , minQP, (extOpt2->MaxQPB ? extOpt2->MaxQPB : maxQP), deflt)) changed = true ;
4733
4738
}
4734
4739
4735
4740
if (!CheckTriStateOption (extOpt3->BRCPanicMode )) changed = true ;
@@ -9786,7 +9791,8 @@ mfxU32 HeaderPacker::WriteSlice(
9786
9791
}
9787
9792
if (pps.entropyCodingModeFlag && sliceType != SLICE_TYPE_I)
9788
9793
obs.PutUe (m_cabacInitIdc);
9789
- obs.PutSe (task.m_cqpValue [fieldId] - (pps.picInitQpMinus26 + 26 ));
9794
+ mfxI8 sliceDeltaQp = task.m_cqpValue [fieldId] - (pps.picInitQpMinus26 + 26 );
9795
+ obs.PutSe (sliceDeltaQp);
9790
9796
if (pps.deblockingFilterControlPresentFlag )
9791
9797
{
9792
9798
mfxU32 disableDeblockingFilterIdc = task.m_disableDeblockingIdc [fieldId][sliceId];
0 commit comments