Skip to content

Commit 088db9f

Browse files
refine (#6535)
Co-authored-by: Zhu, Peak <[email protected]>
1 parent 3245d31 commit 088db9f

File tree

1 file changed

+44
-14
lines changed

1 file changed

+44
-14
lines changed

_studio/mfx_lib/encode_hw/hevc/agnostic/base/hevcehw_base_legacy.cpp

Lines changed: 44 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4299,22 +4299,52 @@ mfxStatus Legacy::CheckTU(const ENCODE_CAPS_HEVC& caps, mfxU16& tu)
42994299
if (!tu)
43004300
return MFX_ERR_NONE;
43014301

4302-
auto support = caps.TUSupport;
4303-
mfxI16 abs_diff = 0;
4304-
bool sign = 0;
4305-
mfxI16 newtu = tu;
4306-
4307-
do
4302+
const uint8_t HEVC_EXTENDED_TU_SUPPORT = (1 << (1 - 1)) | (1 << (2 - 1)) | (1 << (4 - 1)) | (1 << (6 - 1)) | (1 << (7 - 1));
4303+
if (HEVC_EXTENDED_TU_SUPPORT == caps.TUSupport)
43084304
{
4309-
newtu = tu + (1 - 2 * sign) * abs_diff;
4310-
abs_diff += !sign;
4311-
sign = !sign;
4312-
} while (newtu > 0 && !(support & (1 << (newtu - 1))));
4313-
4314-
if (tu != newtu)
4305+
switch (tu)
4306+
{
4307+
case 1:
4308+
tu = 1;
4309+
break;
4310+
case 2:
4311+
tu = 2;
4312+
break;
4313+
case 3:
4314+
case 4:
4315+
case 5:
4316+
tu = 4;
4317+
break;
4318+
case 6:
4319+
tu = 6;
4320+
break;
4321+
case 7:
4322+
tu = 7;
4323+
break;
4324+
default:
4325+
tu = 4;
4326+
break;
4327+
}
4328+
}
4329+
else
43154330
{
4316-
tu = newtu;
4317-
return MFX_WRN_INCOMPATIBLE_VIDEO_PARAM;
4331+
auto support = caps.TUSupport;
4332+
mfxI16 abs_diff = 0;
4333+
bool sign = 0;
4334+
mfxI16 newtu = tu;
4335+
4336+
do
4337+
{
4338+
newtu = tu + (1 - 2 * sign) * abs_diff;
4339+
abs_diff += !sign;
4340+
sign = !sign;
4341+
} while (newtu > 0 && !(support & (1 << (newtu - 1))));
4342+
4343+
if (tu != newtu)
4344+
{
4345+
tu = newtu;
4346+
return MFX_WRN_INCOMPATIBLE_VIDEO_PARAM;
4347+
}
43184348
}
43194349

43204350
return MFX_ERR_NONE;

0 commit comments

Comments
 (0)