Opened 7 months ago

Last modified 7 months ago

#287 new defect

Fast encoder search for MTS defect

Reported by: chollmann Owned by:
Priority: minor Milestone:
Component: VTM Version: VTM-5.0
Keywords: MTS, LFNST Cc: ksuehring, XiangLi, fbossen, jvet@…

Description

For MTS there is an additional command line parameter MTSIntraMaxCand which is used to limit the number of completely evaluated MTS transform candidates. This worked fine in VTM-4.
In VTM-5, however, this part is broken. Setting the parameter to 1, 2, 4 and 5 (3 is CTC) gives identical results for both bit rate and PSNR. Only setting it to 0 shows some loss (but significantly less than expected as this should resemble the case where MTS = 0).

There seems to be a connection to the implementation of the LFNST, as with LFNST enabled the trModes vector which is passed to the transformNxN function in line 2538 of IntraSearch.cpp never seems to contain more than two modes - (DCT2, DCT2) and TransformSkip. This vector should include the MTS modes (between DST7 and DCT8) as well.

A further test shows that when LFNST is disabled, MTSIntraMaxCand works as expected (different run times, different results).

Maybe those who implemented LFNST can help with the bug fix.

Change history (2)

comment:1 Changed 7 months ago by moonmo.koo

In VTM 5.0, the cfg parameter, MTSIntraMaxCand, is not used when LFNST is enabled,
because the previous encoding algorithm is considering only MTS and could not be reused.

And the "trModes" vector construction in line 2538 of IntraSearch.cpp is performed only for deciding whether transform skip should be tried or not, which was borrowed from the existing MTS encoding for preventing encoding time increase due to the large size transform skip.

Therefore, the phenomenon you observed is due to not the bug but the newly integrated encoding algorithm. In addition, when LFNST is disabled, the existing MTS encoding routine is performed instead, which is the reason why the value change of MTSIntraMaxCand affected performance and time in your experiments.

comment:2 Changed 7 months ago by chollmann

Oh, it is a feature, not a bug? Then you might want to remove the MTSIntraMaxCand parameter from the config file as otherwise more people might get confused.

Note: See TracTickets for help on using tickets.